ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCBlYzgwYWQ0Li4zMWM5YjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC00Niw3ICs0Niw2IEBACiBkb19hcl9yZWNpcGVbZGlyc10gPSAiJHtBUkNISVZFUl9PVVRESVJ9IgogZG9fYXJfb3JpZ2luYWxbZGlyc10gPSAiJHtBUkNISVZFUl9PVVRESVJ9ICR7QVJDSElWRVJfV09SS0RJUn0iCiBkb19kZXBsb3lfYXJjaGl2ZXNbZGlyc10gPSAiJHtXT1JLRElSfSIKLWRvX2RlcGxveV9hbGxfYXJjaGl2ZXNbZGlyc10gPSAiJHtXT1JLRElSfSIKIAogIyBUaGlzIGlzIGEgY29udmVuaWVuY2UgZm9yIHRoZSBzaGVsbCBzY3JpcHQgdG8gdXNlIGl0CiAKQEAgLTExNCwxMCArMTEzLDkgQEAKICAgICBpZiBhcl9yZWNpcGUgPT0gIjEiOgogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19hcl9yZWNpcGUnICUgcG4pCiAKLSAgICAjIE91dHB1dCB0aGUgc3JwbSBwYWNrYWdlCi0gICAgYXJfc3JwbSA9IGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdzcnBtJykKLSAgICBpZiBhcl9zcnBtID09ICIxIjoKLSAgICAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VTJykgIT0gJycgYW5kIGQuZ2V0VmFyKCdJTUFHRV9QS0dUWVBFJykgPT0gJ3JwbSc6CisgICAgIyBPdXRwdXQgdGhlIFNSUE0gcGFja2FnZQorICAgIGlmIGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdzcnBtJykgPT0gIjEiIGFuZCBkLmdldFZhcignUEFDS0FHRVMnKToKKyAgICAgICAgaWYgInBhY2thZ2VfcnBtIiBpbiBkLmdldFZhcignUEFDS0FHRV9DTEFTU0VTJyk6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19wYWNrYWdlX3dyaXRlX3JwbScgJSBwbikKICAgICAgICAgICAgIGlmIGFyX2R1bXBkYXRhID09ICIxIjoKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RlcGVuZHMnLCAnICVzOmRvX2R1bXBkYXRhJyAlIHBuKQpAQCAtMTI5LDYgKzEyNyw4IEBACiAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYWNrYWdlX3dyaXRlX3JwbScsICdkZXBlbmRzJywgJyAlczpkb19hcl9wYXRjaGVkJyAlIHBuKQogICAgICAgICAgICAgZWxpZiBhcl9zcmMgPT0gImNvbmZpZ3VyZWQiOgogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfY29uZmlndXJlZCcgJSBwbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLmZhdGFsKCJBUkNISVZFUl9NT0RFW3NycG1dIG5lZWRzIHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUyIpCiB9CiAKICMgVGFrZSBhbGwgdGhlIHNvdXJjZXMgZm9yIGEgcmVjaXBlIGFuZCBwdXRzIHRoZW0gaW4gV09SS0RJUi9hcmNoaXZlci13b3JrLy4KQEAgLTI3Nyw2ICsyNzcsMTEgQEAKICAgICBpZiAoZC5nZXRWYXIoJ1NSQ19VUkknKSA9PSAiIik6CiAgICAgICAgIHJldHVybgogCisgICAgIyBGb3IgdGhlIGtlcm5lbCBhcmNoaXZlLCBzcmNkaXIgbWF5IGp1c3QgYmUgYSBsaW5rIHRvIHRoZQorICAgICMgd29yay1zaGFyZWQgbG9jYXRpb24uIFVzZSBvcy5wYXRoLnJlYWxwYXRoIHRvIG1ha2Ugc3VyZQorICAgICMgdGhhdCB3ZSBhcmNoaXZlIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGFuZCBub3QganVzdCB0aGUgbGluay4KKyAgICBzcmNkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHNyY2RpcikKKwogICAgIGJiLnV0aWxzLm1rZGlyaGllcihhcl9vdXRkaXIpCiAgICAgaWYgc3VmZml4OgogICAgICAgICBmaWxlbmFtZSA9ICclcy0lcy50YXIuZ3onICUgKGQuZ2V0VmFyKCdQRicpLCBzdWZmaXgpCkBAIC0zMTksNiArMzI0LDEwIEBACiAgICAgZmluYWxseToKICAgICAgICAgb3MuY2hkaXIoY3dkKQogCitkZWYgaXNfd29ya19zaGFyZWQoZCk6CisgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIHJldHVybiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKSBvciBwbi5zdGFydHN3aXRoKCdnY2Mtc291cmNlJykKKwogIyBSdW4gZG9fdW5wYWNrIGFuZCBkb19wYXRjaAogcHl0aG9uIGRvX3VucGFja19hbmRfcGF0Y2goKSB7CiAgICAgaWYgZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ3NyYycpIG5vdCBpbiBcCkBAIC0zMzEsNyArMzQwLDcgQEAKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKICAgICAjIFRoZSBrZXJuZWwgY2xhc3MgZnVuY3Rpb25zIHJlcXVpcmUgaXQgdG8gYmUgb24gd29yay1zaGFyZWQsIHNvIHdlIGRvbnQgY2hhbmdlIFdPUktESVIKLSAgICBpZiBub3QgKGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIGQpIG9yIHBuLnN0YXJ0c3dpdGgoJ2djYy1zb3VyY2UnKSk6CisgICAgaWYgbm90IGlzX3dvcmtfc2hhcmVkKGQpOgogICAgICAgICAjIENoYW5nZSB0aGUgV09SS0RJUiB0byBtYWtlIGRvX3VucGFjayBkb19wYXRjaCBydW4gaW4gYW5vdGhlciBkaXIuCiAgICAgICAgIGQuc2V0VmFyKCdXT1JLRElSJywgYXJfd29ya2RpcikKICAgICAgICAgIyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwYXRoIHRvIHJlY2lwZSdzIG5hdGl2ZSBzeXNyb290IChpdCdzIHJlbGF0aXZlIHRvIFdPUktESVIpLgpAQCAtMzUxLDcgKzM2MCw3IEBACiAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBzcmNfb3JpZykKIAogICAgICMgTWFrZSBzdXJlIGdjYyBhbmQga2VybmVsIHNvdXJjZXMgYXJlIHBhdGNoZWQgb25seSBvbmNlCi0gICAgaWYgbm90IChkLmdldFZhcignU1JDX1VSSScpID09ICIiIG9yIChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKSBvciBwbi5zdGFydHN3aXRoKCdnY2Mtc291cmNlJykpKToKKyAgICBpZiBub3QgKGQuZ2V0VmFyKCdTUkNfVVJJJykgPT0gIiIgb3IgaXNfd29ya19zaGFyZWQoZCkpOgogICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3BhdGNoJywgZCkKIAogICAgICMgQ3JlYXRlIHRoZSBwYXRjaGVzCkBAIC00NTUsMTMgKzQ2NCw2IEBACiBhZGR0YXNrIGRvX2FyX3JlY2lwZQogYWRkdGFzayBkb19kZXBsb3lfYXJjaGl2ZXMgYmVmb3JlIGRvX2J1aWxkCiAKLWFkZHRhc2sgZG9fZGVwbG95X2FsbF9hcmNoaXZlcyBhZnRlciBkb19kZXBsb3lfYXJjaGl2ZXMKLWRvX2RlcGxveV9hbGxfYXJjaGl2ZXNbcmVjcmRlcHRhc2tdID0gImRvX2RlcGxveV9hcmNoaXZlcyIKLWRvX2RlcGxveV9hbGxfYXJjaGl2ZXNbcmVjaWRlcHRhc2tdID0gImRvXyR7QkJfREVGQVVMVF9UQVNLfSIKLWRvX2RlcGxveV9hbGxfYXJjaGl2ZXMoKSB7Ci0gICAgICAgIDoKLX0KLQogcHl0aG9uICgpIHsKICAgICAjIEFkZCB0YXNrcyBpbiB0aGUgY29ycmVjdCBvcmRlciwgc3BlY2lmaWNhbGx5IGZvciBsaW51eC15b2N0byB0byBhdm9pZCByYWNlIGNvbmRpdGlvbi4KICAgICAjIHNzdGF0ZXNpZy5weTpzc3RhdGVfcnVuZGVwZmlsdGVyIGhhcyBzcGVjaWFsIHN1cHBvcnQgdGhhdCBleGNsdWRlcyB0aGlzIGRlcGVuZGVuY3kKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IGVmYTQwOTguLmNjODU3YWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCQkJYmJub3RlIEV4ZWN1dGluZyBnbGliLWdldHRleHRpemUgLS1mb3JjZSAtLWNvcHkKIAkJCQllY2hvICJubyIgfCBnbGliLWdldHRleHRpemUgLS1mb3JjZSAtLWNvcHkKIAkJCWZpCi0JCWVsaWYgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKkFNX0dOVV9HRVRURVhUIiAkQ09ORklHVVJFX0FDOyB0aGVuCisJCWVsaWYgWyAiJHtCUE59IiAhPSAiZ2V0dGV4dCIgXSAmJiBncmVwIC1xICJeW1s6c3BhY2U6XV0qQU1fR05VX0dFVFRFWFQiICRDT05GSUdVUkVfQUM7IHRoZW4KIAkJCSMgV2UnZCBjYWxsIGdldHRleHRpemUgaGVyZSBpZiBpdCB3YXNuJ3Qgc28gYnJva2VuLi4uCiAJCQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvY29uZmlnLnJwYXRoICR7QVVUT1RPT0xTX0FVWERJUn0vCiAJCQlpZiBbIC1kICR7U30vcG8vIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKaW5kZXggYmQwZDZlMy4uYmIxZjRiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKQEAgLTE1MiwxMiArMTUyLDggQEAKIGFkZHRhc2sgdW5wYWNrIGFmdGVyIGRvX2ZldGNoCiBkb191bnBhY2tbZGlyc10gPSAiJHtXT1JLRElSfSIKIAotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcignUycpICE9IGQuZ2V0VmFyKCdXT1JLRElSJyk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9fdW5wYWNrJywgJ2NsZWFuZGlycycsICcke1N9JykKLSAgICBlbHNlOgotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3VucGFjaycsICdjbGVhbmRpcnMnLCBvcy5wYXRoLmpvaW4oJyR7U30nLCAncGF0Y2hlcycpKQotfQorZG9fdW5wYWNrW2NsZWFuZGlyc10gPSAiJHtAZC5nZXRWYXIoJ1MnKSBpZiBkLmdldFZhcignUycpICE9IGQuZ2V0VmFyKCdXT1JLRElSJykgZWxzZSBvcy5wYXRoLmpvaW4oJyR7U30nLCAncGF0Y2hlcycpfSIKKwogcHl0aG9uIGJhc2VfZG9fdW5wYWNrKCkgewogICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQogICAgIGlmIGxlbihzcmNfdXJpKSA9PSAwOgpAQCAtMTcwLDEyICsxNjYsNiBAQAogICAgICAgICBiYi5mYXRhbChzdHIoZSkpCiB9CiAKLWRlZiBwa2dhcmNoX21hcHBpbmcoZCk6Ci0gICAgIyBDb21wYXRpYmlsaXR5IG1hcHBpbmdzIG9mIFRVTkVfUEtHQVJDSCAob3B0IGluKQotICAgIGlmIGQuZ2V0VmFyKCJQS0dBUkNIQ09NUEFUX0FSTVY3QSIpOgotICAgICAgICBpZiBkLmdldFZhcigiVFVORV9QS0dBUkNIIikgPT0gImFybXY3YS12ZnAtbmVvbiI6Ci0gICAgICAgICAgICBkLnNldFZhcigiVFVORV9QS0dBUkNIIiwgImFybXY3YSIpCi0KIGRlZiBnZXRfbGF5ZXJzX2JyYW5jaF9yZXYoZCk6CiAgICAgbGF5ZXJzID0gKGQuZ2V0VmFyKCJCQkxBWUVSUyIpIG9yICIiKS5zcGxpdCgpCiAgICAgbGF5ZXJzX2JyYW5jaF9yZXYgPSBbIiUtMjBzID0gXCIlczolc1wiIiAlIChvcy5wYXRoLmJhc2VuYW1lKGkpLCBcCkBAIC0yMjUsMTIgKzIxNSw5IEBACiAgICAgaW1wb3J0IGJiLnJ1bnF1ZXVlCiAKICAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCk6Ci0gICAgICAgIGlmIG5vdCBlLmRhdGEuZ2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCBGYWxzZSk6Ci0gICAgICAgICAgICBlLmRhdGEuc2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCBsc2JfZGlzdHJvX2lkZW50aWZpZXIoZS5kYXRhKSkKLSAgICAgICAgZS5kYXRhLnNldFZhcignQkJfVkVSU0lPTicsIGJiLl9fdmVyc2lvbl9fKQotICAgICAgICBwa2dhcmNoX21hcHBpbmcoZS5kYXRhKQotICAgICAgICBvZS51dGlscy5mZWF0dXJlc19iYWNrZmlsbCgiRElTVFJPX0ZFQVRVUkVTIiwgZS5kYXRhKQotICAgICAgICBvZS51dGlscy5mZWF0dXJlc19iYWNrZmlsbCgiTUFDSElORV9GRUFUVVJFUyIsIGUuZGF0YSkKKyAgICAgICAgaWYgbm90IGQuZ2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCBGYWxzZSk6CisgICAgICAgICAgICBkLnNldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgbHNiX2Rpc3Ryb19pZGVudGlmaWVyKGQpKQorICAgICAgICBkLnNldFZhcignQkJfVkVSU0lPTicsIGJiLl9fdmVyc2lvbl9fKQogICAgICAgICAjIFdvcmtzIHdpdGggdGhlIGxpbmUgaW4gbGF5ZXIuY29uZiB3aGljaCBjaGFuZ2VzIFBBVEggdG8gcG9pbnQgaGVyZQogICAgICAgICBzZXR1cF9ob3N0dG9vbHNfZGlyKGQuZ2V0VmFyKCdIT1NUVE9PTFNfRElSJyksICdIT1NUVE9PTFMnLCBkKQogICAgICAgICBzZXR1cF9ob3N0dG9vbHNfZGlyKGQuZ2V0VmFyKCdIT1NUVE9PTFNfRElSJyksICdIT1NUVE9PTFNfTk9ORkFUQUwnLCBkLCBmYXRhbD1GYWxzZSkKQEAgLTI0Niw3ICsyMzMsNyBAQAogICAgICAgICBlLm1jZGF0YVsnJ10uc2V0VmFyKCJTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTIiwgZGVwcykKIAogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIuZXZlbnQuQnVpbGRTdGFydGVkKToKLSAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGUuZGF0YSkKKyAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgICAgIHN0YXR1c2xpbmVzID0gW10KICAgICAgICAgZm9yIGZ1bmMgaW4gb2UuZGF0YS50eXBlZF92YWx1ZSgnQlVJTERDRkdfRlVOQ1MnLCBsb2NhbGRhdGEpOgogICAgICAgICAgICAgZyA9IGdsb2JhbHMoKQpAQCAtMjU3LDcgKzI0NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZmxpbmVzOgogICAgICAgICAgICAgICAgICAgICBzdGF0dXNsaW5lcy5leHRlbmQoZmxpbmVzKQogCi0gICAgICAgIHN0YXR1c2hlYWRlciA9IGUuZGF0YS5nZXRWYXIoJ0JVSUxEQ0ZHX0hFQURFUicpCisgICAgICAgIHN0YXR1c2hlYWRlciA9IGQuZ2V0VmFyKCdCVUlMRENGR19IRUFERVInKQogICAgICAgICBpZiBzdGF0dXNoZWFkZXI6CiAgICAgICAgICAgICBiYi5wbGFpbignXG4lc1xuJXNcbicgJSAoc3RhdHVzaGVhZGVyLCAnXG4nLmpvaW4oc3RhdHVzbGluZXMpKSkKIApAQCAtMjY1LDIzICsyNTIsMjMgQEAKICAgICAjIHRhcmdldCBvbmVzIGFuZCB3ZSdkIHNlZSBkdWxwaWNhdGUga2V5IG5hbWVzIG92ZXJ3cml0aW5nIGVhY2ggb3RoZXIKICAgICAjIGZvciB2YXJpb3VzIFBSRUZFUlJFRF9QUk9WSURFUlMKICAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlKToKLSAgICAgICAgaWYgZS5kYXRhLmdldFZhcigiVEFSR0VUX1BSRUZJWCIpID09IGUuZGF0YS5nZXRWYXIoIlNES19QUkVGSVgiKToKLSAgICAgICAgICAgIGUuZGF0YS5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyIpCi0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwiKQotICAgICAgICAgICAgZS5kYXRhLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyIpCi0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9ZysrIikKLSAgICAgICAgICAgIGUuZGF0YS5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMiKQorICAgICAgICBpZiBkLmdldFZhcigiVEFSR0VUX1BSRUZJWCIpID09IGQuZ2V0VmFyKCJTREtfUFJFRklYIik6CisgICAgICAgICAgICBkLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwiKQorICAgICAgICAgICAgZC5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiKQorICAgICAgICAgICAgZC5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nKysiKQorICAgICAgICAgICAgZC5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMiKQogCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlQ29tcGxldGUpOgotICAgICAgICBjb21wbGV0aW9ucyA9IGUuZGF0YS5leHBhbmQoIiR7U1RBR0lOR19ESVJ9L3NzdGF0ZWNvbXBsZXRpb25zIikKKyAgICAgICAgY29tcGxldGlvbnMgPSBkLmV4cGFuZCgiJHtTVEFHSU5HX0RJUn0vc3N0YXRlY29tcGxldGlvbnMiKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb21wbGV0aW9ucyk6CiAgICAgICAgICAgICBjbWRzID0gc2V0KCkKICAgICAgICAgICAgIHdpdGggb3Blbihjb21wbGV0aW9ucywgInIiKSBhcyBmOgogICAgICAgICAgICAgICAgIGNtZHMgPSBzZXQoZikKLSAgICAgICAgICAgIGUuZGF0YS5zZXRWYXIoImNvbXBsZXRpb25fZnVuY3Rpb24iLCAiXG4iLmpvaW4oY21kcykpCi0gICAgICAgICAgICBlLmRhdGEuc2V0VmFyRmxhZygiY29tcGxldGlvbl9mdW5jdGlvbiIsICJmdW5jIiwgIjEiKQorICAgICAgICAgICAgZC5zZXRWYXIoImNvbXBsZXRpb25fZnVuY3Rpb24iLCAiXG4iLmpvaW4oY21kcykpCisgICAgICAgICAgICBkLnNldFZhckZsYWcoImNvbXBsZXRpb25fZnVuY3Rpb24iLCAiZnVuYyIsICIxIikKICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJFeGVjdXRpbmcgU2NlbmVRdWV1ZSBDb21wbGV0aW9uIGNvbW1hbmRzOiAlcyIgJSAiXG4iLmpvaW4oY21kcykpCi0gICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImNvbXBsZXRpb25fZnVuY3Rpb24iLCBlLmRhdGEpCisgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImNvbXBsZXRpb25fZnVuY3Rpb24iLCBkKQogICAgICAgICAgICAgb3MucmVtb3ZlKGNvbXBsZXRpb25zKQogCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5SZWNpcGVQYXJzZWQpOgpAQCAtMzAwLDcgKzI4Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgcC5zdGFydHN3aXRoKCJ2aXJ0dWFsLyIpIGFuZCBwIG5vdCBpbiBtdWx0aXdoaXRlbGlzdDoKICAgICAgICAgICAgICAgICAgICAgcHJvZnByb3YgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSXyIgKyBwKQogICAgICAgICAgICAgICAgICAgICBpZiBwcm9mcHJvdiBhbmQgcG4gIT0gcHJvZnByb3Y6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiUFJFRkVSUkVEX1BST1ZJREVSXyVzIHNldCB0byAlcywgbm90ICVzIiAlIChwLCBwcm9mcHJvdiwgcG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiUFJFRkVSUkVEX1BST1ZJREVSXyVzIHNldCB0byAlcywgbm90ICVzIiAlIChwLCBwcm9mcHJvdiwgcG4pKQogfQogCiBDT05GSUdVUkVTVEFNUEZJTEUgPSAiJHtXT1JLRElSfS9jb25maWd1cmUuc3N0YXRlIgpAQCAtMzg5LDYgKzM3NiwxMCBAQAogcHl0aG9uICgpIHsKICAgICBpbXBvcnQgc3RyaW5nLCByZQogCisgICAgIyBIYW5kbGUgYmFja2ZpbGxpbmcKKyAgICBvZS51dGlscy5mZWF0dXJlc19iYWNrZmlsbCgiRElTVFJPX0ZFQVRVUkVTIiwgZCkKKyAgICBvZS51dGlscy5mZWF0dXJlc19iYWNrZmlsbCgiTUFDSElORV9GRUFUVVJFUyIsIGQpCisKICAgICAjIEhhbmRsZSBQQUNLQUdFQ09ORklHCiAgICAgIwogICAgICMgVGhlc2UgdGFrZSB0aGUgZm9ybToKQEAgLTQ2Myw3ICs0NTQsNyBAQAogCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQogICAgIGxpY2Vuc2UgPSBkLmdldFZhcignTElDRU5TRScpCi0gICAgaWYgbGljZW5zZSA9PSAiSU5WQUxJRCI6CisgICAgaWYgbGljZW5zZSA9PSAiSU5WQUxJRCIgYW5kIHBuICE9ICJkZWZhdWx0cGtnbmFtZSI6CiAgICAgICAgIGJiLmZhdGFsKCdUaGlzIHJlY2lwZSBkb2VzIG5vdCBoYXZlIHRoZSBMSUNFTlNFIGZpZWxkIHNldCAoJXMpJyAlIHBuKQogCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbGljZW5zZScsIGQpOgpAQCAtNDcyLDcgKzQ2Myw3IEBACiAgICAgICAgIGlmIHVubWF0Y2hlZF9saWNlbnNlX2ZsYWc6CiAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgJXMgYmVjYXVzZSBpdCBoYXMgYSByZXN0cmljdGVkIGxpY2Vuc2Ugbm90IgogICAgICAgICAgICAgICAgICAiIHdoaXRlbGlzdGVkIGluIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiAlIHBuKQotICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImJlY2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCIKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImJlY2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCIKICAgICAgICAgICAgICAgICAgIiB3aGl0ZWxpc3RlZCBpbiBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIpCiAKICAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIGEgdGFyZ2V0IHBhY2thZ2Ugd2UgbmVlZCB0byB1c2UgZmFrZXJvb3QgKHBzZXVkbykKQEAgLTUwMCw3ICs0OTEsNyBAQAogICAgICAgICAgICAgaWYgcmUubWF0Y2gobmVlZF9tYWNoaW5lLCBtKToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0aWJsZSB3aXRoIG1hY2hpbmUgJXMgKG5vdCBpbiBDT01QQVRJQkxFX01BQ0hJTkUpIiAlIGQuZ2V0VmFyKCdNQUNISU5FJykpCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCBtYWNoaW5lICVzIChub3QgaW4gQ09NUEFUSUJMRV9NQUNISU5FKSIgJSBkLmdldFZhcignTUFDSElORScpKQogCiAgICAgc291cmNlX21pcnJvcl9mZXRjaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfTUlSUk9SX0ZFVENIJywgRmFsc2UpCiAgICAgaWYgbm90IHNvdXJjZV9taXJyb3JfZmV0Y2g6CkBAIC01MDksNyArNTAwLDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICAgdGhpc19ob3N0ID0gZC5nZXRWYXIoJ0hPU1RfU1lTJykKICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaChuZWVkX2hvc3QsIHRoaXNfaG9zdCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0aWJsZSB3aXRoIGhvc3QgJXMgKG5vdCBpbiBDT01QQVRJQkxFX0hPU1QpIiAlIHRoaXNfaG9zdCkKKyAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCBob3N0ICVzIChub3QgaW4gQ09NUEFUSUJMRV9IT1NUKSIgJSB0aGlzX2hvc3QpCiAKICAgICAgICAgYmFkX2xpY2Vuc2VzID0gKGQuZ2V0VmFyKCdJTkNPTVBBVElCTEVfTElDRU5TRScpIG9yICIiKS5zcGxpdCgpCiAKQEAgLTU2Miw3ICs1NTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIklOQ0xVRElORyB0aGUgcGFja2FnZSAiICsgcGtnKQogICAgICAgICAgICAgICAgIGVsaWYgYWxsX3NraXBwZWQgb3IgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzKToKICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNLSVBQSU5HIHJlY2lwZSAlcyBiZWNhdXNlIGl0J3MgJXMiICUgKHBuLCBsaWNlbnNlKSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIml0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMiICUgbGljZW5zZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaXQgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlOiAlcyIgJSBsaWNlbnNlKQogICAgICAgICAgICAgZWxpZiBwbiBpbiB3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgaWYgcG4gaW4gaW5jb21wYXR3bDoKICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiSU5DTFVESU5HICIgKyBwbiArICIgYXMgYnVpbGRhYmxlIGRlc3BpdGUgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVjYXVzZSBpdCBoYXMgYmVlbiB3aGl0ZWxpc3RlZCIpCkBAIC02MzUsNiArNjI2LDEwIEBACiAgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnJwbScpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCisgICAgICAgICMgKi5kZWIgc2hvdWxkIERFUEVORCBvbiB4ei1uYXRpdmUgZm9yIHVucGFja2luZworICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5kZWInKToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKKwogICAgIGlmIG5lZWRzcmNyZXY6CiAgICAgICAgIGQuc2V0VmFyKCJTUkNQViIsICIke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0iKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jpbl9wYWNrYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jpbl9wYWNrYWdlLmJiY2xhc3MKaW5kZXggYTUyYjc1Yi4uY2JjOWIxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iaW5fcGFja2FnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmluX3BhY2thZ2UuYmJjbGFzcwpAQCAtMjYsNyArMjYsMTAgQEAKIGJpbl9wYWNrYWdlX2RvX2luc3RhbGwgKCkgewogICAgICMgRG8gaXQgY2FyZWZ1bGx5CiAgICAgWyAtZCAiJHtTfSIgXSB8fCBleGl0IDEKLSAgICBjZCAke1N9IHx8IGV4aXQgMQorICAgIGlmIFsgLXogIiQobHMgLUEgJHtTfSkiIF07IHRoZW4KKyAgICAgICAgYmJmYXRhbCBiaW5fcGFja2FnZSBoYXMgbm90aGluZyB0byBpbnN0YWxsLiBCZSBzdXJlIHRoZSBTUkNfVVJJIHVucGFja3MgaW50byBTLgorICAgIGZpCisgICAgY2QgJHtTfQogICAgIHRhciAtLW5vLXNhbWUtb3duZXIgLS1leGNsdWRlPScuL3BhdGNoZXMnIC0tZXhjbHVkZT0nLi8ucGMnIC1jcGYgLSAuIFwKICAgICAgICAgfCB0YXIgLS1uby1zYW1lLW93bmVyIC14cGYgLSAtQyAke0R9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2JsYWNrbGlzdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ibGFja2xpc3QuYmJjbGFzcwppbmRleCBlNTg1NjRjLi5kYzc5NDIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2JsYWNrbGlzdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmxhY2tsaXN0LmJiY2xhc3MKQEAgLTE2LDUgKzE2LDUgQEAKICAgICBibGFja2xpc3QgPSBkLmdldFZhckZsYWcoJ1BOQkxBQ0tMSVNUJywgZC5nZXRWYXIoJ1BOJykpCiAKICAgICBpZiBibGFja2xpc3Q6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJSZWNpcGUgaXMgYmxhY2tsaXN0ZWQ6ICVzIiAlIChibGFja2xpc3QpKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJSZWNpcGUgaXMgYmxhY2tsaXN0ZWQ6ICVzIiAlIChibGFja2xpc3QpKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKaW5kZXggN2E1NTM0ZS4uNjM5ODBmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCkBAIC0zNyw3ICszNyw3IEBACiBCVUlMREhJU1RPUllfRElSX1NESyA9ICIke0JVSUxESElTVE9SWV9ESVJ9L3Nkay8ke1NES19OQU1FfSR7U0RLX0VYVH0vJHtJTUFHRV9CQVNFTkFNRX0iCiBCVUlMREhJU1RPUllfSU1BR0VfRklMRVMgPz0gIi9ldGMvcGFzc3dkIC9ldGMvZ3JvdXAiCiBCVUlMREhJU1RPUllfU0RLX0ZJTEVTID89ICJjb25mL2xvY2FsLmNvbmYgY29uZi9iYmxheWVycy5jb25mIGNvbmYvYXV0by5jb25mIGNvbmYvbG9ja2VkLXNpZ3MuaW5jIGNvbmYvZGV2dG9vbC5jb25mIgotQlVJTERISVNUT1JZX0NPTU1JVCA/PSAiMCIKK0JVSUxESElTVE9SWV9DT01NSVQgPz0gIjEiCiBCVUlMREhJU1RPUllfQ09NTUlUX0FVVEhPUiA/PSAiYnVpbGRoaXN0b3J5IDxidWlsZGhpc3RvcnlAJHtESVNUUk99PiIKIEJVSUxESElTVE9SWV9QVVNIX1JFUE8gPz0gIiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCmluZGV4IGFjMmMxNTEuLmZjZmQ1ZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKQEAgLTcsNiArNywyMyBAQAogIyBXZSBuZWVkIHRvIHVuc2V0IENDQUNIRSBvdGhlcndpc2UgY21ha2UgZ2V0cyB0b28gY29uZnVzZWQKIENDQUNIRSA9ICIiCiAKKyMgV2hhdCBDTWFrZSBnZW5lcmF0b3IgdG8gdXNlLgorIyBUaGUgc3VwcG9ydGVkIG9wdGlvbnMgYXJlICJVbml4IE1ha2VmaWxlcyIgb3IgIk5pbmphIi4KK09FQ01BS0VfR0VORVJBVE9SID89ICJOaW5qYSIKKworcHl0aG9uKCkgeworICAgIGdlbmVyYXRvciA9IGQuZ2V0VmFyKCJPRUNNQUtFX0dFTkVSQVRPUiIpCisgICAgaWYgZ2VuZXJhdG9yID09ICJVbml4IE1ha2VmaWxlcyI6CisgICAgICAgIGFyZ3MgPSAiLUcgJ1VuaXggTWFrZWZpbGVzJyAtRENNQUtFX01BS0VfUFJPR1JBTT0iICsgZC5nZXRWYXIoIk1BS0UiKQorICAgICAgICBkLnNldFZhcigiT0VDTUFLRV9HRU5FUkFUT1JfQVJHUyIsIGFyZ3MpCisgICAgICAgIGQuc2V0VmFyRmxhZygiZG9fY29tcGlsZSIsICJwcm9ncmVzcyIsICJwZXJjZW50IikKKyAgICBlbGlmIGdlbmVyYXRvciA9PSAiTmluamEiOgorICAgICAgICBkLmFwcGVuZFZhcigiREVQRU5EUyIsICIgbmluamEtbmF0aXZlIikKKyAgICAgICAgZC5zZXRWYXIoIk9FQ01BS0VfR0VORVJBVE9SX0FSR1MiLCAiLUcgTmluamEgLURDTUFLRV9NQUtFX1BST0dSQU09bmluamEiKQorICAgICAgICBkLnNldFZhckZsYWcoImRvX2NvbXBpbGUiLCAicHJvZ3Jlc3MiLCAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIpCisgICAgZWxzZToKKyAgICAgICAgYmIuZmF0YWwoIlVua25vd24gQ01ha2UgR2VuZXJhdG9yICVzIiAlIGdlbmVyYXRvcikKK30KICMgQy9DKysgQ29tcGlsZXIgKHdpdGhvdXQgY3B1IGFyY2gvdHVuZSBhcmd1bWVudHMpCiBPRUNNQUtFX0NfQ09NUElMRVIgPz0gImBlY2hvICR7Q0N9IHwgc2VkICdzL15cKFteIF0qXCkuKi9cMS8nYCIKIE9FQ01BS0VfQ1hYX0NPTVBJTEVSID89ICJgZWNobyAke0NYWH0gfCBzZWQgJ3MvXlwoW14gXSpcKS4qL1wxLydgIgpAQCAtMzQsNiArNTEsMTEgQEAKIEVYVFJBX09FQ01BS0VfQlVJTERfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtQQVJBTExFTF9NQUtFfSAiCiBFWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1pbnN0YWxsID0gIiR7UEFSQUxMRUxfTUFLRUlOU1R9ICIKIAorT0VDTUFLRV9UQVJHRVRfQ09NUElMRSA/PSAiYWxsIgorT0VDTUFLRV9UQVJHRVRfSU5TVEFMTCA/PSAiaW5zdGFsbCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UgJHtkYXRhZGlyfS9jbWFrZSIKKwogIyBDTWFrZSBleHBlY3RzIHRhcmdldCBhcmNoaXRlY3R1cmVzIGluIHRoZSBmb3JtYXQgb2YgdW5hbWUoMiksCiAjIHdoaWNoIGRvIG5vdCBhbHdheXMgbWF0Y2ggVEFSR0VUX0FSQ0gsIHNvIGFsbCB0aGUgbmVjZXNzYXJ5CiAjIGNvbnZlcnNpb25zIHNob3VsZCBoYXBwZW4gaGVyZS4KQEAgLTExNiw2ICsxMzgsNyBAQAogCWZpCiAKIAljbWFrZSBcCisJICAke09FQ01BS0VfR0VORVJBVE9SX0FSR1N9IFwKIAkgICRvZWNtYWtlX3NpdGVmaWxlIFwKIAkgICR7T0VDTUFLRV9TT1VSQ0VQQVRIfSBcCiAJICAtRENNQUtFX0lOU1RBTExfUFJFRklYOlBBVEg9JHtwcmVmaXh9IFwKQEAgLTEzNiwxNSArMTU5LDE3IEBACiAJICAtV25vLWRldgogfQogCi1kb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgorY21ha2VfcnVuY21ha2VfYnVpbGQoKSB7CisJYmJub3RlICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH1WRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJZXZhbCAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9VkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorfQorCiBjbWFrZV9kb19jb21waWxlKCkgIHsKLQliYm5vdGUgVkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KLQlWRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWNtYWtlX3J1bmNtYWtlX2J1aWxkIC0tdGFyZ2V0ICR7T0VDTUFLRV9UQVJHRVRfQ09NUElMRX0KIH0KIAogY21ha2VfZG9faW5zdGFsbCgpIHsKLQliYm5vdGUgREVTVERJUj0nJHtEfScgY21ha2UgLS1idWlsZCAnJHtCfScgLS10YXJnZXQgaW5zdGFsbCAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9Ci0JREVTVERJUj0nJHtEfScgY21ha2UgLS1idWlsZCAnJHtCfScgLS10YXJnZXQgaW5zdGFsbCAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJREVTVERJUj0nJHtEfScgY21ha2VfcnVuY21ha2VfYnVpbGQgLS10YXJnZXQgJHtPRUNNQUtFX1RBUkdFVF9JTlNUQUxMfQogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwgZG9fZ2VuZXJhdGVfdG9vbGNoYWluX2ZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwppbmRleCAxOTI4NDU1Li5lZThhYTYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCkBAIC0zOCw3ICszOCw3IEBACiAgICAgZXh0cmFsaWJjcyA9IFsiIl0KICAgICBpZiAibXVzbCIgaW4gZC5nZXRWYXIoIkJBU0VDQU5BRElBTkVYVFJBT1MiKToKICAgICAgICAgZXh0cmFsaWJjcy5hcHBlbmQoIm11c2wiKQotICAgIGZvciB2YXJpYW50IGluIFsiIiwgInNwZSIsICJ4MzIiLCAiZWFiaSIsICJuMzIiLCAiaWxwMzIiXToKKyAgICBmb3IgdmFyaWFudCBpbiBbIiIsICJzcGUiLCAieDMyIiwgImVhYmkiLCAibjMyIiwgIl9pbHAzMiJdOgogICAgICAgICBmb3IgbGliYyBpbiBleHRyYWxpYmNzOgogICAgICAgICAgICAgZW50cnkgPSAibGludXgiCiAgICAgICAgICAgICBpZiB2YXJpYW50IGFuZCBsaWJjOgpAQCAtMTIzLDggKzEyMyw2IEBACiAgICAgICAgICAgIC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfS8uLiBcCiAgICAgICAgICAgIC1XbCwtcnBhdGgsJHtsaWJkaXJ9Ly4uICIKIAotREVQRU5EU19HRVRURVhUID0gImdldHRleHQtbmF0aXZlIG5hdGl2ZXNkay1nZXR0ZXh0IgotCiAjCiAjIFdlIG5lZWQgY2hycGF0aCA+PSAwLjE0IHRvIGVuc3VyZSB3ZSBjYW4gZGVhbCB3aXRoIDMyIGFuZCA2NCBiaXQKICMgYmluYXJpZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwppbmRleCBkMjE3NzE3Li40ZTg1Y2FiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCkBAIC00MSw4ICs0MSw2IEBACiAKIFRPT0xDSEFJTl9PUFRJT05TID0gIiIKIAotREVQRU5EU19HRVRURVhUID0gImdldHRleHQtbmF0aXZlIgotCiAjIFRoaXMgY2xhc3MgZW5jb2RlcyBzdGFnaW5nIHBhdGhzIGludG8gaXRzIHNjcmlwdHMgZGF0YSBzbyBjYW4gb25seSBiZQogIyByZXVzZWQgaWYgd2UgbWFuaXB1bGF0ZSB0aGUgcGF0aHMuCiBTU1RBVEVfU0NBTl9DTUQgPz0gIiR7U1NUQVRFX1NDQU5fQ01EX05BVElWRX0iCkBAIC05MiwzICs5MCw4IEBACiBleHBvcnQgTk0gPSAiJHtCVUlMRF9OTX0iCiAKIGluaGVyaXQgbm9wYWNrYWdlcworCitweXRob24gZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QgKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiZXh0ZW5kX3JlY2lwZV9zeXNyb290IiwgZCkKK30KK2FkZHRhc2sgYWRkdG9fcmVjaXBlX3N5c3Jvb3QgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKaW5kZXggYmMyZjAzZi4uNTM3NjU5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCkBAIC0yMywxMiArMjMsMTIgQEAKICMgVGhlIHByb2R1Y3QgbmFtZSB0aGF0IHRoZSBDVkUgZGF0YWJhc2UgdXNlcy4gIERlZmF1bHRzIHRvIEJQTiwgYnV0IG1heSBuZWVkIHRvCiAjIGJlIG92ZXJyaWRlbiBwZXIgcmVjaXBlIChmb3IgZXhhbXBsZSB0aWZmLmJiIHNldHMgQ1ZFX1BST0RVQ1Q9bGlidGlmZikuCiBDVkVfUFJPRFVDVCA/Pz0gIiR7QlBOfSIKK0NWRV9WRVJTSU9OID8/PSAiJHtQVn0iCiAKIENWRV9DSEVDS19EQl9ESVIgPz0gIiR7RExfRElSfS9DVkVfQ0hFQ0siCiBDVkVfQ0hFQ0tfREJfRklMRSA/PSAiJHtDVkVfQ0hFQ0tfREJfRElSfS9udmQuZGIiCiAKLUNWRV9DSEVDS19MT0NBTF9ESVIgPz0gIiR7V09SS0RJUn0vY3ZlIgotQ1ZFX0NIRUNLX0xPQ0FMX0ZJTEUgPz0gIiR7Q1ZFX0NIRUNLX0xPQ0FMX0RJUn0vY3ZlLmxvZyIKK0NWRV9DSEVDS19MT0cgPz0gIiR7VH0vY3ZlLmxvZyIKIENWRV9DSEVDS19UTVBfRklMRSA/PSAiJHtUTVBESVJ9L2N2ZV9jaGVjayIKIAogQ1ZFX0NIRUNLX0RJUiA/Pz0gIiR7REVQTE9ZX0RJUn0vY3ZlIgpAQCAtMTY5LDcgKzE2OSwxMCBAQAogICAgIGN2ZXNfcGF0Y2hlZCA9IFtdCiAgICAgY3Zlc191bnBhdGNoZWQgPSBbXQogICAgIGJwbiA9IGQuZ2V0VmFyKCJDVkVfUFJPRFVDVCIpCi0gICAgcHYgPSBkLmdldFZhcigiUFYiKS5zcGxpdCgiK2dpdCIpWzBdCisgICAgIyBJZiB0aGlzIGhhcyBiZWVuIHVuc2V0IHRoZW4gd2UncmUgbm90IHNjYW5uaW5nIGZvciBDVkVzIGhlcmUgKGZvciBleGFtcGxlLCBpbWFnZSByZWNpcGVzKQorICAgIGlmIG5vdCBicG46CisgICAgICAgIHJldHVybiAoW10sIFtdKQorICAgIHB2ID0gZC5nZXRWYXIoIkNWRV9WRVJTSU9OIikuc3BsaXQoIitnaXQiKVswXQogICAgIGN2ZXMgPSAiICIuam9pbihwYXRjaGVkX2N2ZXMpCiAgICAgY3ZlX2RiX2RpciA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRElSIikKICAgICBjdmVfd2hpdGVsaXN0ID0gYXN0LmxpdGVyYWxfZXZhbChkLmdldFZhcigiQ1ZFX0NIRUNLX0NWRV9XSElURUxJU1QiKSkKQEAgLTE4MSw5ICsxODQsNiBAQAogICAgICAgICBiYi5ub3RlKCJSZWNpcGUgaGFzIGJlZW4gd2hpdGVsaXN0ZWQsIHNraXBwaW5nIGNoZWNrIikKICAgICAgICAgcmV0dXJuIChbXSwgW10pCiAKLSAgICAjIEl0IGlzIG5lZWRlZCB0byBleHBvcnQgdGhlIHByb3hpZXMgdG8gZG93bmxvYWQgdGhlIGRhdGFiYXNlIHVzaW5nIEhUVFAKLSAgICBiYi51dGlscy5leHBvcnRfcHJveGllcyhkKQotCiAgICAgdHJ5OgogICAgICAgICAjIFdyaXRlIHRoZSBmYXV4IENTViBmaWxlIHRvIGJlIHVzZWQgd2l0aCBjdmUtY2hlY2stdG9vbAogICAgICAgICBmZCwgZmF1eCA9IHRlbXBmaWxlLm1rc3RlbXAocHJlZml4PSJjdmUtZmF1eC0iKQpAQCAtMjUxLDExICsyNTEsMTEgQEAKICAgICBDVkUgbWFuaWZlc3QgaWYgZW5hYmxlZC4KICAgICAiIiIKIAotICAgIGN2ZV9maWxlID0gZC5nZXRWYXIoIkNWRV9DSEVDS19MT0NBTF9GSUxFIikKKyAgICBjdmVfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfTE9HIikKICAgICBudmRfbGluayA9ICJodHRwczovL3dlYi5udmQubmlzdC5nb3Yvdmlldy92dWxuL2RldGFpbD92dWxuSWQ9IgogICAgIHdyaXRlX3N0cmluZyA9ICIiCiAgICAgdW5wYXRjaGVkX2N2ZXMgPSBbXQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihkLmdldFZhcigiQ1ZFX0NIRUNLX0xPQ0FMX0RJUiIpKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoY3ZlX2ZpbGUpKQogCiAgICAgZm9yIGN2ZSBpbiBzb3J0ZWQoY3ZlX2RhdGEpOgogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIlBBQ0tBR0UgTkFNRTogJXNcbiIgJSBkLmdldFZhcigiUE4iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZWJpYW4uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xhc3MKaW5kZXggODEyNDU1OC4uOTg5ZWE4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZWJpYW4uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlYmlhbi5iYmNsYXNzCkBAIC0yNSwxMiArMjUsMTAgQEAKIH0KIAogcHl0aG9uIGRlYmlhbl9wYWNrYWdlX25hbWVfaG9vayAoKSB7Ci0gICAgaW1wb3J0IGdsb2IsIGNvcHksIHN0YXQsIGVycm5vLCByZQorICAgIGltcG9ydCBnbG9iLCBjb3B5LCBzdGF0LCBlcnJubywgcmUsIHBhdGhsaWIsIHN1YnByb2Nlc3MKIAotICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCisgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCJQS0dERVNUIikKICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpCi0gICAgYmluX3JlID0gcmUuY29tcGlsZSgiLiovcz8iICsgb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcigiYmluZGlyIikpICsgIiQiKQotICAgIGxpYl9yZSA9IHJlLmNvbXBpbGUoIi4qLyIgKyBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJsaWJkaXIiKSkgKyAiJCIpCiAgICAgc29fcmUgPSByZS5jb21waWxlKCJsaWIuKlwuc28iKQogCiAgICAgZGVmIHNvY3J1bmNoKHMpOgpAQCAtNjAsMjUgKzU4LDMyIEBACiAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JQUk9WSURFU18nICsgcGtnLCAiICIgKyBwa2cgKyAiICg9IiArIGQuZ2V0VmFyKCJQS0dWIikgKyAiKSIpCiAKICAgICBkZWYgYXV0b19saWJuYW1lKHBhY2thZ2VzLCBvcmlnX3BrZyk6CisgICAgICAgIHAgPSBsYW1iZGEgdmFyOiBwYXRobGliLlB1cmVQYXRoKGQuZ2V0VmFyKHZhcikpCisgICAgICAgIGxpYmRpcnMgPSAocCgiYmFzZV9saWJkaXIiKSwgcCgibGliZGlyIikpCisgICAgICAgIGJpbmRpcnMgPSAocCgiYmFzZV9iaW5kaXIiKSwgcCgiYmFzZV9zYmluZGlyIiksIHAoImJpbmRpciIpLCBwKCJzYmluZGlyIikpCisKICAgICAgICAgc29uYW1lcyA9IFtdCiAgICAgICAgIGhhc19iaW5zID0gMAogICAgICAgICBoYXNfbGlicyA9IDAKLSAgICAgICAgZm9yIGZpbGUgaW4gcGtnZmlsZXNbb3JpZ19wa2ddOgotICAgICAgICAgICAgcm9vdCA9IG9zLnBhdGguZGlybmFtZShmaWxlKQotICAgICAgICAgICAgaWYgYmluX3JlLm1hdGNoKHJvb3QpOgorICAgICAgICBmb3IgZiBpbiBwa2dmaWxlc1tvcmlnX3BrZ106CisgICAgICAgICAgICAjIFRoaXMgaXMgLi4uL3BhY2thZ2VzLXNwbGl0L29yaWdfcGtnLworICAgICAgICAgICAgcGtncGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgocGtnZGVzdCwgb3JpZ19wa2cpCisgICAgICAgICAgICAjIFN0cmlwIHBrZ3BhdGggb2ZmIHRoZSBmdWxsIHBhdGggdG8gYSBmaWxlIGluIHRoZSBwYWNrYWdlLCByZS1yb290CisgICAgICAgICAgICAjIHNvIGl0IGlzIGFic29sdXRlLCBhbmQgdGhlbiBnZXQgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIGZpbGUuCisgICAgICAgICAgICBwYXRoID0gcGF0aGxpYi5QdXJlUGF0aCgiLyIpIC8gKHBhdGhsaWIuUHVyZVBhdGgoZikucmVsYXRpdmVfdG8ocGtncGF0aCkucGFyZW50KQorICAgICAgICAgICAgaWYgcGF0aCBpbiBiaW5kaXJzOgogICAgICAgICAgICAgICAgIGhhc19iaW5zID0gMQotICAgICAgICAgICAgaWYgbGliX3JlLm1hdGNoKHJvb3QpOgorICAgICAgICAgICAgaWYgcGF0aCBpbiBsaWJkaXJzOgogICAgICAgICAgICAgICAgIGhhc19saWJzID0gMQotICAgICAgICAgICAgICAgIGlmIHNvX3JlLm1hdGNoKG9zLnBhdGguYmFzZW5hbWUoZmlsZSkpOgotICAgICAgICAgICAgICAgICAgICBjbWQgPSAoZC5nZXRWYXIoJ1RBUkdFVF9QUkVGSVgnKSBvciAiIikgKyAib2JqZHVtcCAtcCAiICsgZmlsZSArICIgMj4vZGV2L251bGwiCi0gICAgICAgICAgICAgICAgICAgIGZkID0gb3MucG9wZW4oY21kKQotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IGZkLnJlYWRsaW5lcygpCi0gICAgICAgICAgICAgICAgICAgIGZkLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIlxzK1NPTkFNRVxzKyhbXlxzXSopIiwgbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG0gYW5kIG5vdCBtLmdyb3VwKDEpIGluIHNvbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQobS5ncm91cCgxKSkKLQorICAgICAgICAgICAgICAgIGlmIHNvX3JlLm1hdGNoKG9zLnBhdGguYmFzZW5hbWUoZikpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSBbZC5leHBhbmQoIiR7VEFSR0VUX1BSRUZJWH1vYmpkdW1wIiksICItcCIsIGZdCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG0gaW4gcmUuZmluZGl0ZXIoIlxzK1NPTkFNRVxzKyhbXlxzXSspIiwgb3V0cHV0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKDEpIG5vdCBpbiBzb25hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb25hbWVzLmFwcGVuZChtLmdyb3VwKDEpKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGJiLmRlYnVnKDEsICdMSUJOQU1FUzogcGtnICVzIGxpYnMgJWQgYmlucyAlZCBzb25hbWVzICVzJyAlIChvcmlnX3BrZywgaGFzX2xpYnMsIGhhc19iaW5zLCBzb25hbWVzKSkKICAgICAgICAgc29uYW1lID0gTm9uZQogICAgICAgICBpZiBsZW4oc29uYW1lcykgPT0gMToKQEAgLTEyMCw2ICsxMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5ld3BrZy5maW5kKG1scHJlKSA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3BrZyA9IG1scHJlICsgbmV3cGtnCiAgICAgICAgICAgICAgICAgICAgIGlmIG5ld3BrZyAhPSBwa2c6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJkZWJpYW46IHJlbmFtaW5nICVzIHRvICVzIiAlIChwa2csIG5ld3BrZykpCiAgICAgICAgICAgICAgICAgICAgICAgICBkLnNldFZhcignUEtHXycgKyBwa2csIG5ld3BrZykKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9ycHJvdmlkZXMocGtnLCBkKQogICAgICAgICBlbHNlOgpAQCAtMTM4LDQgKzE0NCwzIEBACiBFWFBPUlRfRlVOQ1RJT05TIHBhY2thZ2VfbmFtZV9ob29rCiAKIERFQklBTl9OQU1FUyA9ICIxIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlcGxveS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXBsb3kuYmJjbGFzcwppbmRleCA4YWQwN2RhLi42ZDUyOTA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlcGxveS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGVwbG95LmJiY2xhc3MKQEAgLTgsNCArOCw0IEBACiB9CiBhZGR0YXNrIGRvX2RlcGxveV9zZXRzY2VuZQogZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0J9IgotZG9fZGVwbG95W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCitkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCmluZGV4IDhmNWJjODYuLjU2ODgyYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKQEAgLTE1Miw5ICsxNTIsNjUgQEAKIH0KIAogcHl0aG9uIGRldnRvb2xfcG9zdF9wYXRjaCgpIHsKKyAgICBpbXBvcnQgc2h1dGlsCiAgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1RFTVBESVInKQogICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NyY3N1YmRpcicpLCAncicpIGFzIGY6CiAgICAgICAgIHNyY3N1YmRpciA9IGYucmVhZCgpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnaW5pdGlhbF9yZXYnKSwgJ3InKSBhcyBmOgorICAgICAgICBpbml0aWFsX3JldiA9IGYucmVhZCgpCisKKyAgICBkZWYgcm1fcGF0Y2hlcygpOgorICAgICAgICBwYXRjaGVzX2RpciA9IG9zLnBhdGguam9pbihzcmNzdWJkaXIsICdwYXRjaGVzJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0Y2hlc19kaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRjaGVzX2RpcikKKyAgICAgICAgIyBSZXN0b3JlIGFueSAicGF0Y2hlcyIgZGlyZWN0b3J5IHRoYXQgd2FzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIHNvdXJjZSB0cmVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgLS0gcGF0Y2hlcycsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZXh0cmFfb3ZlcnJpZGVzID0gZC5nZXRWYXIoJ0RFVlRPT0xfRVhUUkFfT1ZFUlJJREVTJykKKyAgICBpZiBleHRyYV9vdmVycmlkZXM6CisgICAgICAgIGV4dHJhX292ZXJyaWRlX2xpc3QgPSBleHRyYV9vdmVycmlkZXMuc3BsaXQoJzonKQorICAgICAgICBkZXZicmFuY2ggPSBkLmdldFZhcignREVWVE9PTF9ERVZCUkFOQ0gnKQorICAgICAgICBkZWZhdWx0X292ZXJyaWRlcyA9IGQuZ2V0VmFyKCdPVkVSUklERVMnKS5zcGxpdCgnOicpCisgICAgICAgIG5vX292ZXJyaWRlcyA9IFtdCisgICAgICAgICMgRmlyc3QsIHdlIG1heSBoYXZlIHNvbWUgb3ZlcnJpZGVzIHRoYXQgYXJlIHJlZmVycmVkIHRvIGluIHRoZSByZWNpcGUgc2V0IGluCisgICAgICAgICMgb3VyIGNvbmZpZ3VyYXRpb24sIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGJyYW5jaCB0aGF0IGV4Y2x1ZGVzIHRob3NlCisgICAgICAgIGZvciBvdmVycmlkZSBpbiBkZWZhdWx0X292ZXJyaWRlczoKKyAgICAgICAgICAgIGlmIG92ZXJyaWRlIG5vdCBpbiBleHRyYV9vdmVycmlkZV9saXN0OgorICAgICAgICAgICAgICAgIG5vX292ZXJyaWRlcy5hcHBlbmQob3ZlcnJpZGUpCisgICAgICAgIGlmIGRlZmF1bHRfb3ZlcnJpZGVzICE9IG5vX292ZXJyaWRlczoKKyAgICAgICAgICAgICMgU29tZSBvdmVycmlkZXMgYXJlIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCBzbworICAgICAgICAgICAgIyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIGJyYW5jaCB3aGVyZSBub25lIG9mIHRoZSBvdmVycmlkZXMgYXJlIGFjdGl2ZQorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcyAtYiBkZXZ0b29sLW5vLW92ZXJyaWRlcycgJSBpbml0aWFsX3JldiwgY3dkPXNyY3N1YmRpcikKKyAgICAgICAgICAgICMgUnVuIGRvX3BhdGNoIGZ1bmN0aW9uIHdpdGggdGhlIG92ZXJyaWRlIGFwcGxpZWQKKyAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgJzonLmpvaW4obm9fb3ZlcnJpZGVzKSkKKyAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fcGF0Y2gnLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBybV9wYXRjaGVzKCkKKyAgICAgICAgICAgICMgTm93IHdlIG5lZWQgdG8gcmVjb25jaWxlIHRoZSBkZXYgYnJhbmNoIHdpdGggdGhlIG5vLW92ZXJyaWRlcyBvbmUKKyAgICAgICAgICAgICMgKG90aGVyd2lzZSB3ZSdkIGxpa2VseSBiZSBsZWZ0IHdpdGggaWRlbnRpY2FsIGNvbW1pdHMgdGhhdCBoYXZlIGRpZmZlcmVudCBoYXNoZXMpCisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgcmViYXNlIGRldnRvb2wtbm8tb3ZlcnJpZGVzJywgY3dkPXNyY3N1YmRpcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMgLWIgZGV2dG9vbC1uby1vdmVycmlkZXMnICUgZGV2YnJhbmNoLCBjd2Q9c3Jjc3ViZGlyKQorCisgICAgICAgIGZvciBvdmVycmlkZSBpbiBleHRyYV9vdmVycmlkZV9saXN0OgorICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgICAgICBpZiBvdmVycmlkZSBpbiBkZWZhdWx0X292ZXJyaWRlczoKKyAgICAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGJyYW5jaCBkZXZ0b29sLW92ZXJyaWRlLSVzICVzJyAlIChvdmVycmlkZSwgZGV2YnJhbmNoKSwgY3dkPXNyY3N1YmRpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBSZXNldCBiYWNrIHRvIHRoZSBpbml0aWFsIGNvbW1pdCBvbiBhIG5ldyBicmFuY2gKKyAgICAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzIC1iIGRldnRvb2wtb3ZlcnJpZGUtJXMnICUgKGluaXRpYWxfcmV2LCBvdmVycmlkZSksIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICAgICAgIyBSdW4gZG9fcGF0Y2ggZnVuY3Rpb24gd2l0aCB0aGUgb3ZlcnJpZGUgYXBwbGllZAorICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5hcHBlbmRWYXIoJ09WRVJSSURFUycsICc6JXMnICUgb3ZlcnJpZGUpCisgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19wYXRjaCcsIGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBybV9wYXRjaGVzKCkKKyAgICAgICAgICAgICAgICAjIE5vdyB3ZSBuZWVkIHRvIHJlY29uY2lsZSB0aGUgbmV3IGJyYW5jaCB3aXRoIHRoZSBuby1vdmVycmlkZXMgb25lCisgICAgICAgICAgICAgICAgIyAob3RoZXJ3aXNlIHdlJ2QgbGlrZWx5IGJlIGxlZnQgd2l0aCBpZGVudGljYWwgY29tbWl0cyB0aGF0IGhhdmUgZGlmZmVyZW50IGhhc2hlcykKKyAgICAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHJlYmFzZSBkZXZ0b29sLW5vLW92ZXJyaWRlcycsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMnICUgZGV2YnJhbmNoLCBjd2Q9c3Jjc3ViZGlyKQogICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgdGFnIC1mIGRldnRvb2wtcGF0Y2hlZCcsIGN3ZD1zcmNzdWJkaXIpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvX2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb19mZWF0dXJlc19jaGVjay5iYmNsYXNzCmluZGV4IGU3NGQzYzAuLjliNzhiMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvX2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9fZmVhdHVyZXNfY2hlY2suYmJjbGFzcwpAQCAtMTcsNyArMTcsNyBAQAogICAgIGlmIGFueV9vZl9kaXN0cm9fZmVhdHVyZXM6CiAgICAgICAgIGFueV9vZl9kaXN0cm9fZmVhdHVyZXMgPSBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzLnNwbGl0KCkKICAgICAgICAgaWYgc2V0LmlzZGlzam9pbnQoc2V0KGFueV9vZl9kaXN0cm9fZmVhdHVyZXMpLHNldChkaXN0cm9fZmVhdHVyZXMpKToKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJvbmUgb2YgJyVzJyBuZWVkcyB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMiICUgYW55X29mX2Rpc3Ryb19mZWF0dXJlcykKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIm9uZSBvZiAnJXMnIG5lZWRzIHRvIGJlIGluIERJU1RST19GRUFUVVJFUyIgJSBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzKQogCiAgICAgcmVxdWlyZWRfZGlzdHJvX2ZlYXR1cmVzID0gZC5nZXRWYXIoJ1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUycpCiAgICAgaWYgcmVxdWlyZWRfZGlzdHJvX2ZlYXR1cmVzOgpAQCAtMjYsMTIgKzI2LDEyIEBACiAgICAgICAgICAgICBpZiBmIGluIGRpc3Ryb19mZWF0dXJlczoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgibWlzc2luZyByZXF1aXJlZCBkaXN0cm8gZmVhdHVyZSAnJXMnIChub3QgaW4gRElTVFJPX0ZFQVRVUkVTKSIgJSBmKQorICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIm1pc3NpbmcgcmVxdWlyZWQgZGlzdHJvIGZlYXR1cmUgJyVzJyAobm90IGluIERJU1RST19GRUFUVVJFUykiICUgZikKIAogICAgIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlcyA9IGQuZ2V0VmFyKCdDT05GTElDVF9ESVNUUk9fRkVBVFVSRVMnKQogICAgIGlmIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlczoKICAgICAgICAgY29uZmxpY3RfZGlzdHJvX2ZlYXR1cmVzID0gY29uZmxpY3RfZGlzdHJvX2ZlYXR1cmVzLnNwbGl0KCkKICAgICAgICAgZm9yIGYgaW4gY29uZmxpY3RfZGlzdHJvX2ZlYXR1cmVzOgogICAgICAgICAgICAgaWYgZiBpbiBkaXN0cm9fZmVhdHVyZXM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImNvbmZsaWN0aW5nIGRpc3RybyBmZWF0dXJlICclcycgKGluIERJU1RST19GRUFUVVJFUykiICUgZikKKyAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJjb25mbGljdGluZyBkaXN0cm8gZmVhdHVyZSAnJXMnIChpbiBESVNUUk9fRkVBVFVSRVMpIiAlIGYpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCmluZGV4IGM4NWY3YjMuLjU5ZWU4Y2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCkBAIC0xODgsMTQgKzE4OCw2IEBACiB9CiBkb19kaXN0cm9kYXRhW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKIAotYWRkdGFzayBkaXN0cm9kYXRhYWxsIGFmdGVyIGRvX2Rpc3Ryb2RhdGEKLWRvX2Rpc3Ryb2RhdGFhbGxbcmVjcmRlcHRhc2tdID0gImRvX2Rpc3Ryb2RhdGFhbGwgZG9fZGlzdHJvZGF0YSIKLWRvX2Rpc3Ryb2RhdGFhbGxbcmVjaWRlcHRhc2tdID0gImRvXyR7QkJfREVGQVVMVF9UQVNLfSIKLWRvX2Rpc3Ryb2RhdGFhbGxbbm9zdGFtcF0gPSAiMSIKLWRvX2Rpc3Ryb2RhdGFhbGwoKSB7Ci0gICAgICAgIDoKLX0KLQogYWRkaGFuZGxlciBjaGVja3BrZ19ldmVudGhhbmRsZXIKIGNoZWNrcGtnX2V2ZW50aGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LkJ1aWxkU3RhcnRlZCBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCIKIHB5dGhvbiBjaGVja3BrZ19ldmVudGhhbmRsZXIoKSB7CkBAIC0yNzIsMjQgKzI2NCwxNSBAQAogICAgICAgICAgICAgaWYgdXBzdHJlYW1fY2hlY2tfdW5yZWxpYWJsZSA9PSAiMSI6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJOL0EiLCAiQ0hFQ0tfSVNfVU5SRUxJQUJMRSIKIAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHV2ID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV91cHN0cmVhbV92ZXJzaW9uKGxvY2FsZGF0YSkKLSAgICAgICAgICAgICAgICBwdXB2ZXIgPSB1dlsndmVyc2lvbiddIGlmIHV2Wyd2ZXJzaW9uJ10gZWxzZSAiTi9BIgotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHB1cHZlciA9ICJOL0EiCisgICAgICAgICAgICB1diA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihsb2NhbGRhdGEpCisgICAgICAgICAgICBwdXB2ZXIgPSB1dlsndmVyc2lvbiddIGlmIHV2Wyd2ZXJzaW9uJ10gZWxzZSAiTi9BIgorICAgICAgICAgICAgcHZlcnNpb24gPSB1dlsnY3VycmVudF92ZXJzaW9uJ10KKyAgICAgICAgICAgIHJldmlzaW9uID0gdXZbJ3JldmlzaW9uJ10gaWYgdXZbJ3JldmlzaW9uJ10gZWxzZSAiTi9BIgogCiAgICAgICAgICAgICBpZiBwdXB2ZXIgPT0gIk4vQSI6CiAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVTktOT1dOIiBpZiB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiVU5LTk9XTl9CUk9LRU4iCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNyY191cmkgPSAobG9jYWxkYXRhLmdldFZhcignU1JDX1VSSScpIG9yICcnKS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaWYgc3JjX3VyaToKLSAgICAgICAgICAgICAgICAgICAgdXJpX3R5cGUsIF8sIF8sIF8sIF8sIF8gPSBkZWNvZGV1cmwoc3JjX3VyaVswXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB1cmlfdHlwZSA9ICJub25lIgotICAgICAgICAgICAgICAgIHB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB2ZXJzaW9uLCB1cmlfdHlwZSkKLSAgICAgICAgICAgICAgICB1cHYsIF8sIF8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHVwdmVyLCB1cmlfdHlwZSkKLQotICAgICAgICAgICAgICAgIGNtcCA9IHZlcmNtcF9zdHJpbmcocHYsIHVwdikKKyAgICAgICAgICAgICAgICBjbXAgPSB2ZXJjbXBfc3RyaW5nKHB2ZXJzaW9uLCBwdXB2ZXIpCiAgICAgICAgICAgICAgICAgaWYgY21wID09IC0xOgogICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVQREFURSIgaWYgbm90IHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJLTk9XTl9CUk9LRU4iCiAgICAgICAgICAgICAgICAgZWxpZiBjbXAgPT0gMDoKQEAgLTI5Nyw3ICsyODAsNyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVU5LTk9XTiIgaWYgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIlVOS05PV05fQlJPS0VOIgogCi0gICAgICAgICAgICByZXR1cm4gcHVwdmVyLCBwc3RhdHVzCisgICAgICAgICAgICByZXR1cm4gcHZlcnNpb24sIHB1cHZlciwgcHN0YXR1cywgcmV2aXNpb24KIAogCiAgICAgICAgICIiImluaXRpYWxpemUgbG9nIGZpbGVzLiIiIgpAQCAtMzM0LDcgKzMxNyw2IEBACiAKICAgICAgICAgcGRlc2MgPSBsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicpCiAgICAgICAgIHBncnAgPSBsb2NhbGRhdGEuZ2V0VmFyKCdTRUNUSU9OJykKLSAgICAgICAgcHZlcnNpb24gPSBsb2NhbGRhdGEuZ2V0VmFyKCdQVicpCiAgICAgICAgIHBsaWNlbnNlID0gbG9jYWxkYXRhLmdldFZhcignTElDRU5TRScpCiAgICAgICAgIHBzZWN0aW9uID0gbG9jYWxkYXRhLmdldFZhcignU0VDVElPTicpCiAgICAgICAgIHBob21lID0gbG9jYWxkYXRhLmdldFZhcignSE9NRVBBR0UnKQpAQCAtMzQ1LDcgKzMyNyw3IEBACiAgICAgICAgIHBzcmN1cmkgPSBsb2NhbGRhdGEuZ2V0VmFyKCdTUkNfVVJJJykKICAgICAgICAgbWFpbnRhaW5lciA9IGxvY2FsZGF0YS5nZXRWYXIoJ1JFQ0lQRV9NQUlOVEFJTkVSJykKIAotICAgICAgICBwdXB2ZXIsIHBzdGF0dXMgPSBnZXRfdXBzdHJlYW1fdmVyc2lvbl9hbmRfc3RhdHVzKCkKKyAgICAgICAgcHZlcnNpb24sIHB1cHZlciwgcHN0YXR1cywgcHJldmlzaW9uID0gZ2V0X3Vwc3RyZWFtX3ZlcnNpb25fYW5kX3N0YXR1cygpCiAKICAgICAgICAgaWYgcHNyY3VyaToKICAgICAgICAgICAgIHBzcmN1cmkgPSBwc3JjdXJpLnNwbGl0KClbMF0KQEAgLTM1OCwyMCArMzQwLDEyIEBACiAgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCAiYSIpIGFzIGY6CiAgICAgICAgICAgICB3cml0ZXIgPSBjc3Yud3JpdGVyKGYsIGRlbGltaXRlcj0nXHQnKQogICAgICAgICAgICAgd3JpdGVyLndyaXRlcm93KFtwbmFtZSwgcHZlcnNpb24sIHB1cHZlciwgcGxpY2Vuc2UsIHBzZWN0aW9uLCBwaG9tZSwgCi0gICAgICAgICAgICAgICAgcHJlbGVhc2UsIHBkZXBlbmRzLCBwYnVndHJhY2tlciwgcHBlLCBwZGVzYywgcHN0YXR1cywgcHVwdmVyLAorICAgICAgICAgICAgICAgIHByZWxlYXNlLCBwZGVwZW5kcywgcGJ1Z3RyYWNrZXIsIHBwZSwgcGRlc2MsIHBzdGF0dXMsIHByZXZpc2lvbiwKICAgICAgICAgICAgICAgICBwc3JjdXJpLCBtYWludGFpbmVyLCBub191cGdyX3JlYXNvbl0pCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIH0KIAotYWRkdGFzayBjaGVja3BrZ2FsbCBhZnRlciBkb19jaGVja3BrZwotZG9fY2hlY2twa2dhbGxbcmVjcmRlcHRhc2tdID0gImRvX2NoZWNrcGtnYWxsIGRvX2NoZWNrcGtnIgotZG9fY2hlY2twa2dhbGxbcmVjaWRlcHRhc2tdID0gImRvXyR7QkJfREVGQVVMVF9UQVNLfSIKLWRvX2NoZWNrcGtnYWxsW25vc3RhbXBdID0gIjEiCi1kb19jaGVja3BrZ2FsbCgpIHsKLSAgICAgICAgOgotfQotCiBhZGRoYW5kbGVyIGRpc3Ryb19jaGVja19ldmVudGhhbmRsZXIKIGRpc3Ryb19jaGVja19ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZFN0YXJ0ZWQiCiBweXRob24gZGlzdHJvX2NoZWNrX2V2ZW50aGFuZGxlcigpIHsKQEAgLTQwNywxMyArMzgxLDYgQEAKICAgICBkYy5zYXZlX2Rpc3Ryb19jaGVja19yZXN1bHQocmVzdWx0LCBkYXRldGltZSwgcmVzdWx0X2ZpbGUsIGQpCiB9CiAKLWFkZHRhc2sgZGlzdHJvX2NoZWNrYWxsIGFmdGVyIGRvX2Rpc3Ryb19jaGVjawotZG9fZGlzdHJvX2NoZWNrYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19kaXN0cm9fY2hlY2thbGwgZG9fZGlzdHJvX2NoZWNrIgotZG9fZGlzdHJvX2NoZWNrYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19kaXN0cm9fY2hlY2thbGxbbm9zdGFtcF0gPSAiMSIKLWRvX2Rpc3Ryb19jaGVja2FsbCgpIHsKLSAgICAgICAgOgotfQogIwogI0NoZWNrIE1pc3NpbmcgTGljZW5zZSBUZXh0LgogI1VzZSB0aGlzIHRhc2sgdG8gZ2VuZXJhdGUgdGhlIG1pc3NpbmcgbGljZW5zZSB0ZXh0IGRhdGEgZm9yIHBrZy1yZXBvcnQgc3lzdGVtLApAQCAtNDU4LDExICs0MjUsMyBAQAogICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKICAgICByZXR1cm4KIH0KLQotYWRkdGFzayBjaGVja2xpY2Vuc2VhbGwgYWZ0ZXIgZG9fY2hlY2tsaWNlbnNlCi1kb19jaGVja2xpY2Vuc2VhbGxbcmVjcmRlcHRhc2tdID0gImRvX2NoZWNrbGljZW5zZWFsbCBkb19jaGVja2xpY2Vuc2UiCi1kb19jaGVja2xpY2Vuc2VhbGxbcmVjaWRlcHRhc2tdID0gImRvXyR7QkJfREVGQVVMVF9UQVNLfSIKLWRvX2NoZWNrbGljZW5zZWFsbFtub3N0YW1wXSA9ICIxIgotZG9fY2hlY2tsaWNlbnNlYWxsKCkgewotICAgICAgICA6Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKaW5kZXggNjVkZDEzZC4uYzlmNWNmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtNTMsNiArNTMsOSBAQAogICAgICAgICAgICAgZC5zZXRWYXIoJ0JCX0RPTlRfQ0FDSEUnLCAnMScpCiAKICAgICBpZiBleHRlcm5hbHNyYzoKKyAgICAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKICAgICAgICAgZC5zZXRWYXIoJ1MnLCBleHRlcm5hbHNyYykKICAgICAgICAgaWYgZXh0ZXJuYWxzcmNidWlsZDoKICAgICAgICAgICAgIGQuc2V0VmFyKCdCJywgZXh0ZXJuYWxzcmNidWlsZCkKQEAgLTg1LDEwICs4OCwxMCBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZyh0YXNrLCAibG9ja2ZpbGVzIiwgIiAke1N9L3NpbmdsZXRhc2subG9jayIpCiAKICAgICAgICAgICAgICMgV2UgZG8gbm90IHdhbnQgb3VyIHNvdXJjZSB0byBiZSB3aXBlZCBvdXQsIGV2ZXIgKGtlcm5lbC5iYmNsYXNzIGRvZXMgdGhpcyBmb3IgZG9fY2xlYW4pCi0gICAgICAgICAgICBjbGVhbmRpcnMgPSAoZC5nZXRWYXJGbGFnKHRhc2ssICdjbGVhbmRpcnMnLCBGYWxzZSkgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgICAgIGNsZWFuZGlycyA9IG9lLnJlY2lwZXV0aWxzLnNwbGl0X3Zhcl92YWx1ZShkLmdldFZhckZsYWcodGFzaywgJ2NsZWFuZGlycycsIEZhbHNlKSBvciAnJykKICAgICAgICAgICAgIHNldHZhbHVlID0gRmFsc2UKICAgICAgICAgICAgIGZvciBjbGVhbmRpciBpbiBjbGVhbmRpcnNbOl06Ci0gICAgICAgICAgICAgICAgaWYgZC5leHBhbmQoY2xlYW5kaXIpID09IGV4dGVybmFsc3JjOgorICAgICAgICAgICAgICAgIGlmIG9lLnBhdGguaXNfcGF0aF9wYXJlbnQoZXh0ZXJuYWxzcmMsIGQuZXhwYW5kKGNsZWFuZGlyKSk6CiAgICAgICAgICAgICAgICAgICAgIGNsZWFuZGlycy5yZW1vdmUoY2xlYW5kaXIpCiAgICAgICAgICAgICAgICAgICAgIHNldHZhbHVlID0gVHJ1ZQogICAgICAgICAgICAgaWYgc2V0dmFsdWU6CkBAIC0xNzMsNyArMTc2LDkgQEAKIGV4dGVybmFsc3JjX2RvX2J1aWxkY2xlYW4oKSB7CiAJaWYgWyAtZSBNYWtlZmlsZSAtbyAtZSBtYWtlZmlsZSAtbyAtZSBHTlVtYWtlZmlsZSBdOyB0aGVuCiAJCXJtIC1mICR7QCcgJy5qb2luKFt4LnNwbGl0KCc6JylbMF0gZm9yIHggaW4gKGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19TWU1MSU5LUycpIG9yICcnKS5zcGxpdCgpXSl9Ci0JCW9lX3J1bm1ha2UgY2xlYW4gfHwgZGllICJtYWtlIGZhaWxlZCIKKwkJaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdOyB0aGVuCisJCQlvZV9ydW5tYWtlIGNsZWFuIHx8IGRpZSAibWFrZSBmYWlsZWQiCisJCWZpCiAJZWxzZQogCQliYm5vdGUgIm5vdGhpbmcgdG8gZG8gLSBubyBtYWtlZmlsZSBmb3VuZCIKIAlmaQpAQCAtMTg5LDcgKzE5NCw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIGdpdF9kaXIgPSBvcy5wYXRoLmpvaW4oc19kaXIsCi0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsICctQycsIHNfZGlyLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddKS5kZWNvZGUoInV0Zi04IikucnN0cmlwKCkpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsICctQycsIHNfZGlyLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKS5kZWNvZGUoInV0Zi04IikucnN0cmlwKCkpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgogICAgICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKaW5kZXggZGE2OGU2My4uYmUyZWYzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKQEAgLTMsNyArMyw3IEBACiAgICAgICAgIHJldHVybiAiIgogICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKICAgICAgICAgcmV0dXJuICJnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIgotICAgIHJldHVybiBkLmdldFZhcignREVQRU5EU19HRVRURVhUJywgRmFsc2UpCisgICAgcmV0dXJuICJnZXR0ZXh0LW5hdGl2ZSIKIAogZGVmIGdldHRleHRfb2Vjb25mKGQpOgogICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKQEAgLTEzLDggKzEzLDYgQEAKICAgICAgICAgcmV0dXJuICctLWRpc2FibGUtbmxzJwogICAgIHJldHVybiAiLS1lbmFibGUtbmxzIgogCi1ERVBFTkRTX0dFVFRFWFQgPz89ICJnZXR0ZXh0LW5hdGl2ZSIKLQogQkFTRURFUEVORFNfYXBwZW5kID0gIiAke0BnZXR0ZXh0X2RlcGVuZGVuY2llcyhkKX0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAke0BnZXR0ZXh0X29lY29uZihkKX0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MKaW5kZXggYTgxOTBiNy4uZTQyOWJkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MKQEAgLTksNiArOSw3IEBACiAgICAgICAgICAgICBtbHByZWZpeD0ke01MUFJFRklYfSBcCiAgICAgICAgICAgICBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gXAogICAgICAgICAgICAgbGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgICAgICBsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0gXAogICAgICAgICAgICAgYmFzZV9saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICAgICAgICAgICAgYmluZGlyPSR7YmluZGlyfQogZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbGlkZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbGlkZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNDIxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dsaWRlLmJiY2xhc3MKQEAgLTAsMCArMSw5IEBACisjIEhhbmRsZSBHbGlkZSBWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IHVzZQorIworIyBDb3B5cmlnaHQgMjAxOCAoQykgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0RFUEVORFNfYXBwZW5kID0gIiBnbGlkZS1uYXRpdmUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7Qn0vc3JjLyR7R09fSU1QT1JUfSAmJiBnbGlkZSBpbnN0YWxsICkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCmluZGV4IDRjY2M4ZTAuLmVmY2I2Y2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcwpAQCAtMjAsNyArMjAsOCBAQAogCiBGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZGV2aGVscCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitHTk9NRUJBU0VCVUlMRENMQVNTID8/PSAiYXV0b3Rvb2xzIgoraW5oZXJpdCAke0dOT01FQkFTRUJVSUxEQ0xBU1N9IHBrZ2NvbmZpZwogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL3Njcm9sbGtlZXBlci8qCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKaW5kZXggMDliMDFhOC4uZDMzZDgzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwpAQCAtMSwyMyArMSw2IEBACiBpbmhlcml0IGdvYXJjaCBwdGVzdAogCi1kZWYgZ2V0X2dvX3BhcmFsbGVsX21ha2UoZCk6Ci0gICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQotICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5Ci0gICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBhIGRpZmZlcmVudCBtZWFuaW5nIGluIGdvbGFuZwotICAgIHdoaWxlIHBtOgotICAgICAgICBvcHQgPSBwbS5wb3AoMCkKLSAgICAgICAgaWYgb3B0ID09ICctaic6Ci0gICAgICAgICAgICB2ID0gcG0ucG9wKDApCi0gICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6Ci0gICAgICAgICAgICB2ID0gb3B0WzI6XS5zdHJpcCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIHJldHVybiAnLXAgJWQnICUgaW50KHYpCi0KLSAgICByZXR1cm4gIiIKLQotR09fUEFSQUxMRUxfQlVJTEQgPz0gIiR7QGdldF9nb19wYXJhbGxlbF9tYWtlKGQpfSIKK0dPX1BBUkFMTEVMX0JVSUxEID89ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctcCAlZCcpfSIKIAogR09ST09UX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBHT1JPT1RfY2xhc3MtbmF0aXZlc2RrID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9nbyIKQEAgLTQxLDggKzI0LDkgQEAKIEdPX0xJTktNT0RFX2NsYXNzLW5hdGl2ZXNkayA9ICItLWxpbmttb2RlPWV4dGVybmFsIgogR09fTERGTEFHUyA/PSAnLWxkZmxhZ3M9IiR7R09fUlBBVEh9ICR7R09fTElOS01PREV9IC1leHRsZGZsYWdzICcke0dPX0VYVExERkxBR1N9JyInCiBleHBvcnQgR09CVUlMREZMQUdTID89ICItdiAke0dPX0xERkxBR1N9IgorZXhwb3J0IEdPUEFUSF9PTUlUX0lOX0FDVElPTklEID89ICIxIgogZXhwb3J0IEdPUFRFU1RCVUlMREZMQUdTID89ICIke0dPQlVJTERGTEFHU30gLWMiCi1leHBvcnQgR09QVEVTVEZMQUdTID89ICItdGVzdC52IgorZXhwb3J0IEdPUFRFU1RGTEFHUyA/PSAiIgogR09CVUlMREZMQUdTX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7R09fUEFSQUxMRUxfQlVJTER9ICIKIAogZXhwb3J0IEdPID0gIiR7SE9TVF9QUkVGSVh9Z28iCkBAIC01MCw5ICszNCw2IEBACiBHT1RPT0xESVJfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgogZXhwb3J0IEdPVE9PTERJUgogCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfTERGTEFHUyA9ICIiCi0KIGV4cG9ydCBDR09fRU5BQkxFRCA/PSAiMSIKIGV4cG9ydCBDR09fQ0ZMQUdTID89ICIke0NGTEFHU30iCiBleHBvcnQgQ0dPX0NQUEZMQUdTID89ICIke0NQUEZMQUdTfSIKQEAgLTY0LDggKzQ1LDkgQEAKIAogQiA9ICIke1dPUktESVJ9L2J1aWxkIgogZXhwb3J0IEdPUEFUSCA9ICIke0J9IgotR09fVE1QRElSID89ICIke1dPUktESVJ9L2dvLXRtcCIKLUdPX1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgorZXhwb3J0IEdPQ0FDSEUgPSAib2ZmIgorZXhwb3J0IEdPVE1QRElSID89ICIke1dPUktESVJ9L2dvLXRtcCIKK0dPVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCiAKIHB5dGhvbiBnb19kb191bnBhY2soKSB7CiAgICAgc3JjX3VyaSA9IChkLmdldFZhcignU1JDX1VSSScpIG9yICIiKS5zcGxpdCgpCkBAIC05MSw3ICs3Myw3IEBACiB9CiAKIGdvX2xpc3RfcGFja2FnZV90ZXN0cygpIHsKLSAgICAke0dPfSBsaXN0IC1mICd7ey5JbXBvcnRQYXRofX0ge3suVGVzdEdvRmlsZXN9fScgJHtHT0JVSUxERkxBR1N9ICR7R09fSU5TVEFMTH0gfCBcCisJJHtHT30gbGlzdCAtZiAne3suSW1wb3J0UGF0aH19IHt7LlRlc3RHb0ZpbGVzfX0nICR7R09CVUlMREZMQUdTfSAke0dPX0lOU1RBTEx9IHwgXAogCQlncmVwIC12ICdcW1xdJCcgfCBcCiAJCWVncmVwIC12ICcke0dPX0lOU1RBTExfRklMVEVST1VUfScgfCBcCiAJCWF3ayAneyBwcmludCAkMSB9JwpAQCAtMTAwLDMyICs4MiwzNyBAQAogZ29fZG9fY29uZmlndXJlKCkgewogCWxuIC1zbmYgJHtTfS9zcmMgJHtCfS8KIH0KK2RvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0iCiAKIGdvX2RvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IFRNUERJUj0iJHtHT19UTVBESVJ9IgotCSR7R099IGVudgorCWV4cG9ydCBUTVBESVI9IiR7R09UTVBESVJ9IgogCWlmIFsgLW4gIiR7R09fSU5TVEFMTH0iIF07IHRoZW4KKwkJaWYgWyAtbiAiJHtHT19MSU5LU0hBUkVEfSIgXTsgdGhlbgorCQkJJHtHT30gaW5zdGFsbCAke0dPQlVJTERGTEFHU30gYGdvX2xpc3RfcGFja2FnZXNgCisJCQlybSAtcmYgJHtCfS9iaW4KKwkJZmkKIAkJJHtHT30gaW5zdGFsbCAke0dPX0xJTktTSEFSRUR9ICR7R09CVUlMREZMQUdTfSBgZ29fbGlzdF9wYWNrYWdlc2AKIAlmaQogfQotZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT19UTVBESVJ9IgorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0iCiBkb19jb21waWxlW2NsZWFuZGlyc10gPSAiJHtCfS9iaW4gJHtCfS9wa2ciCiAKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgZXhwb3J0IFRNUERJUj0iJHtHT19UTVBESVJ9IgotICAgIHJtIC1mICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKK2RvX2NvbXBpbGVfcHRlc3RfYmFzZSgpIHsKKwlleHBvcnQgVE1QRElSPSIke0dPVE1QRElSfSIKKwlybSAtZiAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0CiAJZ29fbGlzdF9wYWNrYWdlX3Rlc3RzIHwgd2hpbGUgcmVhZCBwa2c7IGRvCiAJCWNkICR7Qn0vc3JjLyRwa2cKIAkJJHtHT30gdGVzdCAke0dPUFRFU1RCVUlMREZMQUdTfSAkcGtnCiAJCWZpbmQgLiAtbWluZGVwdGggMSAtbWF4ZGVwdGggMSAtdHlwZSBmIC1uYW1lICcqLnRlc3QnIC1leGVjIGVjaG8gJHBrZy97fSBcOyB8IFwKIAkJCXNlZCAtZSdzLC9cLi8sLywnPj4gJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAogCWRvbmUKKwlkb19jb21waWxlX3B0ZXN0CiB9Ci1kb19jb21waWxlX3B0ZXN0X2Jhc2VbZGlyc10gPSsgIiR7R09fVE1QRElSfSIKK2RvX2NvbXBpbGVfcHRlc3RfYmFzZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0iCiAKIGdvX2RvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy8ke0dPX0lNUE9SVH0KLQl0YXIgLUMgJHtTfS9zcmMvJHtHT19JTVBPUlR9IC1jZiAtIC0tZXhjbHVkZS12Y3MgLS1leGNsdWRlICcqLnRlc3QnIC4gfCBcCisJdGFyIC1DICR7U30vc3JjLyR7R09fSU1QT1JUfSAtY2YgLSAtLWV4Y2x1ZGUtdmNzIC0tZXhjbHVkZSAnKi50ZXN0JyAtLWV4Y2x1ZGUgJ3Rlc3RkYXRhJyAuIHwgXAogCQl0YXIgLUMgJHtEfSR7bGliZGlyfS9nby9zcmMvJHtHT19JTVBPUlR9IC0tbm8tc2FtZS1vd25lciAteGYgLQogCXRhciAtQyAke0J9IC1jZiAtIHBrZyB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L2dvIC0tbm8tc2FtZS1vd25lciAteGYgLQogCkBAIC0xMzUsNDIgKzEyMiw1NCBAQAogCWZpCiB9CiAKLWRvX2luc3RhbGxfcHRlc3RfYmFzZSgpIHsKLXNldCAteAotICAgIHRlc3QgLWYgIiR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QiIHx8IGV4aXQgMAotICAgIHRlc3RzPSIiCi0gICAgd2hpbGUgcmVhZCB0ZXN0OyBkbwotICAgICAgICB0ZXN0cz0iJHRlc3RzJHt0ZXN0czorIH0ke3Rlc3QlLnRlc3R9IgotICAgICAgICB0ZXN0ZGlyPWBkaXJuYW1lICR0ZXN0YAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0ZGlyCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3NyYy8kdGVzdCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdAotICAgICAgICBpZiBbIC1kICIke0J9L3NyYy8kdGVzdGRpci90ZXN0ZGF0YSIgXTsgdGhlbgotICAgICAgICAgICAgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgIiR7Qn0vc3JjLyR0ZXN0ZGlyL3Rlc3RkYXRhIiAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgotICAgICAgICBmaQotICAgIGRvbmUgPCAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0Ci0gICAgaWYgWyAtbiAiJHRlc3RzIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgY2F0ID4ke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgPDxFT0YKK2dvX21ha2VfcHRlc3Rfd3JhcHBlcigpIHsKKwljYXQgPiR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdCA8PEVPRgogIyEvYmluL3NoCi1BTllGQUlMRUQ9MAotZm9yIHQgaW4gJHRlc3RzOyBkbwotICAgIHRlc3RkaXI9XGBkaXJuYW1lIFwkdC50ZXN0XGAKLSAgICBpZiAoIGNkICIke1BURVNUX1BBVEh9L1wkdGVzdGRpciI7ICIke1BURVNUX1BBVEh9L1wkdC50ZXN0IiAke0dPUFRFU1RGTEFHU30gfCB0ZWUgL2Rldi9mZC85IHwgZ3JlcCAtcSAiXkZBSUwiICkgOT4mMTsgdGhlbgotICAgICAgICBBTllGQUlMRUQ9MQotICAgIGZpCi1kb25lCi1pZiBbIFwkQU5ZRkFJTEVEIC1uZSAwIF07IHRoZW4KLSAgICBlY2hvICJGQUlMOiAke1BOfSIKLSAgICBleGl0IDEKLWZpCi1lY2hvICJQQVNTOiAke1BOfSIKLWV4aXQgMAorUkM9MAorcnVuX3Rlc3QoKSAoCisgICAgY2QgIlwkMSIKKyAgICAoKCgoLi9cJDIgJHtHT1BURVNURkxBR1N9OyBlY2hvIFwkPyA+JjMpIHwgc2VkIC1yIC1lInMsXihQQVNTfFNLSVB8RkFJTClcJCxcXDE6IFwkMS9cJDIsIiA+JjQpIDM+JjEpIHwgKHJlYWQgcmM7IGV4aXQgXCRyYykpIDQ+JjEKKyAgICBleGl0IFwkPykKIEVPRgotICAgICAgICBjaG1vZCAreCAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLSAgICBlbHNlCi0gICAgICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfQotICAgIGZpCi1zZXQgK3gKKworfQorCitnb19zdGFnZV90ZXN0ZGF0YSgpIHsKKwlvbGR3ZD0iJFBXRCIKKwljZCAke1N9L3NyYworCWZpbmQgJHtHT19JTVBPUlR9IC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIHwgd2hpbGUgcmVhZCBkOyBkbworCQlpZiBlY2hvICIkZCIgfCBncmVwIC1xICcvdmVuZG9yLyc7IHRoZW4KKwkJCWNvbnRpbnVlCisJCWZpCisJCXBhcmVudD1gZGlybmFtZSAkZGAKKwkJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS8kcGFyZW50CisJCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICRkICR7RH0ke1BURVNUX1BBVEh9LyRwYXJlbnQvCisJZG9uZQorCWNkICIkb2xkd2QiCit9CisKK2RvX2luc3RhbGxfcHRlc3RfYmFzZSgpIHsKKwl0ZXN0IC1mICIke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0IiB8fCBleGl0IDAKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9CisJZ29fc3RhZ2VfdGVzdGRhdGEKKwlnb19tYWtlX3B0ZXN0X3dyYXBwZXIKKwloYXZldGVzdHM9IiIKKwl3aGlsZSByZWFkIHRlc3Q7IGRvCisJCXRlc3RkaXI9YGRpcm5hbWUgJHRlc3RgCisJCXRlc3Rwcm9nPWBiYXNlbmFtZSAkdGVzdGAKKwkJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgorCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvJHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3QKKwllY2hvICJydW5fdGVzdCAkdGVzdGRpciAkdGVzdHByb2cgfHwgUkM9MSIgPj4gJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisJCWhhdmV0ZXN0cz0ieWVzIgorCWRvbmUgPCAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0CisJaWYgWyAtbiAiJGhhdmV0ZXN0cyIgXTsgdGhlbgorCQllY2hvICJleGl0IFwkUkMiID4+ICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCQljaG1vZCAreCAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKwllbHNlCisJCXJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfQorCWZpCisJZG9faW5zdGFsbF9wdGVzdAorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfQogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX3VucGFjayBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwppbmRleCA2NjNjOWZmLi5mNTRjNTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKQEAgLTUsMTEgKzUsMTMgQEAKIEhPU1RfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZCl9IgogSE9TVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogSE9TVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorSE9TVF9HT01JUFMgPSAiJHtAZ29fbWFwX21pcHMoZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBIT1NUX0dPVFVQTEUgPSAiJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9IgogVEFSR0VUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSwgZCl9IgogVEFSR0VUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgogVEFSR0VUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIFRBUkdFVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCitUQVJHRVRfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBUQVJHRVRfR09UVVBMRSA9ICIke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9IgogR09fQlVJTERfQklORElSID0gIiR7QFsnYmluLyR7SE9TVF9HT1RVUExFfScsJ2JpbiddW2QuZ2V0VmFyKCdCVUlMRF9HT1RVUExFJykgPT0gZC5nZXRWYXIoJ0hPU1RfR09UVVBMRScpXX0iCiAKQEAgLTIyLDYgKzI0LDcgQEAKIEdPX0RZTkxJTktfeDg2LTY0ID0gIjEiCiBHT19EWU5MSU5LX3Bvd2VycGM2NCA9ICIxIgogR09fRFlOTElOS19jbGFzcy1uYXRpdmUgPSAiIgorR09fRFlOTElOS19jbGFzcy1uYXRpdmVzZGsgPSAiIgogCiAjIGRlZmluZSBoZXJlIGJlY2F1c2UgZXZlcnlib2R5IGluaGVyaXRzIHRoaXMgY2xhc3MKICMKQEAgLTMyLDYgKzM1LDggQEAKIENPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCiBUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1hcmNoPW1pcHMzMnIyIgorU0VDVVJJVFlfQ0ZMQUdTX21pcHMgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTk9QSUVfQ0ZMQUdTID8/PSAiIgogCiBkZWYgZ29fbWFwX2FyY2goYSwgZCk6CiAgICAgaW1wb3J0IHJlCkBAIC01Niw3ICs2MSw3IEBACiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKDY0ZWwpJywgYSk6CiAgICAgICAgIHJldHVybiAncHBjNjRsZScKICAgICBlbHNlOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiVW5zdXBwb3J0ZWQgQ1BVIGFyY2hpdGVjdHVyZTogJXMiICUgYSkKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiVW5zdXBwb3J0ZWQgQ1BVIGFyY2hpdGVjdHVyZTogJXMiICUgYSkKIAogZGVmIGdvX21hcF9hcm0oYSwgZiwgZCk6CiAgICAgaW1wb3J0IHJlCkBAIC03OCw2ICs4MywxNSBAQAogICAgICAgICAgICAgcmV0dXJuICczODcnCiAgICAgcmV0dXJuICcnCiAKK2RlZiBnb19tYXBfbWlwcyhhLCBmLCBkKToKKyAgICBpbXBvcnQgcmUKKyAgICBpZiBhID09ICdtaXBzJyBvciBhID09ICdtaXBzZWwnOgorICAgICAgICBpZiAnZnB1LWhhcmQnIGluIGY6CisgICAgICAgICAgICByZXR1cm4gJ2hhcmRmbG9hdCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnc29mdGZsb2F0JworICAgIHJldHVybiAnJworCiBkZWYgZ29fbWFwX29zKG8sIGQpOgogICAgIGlmIG8uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgcmV0dXJuICdsaW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29kZXAuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29kZXAuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODI0MDFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2RlcC5iYmNsYXNzCkBAIC0wLDAgKzEsOCBAQAorREVQRU5EU19hcHBlbmQgPSAiIGdvLWRlcC1uYXRpdmUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBybSAtZiAke1dPUktESVJ9L2J1aWxkL3NyYy8ke0dPX0lNUE9SVH0vR29wa2cudG9tbAorICAgIHJtIC1mICR7V09SS0RJUn0vYnVpbGQvc3JjLyR7R09fSU1QT1JUfS9Hb3BrZy5sb2NrCisgICAgKCBjZCAke1dPUktESVJ9L2J1aWxkL3NyYy8ke0dPX0lNUE9SVH0gJiYgZGVwIGluaXQgJiYgZGVwIGVuc3VyZSApCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmktY2ZnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZWVlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCkBAIC0wLDAgKzEsMTE0IEBACisjIGdydWItZWZpLmJiY2xhc3MKKyMgQ29weXJpZ2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgcGFja2FnZXMvQ09QWUlORykKKworIyBQcm92aWRlIGdydWItZWZpIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzLgorCisjIEV4dGVybmFsIHZhcmlhYmxlcworIyAke0lOSVRSRH0gLSBpbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdHJkIChvcHRpb25hbCkKKyMgJHtST09URlN9IC0gaW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290IGZpbGVzeXN0ZW0gKG9wdGlvbmFsKQorIyAke0dSVUJfR0ZYU0VSSUFMfSAtIHNldCB0aGlzIHRvIDEgdG8gaGF2ZSBncmFwaGljcyBhbmQgc2VyaWFsIGluIHRoZSBib290IG1lbnUKKyMgJHtMQUJFTFN9IC0gYSBsaXN0IG9mIHRhcmdldHMgZm9yIHRoZSBhdXRvbWF0aWMgY29uZmlnCisjICR7QVBQRU5EfSAtIGFuIG92ZXJyaWRlIGxpc3Qgb2YgYXBwZW5kIHN0cmluZ3MgZm9yIGVhY2ggbGFiZWwKKyMgJHtHUlVCX09QVFN9IC0gYWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgY29uZmlnLCAnOycgZGVsaW1pdGVkICMgKG9wdGlvbmFsKQorIyAke0dSVUJfVElNRU9VVH0gLSB0aW1lb3V0IGJlZm9yZSBleGVjdXRpbmcgdGhlIGRlYXVsdCBsYWJlbCAob3B0aW9uYWwpCisjICR7R1JVQl9ST09UfSAtIGdydWIncyByb290IGRldmljZS4KKworR1JVQl9TRVJJQUwgPz0gImNvbnNvbGU9dHR5UzAsMTE1MjAwIgorR1JVQl9DRkdfVk0gPSAiJHtTfS9ncnViX3ZtLmNmZyIKK0dSVUJfQ0ZHX0xJVkUgPSAiJHtTfS9ncnViX2xpdmUuY2ZnIgorR1JVQl9USU1FT1VUID89ICIxMCIKKyNGSVhNRTogYnVpbGQgdGhpcyBmcm9tIHRoZSBtYWNoaW5lIGNvbmZpZworR1JVQl9PUFRTID89ICJzZXJpYWwgLS11bml0PTAgLS1zcGVlZD0xMTUyMDAgLS13b3JkPTggLS1wYXJpdHk9bm8gLS1zdG9wPTEiCisKK0VGSURJUiA9ICIvRUZJL0JPT1QiCitHUlVCX1JPT1QgPz0gIiR7Uk9PVH0iCitBUFBFTkQgPz0gIiIKKworIyBOZWVkIFVVSUQgdXRpbGl0eSBjb2RlLgoraW5oZXJpdCBmcy11dWlkCisKK3B5dGhvbiBidWlsZF9lZmlfY2ZnKCkgeworICAgIGltcG9ydCBzeXMKKworICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCisgICAgaWYgbm90IHdvcmtkaXI6CisgICAgICAgIGJiLmVycm9yKCJXT1JLRElSIG5vdCBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCisgICAgICAgIHJldHVybgorCisgICAgZ2Z4c2VyaWFsID0gZC5nZXRWYXIoJ0dSVUJfR0ZYU0VSSUFMJykgb3IgIiIKKworICAgIGxhYmVscyA9IGQuZ2V0VmFyKCdMQUJFTFMnKQorICAgIGlmIG5vdCBsYWJlbHM6CisgICAgICAgIGJiLmRlYnVnKDEsICJMQUJFTFMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGlmIGxhYmVscyA9PSBbXToKKyAgICAgICAgYmIuZGVidWcoMSwgIk5vIGxhYmVscywgbm90aGluZyB0byBkbyIpCisgICAgICAgIHJldHVybgorCisgICAgY2ZpbGUgPSBkLmdldFZhcignR1JVQl9DRkcnKQorICAgIGlmIG5vdCBjZmlsZToKKyAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byByZWFkIEdSVUJfQ0ZHJykKKworICAgIHRyeToKKyAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKKworICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQorCisgICAgb3B0cyA9IGQuZ2V0VmFyKCdHUlVCX09QVFMnKQorICAgIGlmIG9wdHM6CisgICAgICAgIGZvciBvcHQgaW4gb3B0cy5zcGxpdCgnOycpOgorICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnJXNcbicgJSBvcHQpCisKKyAgICBjZmdmaWxlLndyaXRlKCdkZWZhdWx0PSVzXG4nICUgKGxhYmVscy5zcGxpdCgpWzBdKSkKKworICAgIHRpbWVvdXQgPSBkLmdldFZhcignR1JVQl9USU1FT1VUJykKKyAgICBpZiB0aW1lb3V0OgorICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0PSVzXG4nICUgdGltZW91dCkKKyAgICBlbHNlOgorICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0PTUwXG4nKQorCisgICAgcm9vdCA9IGQuZ2V0VmFyKCdHUlVCX1JPT1QnKQorICAgIGlmIG5vdCByb290OgorICAgICAgICBiYi5mYXRhbCgnR1JVQl9ST09UIG5vdCBkZWZpbmVkJykKKworICAgIGlmIGdmeHNlcmlhbCA9PSAiMSI6CisgICAgICAgIGJ0eXBlcyA9IFsgWyAiIGdyYXBoaWNzIGNvbnNvbGUiLCAiIiBdLAorICAgICAgICAgICAgWyAiIHNlcmlhbCBjb25zb2xlIiwgZC5nZXRWYXIoJ0dSVUJfU0VSSUFMJykgb3IgIiIgXSBdCisgICAgZWxzZToKKyAgICAgICAgYnR5cGVzID0gWyBbICIiLCAiIiBdIF0KKworICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKKyAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKKworICAgICAgICBmb3IgYnR5cGUgaW4gYnR5cGVzOgorICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG5tZW51ZW50cnkgXCclcyVzXCd7XG4nICUgKGxhYmVsLCBidHlwZVswXSkpCisgICAgICAgICAgICBsYiA9IGxhYmVsCisgICAgICAgICAgICBpZiBsYWJlbCA9PSAiaW5zdGFsbCI6CisgICAgICAgICAgICAgICAgbGIgPSAiaW5zdGFsbC1lZmkiCisgICAgICAgICAgICBrZXJuZWwgPSBsb2NhbGRhdGEuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFJykKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2xpbnV4IC8lcyBMQUJFTD0lcycgJSAoa2VybmVsLCBsYikpCisKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIHJvb3QpKQorCisgICAgICAgICAgICBhcHBlbmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdBUFBFTkQnKQorICAgICAgICAgICAgaW5pdHJkID0gbG9jYWxkYXRhLmdldFZhcignSU5JVFJEJykKKworICAgICAgICAgICAgaWYgYXBwZW5kOgorICAgICAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQorICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSAoYXBwZW5kKSkKKworICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnICVzJyAlIGJ0eXBlWzFdKQorICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG4nKQorCisgICAgICAgICAgICBpZiBpbml0cmQ6CisgICAgICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnaW5pdHJkIC9pbml0cmQnKQorICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG59XG4nKQorCisgICAgY2ZnZmlsZS5jbG9zZSgpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKaW5kZXggNjEwNDc5Yi4uOTBiYWRjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcwpAQCAtMSwzNiArMSw0IEBACi0jIGdydWItZWZpLmJiY2xhc3MKLSMgQ29weXJpZ2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgcGFja2FnZXMvQ09QWUlORykKLQotIyBQcm92aWRlIGdydWItZWZpIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzLgotCi0jIEV4dGVybmFsIHZhcmlhYmxlcwotIyAke0lOSVRSRH0gLSBpbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdHJkIChvcHRpb25hbCkKLSMgJHtST09URlN9IC0gaW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290IGZpbGVzeXN0ZW0gKG9wdGlvbmFsKQotIyAke0dSVUJfR0ZYU0VSSUFMfSAtIHNldCB0aGlzIHRvIDEgdG8gaGF2ZSBncmFwaGljcyBhbmQgc2VyaWFsIGluIHRoZSBib290IG1lbnUKLSMgJHtMQUJFTFN9IC0gYSBsaXN0IG9mIHRhcmdldHMgZm9yIHRoZSBhdXRvbWF0aWMgY29uZmlnCi0jICR7QVBQRU5EfSAtIGFuIG92ZXJyaWRlIGxpc3Qgb2YgYXBwZW5kIHN0cmluZ3MgZm9yIGVhY2ggbGFiZWwKLSMgJHtHUlVCX09QVFN9IC0gYWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgY29uZmlnLCAnOycgZGVsaW1pdGVkICMgKG9wdGlvbmFsKQotIyAke0dSVUJfVElNRU9VVH0gLSB0aW1lb3V0IGJlZm9yZSBleGVjdXRpbmcgdGhlIGRlYXVsdCBsYWJlbCAob3B0aW9uYWwpCi0jICR7R1JVQl9ST09UfSAtIGdydWIncyByb290IGRldmljZS4KLQotZG9fYm9vdGltZ1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1ncnViLWVmaTpkb19kZXBsb3kiCi0KLUdSVUJfU0VSSUFMID89ICJjb25zb2xlPXR0eVMwLDExNTIwMCIKLUdSVUJfQ0ZHX1ZNID0gIiR7U30vZ3J1Yl92bS5jZmciCi1HUlVCX0NGR19MSVZFID0gIiR7U30vZ3J1Yl9saXZlLmNmZyIKLUdSVUJfVElNRU9VVCA/PSAiMTAiCi0jRklYTUU6IGJ1aWxkIHRoaXMgZnJvbSB0aGUgbWFjaGluZSBjb25maWcKLUdSVUJfT1BUUyA/PSAic2VyaWFsIC0tdW5pdD0wIC0tc3BlZWQ9MTE1MjAwIC0td29yZD04IC0tcGFyaXR5PW5vIC0tc3RvcD0xIgotCi1FRklESVIgPSAiL0VGSS9CT09UIgotR1JVQl9ST09UID89ICIke1JPT1R9IgotQVBQRU5EID89ICIiCi0KLSMgTmVlZCBVVUlEIHV0aWxpdHkgY29kZS4KLWluaGVyaXQgZnMtdXVpZAoraW5oZXJpdCBncnViLWVmaS1jZmcKIAogZWZpX3BvcHVsYXRlKCkgewogCSMgREVTVCBtdXN0IGJlIHRoZSByb290IG9mIHRoZSBpbWFnZSBzbyB0aGF0IEVGSURJUiBpcyBub3QKQEAgLTU4LDcgKzI2LDcgQEAKIAkjIEJ1aWxkIGEgRUZJIGRpcmVjdG9yeSB0byBjcmVhdGUgZWZpLmltZwogCW1rZGlyIC1wICR7RUZJSU1HRElSfS8ke0VGSURJUn0KIAljcCAkaXNvX2Rpci8ke0VGSURJUn0vKiAke0VGSUlNR0RJUn0ke0VGSURJUn0KLQljcCAkaXNvX2Rpci92bWxpbnV6ICR7RUZJSU1HRElSfQorCWNwICRpc29fZGlyLyR7S0VSTkVMX0lNQUdFVFlQRX0gJHtFRklJTUdESVJ9CiAJRUZJUEFUSD0kKGVjaG8gIiR7RUZJRElSfSIgfCBzZWQgJ3MvXC8vXFwvZycpCiAJcHJpbnRmICdmczA6JXNcJXNcbicgIiRFRklQQVRIIiAiJEdSVUJfSU1BR0UiID4gJHtFRklJTUdESVJ9L3N0YXJ0dXAubnNoCiAJaWYgWyAtZiAiJGlzb19kaXIvaW5pdHJkIiBdIDsgdGhlbgpAQCAtNjksOTEgKzM3LDMgQEAKIGVmaV9oZGRpbWdfcG9wdWxhdGUoKSB7CiAJZWZpX3BvcHVsYXRlICQxCiB9Ci0KLXB5dGhvbiBidWlsZF9lZmlfY2ZnKCkgewotICAgIGltcG9ydCBzeXMKLQotICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCi0gICAgaWYgbm90IHdvcmtkaXI6Ci0gICAgICAgIGJiLmVycm9yKCJXT1JLRElSIG5vdCBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCi0gICAgICAgIHJldHVybgotCi0gICAgZ2Z4c2VyaWFsID0gZC5nZXRWYXIoJ0dSVUJfR0ZYU0VSSUFMJykgb3IgIiIKLQotICAgIGxhYmVscyA9IGQuZ2V0VmFyKCdMQUJFTFMnKQotICAgIGlmIG5vdCBsYWJlbHM6Ci0gICAgICAgIGJiLmRlYnVnKDEsICJMQUJFTFMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGlmIGxhYmVscyA9PSBbXToKLSAgICAgICAgYmIuZGVidWcoMSwgIk5vIGxhYmVscywgbm90aGluZyB0byBkbyIpCi0gICAgICAgIHJldHVybgotCi0gICAgY2ZpbGUgPSBkLmdldFZhcignR1JVQl9DRkcnKQotICAgIGlmIG5vdCBjZmlsZToKLSAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byByZWFkIEdSVUJfQ0ZHJykKLQotICAgIHRyeToKLSAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKLQotICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQotCi0gICAgb3B0cyA9IGQuZ2V0VmFyKCdHUlVCX09QVFMnKQotICAgIGlmIG9wdHM6Ci0gICAgICAgIGZvciBvcHQgaW4gb3B0cy5zcGxpdCgnOycpOgotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnJXNcbicgJSBvcHQpCi0KLSAgICBjZmdmaWxlLndyaXRlKCdkZWZhdWx0PSVzXG4nICUgKGxhYmVscy5zcGxpdCgpWzBdKSkKLQotICAgIHRpbWVvdXQgPSBkLmdldFZhcignR1JVQl9USU1FT1VUJykKLSAgICBpZiB0aW1lb3V0OgotICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0PSVzXG4nICUgdGltZW91dCkKLSAgICBlbHNlOgotICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0PTUwXG4nKQotCi0gICAgcm9vdCA9IGQuZ2V0VmFyKCdHUlVCX1JPT1QnKQotICAgIGlmIG5vdCByb290OgotICAgICAgICBiYi5mYXRhbCgnR1JVQl9ST09UIG5vdCBkZWZpbmVkJykKLQotICAgIGlmIGdmeHNlcmlhbCA9PSAiMSI6Ci0gICAgICAgIGJ0eXBlcyA9IFsgWyAiIGdyYXBoaWNzIGNvbnNvbGUiLCAiIiBdLAotICAgICAgICAgICAgWyAiIHNlcmlhbCBjb25zb2xlIiwgZC5nZXRWYXIoJ0dSVUJfU0VSSUFMJykgb3IgIiIgXSBdCi0gICAgZWxzZToKLSAgICAgICAgYnR5cGVzID0gWyBbICIiLCAiIiBdIF0KLQotICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKLSAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKLQotICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnKQotICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgotICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCi0KLSAgICAgICAgZm9yIGJ0eXBlIGluIGJ0eXBlczoKLSAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQotCi0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdcbm1lbnVlbnRyeSBcJyVzJXNcJ3tcbicgJSAobGFiZWwsIGJ0eXBlWzBdKSkKLSAgICAgICAgICAgIGxiID0gbGFiZWwKLSAgICAgICAgICAgIGlmIGxhYmVsID09ICJpbnN0YWxsIjoKLSAgICAgICAgICAgICAgICBsYiA9ICJpbnN0YWxsLWVmaSIKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2xpbnV4IC92bWxpbnV6IExBQkVMPSVzJyAlIChsYikpCi0KLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIHJvb3QpKQotCi0gICAgICAgICAgICBhcHBlbmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdBUFBFTkQnKQotICAgICAgICAgICAgaW5pdHJkID0gbG9jYWxkYXRhLmdldFZhcignSU5JVFJEJykKLQotICAgICAgICAgICAgaWYgYXBwZW5kOgotICAgICAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQotICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSAoYXBwZW5kKSkKLQotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnICVzJyAlIGJ0eXBlWzFdKQotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG4nKQotCi0gICAgICAgICAgICBpZiBpbml0cmQ6Ci0gICAgICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnaW5pdHJkIC9pbml0cmQnKQotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG59XG4nKQotCi0gICAgY2ZnZmlsZS5jbG9zZSgpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCmluZGV4IDUyMDFjNzEuLmI0ZjY3NTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCkBAIC0xOCwyNyArMTgsMjcgQEAKIEVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZ3RrLWRvYyAiCiBFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWd0ay1kb2MgIgogCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGd0ay1kb2MtbmF0aXZlIHFlbXUtbmF0aXZlIgotCiAjIEV2ZW4gdGhvdWdoIGd0a2RvYyBpcyBkaXNhYmxlZCBvbiAtbmF0aXZlLCBndGstZG9jIHBhY2thZ2UgaXMgc3RpbGwKICMgbmVlZGVkIGZvciBtNCBtYWNyb3MuCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd0ay1kb2MtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBndGstZG9jLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kID0gIiBndGstZG9jLW5hdGl2ZSIKIAogIyBUaGUgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnksIHdoZXJlIHRoZSBpbmZyYXN0cnVjdHVyZSB3aWxsIGJlIGNvcGllZC4KICMgZ3RrZG9jaXplIGhhcyBhIGRlZmF1bHQgb2YgIi4iIHNvIHRvIGhhbmRsZSBvdXQtb2YtdHJlZSBidWlsZHMgc2V0IHRoaXMgdG8gJFMuCiBHVEtET0NfRE9DRElSID89ICIke1N9IgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JKCBjZCAke1N9OyBndGtkb2NpemUgLS1kb2NkaXIgJHtHVEtET0NfRE9DRElSfSB8fCB0cnVlICkKLX0KLQotaW5oZXJpdCBxZW11Ci0KIGV4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCiAKLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworaW5oZXJpdCBweXRob24zbmF0aXZlIHBrZ2NvbmZpZyBxZW11CitERVBFTkRTX2FwcGVuZCA9ICIke0AnIHFlbXUtbmF0aXZlJyBpZiBkLmdldFZhcignR1RLRE9DX0VOQUJMRUQnKSA9PSAnVHJ1ZScgZWxzZSAnJ30iCiAKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIE5lZWQgdG8gdXNlIHx8dHJ1ZSBhcyB0aGlzIGlzIG9ubHkgbmVlZGVkIGlmIGNvbmZpZ3VyZS5hYyBib3RoIGV4aXN0cworCSMgYW5kIHVzZXMgR1RLX0RPQ19DSEVDSy4KKwlndGtkb2NpemUgLS1zcmNkaXIgJHtTfSAtLWRvY2RpciAke0dUS0RPQ19ET0NESVJ9IHx8IHRydWUKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgaWYgWyAke0dUS0RPQ19FTkFCTEVEfSA9IFRydWUgXTsgdGhlbgogICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ3RrZG9jLXNjYW5nb2JqIHNvIHRoYXQgaXQKICAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgogICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCkBAIC02NCw3ICs2NCw1IEBACiBmaQogRU9GCiAgICAgICAgIGNobW9kICt4ICR7Qn0vZ3RrZG9jLXFlbXV3cmFwcGVyCisgICAgZmkKIH0KLQotCi1pbmhlcml0IHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCmluZGV4IDFjYzFjNGQuLjBjYThkZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKQEAgLTI4LDE1ICsyOCw0NCBAQAogI0Vycm9yIGNoZWNraW5nIGlzIGtlcHQgdG8gbWluaW11bSBzbyBkb3VibGUgY2hlY2sgYW55IHBhcmFtZXRlcnMgeW91IHBhc3MgdG8gdGhlIGNsYXNzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUJCX0hBU0hCQVNFX1dISVRFTElTVCArPSAiSUNFQ0NfUEFSQUxMRUxfTUFLRSBJQ0VDQ19ESVNBQkxFRCBJQ0VDQ19VU0VSX1BBQ0tBR0VfQkwgSUNFQ0NfVVNFUl9DTEFTU19CTCBJQ0VDQ19VU0VSX1BBQ0tBR0VfV0wgSUNFQ0NfUEFUSCBJQ0VDQ19FTlZfRVhFQyIKK0JCX0hBU0hCQVNFX1dISVRFTElTVCArPSAiSUNFQ0NfUEFSQUxMRUxfTUFLRSBJQ0VDQ19ESVNBQkxFRCBJQ0VDQ19VU0VSX1BBQ0tBR0VfQkwgXAorICAgIElDRUNDX1VTRVJfQ0xBU1NfQkwgSUNFQ0NfVVNFUl9QQUNLQUdFX1dMIElDRUNDX1BBVEggSUNFQ0NfRU5WX0VYRUMgXAorICAgIElDRUNDX0NBUkVUX1dPUktBUk9VTkQgSUNFQ0NfQ0ZMQUdTIElDRUNDX0VOVl9WRVJTSU9OIFwKKyAgICBJQ0VDQ19ERUJVRyBJQ0VDQ19MT0dGSUxFIElDRUNDX1JFUEVBVF9SQVRFIElDRUNDX1BSRUZFUlJFRF9IT1NUIFwKKyAgICBJQ0VDQ19DTEFOR19SRU1PVEVfQ1BQIElDRUNDX0lHTk9SRV9VTlZFUklGSUVEIElDRUNDX1RFU1RfU09DS0VUIFwKKyAgICBJQ0VDQ19FTlZfREVCVUcgXAorICAgICIKIAogSUNFQ0NfRU5WX0VYRUMgPz0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9pY2VjYy1jcmVhdGUtZW52IgogCisjIFRoaXMgdmVyc2lvbiBjYW4gYmUgaW5jcmVtZW50ZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZSBlbnZpcm9ubWVudCB0aGF0CisjIGludmFsaWRhdGUgdGhlIHZlcnNpb24gb24gdGhlIGNvbXBpbGUgbm9kZXMuIENoYW5naW5nIGl0IHdpbGwgY2F1c2UgYSBuZXcKKyMgZW52aXJvbm1lbnQgdG8gYmUgY3JlYXRlZC4KKyMKKyMgQSB1c2VmdWwgdGhpbmcgdG8gZG8gZm9yIHRlc3RpbmcgSWNlY3JlYW0gY2hhbmdlcyBsb2NhbGx5IGlzIHRvIGFkZCBhCisjIHN1YnZlcnNpb24gaW4gbG9jYWwuY29uZjoKKyMgIElDRUNDX0VOVl9WRVJTSU9OX2FwcGVuZCA9ICItbXktdmVyLTEiCitJQ0VDQ19FTlZfVkVSU0lPTiA9ICIyIgorCisjIERlZmF1bHQgdG8gZGlzYWJsaW5nIHRoZSBjYXJldCB3b3JrYXJvdW5kLCBJZiBzZXQgdG8gIjEiIGluIGxvY2FsLmNvbmYsIGljZWNjCisjIHdpbGwgbG9jYWxseSByZWNvbXBpbGUgYW55IGZpbGVzIHRoYXQgaGF2ZSB3YXJuaW5ncywgd2hpY2ggY2FuIGFkdmVyc2VseQorIyBhZmZlY3QgcGVyZm9ybWFuY2UuCisjCisjIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ljZWNjL2ljZWNyZWFtL2lzc3Vlcy8xOTAKK2V4cG9ydCBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EID8/PSAiMCIKKworSUNFQ0NfQ0ZMQUdTID0gIiIKK0NGTEFHUyArPSAiJHtJQ0VDQ19DRkxBR1N9IgorQ1hYRkxBR1MgKz0gIiR7SUNFQ0NfQ0ZMQUdTfSIKKworIyBEZWJ1ZyBmbGFncyB3aGVuIGdlbmVyYXRpbmcgZW52aXJvbm1lbnRzCitJQ0VDQ19FTlZfREVCVUcgPz89ICIiCisKIGRlZiBpY2VjY19kZXBfcHJlcGVuZChkKToKICAgICAjIElOSElCSVRfREVGQVVMVF9ERVBTIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHBhdGNoIGNvbW1hbmQuICBXaGV0aGVyIG9yICBub3QKICAgICAjIHdlIG5lZWQgdGhhdCBidWlsdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHBhdGNoIGZ1bmN0aW9uIC8gY2xhc3MsIG5vdAogICAgICMgdGhlIGFwcGxpY2F0aW9uLgotICAgIGlmIG5vdCBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnLCBGYWxzZSk6CisgICAgaWYgbm90IGQuZ2V0VmFyKCdJTkhJQklUX0RFRkFVTFRfREVQUycpOgogICAgICAgICByZXR1cm4gImljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlIgogICAgIHJldHVybiAiIgogCkBAIC00NCwyMSArNzMsMjAgQEAKIAogZ2V0X2Nyb3NzX2tlcm5lbF9jY1t2YXJkZXBzZXhjbHVkZV0gKz0gIktFUk5FTF9DQyIKIGRlZiBnZXRfY3Jvc3Nfa2VybmVsX2NjKGJiLGQpOgotICAgIGtlcm5lbF9jYyA9IGQuZ2V0VmFyKCdLRVJORUxfQ0MnLCBGYWxzZSkKKyAgICBrZXJuZWxfY2MgPSBkLmdldFZhcignS0VSTkVMX0NDJykKIAogICAgICMgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYnkgdGhlIHNoZWxsIGlmIG5lY2Vzc2FyeQogICAgIGlmICdgJyBpbiBrZXJuZWxfY2Mgb3IgJyQoJyBpbiBrZXJuZWxfY2M6CiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgIGtlcm5lbF9jYyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJlY2hvICVzIiAlIGtlcm5lbF9jYywgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KIAotICAgIGtlcm5lbF9jYyA9IGQuZXhwYW5kKGtlcm5lbF9jYykKICAgICBrZXJuZWxfY2MgPSBrZXJuZWxfY2MucmVwbGFjZSgnY2NhY2hlJywgJycpLnN0cmlwKCkKICAgICBrZXJuZWxfY2MgPSBrZXJuZWxfY2Muc3BsaXQoJyAnKVswXQogICAgIGtlcm5lbF9jYyA9IGtlcm5lbF9jYy5zdHJpcCgpCiAgICAgcmV0dXJuIGtlcm5lbF9jYwogCiBkZWYgZ2V0X2ljZWNjKGQpOgotICAgIHJldHVybiBkLmdldFZhcignSUNFQ0NfUEFUSCcsIEZhbHNlKSBvciBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgImljZWNjIikKKyAgICByZXR1cm4gZC5nZXRWYXIoJ0lDRUNDX1BBVEgnKSBvciBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgImljZWNjIikKIAogZGVmIGNyZWF0ZV9wYXRoKGNvbXBpbGVycywgYmIsIGQpOgogICAgICIiIgpAQCAtOTMsNyArMTIxLDcgQEAKICAgICByZXR1cm4gc3RhZ2luZwogCiBkZWYgdXNlX2ljZWNjKGJiLGQpOgotICAgIGlmIGQuZ2V0VmFyKCdJQ0VDQ19ESVNBQkxFRCcsIEZhbHNlKSA9PSAiMSI6CisgICAgaWYgZC5nZXRWYXIoJ0lDRUNDX0RJU0FCTEVEJykgPT0gIjEiOgogICAgICAgICAjIGRvbid0IGV2ZW4gdHJ5IGl0LCB3aGVuIGV4cGxpY2l0bHkgZGlzYWJsZWQKICAgICAgICAgcmV0dXJuICJubyIKIApAQCAtMTAxLDEwICsxMjksMTMgQEAKICAgICBpZiBpY2VjY19pc19hbGxhcmNoKGJiLCBkKToKICAgICAgICAgcmV0dXJuICJubyIKIAorICAgIGlmIGljZWNjX2lzX2Nyb3NzX2NhbmFkaWFuKGJiLCBkKToKKyAgICAgICAgcmV0dXJuICJubyIKKwogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKIAogICAgIHN5c3RlbV9jbGFzc19ibGFja2xpc3QgPSBbXQotICAgIHVzZXJfY2xhc3NfYmxhY2tsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX0NMQVNTX0JMJywgRmFsc2UpIG9yICJub25lIikuc3BsaXQoKQorICAgIHVzZXJfY2xhc3NfYmxhY2tsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX0NMQVNTX0JMJykgb3IgIm5vbmUiKS5zcGxpdCgpCiAgICAgcGFja2FnZV9jbGFzc19ibGFja2xpc3QgPSBzeXN0ZW1fY2xhc3NfYmxhY2tsaXN0ICsgdXNlcl9jbGFzc19ibGFja2xpc3QKIAogICAgIGZvciBibGFjayBpbiBwYWNrYWdlX2NsYXNzX2JsYWNrbGlzdDoKQEAgLTEyMSw4ICsxNTIsOCBAQAogICAgICMgZS5nLiB3aGVuIHRoZXJlIGlzIG5ldyB2ZXJzaW9uCiAgICAgIyBidWlsZGluZyBsaWJnY2MtaW5pdGlhbCB3aXRoIGljZWNjIGZhaWxzIHdpdGggQ1BQIHNhbml0eSBjaGVjayBlcnJvciBpZiBob3N0IHN5c3Jvb3QgY29udGFpbnMgY3Jvc3MgZ2NjIGJ1aWx0IGZvciBhbm90aGVyIHRhcmdldCB0dW5lL3ZhcmlhbnQKICAgICBzeXN0ZW1fcGFja2FnZV9ibGFja2xpc3QgPSBbImxpYmdjYy1pbml0aWFsIl0KLSAgICB1c2VyX3BhY2thZ2VfYmxhY2tsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX1BBQ0tBR0VfQkwnLCBGYWxzZSkgb3IgIiIpLnNwbGl0KCkKLSAgICB1c2VyX3BhY2thZ2Vfd2hpdGVsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX1BBQ0tBR0VfV0wnLCBGYWxzZSkgb3IgIiIpLnNwbGl0KCkKKyAgICB1c2VyX3BhY2thZ2VfYmxhY2tsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX1BBQ0tBR0VfQkwnKSBvciAiIikuc3BsaXQoKQorICAgIHVzZXJfcGFja2FnZV93aGl0ZWxpc3QgPSAoZC5nZXRWYXIoJ0lDRUNDX1VTRVJfUEFDS0FHRV9XTCcpIG9yICIiKS5zcGxpdCgpCiAgICAgcGFja2FnZV9ibGFja2xpc3QgPSBzeXN0ZW1fcGFja2FnZV9ibGFja2xpc3QgKyB1c2VyX3BhY2thZ2VfYmxhY2tsaXN0CiAKICAgICBpZiBwbiBpbiBwYWNrYWdlX2JsYWNrbGlzdDoKQEAgLTEzMyw3ICsxNjQsNyBAQAogICAgICAgICBiYi5kZWJ1ZygxLCAiJXM6IGZvdW5kIGluIHdoaXRlbGlzdCwgZW5hYmxlIGljZWNjIiAlIHBuKQogICAgICAgICByZXR1cm4gInllcyIKIAotICAgIGlmIGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJywgRmFsc2UpID09ICIiOgorICAgIGlmIGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgPT0gIiI6CiAgICAgICAgIGJiLmRlYnVnKDEsICIlczogaGFzIGVtcHR5IFBBUkFMTEVMX01BS0UsIGRpc2FibGUgaWNlY2MiICUgcG4pCiAgICAgICAgIHJldHVybiAibm8iCiAKQEAgLTE1MSwxNiArMTgyLDI3IEBACiAgICAgICAgIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoImNyb3NzIiwgZCkgb3IgXAogICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJuYXRpdmUiLCBkKTsKIAorZGVmIGljZWNjX2lzX2Nyb3NzX2NhbmFkaWFuKGJiLCBkKToKKyAgICByZXR1cm4gYmIuZGF0YS5pbmhlcml0c19jbGFzcygiY3Jvc3MtY2FuYWRpYW4iLCBkKQorCitkZWYgaWNlY2NfZGlyKGJiLCBkKToKKyAgICByZXR1cm4gZC5leHBhbmQoJyR7VE1QRElSfS93b3JrLXNoYXJlZC9pY2UnKQorCiAjIERvbid0IHBvbGx1dGUgYWxsYXJjaCBzaWduYXR1cmVzIHdpdGggVEFSR0VUX0ZQVQogaWNlY2NfdmVyc2lvblt2YXJkZXBzZXhjbHVkZV0gKz0gIlRBUkdFVF9GUFUiCiBkZWYgaWNlY2NfdmVyc2lvbihiYiwgZCk6CiAgICAgaWYgdXNlX2ljZWNjKGJiLCBkKSA9PSAibm8iOgogICAgICAgICByZXR1cm4gIiIKIAotICAgIHBhcmFsbGVsID0gZC5nZXRWYXIoJ0lDRUNDX1BBUkFMTEVMX01BS0UnLCBGYWxzZSkgb3IgIiIKLSAgICBpZiBub3QgZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnLCBGYWxzZSkgPT0gIiIgYW5kIHBhcmFsbGVsOgorICAgIHBhcmFsbGVsID0gZC5nZXRWYXIoJ0lDRUNDX1BBUkFMTEVMX01BS0UnKSBvciAiIgorICAgIGlmIG5vdCBkLmdldFZhcignUEFSQUxMRUxfTUFLRScpID09ICIiIGFuZCBwYXJhbGxlbDoKICAgICAgICAgZC5zZXRWYXIoIlBBUkFMTEVMX01BS0UiLCBwYXJhbGxlbCkKIAorICAgICMgRGlzYWJsZSBzaG93aW5nIHRoZSBjYXJldCBpbiB0aGUgR0NDIGNvbXBpbGVyIG91dHB1dCBpZiB0aGUgd29ya2Fyb3VuZCBpcworICAgICMgZGlzYWJsZWQKKyAgICBpZiBkLmdldFZhcignSUNFQ0NfQ0FSRVRfV09SS0FST1VORCcpID09ICcwJzoKKyAgICAgICAgZC5zZXRWYXIoJ0lDRUNDX0NGTEFHUycsICctZm5vLWRpYWdub3N0aWNzLXNob3ctY2FyZXQnKQorCiAgICAgaWYgaWNlY2NfaXNfbmF0aXZlKGJiLCBkKToKICAgICAgICAgYXJjaGl2ZV9uYW1lID0gImxvY2FsLWhvc3QtZW52IgogICAgIGVsaWYgZC5leHBhbmQoJyR7SE9TVF9QUkVGSVh9JykgPT0gIiI6CkBAIC0xNjksMTQgKzIxMSwxOCBAQAogICAgICAgICBwcmVmaXggPSBkLmV4cGFuZCgnJHtIT1NUX1BSRUZJWH0nICkKICAgICAgICAgZGlzdHJvID0gZC5leHBhbmQoJyR7RElTVFJPfScpCiAgICAgICAgIHRhcmdldF9zeXMgPSBkLmV4cGFuZCgnJHtUQVJHRVRfU1lTfScpCi0gICAgICAgIGZsb2F0ID0gZC5nZXRWYXIoJ1RBUkdFVF9GUFUnLCBGYWxzZSkgb3IgImhhcmQiCisgICAgICAgIGZsb2F0ID0gZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBvciAiaGFyZCIKICAgICAgICAgYXJjaGl2ZV9uYW1lID0gcHJlZml4ICsgZGlzdHJvICsgIi0iICAgICAgICArIHRhcmdldF9zeXMgKyAiLSIgKyBmbG9hdAogICAgICAgICBpZiBpY2VjY19pc19rZXJuZWwoYmIsIGQpOgogICAgICAgICAgICAgYXJjaGl2ZV9uYW1lICs9ICIta2VybmVsIgogCiAgICAgaW1wb3J0IHNvY2tldAotICAgIGljZV9kaXIgPSBkLmV4cGFuZCgnJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfScpCi0gICAgdGFyX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaWNlX2RpciwgJ2ljZScsIGFyY2hpdmVfbmFtZSArICItQFZFUlNJT05ALSIgKyBzb2NrZXQuZ2V0aG9zdG5hbWUoKSArICcudGFyLmd6JykKKyAgICBpY2VfZGlyID0gaWNlY2NfZGlyKGJiLCBkKQorICAgIHRhcl9maWxlID0gb3MucGF0aC5qb2luKGljZV9kaXIsICJ7YXJjaGl2ZX0te3ZlcnNpb259LUBWRVJTSU9OQC17aG9zdG5hbWV9LnRhci5neiIuZm9ybWF0KAorICAgICAgICBhcmNoaXZlPWFyY2hpdmVfbmFtZSwKKyAgICAgICAgdmVyc2lvbj1kLmdldFZhcignSUNFQ0NfRU5WX1ZFUlNJT04nKSwKKyAgICAgICAgaG9zdG5hbWU9c29ja2V0LmdldGhvc3RuYW1lKCkKKyAgICAgICAgKSkKIAogICAgIHJldHVybiB0YXJfZmlsZQogCkBAIC0xOTcsMjUgKzI0Myw0MiBAQAogICAgIHRhcmdldF9wcmVmaXggPSBkLmV4cGFuZCgnJHtUQVJHRVRfUFJFRklYfScpCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihleHRlcm5hbF90b29sY2hhaW5fYmluZGlyLCAnJXMlcycgJSAodGFyZ2V0X3ByZWZpeCwgdG9vbCkpCiAKK2RlZiBpY2VjY19nZXRfdG9vbF9saW5rKHRvb2wsIGQpOgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJyZWFkbGluayAtZiAlcyIgJSB0b29sLCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IilbOi0xXQorCitkZWYgaWNlY2NfZ2V0X3BhdGhfdG9vbCh0b29sLCBkKToKKyAgICAjIFRoaXMgaXMgYSBsaXR0bGUgdWdseSwgYnV0IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGFkZCBhbiBhY3R1YWwKKyAgICAjIGNvbXBpbGVyIHRvIHRoZSB0b29sY2hhaW4sIG5vdCBjY2FjaGUuIFNvbWUgZGlzdHJvcyAoZS5nLiBGZWRvcmEpCisgICAgIyBoYXZlIGNjYWNoZSBlbmFibGVkIGJ5IGRlZmF1bHQgdXNpbmcgc3ltbGlua3MgUEFUSCwgbWVhbmluZyBjY2FjaGUKKyAgICAjIHdvdWxkIGJlIGZvdW5kIGZpcnN0IHdoZW4gbG9va2luZyBmb3IgdGhlIGNvbXBpbGVyLgorICAgIHBhdGhzID0gb3MuZ2V0ZW52KCJQQVRIIikuc3BsaXQoJzonKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHAsIGhpc3QgPSBiYi51dGlscy53aGljaCgnOicuam9pbihwYXRocyksIHRvb2wsIGhpc3Rvcnk9VHJ1ZSkKKyAgICAgICAgaWYgbm90IHAgb3Igb3MucGF0aC5iYXNlbmFtZShpY2VjY19nZXRfdG9vbF9saW5rKHAsIGQpKSAhPSAnY2NhY2hlJzoKKyAgICAgICAgICAgIHJldHVybiBwCisgICAgICAgIHBhdGhzID0gcGF0aHNbbGVuKGhpc3QpOl0KKworICAgIHJldHVybiAiIgorCiAjIERvbid0IHBvbGx1dGUgbmF0aXZlIHNpZ25hdHVyZXMgd2l0aCB0YXJnZXQgVFVORV9QS0dBUkNIIHRocm91Z2ggU1RBR0lOR19CSU5ESVJfVE9PTENIQUlOCiBpY2VjY19nZXRfdG9vbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNUQUdJTkdfQklORElSX1RPT0xDSEFJTiIKIGRlZiBpY2VjY19nZXRfdG9vbChiYiwgZCwgdG9vbCk6CiAgICAgaWYgaWNlY2NfaXNfbmF0aXZlKGJiLCBkKToKLSAgICAgICAgcmV0dXJuIGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCB0b29sKQorICAgICAgICByZXR1cm4gaWNlY2NfZ2V0X3BhdGhfdG9vbCh0b29sLCBkKQogICAgIGVsaWYgaWNlY2NfaXNfa2VybmVsKGJiLCBkKToKLSAgICAgICAgcmV0dXJuIGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCBnZXRfY3Jvc3Nfa2VybmVsX2NjKGJiLCBkKSkKKyAgICAgICAgcmV0dXJuIGljZWNjX2dldF9wYXRoX3Rvb2woZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYiwgZCksIGQpCiAgICAgZWxzZToKICAgICAgICAgaWNlX2RpciA9IGQuZXhwYW5kKCcke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0nKQogICAgICAgICB0YXJnZXRfc3lzID0gZC5leHBhbmQoJyR7VEFSR0VUX1NZU30nKQotICAgICAgICB0b29sX2JpbiA9IG9zLnBhdGguam9pbihpY2VfZGlyLCAiJXMtJXMiICUgKHRhcmdldF9zeXMsIHRvb2wpKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSh0b29sX2Jpbik6Ci0gICAgICAgICAgICByZXR1cm4gdG9vbF9iaW4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4dGVybmFsX3Rvb2xfYmluID0gaWNlY2NfZ2V0X2V4dGVybmFsX3Rvb2woYmIsIGQsIHRvb2wpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShleHRlcm5hbF90b29sX2Jpbik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVybmFsX3Rvb2xfYmluCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICBmb3IgcCBpbiBpY2VfZGlyLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICB0b29sX2JpbiA9IG9zLnBhdGguam9pbihwLCAiJXMtJXMiICUgKHRhcmdldF9zeXMsIHRvb2wpKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUodG9vbF9iaW4pOgorICAgICAgICAgICAgICAgIHJldHVybiB0b29sX2JpbgorICAgICAgICBleHRlcm5hbF90b29sX2JpbiA9IGljZWNjX2dldF9leHRlcm5hbF90b29sKGJiLCBkLCB0b29sKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShleHRlcm5hbF90b29sX2Jpbik6CisgICAgICAgICAgICByZXR1cm4gZXh0ZXJuYWxfdG9vbF9iaW4KKyAgICAgICAgcmV0dXJuICIiCiAKIGRlZiBpY2VjY19nZXRfYW5kX2NoZWNrX3Rvb2woYmIsIGQsIHRvb2wpOgogICAgICMgQ2hlY2sgdGhhdCBnKysgb3IgZ2NjIGlzIG5vdCBhIHN5bWJvbGljIGxpbmsgdG8gaWNlY2MgYmluYXJ5IGluCkBAIC0yMjMsOCArMjg2LDcgQEAKICAgICAjIGNvbXBpbGVyIGVudmlyb25tZW50IHBhY2thZ2UuCiAgICAgdCA9IGljZWNjX2dldF90b29sKGJiLCBkLCB0b29sKQogICAgIGlmIHQ6Ci0gICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgICAgIGxpbmtfcGF0aCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJyZWFkbGluayAtZiAlcyIgJSB0LCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IilbOi0xXQorICAgICAgICBsaW5rX3BhdGggPSBpY2VjY19nZXRfdG9vbF9saW5rKHRvb2wsIGQpCiAgICAgICAgIGlmIGxpbmtfcGF0aCA9PSBnZXRfaWNlY2MoZCk6CiAgICAgICAgICAgICBiYi5lcnJvcigiJXMgaXMgYSBzeW1saW5rIHRvICVzIGluIFBBVEggYW5kIHRoaXMgcHJldmVudHMgaWNlY2MgZnJvbSB3b3JraW5nIiAlICh0LCBnZXRfaWNlY2MoZCkpKQogICAgICAgICAgICAgcmV0dXJuICIiCkBAIC0zMDUsNyArMzY3LDcgQEAKICAgICAgICAgIyB0aGUgSUNFQ0NfVkVSU0lPTiBnZW5lcmF0aW9uIHN0ZXAgbXVzdCBiZSBsb2NrZWQgYnkgYSBtdXRleAogICAgICAgICAjIGluIG9yZGVyIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zCiAgICAgICAgIGlmIGZsb2NrIC1uICIke0lDRUNDX1ZFUlNJT059LmxvY2siIFwKLSAgICAgICAgICAgICR7SUNFQ0NfRU5WX0VYRUN9ICIke0lDRUNDX0NDfSIgIiR7SUNFQ0NfQ1hYfSIgIiR7SUNFQ0NfQVN9IiAiJHtJQ0VDQ19WRVJTSU9OfSIKKyAgICAgICAgICAgICR7SUNFQ0NfRU5WX0VYRUN9ICR7SUNFQ0NfRU5WX0RFQlVHfSAiJHtJQ0VDQ19DQ30iICIke0lDRUNDX0NYWH0iICIke0lDRUNDX0FTfSIgIiR7SUNFQ0NfVkVSU0lPTn0iCiAgICAgICAgIHRoZW4KICAgICAgICAgICAgIHRvdWNoICIke0lDRUNDX1ZFUlNJT059LmRvbmUiCiAgICAgICAgIGVsaWYgWyAhIHdhaXRfZm9yX2ZpbGUgIiR7SUNFQ0NfVkVSU0lPTn0uZG9uZSIgMzAgXQpAQCAtMzE2LDkgKzM3OCwxMyBAQAogICAgICAgICBmaQogICAgIGZpCiAKKyAgICAjIERvbid0IGxldCBjY2FjaGUgZmluZCB0aGUgaWNlY3JlYW0gY29tcGlsZXIgbGlua3MgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCwgb3RoZXJ3aXNlCisgICAgIyBpdCBjYW4gZW5kIHVwIGludm9raW5nIGljZWNyZWFtIHJlY3Vyc2l2ZWx5LgorICAgIGV4cG9ydCBDQ0FDSEVfUEFUSD0iJFBBVEgiCisgICAgZXhwb3J0IENDQUNIRV9ESVNCQUxFPSIxIgorCiAgICAgZXhwb3J0IElDRUNDX1ZFUlNJT04gSUNFQ0NfQ0MgSUNFQ0NfQ1hYCiAgICAgZXhwb3J0IFBBVEg9IiRJQ0VfUEFUSDokUEFUSCIKLSAgICBleHBvcnQgQ0NBQ0hFX1BBVEg9IiRQQVRIIgogCiAgICAgYmJub3RlICJVc2luZyBpY2VjYyIKIH0KQEAgLTMzOCwzICs0MDQsMTMgQEAKIGRvX2luc3RhbGxfcHJlcGVuZCgpIHsKICAgICBzZXRfaWNlY2NfZW52CiB9CisKKyMgSWNlQ3JlYW0gaXMgbm90IChjdXJyZW50bHkpIHN1cHBvcnRlZCBpbiB0aGUgZXh0ZW5zaWJsZSBTREsKK0lDRUNDX1NES19IT1NUX1RBU0sgPSAibmF0aXZlc2RrLWljZWNjLXRvb2xjaGFpbiIKK0lDRUNDX1NES19IT1NUX1RBU0tfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIiIKKworIyBEb24ndCBpbmNsdWRlIEljZUNyZWFtIGluIHVuaW5hdGl2ZSB0YXJiYWxsCitJQ0VDQ19TREtfSE9TVF9UQVNLX3BuLXVuaW5hdGl2ZS10YXJiYWxsID0gIiIKKworIyBBZGQgdGhlIHRvb2xjaGFpbiBzY3JpcHRzIHRvIHRoZSBTREsKK1RPT0xDSEFJTl9IT1NUX1RBU0tfYXBwZW5kID0gIiAke0lDRUNDX1NES19IT1NUX1RBU0t9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1jb21iaW5lZC1kYmcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtY29tYmluZWQtZGJnLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ3NzJmNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtY29tYmluZWQtZGJnLmJiY2xhc3MKQEAgLTAsMCArMSw5IEBACitJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRfYXBwZW5kID0gIiBjb21iaW5lX2RiZ19pbWFnZTsgIgorCitjb21iaW5lX2RiZ19pbWFnZSAoKSB7CisgICAgICAgIGlmIFsgIiR7SU1BR0VfR0VOX0RFQlVHRlN9IiA9ICIxIiAtYSAtZSAke0lNQUdFX1JPT1RGU30tZGJnIF07IHRoZW4KKyAgICAgICAgICAgICAgICAjIGNvcHkgdGFyZ2V0IGZpbGVzIGludG8gLWRiZyByb290ZnMsIHNvIGl0IGNhbiBiZSB1c2VkIGZvcgorICAgICAgICAgICAgICAgICMgZGVidWcgcHVycG9zZXMgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICB0YXIgLUMgJHtJTUFHRV9ST09URlN9IC1jZiAtIC4gfCB0YXIgLUMgJHtJTUFHRV9ST09URlN9LWRiZyAteGYgLQorICAgICAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcwppbmRleCAxNjIzYzE1Li45NjYyNzdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcwpAQCAtMTksNyArMTksNiBAQAogCiAjIEV4dGVybmFsIHZhcmlhYmxlcyAoYWxzbyB1c2VkIGJ5IHN5c2xpbnV4LmJiY2xhc3MpCiAjICR7SU5JVFJEfSAtIGluZGljYXRlcyBhIGxpc3Qgb2YgZmlsZXN5c3RlbSBpbWFnZXMgdG8gY29uY2F0ZW5hdGUgYW5kIHVzZSBhcyBhbiBpbml0cmQgKG9wdGlvbmFsKQotIyAke0NPTVBSRVNTSVNPfSAtIFRyYW5zcGFyZW50IGNvbXByZXNzIElTTywgcmVkdWNlIHNpemUgfjQwJSBpZiBzZXQgdG8gMQogIyAke05PSVNPfSAgLSBza2lwIGJ1aWxkaW5nIHRoZSBJU08gaW1hZ2UgaWYgc2V0IHRvIDEKICMgJHtOT0hERH0gIC0gc2tpcCBidWlsZGluZyB0aGUgSEREIGltYWdlIGlmIHNldCB0byAxCiAjICR7SERESU1HX0lEfSAtIEZBVCBpbWFnZSB2b2x1bWUtaWQKQEAgLTMzLDcgKzMyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwva2VybmVsOmRvX2RlcGxveSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAke01MUFJFRklYfXN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogICAgICAgICAgICAgICAgICAgICAgICAgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuaWZlbHNlKGQuZ2V0VmFyKCdDT01QUkVTU0lTTycsIEZhbHNlKSwnemlzb2ZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywnJyl9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59OmRvX2ltYWdlXyR7QGQuZ2V0VmFyKCdMSVZFX1JPT1RGU19UWVBFJykucmVwbGFjZSgnLScsICdfJyl9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICIKIApAQCAtNjUsNyArNjMsNiBAQAogSVNPRElSID0gIiR7U30vaXNvIgogRUZJSU1HRElSID0gIiR7U30vZWZpX2ltZyIKIENPTVBBQ1RfSVNPRElSID0gIiR7U30vaXNvLnoiCi1DT01QUkVTU0lTTyA/PSAiMCIKIAogSVNPTElOVVhESVIgPz0gIi9pc29saW51eCIKIElTT19CT09USU1HID0gImlzb2xpbnV4L2lzb2xpbnV4LmJpbiIKQEAgLTExNSwxOCArMTEyLDggQEAKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7U1RBR0lOR19EQVRBRElSfS9zeXNsaW51eC9pc29saW51eC5iaW4gJHtJU09ESVJ9JHtJU09MSU5VWERJUn0KIAlmaQogCi0JaWYgWyAiJHtDT01QUkVTU0lTT30iID0gIjEiIF0gOyB0aGVuCi0JCSMgY3JlYXRlIGNvbXBhY3QgZGlyZWN0b3J5LCBjb21wcmVzcyBpc28KLQkJbWtkaXIgLXAgJHtDT01QQUNUX0lTT0RJUn0KLQkJbWt6ZnRyZWUgLXogOSAtcCA0IC1GICR7SVNPRElSfS9yb290ZnMuaW1nICR7Q09NUEFDVF9JU09ESVJ9L3Jvb3Rmcy5pbWcKLQotCQkjIG1vdmUgY29tcGFjdCBpc28gdG8gaXNvLCB0aGVuIHJlbW92ZSBjb21wYWN0IGRpcmVjdG9yeQotCQltdiAke0NPTVBBQ1RfSVNPRElSfS9yb290ZnMuaW1nICR7SVNPRElSfS9yb290ZnMuaW1nCi0JCXJtIC1SZiAke0NPTVBBQ1RfSVNPRElSfQotCQlta2lzb2ZzX2NvbXByZXNzX29wdHM9Ii1SIC16IC1EIC1sIgotCWVsc2UKLQkJbWtpc29mc19jb21wcmVzc19vcHRzPSItciIKLQlmaQorCSMgV2UgdXNlZCB0byBoYXZlIHN1cHBvcnQgZm9yIHppc29mczsgdGhpcyBpcyBhIHJlbGljIG9mIHRoYXQKKwlta2lzb2ZzX2NvbXByZXNzX29wdHM9Ii1yIgogCiAJIyBDaGVjayB0aGUgc2l6ZSBvZiAke0lTT0RJUn0vcm9vdGZzLmltZywgdXNlIG1raXNvZnMgLWlzby1sZXZlbCAzCiAJIyB3aGVuIGl0IGV4Y2VlZHMgMy44R0IsIHRoZSBzcGVjaWZpY2F0aW9uIGlzIDRHIC0gMSBieXRlcywgd2UgbmVlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwppbmRleCBmM2JiNjhiLi42YThhZmE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwpAQCAtMzYsNyArMzYsNyBAQAogCWR5bmFtaWNfbG9hZGVyPSQobGludXhsb2FkZXIpCiAKIAkjIHByZWxpbmshCi0JaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQliYm5vdGUgIiBwcmVsaW5rOiBCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMuLi4iCiAJCWlmIFsgIiRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyIgPSAiIiBdOyB0aGVuCiAJCQlleHBvcnQgUFJFTElOS19USU1FU1RBTVA9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0IGAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwppbmRleCBkODhjZTVjLi4yMjQ3YjMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCkBAIC0xNyw3ICsxNyw3IEBACiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKLVRFU1RJTUFHRUNMQVNTID0gIiR7QGJhc2VfY29uZGl0aW9uYWwoJ1RFU1RfSU1BR0UnLCAnMScsICd0ZXN0aW1hZ2UtYXV0bycsICcnLCBkKX0iCitURVNUSU1BR0VDTEFTUyA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEVTVF9JTUFHRScsICcxJywgJ3Rlc3RpbWFnZS1hdXRvJywgJycsIGQpfSIKIGluaGVyaXQgJHtURVNUSU1BR0VDTEFTU30KIAogIyBJTUFHRV9GRUFUVVJFUyBtYXkgY29udGFpbiBhbnkgYXZhaWxhYmxlIHBhY2thZ2UgZ3JvdXAKQEAgLTI4OSw3ICsyODksNyBAQAogU1NUQVRFX1NLSVBfQ1JFQVRJT05fdGFzay1pbWFnZS1jb21wbGV0ZSA9ICcxJwogZG9faW1hZ2VfY29tcGxldGVbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtJTUdERVBMT1lESVJ9IgogZG9faW1hZ2VfY29tcGxldGVbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0iCi1kb19pbWFnZV9jb21wbGV0ZVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9IgorZG9faW1hZ2VfY29tcGxldGVbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgogYWRkdGFzayBkb19pbWFnZV9jb21wbGV0ZSBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9fYnVpbGQKIHB5dGhvbiBkb19pbWFnZV9jb21wbGV0ZV9zZXRzY2VuZSAoKSB7CiAgICAgc3N0YXRlX3NldHNjZW5lKGQpCkBAIC01MzYsMjEgKzUzNiwyOSBAQAogICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZHUnLCAnLWtzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0lNQUdFX1JPT1RGUycpXSkKICAgICBzaXplX2tiID0gaW50KG91dHB1dC5zcGxpdCgpWzBdKQotICAgIGJhc2Vfc2l6ZSA9IHNpemVfa2IgKiBvdmVyaGVhZF9mYWN0b3IKLSAgICBiYXNlX3NpemUgPSBtYXgoYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUpICsgcm9vdGZzX2V4dHJhX3NwYWNlCiAKKyAgICBiYXNlX3NpemUgPSBzaXplX2tiICogb3ZlcmhlYWRfZmFjdG9yCisgICAgYmIuZGVidWcoMSwgJyVmID0gJWQgKiAlZicgJSAoYmFzZV9zaXplLCBzaXplX2tiLCBvdmVyaGVhZF9mYWN0b3IpKQorICAgIGJhc2Vfc2l6ZTIgPSBtYXgoYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUpICsgcm9vdGZzX2V4dHJhX3NwYWNlCisgICAgYmIuZGVidWcoMSwgJyVmID0gbWF4KCVmLCAlZClbJWZdICsgJWQnICUgKGJhc2Vfc2l6ZTIsIGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplLCBtYXgoYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUpLCBvdmVyaGVhZF9mYWN0b3IpKQorCisgICAgYmFzZV9zaXplID0gYmFzZV9zaXplMgogICAgIGlmIGJhc2Vfc2l6ZSAhPSBpbnQoYmFzZV9zaXplKToKICAgICAgICAgYmFzZV9zaXplID0gaW50KGJhc2Vfc2l6ZSArIDEpCiAgICAgZWxzZToKICAgICAgICAgYmFzZV9zaXplID0gaW50KGJhc2Vfc2l6ZSkKKyAgICBiYi5kZWJ1ZygxLCAnJWYgPSBpbnQoJWYpJyAlIChiYXNlX3NpemUsIGJhc2Vfc2l6ZTIpKQogCisgICAgYmFzZV9zaXplX3NhdmVkID0gYmFzZV9zaXplCiAgICAgYmFzZV9zaXplICs9IHJvb3Rmc19hbGlnbm1lbnQgLSAxCiAgICAgYmFzZV9zaXplIC09IGJhc2Vfc2l6ZSAlIHJvb3Rmc19hbGlnbm1lbnQKKyAgICBiYi5kZWJ1ZygxLCAnJWQgPSBhbGlnbmVkKCVkKScgJSAoYmFzZV9zaXplLCBiYXNlX3NpemVfc2F2ZWQpKQogCiAgICAgIyBEbyBub3QgY2hlY2sgaW1hZ2Ugc2l6ZSBvZiB0aGUgZGVidWdmcyBpbWFnZS4gVGhpcyBpcyBub3Qgc3VwcG9zZWQKICAgICAjIHRvIGJlIGRlcGxveWVkLCBldGMuIHNvIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBsaW1pdCB0aGUgc2l6ZQogICAgICMgb2YgdGhlIGRlYnVnLgogICAgIGlmIChkLmdldFZhcignSU1BR0VfQlVJTERJTkdfREVCVUdGUycpIG9yICIiKSA9PSAidHJ1ZSI6CisgICAgICAgIGJiLmRlYnVnKDEsICdyZXR1cm5pbmcgZGVidWdmcyBzaXplICVkJyAlIChiYXNlX3NpemUpKQogICAgICAgICByZXR1cm4gYmFzZV9zaXplCiAKICAgICAjIENoZWNrIHRoZSByb290ZnMgc2l6ZSBhZ2FpbnN0IElNQUdFX1JPT1RGU19NQVhTSVpFIChpZiBzZXQpCkBAIC01NjgsNiArNTc2LDggQEAKICAgICAgICAgICAgICAgICAoYmFzZV9zaXplLCBpbml0cmFtZnNfbWF4c2l6ZV9pbnQpKQogICAgICAgICAgICAgYmIuZXJyb3IoIllvdSBjYW4gc2V0IElOSVRSQU1GU19NQVhTSVpFIGEgbGFyZ2VyIHZhbHVlLiBVc3VhbGx5LCBpdCBzaG91bGQiKQogICAgICAgICAgICAgYmIuZmF0YWwoImJlIGxlc3MgdGhhbiAxLzIgb2YgcmFtIHNpemUsIG9yIHlvdSBtYXkgZmFpbCB0byBib290IGl0LlxuIikKKworICAgIGJiLmRlYnVnKDEsICdyZXR1cm5pbmcgJWQnICUgKGJhc2Vfc2l6ZSkpCiAgICAgcmV0dXJuIGJhc2Vfc2l6ZQogCiBweXRob24gc2V0X2ltYWdlX3NpemUgKCkgewpAQCAtNjE3LDkgKzYyNyw5IEBACiBkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKIGRlbHRhc2sgZG9fcGFja2FnZV9xYQogZG9fcGFja2FnZWRhdGFbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9pcGtbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9kZWJbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9ycG1bbm9leGVjXSA9ICIxIgorZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX2lwaworZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX2RlYgorZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbQogCiAjIFByZXBhcmUgdGhlIHJvb3QgbGlua3MgdG8gcG9pbnQgdG8gdGhlIC91c3IgY291bnRlcnBhcnRzLgogY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3MoKSB7CkBAIC02NTQsNyArNjY0LDcgQEAKIFBPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3Nfc2RrOyAnLCAnJyxkKX0iCiAKIHJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrICgpIHsKLSAgICBpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisgICAgaWYgWyAiJHtCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVN9IiA9ICIxIiBdOyB0aGVuCiAgICAgICAgIGlmIFsgIiRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyIgPSAiIiBdOyB0aGVuCiAgICAgICAgICAgICBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUz1gZ2l0IGxvZyAtMSAtLXByZXR0eT0lY3RgCiAgICAgICAgIGZpCkBAIC02NjQsMyArNjc0LDUgQEAKICAgICBmaQogfQogSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EX2FwcGVuZCA9ICIgcmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2s7ICIKKworQ1ZFX1BST0RVQ1QgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCmluZGV4IGU4ODFkMGMuLjAwYTAwZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKQEAgLTg2LDcgKzg2LDcgQEAKIAliYmRlYnVnIDEgRXhlY3V0aW5nICJkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHNlZWs9JFJPT1RGU19TSVpFIGNvdW50PSRDT1VOVCBicz0xMDI0IgogCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgc2Vlaz0kUk9PVEZTX1NJWkUgY291bnQ9JENPVU5UIGJzPTEwMjQKIAliYmRlYnVnIDEgIkFjdHVhbCBSb290ZnMgc2l6ZTogIGBkdSAtcyAke0lNQUdFX1JPT1RGU31gIgotCWJiZGVidWcgMSAiQWN0dWFsIFBhcnRpb24gc2l6ZTogYGxzIC1zICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZWAiCisJYmJkZWJ1ZyAxICJBY3R1YWwgUGFydGlvbiBzaXplOiBgc3RhdCAtYyAnJXMnICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZWAiCiAJYmJkZWJ1ZyAxIEV4ZWN1dGluZyAibWtmcy4kZnN0eXBlIC1GICRleHRyYV9pbWFnZWNtZCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgLWQgJHtJTUFHRV9ST09URlN9IgogCW1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfQogCSMgRXJyb3IgY29kZXMgMC0zIGluZGljYXRlIHN1Y2Nlc3NmdWxsIG9wZXJhdGlvbiBvZiBmc2NrIChubyBlcnJvcnMgb3IgZXJyb3JzIGNvcnJlY3RlZCkKQEAgLTEyNSw3ICsxMjUsNyBAQAogIyByZXF1aXJlZCB3aGVuIGV4dHJhY3RpbmcsIGJ1dCBpdCBzZWVtcyBwcnVkZW50IHRvIHVzZSBpdCBpbiBib3RoIGNhc2VzLgogSU1BR0VfQ01EX1RBUiA/PSAidGFyIgogIyBpZ25vcmUgcmV0dXJuIGNvZGUgMSAiZmlsZSBjaGFuZ2VkIGFzIHdlIHJlYWQgaXQiIGFzIG90aGVyIHRhc2tzKGUuZy4gZG9faW1hZ2Vfd2ljKSBtYXkgYmUgaGFyZGxpbmtpbmcgcm9vdGZzCi1JTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLWNmICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udGFyIC1DICR7SU1BR0VfUk9PVEZTfSAuIHx8IFsgJD8gLWVxIDEgXSIKK0lNQUdFX0NNRF90YXIgPSAiJHtJTUFHRV9DTURfVEFSfSAtLW51bWVyaWMtb3duZXIgLWNmICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udGFyIC1DICR7SU1BR0VfUk9PVEZTfSAuIHx8IFsgJD8gLWVxIDEgXSIKIAogZG9faW1hZ2VfY3Bpb1tjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2NwaW9fYXBwZW5kIgogSU1BR0VfQ01EX2NwaW8gKCkgewpAQCAtMTQ3LDE2ICsxNDcsNiBAQAogCWZpCiB9CiAKLUVMRl9LRVJORUwgPz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSIKLUVMRl9BUFBFTkQgPz0gInJhbWRpc2tfc2l6ZT0zMjc2OCByb290PS9kZXYvcmFtMCBydyBjb25zb2xlPSIKLQotSU1BR0VfQ01EX2VsZiAoKSB7Ci0JdGVzdCAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAmJiBybSAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZgotCW1rZWxmSW1hZ2UgLS1rZXJuZWw9JHtFTEZfS0VSTkVMfSAtLWluaXRyZD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmNwaW8uZ3ogLS1vdXRwdXQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgLS1hcHBlbmQ9JyR7RUxGX0FQUEVORH0nICR7RVhUUkFfSU1BR0VDTUR9Ci19Ci0KLUlNQUdFX1RZUEVERVBfZWxmID0gImNwaW8uZ3oiCi0KIFVCSV9WT0xOQU1FID89ICIke01BQ0hJTkV9LXJvb3RmcyIKIAogbXVsdGl1YmlfbWtmcygpIHsKQEAgLTIxOCwxMCArMjA4LDI3IEBACiAKIElNQUdFX0NNRF91YmlmcyA9ICJta2ZzLnViaWZzIC1yICR7SU1BR0VfUk9PVEZTfSAtbyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaWZzICR7TUtVQklGU19BUkdTfSIKIAorTUlOX0YyRlNfU0laRSA/PSAiNTI0Mjg4IgorSU1BR0VfQ01EX2YyZnMgKCkgeworICAgICAgICAjIFdlIG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgc21hcnRzIGhlcmUgZm9ybSBkZXZpY2VzIHNtYWxsZXIgdGhhbiAxLjVHCisgICAgICAgICMgTmVlZCB0byBzY2FsZSBhcHByb3ByaWF0ZWx5IGJldHdlZW4gNDBNIC0+IDEuNUcgYXMgdGhlICJvdmVycHJvdmlzaW9uCisgICAgICAgICMgcmF0aW8iIGdvZXMgZG93biBhcyB0aGUgZGV2aWNlIGdldHMgYmlnZ2VyICg3MCUgLT4gNC41JSksIGJlbG93IGFib3V0CisgICAgICAgICMgNTAwTSB0aGUgc3RhbmRhcmQgSU1BR0VfT1ZFUkhFQURfRkFDVE9SIGRvZXMgbm90IHdvcmssIHNvIGFkZCBhZGRpdGlvbmFsCisgICAgICAgICMgc3BhY2UgaGVyZSB3aGVuIHVuZGVyIDUwME0KKwlzaXplPSR7Uk9PVEZTX1NJWkV9CisJaWYgWyAke3NpemV9IC1sdCAke01JTl9GMkZTX1NJWkV9IF0gOyB0aGVuCisJCXNpemU9JHtNSU5fRjJGU19TSVpFfQorCQliYndhcm4gIlJvb3RmcyBzaXplIGlzIHRvbyBzbWFsbCBmb3IgRjJGUy4gRmlsZXN5c3RlbSB3aWxsIGJlIGV4dGVuZGVkIHRvICR7c2l6ZX1LIgorCWZpCisJZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZjJmcyBzZWVrPSR7c2l6ZX0gY291bnQ9MCBicz0xMDI0CisJbWtmcy5mMmZzICR7RVhUUkFfSU1BR0VDTUR9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZjJmcworCXNsb2FkLmYyZnMgLWYgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZjJmcworfQorCiBFWFRSQV9JTUFHRUNNRCA9ICIiCiAKIGluaGVyaXQgc2l0ZWluZm8ga2VybmVsLWFyY2gKLUpGRlMyX0VORElBTk5FU1MgPz0gIiR7QGJhc2VfY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLWwnLCAnLWInLCBkKX0iCitKRkZTMl9FTkRJQU5ORVNTID89ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctbCcsICctYicsIGQpfSIKIEpGRlMyX0VSQVNFQkxPQ0sgPz0gIjB4NDAwMDAiCiBFWFRSQV9JTUFHRUNNRF9qZmZzMiA/PSAiLS1wYWQgJHtKRkZTMl9FTkRJQU5ORVNTfSAtLWVyYXNlYmxvY2s9JHtKRkZTMl9FUkFTRUJMT0NLfSAtLW5vLWNsZWFubWFya2VycyIKIApAQCAtMjMwLDcgKzIzNyw3IEBACiBFWFRSQV9JTUFHRUNNRF9leHQzID89ICItaSA0MDk2IgogRVhUUkFfSU1BR0VDTURfZXh0NCA/PSAiLWkgNDA5NiIKIEVYVFJBX0lNQUdFQ01EX2J0cmZzID89ICItbiA0MDk2IgotRVhUUkFfSU1BR0VDTURfZWxmID89ICIiCitFWFRSQV9JTUFHRUNNRF9mMmZzID89ICIiCiAKIGRvX2ltYWdlX2pmZnMyW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV9jcmFtZnNbZGVwZW5kc10gKz0gInV0aWwtbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCkBAIC0yNDIsMTAgKzI0OSwxMCBAQAogZG9faW1hZ2Vfc3F1YXNoZnNfeHpbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2Vfc3F1YXNoZnNfbHpvW2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3NxdWFzaGZzX2x6NFtkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi1kb19pbWFnZV9lbGZbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbWtlbGZpbWFnZS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3ViaVtkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2VfdWJpZnNbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX211bHRpdWJpW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9mMmZzW2RlcGVuZHNdICs9ICJmMmZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCiAjIFRoaXMgdmFyaWFibGUgaXMgYXZhaWxhYmxlIHRvIHJlcXVlc3Qgd2hpY2ggdmFsdWVzIGFyZSBzdWl0YWJsZSBmb3IgSU1BR0VfRlNUWVBFUwogSU1BR0VfVFlQRVMgPSAiIFwKQEAgLTI2MSw5ICsyNjgsOSBAQAogICAgIHViaSB1YmlmcyBtdWx0aXViaSBcCiAgICAgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiB0YXIubHo0IFwKICAgICBjcGlvIGNwaW8uZ3ogY3Bpby54eiBjcGlvLmx6bWEgY3Bpby5sejQgXAotICAgIGVsZiBcCiAgICAgd2ljIHdpYy5neiB3aWMuYnoyIHdpYy5sem1hIFwKICAgICBjb250YWluZXIgXAorICAgIGYyZnMgXAogIgogCiAjIENvbXByZXNzaW9uIGlzIGEgc3BlY2lhbCBjYXNlIG9mIGNvbnZlcnNpb24uIFRoZSBvbGQgdmFyaWFibGUKQEAgLTI3NCwxMSArMjgxLDEwIEBACiAKIENPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyICR7Q09NUFJFU1NJT05UWVBFU30iCiBDT05WRVJTSU9OX0NNRF9sem1hID0gImx6bWEgLWsgLWYgLTcgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCi1DT05WRVJTSU9OX0NNRF9neiA9ICJnemlwIC1mIC05IC1uIC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uZ3oiCitDT05WRVJTSU9OX0NNRF9neiA9ICJwaWd6IC1mIC05IC1uIC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uZ3oiCiBDT05WRVJTSU9OX0NNRF9iejIgPSAicGJ6aXAyIC1mIC1rICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfeHogPSAieHogLWYgLWsgLWMgJHtYWl9DT01QUkVTU0lPTl9MRVZFTH0gJHtYWl9USFJFQURTfSAtLWNoZWNrPSR7WFpfSU5URUdSSVRZX0NIRUNLfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lnh6IgotQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCi1DT05WRVJTSU9OX0NNRF9sejRfbGVnYWN5ID0gImx6NCAtOSAteiAtbCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCitDT05WRVJTSU9OX0NNRF9sejQgPSAibHo0IC05IC16IC1sICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmx6NCIKIENPTlZFUlNJT05fQ01EX2x6byA9ICJsem9wIC05ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfemlwID0gInppcCAke1pJUF9DT01QUkVTU0lPTl9MRVZFTH0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uemlwICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfc3VtID0gInN1bXRvb2wgLWkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc3VtICR7SkZGUzJfU1VNX0VYVFJBX0FSR1N9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKaW5kZXggZGNmNjIwYy4uNWI0MGE5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCkBAIC0xMDIsNiArMTAyLDcgQEAKICAgICAgICAgICAgICAgICAjIGEgdmFyaWFibGUgYW5kIGxldCB0aGUgbWV0YWRhdGEgZGVhbCB3aXRoIHRoZSBkZXBzLgogICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdfV0tTX1RFTVBMQVRFJywgYm9keSkKICAgICAgICAgICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb193cml0ZV93a3NfdGVtcGxhdGUnLCAnZG9faW1hZ2Vfd2ljJywgTm9uZSwgZCkKKyAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9faW1hZ2Vfd2ljJywgJ2RvX2ltYWdlX2NvbXBsZXRlJywgTm9uZSwgZCkKIH0KIAogIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKaW5kZXggMGEzYjUyOC4uZmExNTQ2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCkBAIC02OCw2ICs2OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImVwaXBoYW55IjogICAoNDY0MywgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4IiA6IHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKQEAgLTk0LDYgKzk5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNiI6ICAgKCA4LCAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiAoIDgsICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAibmlvczIiOiAgICAgICgxMTMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiczM5MCI6ICAgICAgICgyMiwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNwYXJjIjogICAgICAoIDIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCkBAIC0xMTksNiArMTI2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoICA0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInVjbGludXgtdWNsaWJjIiA6IHsKQEAgLTE0Miw2ICsxNTEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LWdudV9pbHAzMiIgOiAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1nbnV4MzIiIDogICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTQyMiw3ICs0MzQsNyBAQAogCiAgICAgIyBDaGVjayB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBlbmRpYW5uZXMgb2YgdGhlIGJpbmFyeQogICAgIGlzXzMyID0gKCgidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUiLCBkKSkgYW5kIFwKLSAgICAgICAgICAgICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1tdXNseDMyIiAgb3IgcmUubWF0Y2goJ21pcHM2NC4qMzInLCBkLmdldFZhcignREVGQVVMVFRVTkUnKSkpCisgICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1nbnVfaWxwMzIiIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQogICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3IgaXNfMzIpOgogICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAiYXJjaCIsICJBcmNoaXRlY3R1cmUgZGlkIG5vdCBtYXRjaCAoJXMsIGV4cGVjdGVkICVzKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAgICAgIChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoZWxmLm1hY2hpbmUoKSksIG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZyhtYWNoaW5lKSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCmluZGV4IGM3YjMzZDkuLjA5NzkzZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAgICAgICAgICAgIHBhcmlzYyBzMzkwICB2ODUwIFwKICAgICAgICAgICAgICAgIGF2cjMyIGJsYWNrZmluIFwKICAgICAgICAgICAgICAgIG1pY3JvYmxhemUgXAotICAgICAgICAgICAgICAgbmlvczIgYXJjIHh0ZW5zYSIKKyAgICAgICAgICAgICAgIG5pb3MyIGFyYyByaXNjdiB4dGVuc2EiCiAKIGRlZiBtYXBfa2VybmVsX2FyY2goYSwgZCk6CiAgICAgaW1wb3J0IHJlCkBAIC0yOCw2ICsyOCw3IEBACiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9pbHAzMiQnLCBhKTogICAgICAgICByZXR1cm4gJ2FybTY0JwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmVfaWxwMzIkJywgYSk6ICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOiAgICAgIHJldHVybiAnbWlwcycKKyAgICBlbGlmIHJlLm1hdGNoKCdyaXNjdigzMnw2NHwpKGVifCkkJywgYSk6ICAgIHJldHVybiAncmlzY3YnCiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCBhKTogICAgICByZXR1cm4gJ3Bvd2VycGMnCiAgICAgZWxpZiByZS5tYXRjaCgnc2goM3w0KSQnLCBhKTogICAgICAgICAgICAgICByZXR1cm4gJ3NoJwogICAgIGVsaWYgcmUubWF0Y2goJ2JmaW4nLCBhKTogICAgICAgICAgICAgICAgICAgcmV0dXJuICdibGFja2ZpbicKQEAgLTU4LDcgKzU5LDcgQEAKIFRBUkdFVF9BUl9LRVJORUxfQVJDSCA/PSAiIgogSE9TVF9BUl9LRVJORUxfQVJDSCA/PSAiJHtUQVJHRVRfQVJfS0VSTkVMX0FSQ0h9IgogCi1LRVJORUxfQ0MgPSAiJHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nY2MgJHtIT1NUX0NDX0tFUk5FTF9BUkNIfSAtZnVzZS1sZD1iZmQiCitLRVJORUxfQ0MgPSAiJHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nY2MgJHtIT1NUX0NDX0tFUk5FTF9BUkNIfSAtZnVzZS1sZD1iZmQgJHtERUJVR19QUkVGSVhfTUFQfSAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9PSR7S0VSTkVMX1NSQ19QQVRIfSIKIEtFUk5FTF9MRCA9ICIke0NDQUNIRX0ke0hPU1RfUFJFRklYfWxkLmJmZCAke0hPU1RfTERfS0VSTkVMX0FSQ0h9IgogS0VSTkVMX0FSID0gIiR7Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9YXIgJHtIT1NUX0FSX0tFUk5FTF9BUkNIfSIKIFRPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKaW5kZXggNmUwOGJlNC4uNGY4MGNjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcwpAQCAtMSwxMCArMSwxMCBAQAogIyBTdXBwb3J0IGZvciBkZXZpY2UgdHJlZSBnZW5lcmF0aW9uCiBQQUNLQUdFU19hcHBlbmQgPSAiIFwKLSAgICBrZXJuZWwtZGV2aWNldHJlZSBcCi0gICAgJHtAWydrZXJuZWwtaW1hZ2UtemltYWdlLWJ1bmRsZScsICcnXVtkLmdldFZhcignS0VSTkVMX0RFVklDRVRSRUVfQlVORExFJykgIT0gJzEnXX0gXAorICAgICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2aWNldHJlZSBcCisgICAgJHtAW2QuZ2V0VmFyKCdLRVJORUxfUEFDS0FHRV9OQU1FJykgKyAnLWltYWdlLXppbWFnZS1idW5kbGUnLCAnJ11bZC5nZXRWYXIoJ0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRScpICE9ICcxJ119IFwKICIKLUZJTEVTX2tlcm5lbC1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRiIC8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRibyIKLUZJTEVTX2tlcm5lbC1pbWFnZS16aW1hZ2UtYnVuZGxlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9L3pJbWFnZS0qLmR0Yi5iaW4iCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWRldmljZXRyZWUgPSAiLyR7S0VSTkVMX0lNQUdFREVTVH0vKi5kdGIgLyR7S0VSTkVMX0lNQUdFREVTVH0vKi5kdGJvIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZS16aW1hZ2UtYnVuZGxlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9L3pJbWFnZS0qLmR0Yi5iaW4iCiAKICMgR2VuZXJhdGUga2VybmVsK2RldmljZXRyZWUgYnVuZGxlCiBLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUgPz0gIjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwppbmRleCA5YmFmMzk5Li41MGE5MWUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKQEAgLTE0LDYgKzE0LDggQEAKICAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJ2bWxpbnV6LmJpbiIKICAgICAgICAgZWxpZiB1YXJjaCA9PSAieDg2IjoKICAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJiekltYWdlIgorICAgICAgICBlbGlmIHVhcmNoID09ICJtaWNyb2JsYXplIjoKKyAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJsaW51eC5iaW4iCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiekltYWdlIgogCkBAIC0xMDAsNyArMTAyLDcgQEAKIAogCWtlcm5lbF9jc3VtPSJzaGExIgogCi0JRU5UUllQT0lOVD0ke1VCT09UX0VOVFJZUE9JTlR9CisJRU5UUllQT0lOVD0iJHtVQk9PVF9FTlRSWVBPSU5UfSIKIAlpZiBbIC1uICIke1VCT09UX0VOVFJZU1lNQk9MfSIgXTsgdGhlbgogCQlFTlRSWVBPSU5UPWAke0hPU1RfUFJFRklYfW5tIHZtbGludXggfCBcCiAJCQlhd2sgJyQzPT0iJHtVQk9PVF9FTlRSWVNZTUJPTH0iIHtwcmludCAiMHgiJDE7ZXhpdH0nYApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcwppbmRleCAxMDM1NTI1Li42N2FiNDE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcwpAQCAtMzAsNyArMzAsNyBAQAogCiBQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X2tlcm5lbF9tb2R1bGVfcGFja2FnZXMgIgogCi1LRVJORUxfTU9EVUxFU19NRVRBX1BBQ0tBR0UgPz0gImtlcm5lbC1tb2R1bGVzIgorS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFID89ICIke0AgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSBvciAia2VybmVsIiB9LW1vZHVsZXMiCiAKIEtFUk5FTF9NT0RVTEVfUEFDS0FHRV9QUkVGSVggPz0gIiIKIEtFUk5FTF9NT0RVTEVfUEFDS0FHRV9TVUZGSVggPz0gIi0ke0tFUk5FTF9WRVJTSU9OfSIKQEAgLTEyOSwxNiArMTI5LDE5IEBACiAgICAgICAgICAgIHBvc3RmaXggPSBmb3JtYXQuc3BsaXQoJyVzJylbMV0KICAgICAgICAgICAgZC5zZXRWYXIoJ1JQUk9WSURFU18nICsgcGtnLCBwa2cucmVwbGFjZShwb3N0Zml4LCAnJykpCiAKKyAgICBrZXJuZWxfcGFja2FnZV9uYW1lID0gZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSBvciAia2VybmVsIgorICAgIGtlcm5lbF92ZXJzaW9uID0gZC5nZXRWYXIoIktFUk5FTF9WRVJTSU9OIikKKwogICAgIG1vZHVsZV9yZWdleCA9ICdeKC4qKVwuaz9vJCcKIAogICAgIG1vZHVsZV9wYXR0ZXJuX3ByZWZpeCA9IGQuZ2V0VmFyKCdLRVJORUxfTU9EVUxFX1BBQ0tBR0VfUFJFRklYJykKICAgICBtb2R1bGVfcGF0dGVybl9zdWZmaXggPSBkLmdldFZhcignS0VSTkVMX01PRFVMRV9QQUNLQUdFX1NVRkZJWCcpCi0gICAgbW9kdWxlX3BhdHRlcm4gPSBtb2R1bGVfcGF0dGVybl9wcmVmaXggKyAna2VybmVsLW1vZHVsZS0lcycgKyBtb2R1bGVfcGF0dGVybl9zdWZmaXgKKyAgICBtb2R1bGVfcGF0dGVybiA9IG1vZHVsZV9wYXR0ZXJuX3ByZWZpeCArIGtlcm5lbF9wYWNrYWdlX25hbWUgKyAnLW1vZHVsZS0lcycgKyBtb2R1bGVfcGF0dGVybl9zdWZmaXgKIAogICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF9tb2R1bGVzJykKICAgICBwb3N0cm0gPSBkLmdldFZhcigncGtnX3Bvc3RybV9tb2R1bGVzJykKIAotICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCByb290PScke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMnLCBmaWxlX3JlZ2V4PW1vZHVsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm49bW9kdWxlX3BhdHRlcm4sIGRlc2NyaXB0aW9uPSclcyBrZXJuZWwgbW9kdWxlJywgcG9zdGluc3Q9cG9zdGluc3QsIHBvc3RybT1wb3N0cm0sIHJlY3Vyc2l2ZT1UcnVlLCBob29rPWZyb2JfbWV0YWRhdGEsIGV4dHJhX2RlcGVuZHM9J2tlcm5lbC0lcycgJSAoZC5nZXRWYXIoIktFUk5FTF9WRVJTSU9OIikpKQorICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCByb290PScke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMnLCBmaWxlX3JlZ2V4PW1vZHVsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm49bW9kdWxlX3BhdHRlcm4sIGRlc2NyaXB0aW9uPSclcyBrZXJuZWwgbW9kdWxlJywgcG9zdGluc3Q9cG9zdGluc3QsIHBvc3RybT1wb3N0cm0sIHJlY3Vyc2l2ZT1UcnVlLCBob29rPWZyb2JfbWV0YWRhdGEsIGV4dHJhX2RlcGVuZHM9JyVzLSVzJyAlIChrZXJuZWxfcGFja2FnZV9uYW1lLCBrZXJuZWxfdmVyc2lvbikpCiAgICAgaWYgbW9kdWxlczoKICAgICAgICAgbWV0YXBrZyA9IGQuZ2V0VmFyKCdLRVJORUxfTU9EVUxFU19NRVRBX1BBQ0tBR0UnKQogICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJysnICcuam9pbihtb2R1bGVzKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCmluZGV4IDY2M2M2NTUuLjRhYzNhMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwpAQCAtMjQ3LDYgKzI0Nyw3IEBACiAJCWZpCiAJCXJtIC1mIC5naXRpZ25vcmUKIAkJZ2l0IGluaXQKKwkJY2hlY2tfZ2l0X2NvbmZpZwogCQlnaXQgYWRkIC4KIAkJZ2l0IGNvbW1pdCAtcSAtbSAiYmFzZWxpbmUgY29tbWl0OiBjcmVhdGluZyByZXBvIGZvciAke1BOfS0ke1BWfSIKIAkJZ2l0IGNsZWFuIC1kIC1mCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwppbmRleCAxNGY0MWU5Li43OGQ2YzMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTEsNyArMSwxMCBAQAogaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtbW9kdWxlLXNwbGl0CiAKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL2tlcm5lbCIKLURFUEVORFMgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBrbW9kLW5hdGl2ZSBiYy1uYXRpdmUgbHpvcC1uYXRpdmUiCitLRVJORUxfUEFDS0FHRV9OQU1FID8/PSAia2VybmVsIgorS0VSTkVMX0RFUExPWVNVQkRJUiA/Pz0gIiR7QCAiIiBpZiAoZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIikgZWxzZSBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpIH0iCisKK1BST1ZJREVTICs9ICIke0AgInZpcnR1YWwva2VybmVsIiBpZiAoZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIikgZWxzZSAiIiB9IgorREVQRU5EUyArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIGttb2QtbmF0aXZlIGJjLW5hdGl2ZSBsem9wLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gImRlcG1vZHdyYXBwZXItY3Jvc3MiCiAKIGRvX2RlcGxveVtkZXBlbmRzXSArPSAiZGVwbW9kd3JhcHBlci1jcm9zczpkb19wb3B1bGF0ZV9zeXNyb290IgpAQCAtMzQsMTEgKzM3LDMyIEBACiBLRVJORUxfVkVSU0lPTl9QS0dfTkFNRVt2YXJkZXB2YWx1ZV0gPSAiJHtMSU5VWF9WRVJTSU9OfSIKIAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCisgICAga3BuID0gZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKQorCisgICAgIyBYWFggUmVtb3ZlIHRoaXMgYWZ0ZXIgYnVnIDExOTA1IGlzIHJlc29sdmVkCisgICAgIyAgRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXYgZG9lc24ndCBleHBhbmQgY29ycmVjdGx5CisgICAgaWYga3BuID09IHBuOgorICAgICAgICBiYi53YXJuKCJTb21lIHBhY2thZ2VzIChFLmcuICotZGV2KSBtaWdodCBiZSBtaXNzaW5nIGR1ZSB0byAiCisgICAgICAgICAgICAgICAgImJ1ZyAxMTkwNSAodmFyaWFibGUgS0VSTkVMX1BBQ0tBR0VfTkFNRSA9PSBQTikiKQorCisgICAgIyBUaGUgZGVmYXVsdCBrZXJuZWwgcmVjaXBlIGJ1aWxkcyBpbiBhIHNoYXJlZCBsb2NhdGlvbiBkZWZpbmVkIGJ5CisgICAgIyBiaXRiYWtlL2Rpc3RybyBjb25mczogU1RBR0lOR19LRVJORUxfRElSIGFuZCBTVEFHSU5HX0tFUk5FTF9CVUlMRERJUi4KKyAgICAjIFNldCB0aGVzZSB2YXJpYWJsZXMgdG8gZGlyZWN0b3JpZXMgdW5kZXIgJHtXT1JLRElSfSBpbiBhbHRlcm5hdGUKKyAgICAjIGtlcm5lbCByZWNpcGVzIChJLmUuIHdoZXJlIEtFUk5FTF9QQUNLQUdFX05BTUUgIT0ga2VybmVsKSBzbyB0aGF0IHRoZXkKKyAgICAjIG1heSBidWlsZCBpbiBwYXJhbGxlbCB3aXRoIHRoZSBkZWZhdWx0IGtlcm5lbCB3aXRob3V0IGNsb2JiZXJpbmcuCisgICAgaWYga3BuICE9ICJrZXJuZWwiOgorICAgICAgICB3b3JrZGlyID0gZC5nZXRWYXIoIldPUktESVIiKQorICAgICAgICBzb3VyY2VEaXIgPSBvcy5wYXRoLmpvaW4od29ya2RpciwgJ2tlcm5lbC1zb3VyY2UnKQorICAgICAgICBhcnRpZmFjdHNEaXIgPSBvcy5wYXRoLmpvaW4od29ya2RpciwgJ2tlcm5lbC1idWlsZC1hcnRpZmFjdHMnKQorICAgICAgICBkLnNldFZhcigiU1RBR0lOR19LRVJORUxfRElSIiwgc291cmNlRGlyKQorICAgICAgICBkLnNldFZhcigiU1RBR0lOR19LRVJORUxfQlVJTERESVIiLCBhcnRpZmFjdHNEaXIpCiAKICAgICAjIE1lcmdlIEtFUk5FTF9JTUFHRVRZUEUgYW5kIEtFUk5FTF9BTFRfSU1BR0VUWVBFIGludG8gS0VSTkVMX0lNQUdFVFlQRVMKICAgICB0eXBlID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEUnKSBvciAiIgogICAgIGFsdHR5cGUgPSBkLmdldFZhcignS0VSTkVMX0FMVF9JTUFHRVRZUEUnKSBvciAiIgogICAgIHR5cGVzID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVTJykgb3IgIiIKKyAgICBrbmFtZSA9IGQuZ2V0VmFyKCdLRVJORUxfUEFDS0FHRV9OQU1FJykgb3IgImtlcm5lbCIKICAgICBpZiB0eXBlIG5vdCBpbiB0eXBlcy5zcGxpdCgpOgogICAgICAgICB0eXBlcyA9ICh0eXBlICsgJyAnICsgdHlwZXMpLnN0cmlwKCkKICAgICBpZiBhbHR0eXBlIG5vdCBpbiB0eXBlcy5zcGxpdCgpOgpAQCAtNTUsMTUgKzc5LDE1IEBACiAgICAgICAgIHR5cGVsb3dlciA9IHR5cGUubG93ZXIoKQogICAgICAgICBpbWFnZWRlc3QgPSBkLmdldFZhcignS0VSTkVMX0lNQUdFREVTVCcpCiAKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1BBQ0tBR0VTJywgJyAnICsgJ2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyKQorICAgICAgICBkLmFwcGVuZFZhcignUEFDS0FHRVMnLCAnICVzLWltYWdlLSVzJyAlIChrbmFtZSwgdHlwZWxvd2VyKSkKIAotICAgICAgICBkLnNldFZhcignRklMRVNfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsICcvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0nICsgJyAvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUpCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsga25hbWUgKyAnLWltYWdlLScgKyB0eXBlbG93ZXIsICcvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0nICsgJyAvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUpCiAKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTX2tlcm5lbC1pbWFnZScsICcgJyArICdrZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlcikKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXyVzLWltYWdlJyAlIGtuYW1lLCAnICVzLWltYWdlLSVzJyAlIChrbmFtZSwgdHlwZWxvd2VyKSkKIAotICAgICAgICBkLnNldFZhcignUEtHX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAna2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIgKyAnLSR7S0VSTkVMX1ZFUlNJT05fUEtHX05BTUV9JykKKyAgICAgICAgZC5zZXRWYXIoJ1BLR18lcy1pbWFnZS0lcycgJSAoa25hbWUsdHlwZWxvd2VyKSwgJyVzLWltYWdlLSVzLSR7S0VSTkVMX1ZFUlNJT05fUEtHX05BTUV9JyAlIChrbmFtZSwgdHlwZWxvd2VyKSkKIAotICAgICAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsICcxJykKKyAgICAgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyVzLWltYWdlLSVzJyAlIChrbmFtZSwgdHlwZWxvd2VyKSwgJzEnKQogCiAgICAgaW1hZ2UgPSBkLmdldFZhcignSU5JVFJBTUZTX0lNQUdFJykKICAgICBpZiBpbWFnZToKQEAgLTEyMSwxMiArMTQ1LDEzIEBACiAKIGluaGVyaXQga2VybmVsLWFyY2ggZGVwbG95CiAKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5rZXJuZWwtbW9kdWxlLS4qIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmtlcm5lbC1pbWFnZS0uKiIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5rZXJuZWwtZmlybXdhcmUtLioiCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1tb2R1bGUtLioiCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZS0uKiIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWZpcm13YXJlLS4qIgogCiBleHBvcnQgT1MgPSAiJHtUQVJHRVRfT1N9IgogZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBLQlVJTERfQlVJTERfVkVSU0lPTiA9ICIxIgogZXhwb3J0IEtCVUlMRF9CVUlMRF9VU0VSID0gIm9lLXVzZXIiCiBleHBvcnQgS0JVSUxEX0JVSUxEX0hPU1QgPSAib2UtaG9zdCIKIApAQCAtMjA3LDcgKzIzMiw3IEBACiAJCWNvcHlfaW5pdHJhbWZzCiAJCSMgQmFja2luZyB1cCBrZXJuZWwgaW1hZ2UgcmVsaWVzIG9uIGl0cyB0eXBlKHJlZ3VsYXIgZmlsZSBvciBzeW1ib2xpYyBsaW5rKQogCQl0bXBfcGF0aD0iIgotCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX0gOyBkbwogCQkJaWYgWyAtaCAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZSBdIDsgdGhlbgogCQkJCWxpbmtwYXRoPWByZWFkbGluayAtbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZWAKIAkJCQlyZWFscGF0aD1gcmVhZGxpbmsgLWZuICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlYApAQCAtMjU1LDcgKzI4MCw3IEBACiAKIGtlcm5lbF9kb19jb21waWxlKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTIE1BQ0hJTkUKLQlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJaWYgWyAiJHtCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVN9IiA9ICIxIiBdOyB0aGVuCiAJCSMga2VybmVsIHNvdXJjZXMgZG8gbm90IHVzZSBkb191bnBhY2ssIHNvIFNPVVJDRV9EQVRFX0VQT0NIIG1heSBub3QKIAkJIyBiZSBzZXQuLi4uCiAJCWlmIFsgIiRTT1VSQ0VfREFURV9FUE9DSCIgPSAiMCIgXTsgdGhlbgpAQCAtMzM5LDcgKzM2NCw5IEBACiAJaW5zdGFsbCAtZCAke0R9L2Jvb3QKIAlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCiAJCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059Ci0JCWxuIC1zZiAke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9CisJCWlmIFsgIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0iID0gImtlcm5lbCIgXTsgdGhlbgorCQkJbG4gLXNmICR7dHlwZX0tJHtLRVJORUxfVkVSU0lPTn0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7dHlwZX0KKwkJZmkKIAlkb25lCiAJaW5zdGFsbCAtbSAwNjQ0IFN5c3RlbS5tYXAgJHtEfS9ib290L1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KIAlpbnN0YWxsIC1tIDA2NDQgLmNvbmZpZyAke0R9L2Jvb3QvY29uZmlnLSR7S0VSTkVMX1ZFUlNJT059CkBAIC0zOTMsMTMgKzQyMCwxNCBAQAogCiBlbWl0X2RlcG1vZF9wa2dkYXRhKCkgewogCSMgU3Rhc2ggZGF0YSBmb3IgZGVwbW9kCi0JaW5zdGFsbCAtZCAke1BLR0RFU1RXT1JLfS9rZXJuZWwtZGVwbW9kLwotCWVjaG8gIiR7S0VSTkVMX1ZFUlNJT059IiA+ICR7UEtHREVTVFdPUkt9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24KLQljcCAke0J9L1N5c3RlbS5tYXAgJHtQS0dERVNUV09SS30va2VybmVsLWRlcG1vZC9TeXN0ZW0ubWFwLSR7S0VSTkVMX1ZFUlNJT059CisJaW5zdGFsbCAtZCAke1BLR0RFU1RXT1JLfS8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWRlcG1vZC8KKwllY2hvICIke0tFUk5FTF9WRVJTSU9OfSIgPiAke1BLR0RFU1RXT1JLfS8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWRlcG1vZC8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWFiaXZlcnNpb24KKwljcCAke0J9L1N5c3RlbS5tYXAgJHtQS0dERVNUV09SS30vJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXBtb2QvU3lzdGVtLm1hcC0ke0tFUk5FTF9WRVJTSU9OfQogfQogCiBQQUNLQUdFRlVOQ1MgKz0gImVtaXRfZGVwbW9kX3BrZ2RhdGEiCiAKK2RvX3NoYXJlZF93b3JrZGlyW2NsZWFuZGlyc10gKz0gIiAke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfSIKIGRvX3NoYXJlZF93b3JrZGlyICgpIHsKIAljZCAke0J9CiAKQEAgLTQxMCw3ICs0MzgsNyBAQAogCSMgU3RvcmUgdGhlIGtlcm5lbCB2ZXJzaW9uIGluIHN5c3Jvb3RzIGZvciBtb2R1bGUtYmFzZS5iYmNsYXNzCiAJIwogCi0JZWNobyAiJHtLRVJORUxfVkVSU0lPTn0iID4gJGtlcm5lbGRpci9rZXJuZWwtYWJpdmVyc2lvbgorCWVjaG8gIiR7S0VSTkVMX1ZFUlNJT059IiA+ICRrZXJuZWxkaXIvJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1hYml2ZXJzaW9uCiAKIAkjIENvcHkgZmlsZXMgcmVxdWlyZWQgZm9yIG1vZHVsZSBidWlsZHMKIAljcCBTeXN0ZW0ubWFwICRrZXJuZWxkaXIvU3lzdGVtLm1hcC0ke0tFUk5FTF9WRVJTSU9OfQpAQCAtNDM5LDggKzQ2NywxMCBAQAogCSMgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyB3aGljaCBpcyBwcmVzZW50IGluCiAJIyBLQlVJTERfTERGTEFHU19NT0RVTEUsIG1ha2luZyBpdCByZXF1aXJlZCB0byBidWlsZCBleHRlcm5hbCBtb2R1bGVzLgogCWlmIFsgJHtBUkNIfSA9ICJwb3dlcnBjIiBdOyB0aGVuCi0JCW1rZGlyIC1wICRrZXJuZWxkaXIvYXJjaC9wb3dlcnBjL2xpYi8KLQkJY3AgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8KKwkJaWYgWyAtZSBhcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vIF07IHRoZW4KKwkJCW1rZGlyIC1wICRrZXJuZWxkaXIvYXJjaC9wb3dlcnBjL2xpYi8KKwkJCWNwIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCisJCWZpCiAJZmkKIAogCWlmIFsgLWQgaW5jbHVkZS9nZW5lcmF0ZWQgXTsgdGhlbgpAQCAtNDU5LDcgKzQ4OSw3IEBACiAJOgogfQogCi1LRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IE89JHtCfSBvbGRub2NvbmZpZyB8fCB5ZXMgJycgfCBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9IG9sZGNvbmZpZyIKK0tFUk5FTF9DT05GSUdfQ09NTUFORCA/PSAib2VfcnVubWFrZV9jYWxsIC1DICR7U30gTz0ke0J9IG9sZG5vY29uZmlnIgogCiBweXRob24gY2hlY2tfb2xkZXN0X2tlcm5lbCgpIHsKICAgICBvbGRlc3Rfa2VybmVsID0gZC5nZXRWYXIoJ09MREVTVF9LRVJORUwnKQpAQCAtNTA0LDMyICs1MzQsMzQgQEAKIAogaW5oZXJpdCBjbWwxCiAKK0tDT05GSUdfQ09ORklHX0NPTU1BTkRfYXBwZW5kID0gIiBIT1NUTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCisKIEVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsIGRvX2NvbmZpZ3VyZQogCiAjIGtlcm5lbC1iYXNlIGJlY29tZXMga2VybmVsLSR7S0VSTkVMX1ZFUlNJT059CiAjIGtlcm5lbC1pbWFnZSBiZWNvbWVzIGtlcm5lbC1pbWFnZS0ke0tFUk5FTF9WRVJTSU9OfQotUEFDS0FHRVMgPSAia2VybmVsIGtlcm5lbC1iYXNlIGtlcm5lbC12bWxpbnV4IGtlcm5lbC1pbWFnZSBrZXJuZWwtZGV2IGtlcm5lbC1tb2R1bGVzIgorUEFDS0FHRVMgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfSAke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgJHtLRVJORUxfUEFDS0FHRV9OQU1FfS12bWxpbnV4ICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXYgJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1tb2R1bGVzIgogRklMRVNfJHtQTn0gPSAiIgotRklMRVNfa2VybmVsLWJhc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L21vZHVsZXMub3JkZXIgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L21vZHVsZXMuYnVpbHRpbiIKLUZJTEVTX2tlcm5lbC1pbWFnZSA9ICIiCi1GSUxFU19rZXJuZWwtZGV2ID0gIi9ib290L1N5c3RlbS5tYXAqIC9ib290L01vZHVsZS5zeW12ZXJzKiAvYm9vdC9jb25maWcqICR7S0VSTkVMX1NSQ19QQVRIfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQiCi1GSUxFU19rZXJuZWwtdm1saW51eCA9ICIvYm9vdC92bWxpbnV4LSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0iCi1GSUxFU19rZXJuZWwtbW9kdWxlcyA9ICIiCi1SREVQRU5EU19rZXJuZWwgPSAia2VybmVsLWJhc2UiCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L21vZHVsZXMub3JkZXIgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L21vZHVsZXMuYnVpbHRpbiIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgPSAiIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXYgPSAiL2Jvb3QvU3lzdGVtLm1hcCogL2Jvb3QvTW9kdWxlLnN5bXZlcnMqIC9ib290L2NvbmZpZyogJHtLRVJORUxfU1JDX1BBVEh9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZCIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tdm1saW51eCA9ICIvYm9vdC92bWxpbnV4LSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0iCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LW1vZHVsZXMgPSAiIgorUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UiCiAjIEFsbG93IG1hY2hpbmVzIHRvIG92ZXJyaWRlIHRoaXMgZGVwZW5kZW5jeSBpZiBrZXJuZWwgaW1hZ2UgZmlsZXMgYXJlCiAjIG5vdCB3YW50ZWQgaW4gaW1hZ2VzIGFzIHN0YW5kYXJkCi1SREVQRU5EU19rZXJuZWwtYmFzZSA/PSAia2VybmVsLWltYWdlIgotUEtHX2tlcm5lbC1pbWFnZSA9ICJrZXJuZWwtaW1hZ2UtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgotUkRFUEVORFNfa2VybmVsLWltYWdlICs9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdLRVJORUxfSU1BR0VUWVBFJywgJ3ZtbGludXgnLCAna2VybmVsLXZtbGludXgnLCAnJywgZCl9IgotUEtHX2tlcm5lbC1iYXNlID0gImtlcm5lbC0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCi1SUFJPVklERVNfa2VybmVsLWJhc2UgKz0gImtlcm5lbC0ke0tFUk5FTF9WRVJTSU9OfSIKLUFMTE9XX0VNUFRZX2tlcm5lbCA9ICIxIgotQUxMT1dfRU1QVFlfa2VybmVsLWJhc2UgPSAiMSIKLUFMTE9XX0VNUFRZX2tlcm5lbC1pbWFnZSA9ICIxIgotQUxMT1dfRU1QVFlfa2VybmVsLW1vZHVsZXMgPSAiMSIKLURFU0NSSVBUSU9OX2tlcm5lbC1tb2R1bGVzID0gIktlcm5lbCBtb2R1bGVzIG1ldGEgcGFja2FnZSIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA/PSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgorUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSArPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0tFUk5FTF9JTUFHRVRZUEUnLCAndm1saW51eCcsICcke0tFUk5FTF9QQUNLQUdFX05BTUV9LXZtbGludXgnLCAnJywgZCl9IgorUEtHXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1JQUk9WSURFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgKz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtLRVJORUxfVkVSU0lPTn0iCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9ID0gIjEiCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiMSIKK0FMTE9XX0VNUFRZXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgPSAiMSIKK0FMTE9XX0VNUFRZXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlcyA9ICIxIgorREVTQ1JJUFRJT05fJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1tb2R1bGVzID0gIktlcm5lbCBtb2R1bGVzIG1ldGEgcGFja2FnZSIKIAotcGtnX3Bvc3RpbnN0X2tlcm5lbC1iYXNlICgpIHsKK3BrZ19wb3N0aW5zdF8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgKCkgewogCWlmIFsgISAtZSAiJEQvbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0iIF07IHRoZW4KIAkJbWtkaXIgLXAgJEQvbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0KIAlmaQpAQCAtNTQzLDcgKzU3NSw3IEBACiBQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X2tlcm5lbF9wYWNrYWdlcyAiCiAKIHB5dGhvbiBzcGxpdF9rZXJuZWxfcGFja2FnZXMgKCkgewotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHJvb3Q9JyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUnLCBmaWxlX3JlZ2V4PSdeKC4qKVwuKGJpbnxmd3xjaXN8Y3NwfGRzcCkkJywgb3V0cHV0X3BhdHRlcm49J2tlcm5lbC1maXJtd2FyZS0lcycsIGRlc2NyaXB0aW9uPSdGaXJtd2FyZSBmb3IgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCByb290PScke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlJywgZmlsZV9yZWdleD0nXiguKilcLihiaW58Znd8Y2lzfGNzcHxkc3ApJCcsIG91dHB1dF9wYXR0ZXJuPScke0tFUk5FTF9QQUNLQUdFX05BTUV9LWZpcm13YXJlLSVzJywgZGVzY3JpcHRpb249J0Zpcm13YXJlIGZvciAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQogfQogCiAjIE1hbnkgc2NyaXB0cyB3YW50IHRvIGxvb2sgaW4gYXJjaC8kYXJjaC9ib290IGZvciB0aGUgYm9vdGFibGUKQEAgLTYzNCwyMSArNjY2LDI3IEBACiBNT0RVTEVfVEFSQkFMTF9ERVBMT1kgPz0gIjEiCiAKIGtlcm5lbF9kb19kZXBsb3koKSB7CisJZGVwbG95RGlyPSIke0RFUExPWURJUn0iCisJaWYgWyAtbiAiJHtLRVJORUxfREVQTE9ZU1VCRElSfSIgXTsgdGhlbgorCQlkZXBsb3lEaXI9IiR7REVQTE9ZRElSfS8ke0tFUk5FTF9ERVBMT1lTVUJESVJ9IgorCQlta2RpciAiJGRlcGxveURpciIKKwlmaQorCiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQliYXNlX25hbWU9JHt0eXBlfS0ke0tFUk5FTF9JTUFHRV9CQVNFX05BTUV9Ci0JCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9ICR7REVQTE9ZRElSfS8ke2Jhc2VfbmFtZX0uYmluCisJCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9ICRkZXBsb3lEaXIvJHtiYXNlX25hbWV9LmJpbgogCWRvbmUKIAlpZiBbICR7TU9EVUxFX1RBUkJBTExfREVQTE9ZfSA9ICIxIiBdICYmIChncmVwIC1xIC1pIC1lICdeQ09ORklHX01PRFVMRVM9eSQnIC5jb25maWcpOyB0aGVuCiAJCW1rZGlyIC1wICR7RH0vbGliCi0JCXRhciAtY3Z6ZiAke0RFUExPWURJUn0vJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9IC1DICR7RH0gbGliCi0JCWxuIC1zZiAke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gJHtERVBMT1lESVJ9LyR7TU9EVUxFX1RBUkJBTExfU1lNTElOS19OQU1FfQorCQl0YXIgLWN2emYgJGRlcGxveURpci8ke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gLUMgJHtEfSBsaWIKKwkJbG4gLXNmICR7TU9EVUxFX1RBUkJBTExfQkFTRV9OQU1FfSAkZGVwbG95RGlyLyR7TU9EVUxFX1RBUkJBTExfU1lNTElOS19OQU1FfQogCWZpCiAKIAlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCiAJCWJhc2VfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KIAkJc3ltbGlua19uYW1lPSR7dHlwZX0tJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQlsbiAtc2YgJHtiYXNlX25hbWV9LmJpbiAke0RFUExPWURJUn0vJHtzeW1saW5rX25hbWV9LmJpbgotCQlsbiAtc2YgJHtiYXNlX25hbWV9LmJpbiAke0RFUExPWURJUn0vJHt0eXBlfQorCQlsbiAtc2YgJHtiYXNlX25hbWV9LmJpbiAkZGVwbG95RGlyLyR7c3ltbGlua19uYW1lfS5iaW4KKwkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3R5cGV9CiAJZG9uZQogCiAJY2QgJHtCfQpAQCAtNjU4LDggKzY5Niw4IEBACiAJCQllY2hvICJDb3B5aW5nIGRlcGxveSAke3R5cGV9IGtlcm5lbC1pbml0cmFtZnMgaW1hZ2UgYW5kIHNldHRpbmcgdXAgbGlua3MuLi4iCiAJCQlpbml0cmFtZnNfYmFzZV9uYW1lPSR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfQogCQkJaW5pdHJhbWZzX3N5bWxpbmtfbmFtZT0ke3R5cGV9LWluaXRyYW1mcy0ke01BQ0hJTkV9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMgJHtERVBMT1lESVJ9LyR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluCi0JCQlsbiAtc2YgJHtpbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4gJHtERVBMT1lESVJ9LyR7aW5pdHJhbWZzX3N5bWxpbmtfbmFtZX0uYmluCisJCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMgJGRlcGxveURpci8ke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgorCQkJbG4gLXNmICR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHtpbml0cmFtZnNfc3ltbGlua19uYW1lfS5iaW4KIAkJZmkKIAlkb25lCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcwppbmRleCA3MzlhZGNlLi4yZTdjZDI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKQEAgLTExMyw5ICsxMTMsOSBAQAogICAgICAgICBiYi5lcnJvcigiZGF0YWRpciBub3QgZGVmaW5lZCIpCiAgICAgICAgIHJldHVybgogCi0gICAgZ2NvbnZfbGliZGlyID0gYmFzZV9wYXRoX2pvaW4obGliZGlyLCAiZ2NvbnYiKQotICAgIGNoYXJtYXBfZGlyID0gYmFzZV9wYXRoX2pvaW4oZGF0YWRpciwgImkxOG4iLCAiY2hhcm1hcHMiKQotICAgIGxvY2FsZXNfZGlyID0gYmFzZV9wYXRoX2pvaW4oZGF0YWRpciwgImkxOG4iLCAibG9jYWxlcyIpCisgICAgZ2NvbnZfbGliZGlyID0gb2UucGF0aC5qb2luKGxpYmRpciwgImdjb252IikKKyAgICBjaGFybWFwX2RpciA9IG9lLnBhdGguam9pbihkYXRhZGlyLCAiaTE4biIsICJjaGFybWFwcyIpCisgICAgbG9jYWxlc19kaXIgPSBvZS5wYXRoLmpvaW4oZGF0YWRpciwgImkxOG4iLCAibG9jYWxlcyIpCiAgICAgYmluYXJ5X2xvY2FsZXNfZGlyID0gZC5nZXRWYXIoJ2xvY2FsZWRpcicpCiAKICAgICBkZWYgY2FsY19nY29udl9kZXBzKGZuLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBncm91cCk6CkBAIC0xODksNyArMTg5LDcgQEAKIAogICAgICMgUmVhZCBpbiBzdXBwb3J0ZWQgbG9jYWxlcyBhbmQgYXNzb2NpYXRlZCBlbmNvZGluZ3MKICAgICBzdXBwb3J0ZWQgPSB7fQotICAgIHdpdGggb3BlbihiYXNlX3BhdGhfam9pbihkLmdldFZhcignV09SS0RJUicpLCAiU1VQUE9SVEVEIikpIGFzIGY6CisgICAgd2l0aCBvcGVuKG9lLnBhdGguam9pbihkLmdldFZhcignV09SS0RJUicpLCAiU1VQUE9SVEVEIikpIGFzIGY6CiAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbG9jYWxlLCBjaGFyc2V0ID0gbGluZS5yc3RyaXAoKS5zcGxpdCgpCkBAIC0yMzEsMTIgKzIzMSwxMiBAQAogICAgIGNvbW1hbmRzID0ge30KIAogICAgIGRlZiBvdXRwdXRfbG9jYWxlX2JpbmFyeShuYW1lLCBwa2duYW1lLCBsb2NhbGUsIGVuY29kaW5nKToKLSAgICAgICAgdHJlZWRpciA9IGJhc2VfcGF0aF9qb2luKGQuZ2V0VmFyKCJXT1JLRElSIiksICJsb2NhbGUtdHJlZSIpCi0gICAgICAgIGxkbGliZGlyID0gYmFzZV9wYXRoX2pvaW4odHJlZWRpciwgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCisgICAgICAgIHRyZWVkaXIgPSBvZS5wYXRoLmpvaW4oZC5nZXRWYXIoIldPUktESVIiKSwgImxvY2FsZS10cmVlIikKKyAgICAgICAgbGRsaWJkaXIgPSBvZS5wYXRoLmpvaW4odHJlZWRpciwgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCiAgICAgICAgIHBhdGggPSBkLmdldFZhcigiUEFUSCIpCi0gICAgICAgIGkxOG5wYXRoID0gYmFzZV9wYXRoX2pvaW4odHJlZWRpciwgZGF0YWRpciwgImkxOG4iKQotICAgICAgICBnY29udnBhdGggPSBiYXNlX3BhdGhfam9pbih0cmVlZGlyLCAiaWNvbnZkYXRhIikKLSAgICAgICAgb3V0cHV0cGF0aCA9IGJhc2VfcGF0aF9qb2luKHRyZWVkaXIsIGJpbmFyeV9sb2NhbGVzX2RpcikKKyAgICAgICAgaTE4bnBhdGggPSBvZS5wYXRoLmpvaW4odHJlZWRpciwgZGF0YWRpciwgImkxOG4iKQorICAgICAgICBnY29udnBhdGggPSBvZS5wYXRoLmpvaW4odHJlZWRpciwgImljb252ZGF0YSIpCisgICAgICAgIG91dHB1dHBhdGggPSBvZS5wYXRoLmpvaW4odHJlZWRpciwgYmluYXJ5X2xvY2FsZXNfZGlyKQogCiAgICAgICAgIHVzZV9jcm9zc19sb2NhbGVkZWYgPSBkLmdldFZhcigiTE9DQUxFX0dFTkVSQVRJT05fV0lUSF9DUk9TUy1MT0NBTEVERUYiKSBvciAiMCIKICAgICAgICAgaWYgdXNlX2Nyb3NzX2xvY2FsZWRlZiA9PSAiMSI6CkBAIC0zNDQsNyArMzQ0LDcgQEAKICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXyVzJyAlIG1ldGFwa2csICcgJyArIHBrZykKIAogICAgIGlmIHVzZV9iaW4gPT0gImNvbXBpbGUiOgotICAgICAgICBtYWtlZmlsZSA9IGJhc2VfcGF0aF9qb2luKGQuZ2V0VmFyKCJXT1JLRElSIiksICJsb2NhbGUtdHJlZSIsICJNYWtlZmlsZSIpCisgICAgICAgIG1ha2VmaWxlID0gb2UucGF0aC5qb2luKGQuZ2V0VmFyKCJXT1JLRElSIiksICJsb2NhbGUtdHJlZSIsICJNYWtlZmlsZSIpCiAgICAgICAgIG0gPSBvcGVuKG1ha2VmaWxlLCAidyIpCiAgICAgICAgIG0ud3JpdGUoImFsbDogJXNcblxuIiAlICIgIi5qb2luKGNvbW1hbmRzLmtleXMoKSkpCiAgICAgICAgIGZvciBjbWQgaW4gY29tbWFuZHM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCmluZGV4IGQzNTMxMTAuLjA2ZGQ0YTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCkBAIC0yMjYsOSArMjI2LDcgQEAKICAgICAjIFRoZSBtYW5pZmVzdCBmaWxlIG5hbWUgY29udGFpbnMgdGhlIGFyY2guIEJlY2F1c2Ugd2UgYXJlIG5vdCBydW5uaW5nCiAgICAgIyBpbiB0aGUgcmVjaXBlIGNvbnRleHQgaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGV2ZXJ5IGFyY2ggdXNlZC4KICAgICBzc3RhdGVfbWFuaWZlc3RfZGlyID0gZC5nZXRWYXIoIlNTVEFURV9NQU5JRkVTVFMiKQotICAgIHNzdGF0ZV9hcmNocyA9IGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKQotICAgIGV4dHJhX2FyY2hzID0gZC5nZXRWYXIoIlBBQ0tBR0VfRVhUUkFfQVJDSFMiKQotICAgIGFyY2hzID0gbGlzdChzZXQoKCIlcyAlcyIgJSAoc3N0YXRlX2FyY2hzLCBleHRyYV9hcmNocykpLnNwbGl0KCkpKQorICAgIGFyY2hzID0gbGlzdChzZXQoZC5nZXRWYXIoIlNTVEFURV9BUkNIUyIpLnNwbGl0KCkpKQogICAgIGZvciBkZXAgaW4gZGVwZW5kczoKICAgICAgICAgIyBTb21lIHJlY2lwZXMgaGF2ZSBhbiBhcmNoIG9uIHRoZWlyIG93biwgc28gd2UgdHJ5IHRoYXQgZmlyc3QuCiAgICAgICAgIHNwZWNpYWxfYXJjaCA9IGQuZ2V0VmFyKCJQQUNLQUdFX0FSQ0hfcG4tJXMiICUgZGVwKQpAQCAtMzM2LDcgKzMzNCw3IEBACiAgICAgZmlsZXMgPSBkLmdldFZhcignTElDRU5TRV9GSUxFU19ESVJFQ1RPUlknKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKICAgICBwbl9saWMgPSAiJXMlcyIgJSAocG4sIGQuZ2V0VmFyKCdMSUNFTlNFX1BBQ0tBR0VfU1VGRklYJywgRmFsc2UpKQotICAgIGlmIHBuX2xpYyBpbiBwYWNrYWdlczoKKyAgICBpZiBwbl9saWMgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgYmIud2FybigiJXMgcGFja2FnZSBhbHJlYWR5IGV4aXN0ZWQgaW4gJXMuIiAlIChwbl9saWMsIHBuKSkKICAgICBlbHNlOgogICAgICAgICAjIGZpcnN0IGluIFBBQ0tBR0VTIHRvIGJlIHN1cmUgdGhhdCBub3RoaW5nIGVsc2UgZ2V0cyBMSUNFTlNFX0ZJTEVTX0RJUkVDVE9SWQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCmluZGV4IGUxZDhiMTguLjY4MTA1ZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKQEAgLTMyLDE5ICszMiwxNiBAQAogaW5oZXJpdCAke0VGSV9DTEFTU30KIGluaGVyaXQgJHtQQ0JJT1NfQ0xBU1N9CiAKLUtFUk5FTF9JTUFHRVRZUEUgPz89ICJiekltYWdlIgotVk1fREVGQVVMVF9LRVJORUwgPz89ICIke0tFUk5FTF9JTUFHRVRZUEV9IgotCiBwb3B1bGF0ZV9rZXJuZWwoKSB7CiAJZGVzdD0kMQogCWluc3RhbGwgLWQgJGRlc3QKIAogCSMgSW5zdGFsbCBiekltYWdlLCBpbml0cmQsIGFuZCByb290ZnMuaW1nIGluIERFU1QgZm9yIGFsbCBsb2FkZXJzIHRvIHVzZS4KLQliYm5vdGUgIlRyeWluZyB0byBpbnN0YWxsICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtWTV9ERUZBVUxUX0tFUk5FTH0gYXMgJGRlc3Qvdm1saW51eiIKLQlpZiBbIC1lICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtWTV9ERUZBVUxUX0tFUk5FTH0gXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS8ke1ZNX0RFRkFVTFRfS0VSTkVMfSAkZGVzdC92bWxpbnV6CisJYmJub3RlICJUcnlpbmcgdG8gaW5zdGFsbCAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gYXMgJGRlc3QvJHtLRVJORUxfSU1BR0VUWVBFfSIKKwlpZiBbIC1lICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gJGRlc3QvJHtLRVJORUxfSU1BR0VUWVBFfQogCWVsc2UKLQkJYmJ3YXJuICIke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IGRvZXNuJ3QgZXhpc3QiCisJCWJid2FybiAiJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9IGRvZXNuJ3QgZXhpc3QiCiAJZmkKIAogCSMgaW5pdHJkIGlzIG1hZGUgb2YgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZSBmaWxlc3lzdGVtIGltYWdlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xvZ2dpbmcuYmJjbGFzcwppbmRleCAwNmM3YzMxLi5hMGM5NGU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xvZ2dpbmcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xvZ2dpbmcuYmJjbGFzcwpAQCAtODYsNyArODYsNyBAQAogCQogCSMgU3RyaXAgb2ZmIHRoZSBkZWJ1ZyBsZXZlbCBhbmQgZW5zdXJlIGl0IGlzIGFuIGludGVnZXIKIAlEQkdMVkw9JDE7IHNoaWZ0Ci0JTk9ORElHSVRTPSQoZWNobyAiJERCR0xWTCIgfCB0ciAtZCBbOmRpZ2l0Ol0pCisJTk9ORElHSVRTPSQoZWNobyAiJERCR0xWTCIgfCB0ciAtZCAiWzpkaWdpdDpdIikKIAlpZiBbICIkTk9ORElHSVRTIiBdOyB0aGVuCiAJCWJiZmF0YWwgIiRVU0FHRSIKIAlmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkN2VlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKQEAgLTAsMCArMSwxMzAgQEAKK2luaGVyaXQgcHl0aG9uM25hdGl2ZQorCitERVBFTkRTX2FwcGVuZCA9ICIgbWVzb24tbmF0aXZlIG5pbmphLW5hdGl2ZSIKKworIyBBcyBNZXNvbiBlbmZvcmNlcyBvdXQtb2YtdHJlZSBidWlsZHMgd2UgY2FuIGp1c3QgdXNlIGNsZWFuZGlycworQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworIyBXaGVyZSB0aGUgbWVzb24uYnVpbGQgYnVpbGQgY29uZmlndXJhdGlvbiBpcworTUVTT05fU09VUkNFUEFUSCA9ICIke1N9IgorCitkZWYgbm9wcmVmaXgodmFyLCBkKToKKyAgICByZXR1cm4gZC5nZXRWYXIodmFyKS5yZXBsYWNlKGQuZ2V0VmFyKCdwcmVmaXgnKSArICcvJywgJycsIDEpCisKK01FU09OT1BUUyA9ICIgLS1wcmVmaXggJHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgLS1idWlsZHR5cGUgcGxhaW4gXAorICAgICAgICAgICAgICAtLWJpbmRpciAke0Bub3ByZWZpeCgnYmluZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1zYmluZGlyICR7QG5vcHJlZml4KCdzYmluZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1kYXRhZGlyICR7QG5vcHJlZml4KCdkYXRhZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1saWJkaXIgJHtAbm9wcmVmaXgoJ2xpYmRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tbGliZXhlY2RpciAke0Bub3ByZWZpeCgnbGliZXhlY2RpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0taW5jbHVkZWRpciAke0Bub3ByZWZpeCgnaW5jbHVkZWRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tbWFuZGlyICR7QG5vcHJlZml4KCdtYW5kaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSIKKworTUVTT05fVE9PTENIQUlOX0FSR1MgPSAiJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iCitNRVNPTl9DX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtDRkxBR1N9IgorTUVTT05fQ1BQX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtDWFhGTEFHU30iCitNRVNPTl9MSU5LX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtMREZMQUdTfSIKKworIyBib3RoIGFyZSByZXF1aXJlZCBidXQgbm90IHVzZWQgYnkgbWVzb24KK01FU09OX0hPU1RfRU5ESUFOID0gImJvZ3VzLWVuZGlhbiIKK01FU09OX1RBUkdFVF9FTkRJQU4gPSAiYm9ndXMtZW5kaWFuIgorCitFWFRSQV9PRU1FU09OICs9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgorCitNRVNPTl9DUk9TU19GSUxFID0gIiIKK01FU09OX0NST1NTX0ZJTEVfY2xhc3MtdGFyZ2V0ID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgorTUVTT05fQ1JPU1NfRklMRV9jbGFzcy1uYXRpdmVzZGsgPSAiLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24uY3Jvc3MiCisKK2RlZiBtZXNvbl9hcnJheSh2YXIsIGQpOgorICAgIHJldHVybiAiJywgJyIuam9pbihkLmdldFZhcih2YXIpLnNwbGl0KCkpLmpvaW4oKCInIiwgIiciKSkKKworYWRkdGFzayB3cml0ZV9jb25maWcgYmVmb3JlIGRvX2NvbmZpZ3VyZQorZG9fd3JpdGVfY29uZmlnW3ZhcmRlcHNdICs9ICJNRVNPTl9DX0FSR1MgTUVTT05fQ1BQX0FSR1MgTUVTT05fTElOS19BUkdTIENDIENYWCBMRCBBUiBOTSBTVFJJUCBSRUFERUxGIgorZG9fd3JpdGVfY29uZmlnKCkgeworICAgICMgVGhpcyBuZWVkcyB0byBiZSBQeSB0byBzcGxpdCB0aGUgYXJncyBpbnRvIHNpbmdsZS1lbGVtZW50IGxpc3RzCisgICAgY2F0ID4ke1dPUktESVJ9L21lc29uLmNyb3NzIDw8RU9GCitbYmluYXJpZXNdCitjID0gWyR7QG1lc29uX2FycmF5KCdDQycsIGQpfV0KK2NwcCA9IFske0BtZXNvbl9hcnJheSgnQ1hYJywgZCl9XQorYXIgPSBbJHtAbWVzb25fYXJyYXkoJ0FSJywgZCl9XQorbm0gPSBbJHtAbWVzb25fYXJyYXkoJ05NJywgZCl9XQorbGQgPSBbJHtAbWVzb25fYXJyYXkoJ0xEJywgZCl9XQorc3RyaXAgPSBbJHtAbWVzb25fYXJyYXkoJ1NUUklQJywgZCl9XQorcmVhZGVsZiA9IFske0BtZXNvbl9hcnJheSgnUkVBREVMRicsIGQpfV0KK3BrZ2NvbmZpZyA9ICdwa2ctY29uZmlnJworCitbcHJvcGVydGllc10KK25lZWRzX2V4ZV93cmFwcGVyID0gdHJ1ZQorY19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DX0FSR1MnLCBkKX1dCitjX2xpbmtfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fTElOS19BUkdTJywgZCl9XQorY3BwX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0NQUF9BUkdTJywgZCl9XQorY3BwX2xpbmtfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fTElOS19BUkdTJywgZCl9XQorZ3RrZG9jX2V4ZV93cmFwcGVyID0gJyR7Qn0vZ3RrZG9jLXFlbXV3cmFwcGVyJworCitbaG9zdF9tYWNoaW5lXQorc3lzdGVtID0gJyR7SE9TVF9PU30nCitjcHVfZmFtaWx5ID0gJyR7SE9TVF9BUkNIfScKK2NwdSA9ICcke0hPU1RfQVJDSH0nCitlbmRpYW4gPSAnJHtNRVNPTl9IT1NUX0VORElBTn0nCisKK1t0YXJnZXRfbWFjaGluZV0KK3N5c3RlbSA9ICcke1RBUkdFVF9PU30nCitjcHVfZmFtaWx5ID0gJyR7VEFSR0VUX0FSQ0h9JworY3B1ID0gJyR7VEFSR0VUX0FSQ0h9JworZW5kaWFuID0gJyR7TUVTT05fVEFSR0VUX0VORElBTn0nCitFT0YKK30KKworQ09ORklHVVJFX0ZJTEVTID0gIm1lc29uLmJ1aWxkIgorCittZXNvbl9kb19jb25maWd1cmUoKSB7CisgICAgaWYgISBtZXNvbiAke01FU09OT1BUU30gIiR7TUVTT05fU09VUkNFUEFUSH0iICIke0J9IiAke01FU09OX0NST1NTX0ZJTEV9ICR7RVhUUkFfT0VNRVNPTn07IHRoZW4KKyAgICAgICAgY2F0ICR7Qn0vbWVzb24tbG9ncy9tZXNvbi1sb2cudHh0CisgICAgICAgIGJiZmF0YWxfbG9nIG1lc29uIGZhaWxlZAorICAgIGZpCit9CisKK21lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIFNldCB0aGVzZSBzbyB0aGF0IG1lc29uIHVzZXMgdGhlIG5hdGl2ZSB0b29scyBmb3IgaXRzIGJ1aWxkIHNhbml0eSB0ZXN0cywKKyAgICAjIHdoaWNoIHJlcXVpcmUgZXhlY3V0YWJsZXMgdG8gYmUgcnVubmFibGUuIFRoZSBjcm9zcyBmaWxlIHdpbGwgc3RpbGwKKyAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgdGFyZ2V0IGJ1aWxkLiBOb3RlIHRoYXQgd2UgZG8gKm5vdCogc2V0IENGTEFHUywKKyAgICAjIExERkxBR1MsIGV0Yy4gYXMgdGhleSB3aWxsIGJlIHNsdXJwZWQgaW4gYnkgbWVzb24gYW5kIGFwcGxpZWQgdG8gdGhlCisgICAgIyB0YXJnZXQgYnVpbGQsIGNhdXNpbmcgZXJyb3JzLgorICAgIGV4cG9ydCBDQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IENYWD0iJHtCVUlMRF9DWFh9IgorICAgIGV4cG9ydCBMRD0iJHtCVUlMRF9MRH0iCisgICAgZXhwb3J0IEFSPSIke0JVSUxEX0FSfSIKK30KKworbWVzb25fZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICMgU2V0IHRoZXNlIHNvIHRoYXQgbWVzb24gdXNlcyB0aGUgbmF0aXZlIHRvb2xzIGZvciBpdHMgYnVpbGQgc2FuaXR5IHRlc3RzLAorICAgICMgd2hpY2ggcmVxdWlyZSBleGVjdXRhYmxlcyB0byBiZSBydW5uYWJsZS4gVGhlIGNyb3NzIGZpbGUgd2lsbCBzdGlsbAorICAgICMgb3ZlcnJpZGUgdGhlc2UgZm9yIHRoZSBuYXRpdmVzZGsgYnVpbGQuIE5vdGUgdGhhdCB3ZSBkbyAqbm90KiBzZXQgQ0ZMQUdTLAorICAgICMgTERGTEFHUywgZXRjLiBhcyB0aGV5IHdpbGwgYmUgc2x1cnBlZCBpbiBieSBtZXNvbiBhbmQgYXBwbGllZCB0byB0aGUKKyAgICAjIG5hdGl2ZXNkayBidWlsZCwgY2F1c2luZyBlcnJvcnMuCisgICAgZXhwb3J0IENDPSIke0JVSUxEX0NDfSIKKyAgICBleHBvcnQgQ1hYPSIke0JVSUxEX0NYWH0iCisgICAgZXhwb3J0IExEPSIke0JVSUxEX0xEfSIKKyAgICBleHBvcnQgQVI9IiR7QlVJTERfQVJ9IgorfQorCittZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IFBLR19DT05GSUc9InBrZy1jb25maWctbmF0aXZlIgorfQorCitkb19jb21waWxlW3Byb2dyZXNzXSA9ICJvdXRvZjpeXFsoXGQrKS8oXGQrKVxdXHMrIgorbWVzb25fZG9fY29tcGlsZSgpIHsKKyAgICBuaW5qYSAke1BBUkFMTEVMX01BS0V9Cit9CisKK21lc29uX2RvX2luc3RhbGwoKSB7CisgICAgREVTVERJUj0nJHtEfScgbmluamEgJHtQQVJBTExFTF9NQUtFSU5TVH0gaW5zdGFsbAorfQorCitFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKaW5kZXggNzY2ZjFjYi4uYjMzMWFmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKQEAgLTY3LDcgKzY3LDcgQEAKICMgd2hlcmUgZ2l0IG5hdGl2ZSBwcm90b2NvbCBmZXRjaGVzIG1heSBmYWlsIGR1ZSB0byBsb2NhbCBmaXJld2FsbCBydWxlcywgZXRjLgogCiBNSVJST1JTICs9ICJcCi1naXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvLiogICBnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvZ2l0L1BBVEg7cHJvdG9jb2w9aHR0cHMgXG4gXAorZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy8uKiAgICAgZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKIGdpdDovL2dpdC5nbm9tZS5vcmcvLiogICAgICAgIGdpdDovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL1BBVEg7cHJvdG9jb2w9aHR0cHMgXG4gXAogZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvLiogZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0L1BBVEg7cHJvdG9jb2w9aHR0cHMgXG4gXAogZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvLiogZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L1BBVEg7cHJvdG9jb2w9aHR0cHMgXG4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUtYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUtYmFzZS5iYmNsYXNzCmluZGV4IDZmZTc3YzAuLjI3YmQ2OWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLWJhc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS1iYXNlLmJiY2xhc3MKQEAgLTEsNyArMSw4IEBACiBpbmhlcml0IGtlcm5lbC1hcmNoCiAKLSMgVGhpcyBpcyBpbnN0ZWFkIG9mIERFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCi1kb19jb25maWd1cmVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlcyIKKyMgV2UgZG8gdGhlIGRlcGVuZGVuY3kgdGhpcyB3YXkgYmVjYXVzZSB0aGUgb3V0cHV0IGlzIG5vdCBwcmVzZXJ2ZWQKKyMgaW4gc3N0YXRlLCBzbyB3ZSBtdXN0IGZvcmNlIGRvX2NvbXBpbGUgdG8gcnVuIChvbmNlKS4KK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAibWFrZS1tb2Qtc2NyaXB0czpkb19jb21waWxlIgogCiBleHBvcnQgT1MgPSAiJHtUQVJHRVRfT1N9IgogZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKQEAgLTEyLDE2ICsxMyw5IEBACiAjIHdlIGRpZG4ndCBwaWNrIHRoZSBuYW1lLgogZXhwb3J0IEtCVUlMRF9PVVRQVVQgPSAiJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0iCiAKLWV4cG9ydCBLRVJORUxfVkVSU0lPTiA9ICIke0BiYXNlX3JlYWRfZmlsZSgnJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0va2VybmVsLWFiaXZlcnNpb24nKX0iCitleHBvcnQgS0VSTkVMX1ZFUlNJT04gPSAiJHtAb2UudXRpbHMucmVhZF9maWxlKCcke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfS9rZXJuZWwtYWJpdmVyc2lvbicpfSIKIEtFUk5FTF9PQkpFQ1RfU1VGRklYID0gIi5rbyIKIAogIyBrZXJuZWwgbW9kdWxlcyBhcmUgZ2VuZXJhbGx5IG1hY2hpbmUgc3BlY2lmaWMKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKLSMgRnVuY3Rpb24gdG8gZW5zdXJlIHRoZSBrZXJuZWwgc2NyaXB0cyBhcmUgY3JlYXRlZC4gRXhwZWN0ZWQgdG8KLSMgYmUgY2FsbGVkIGJlZm9yZSBkb19jb21waWxlLiBTZWUgbW9kdWxlLmJiY2xhc3MgZm9yIGFuIGV4YW1wbGUuCi1kb19tYWtlX3NjcmlwdHMoKSB7Ci0JdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MgCi0JbWFrZSBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBBUj0iJHtLRVJORUxfQVJ9IiBcCi0JICAgICAgICAgICAtQyAke1NUQUdJTkdfS0VSTkVMX0RJUn0gTz0ke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfSBzY3JpcHRzCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcwppbmRleCA3OGQxYjIxLi5lMzQ0OTYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKQEAgLTEsOSArMSw1IEBACiBpbmhlcml0IG1vZHVsZS1iYXNlIGtlcm5lbC1tb2R1bGUtc3BsaXQgcGtnY29uZmlnCiAKLWFkZHRhc2sgbWFrZV9zY3JpcHRzIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QgYmVmb3JlIGRvX2NvbmZpZ3VyZQotZG9fbWFrZV9zY3JpcHRzW2xvY2tmaWxlc10gPSAiJHtUTVBESVJ9L2tlcm5lbC1zY3JpcHRzLmxvY2siCi1kb19tYWtlX3NjcmlwdHNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgotCiBFWFRSQV9PRU1BS0UgKz0gIktFUk5FTF9TUkM9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgogCiBNT0RVTEVTX0lOU1RBTExfVEFSR0VUID89ICJtb2R1bGVzX2luc3RhbGwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKaW5kZXggODE2ZjU0ZS4uNTE5YzFhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwpAQCAtMTEsOCArMTEsOCBAQAogICAgICMgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGtlcm5lbCBpbiBtdWx0aWxpYiBjb25maWdzCiAgICAgIyBXZSBhbHNvIHNraXAgbXVsdGlsaWIgc2V0dXAgZm9yIG1vZHVsZSBwYWNrYWdlcy4KICAgICBwcm92aWRlcyA9IChlLmRhdGEuZ2V0VmFyKCJQUk9WSURFUyIpIG9yICIiKS5zcGxpdCgpCi0gICAgaWYgInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcyBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdtb2R1bGUtYmFzZScsIGUuZGF0YSk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJXZSBzaG91bGRuJ3QgaGF2ZSBtdWx0aWxpYiB2YXJpYW50cyBmb3IgdGhlIGtlcm5lbCIpCisgICAgaWYgInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcyBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdtb2R1bGUtYmFzZScsIGUuZGF0YSkgb3IgIm1ha2UtbW9kLXNjcmlwdHMiIGluIGUuZGF0YS5nZXRWYXIoIlBOIik6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIHNob3VsZG4ndCBoYXZlIG11bHRpbGliIHZhcmlhbnRzIGZvciB0aGUga2VybmVsIikKIAogICAgIHNhdmVfdmFyX25hbWU9ZS5kYXRhLmdldFZhcigiTVVMVElMSUJfU0FWRV9WQVJOQU1FIikgb3IgIiIKICAgICBmb3IgbmFtZSBpbiBzYXZlX3Zhcl9uYW1lLnNwbGl0KCk6CkBAIC00MSwxMyArNDEsMTMgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBlLmRhdGEpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiV2UgY2FuJ3QgZXh0ZW5kIG5hdGl2ZSByZWNpcGVzIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiV2UgY2FuJ3QgZXh0ZW5kIG5hdGl2ZSByZWNpcGVzIikKIAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGUuZGF0YSkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3NzZGsnLCBlLmRhdGEpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiV2UgY2FuJ3QgZXh0ZW5kIG5hdGl2ZXNkayByZWNpcGVzIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiV2UgY2FuJ3QgZXh0ZW5kIG5hdGl2ZXNkayByZWNpcGVzIikKIAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBlLmRhdGEpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZS5kYXRhKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIkRvbid0IGV4dGVuZCBhbGxhcmNoIHJlY2lwZXMgd2hpY2ggYXJlIG5vdCBwYWNrYWdlZ3JvdXBzIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiRG9uJ3QgZXh0ZW5kIGFsbGFyY2ggcmVjaXBlcyB3aGljaCBhcmUgbm90IHBhY2thZ2Vncm91cHMiKQogCiAKICAgICAjIEV4cGFuZCB0aGlzIHNpbmNlIHRoaXMgd29uJ3Qgd29yayBjb3JyZWN0bHkgb25jZSB3ZSBzZXQgYSBtdWx0aWxpYiBpbnRvIHBsYWNlCkBAIC03Niw3ICs3Niw2IEBACiAgICAgbmV3dHVuZSA9IGUuZGF0YS5nZXRWYXIoIkRFRkFVTFRUVU5FXyIgKyAidmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50LCBGYWxzZSkKICAgICBpZiBuZXd0dW5lOgogICAgICAgICBlLmRhdGEuc2V0VmFyKCJERUZBVUxUVFVORSIsIG5ld3R1bmUpCi0gICAgICAgIGUuZGF0YS5zZXRWYXIoJ0RFRkFVTFRUVU5FX01MXyVzJyAlIHZhcmlhbnQsIG5ld3R1bmUpCiB9CiAKIGFkZGhhbmRsZXIgbXVsdGlsaWJfdmlydGNsYXNzX2hhbmRsZXIKQEAgLTEwMCw4ICs5OSw4IEBACiAgICAgICAgIGQuc2V0VmFyKCJMSU5HVUFTX0lOU1RBTEwiLCAiIikKICAgICAgICAgIyBGSVhNRSwgd2UgbmVlZCB0byBtYXAgdGhpcyB0byBzb21ldGhpbmcsIG5vdCBkZWxldGUgaXQhCiAgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFkiLCAiIikKLQotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2ltYWdlJywgZCk6CisgICAgICAgIGJiLmJ1aWxkLmRlbHRhc2soJ2RvX3BvcHVsYXRlX3NkaycsIGQpCisgICAgICAgIGJiLmJ1aWxkLmRlbHRhc2soJ2RvX3BvcHVsYXRlX3Nka19leHQnLCBkKQogICAgICAgICByZXR1cm4KIAogICAgIGNsc2V4dGVuZC5tYXBfZGVwZW5kc192YXJpYWJsZSgiREVQRU5EUyIpCkBAIC0xMTUsNyArMTE0LDYgQEAKIAogICAgIGNsc2V4dGVuZC5tYXBfcGFja2FnZXZhcnMoKQogICAgIGNsc2V4dGVuZC5tYXBfcmVnZXhwX3ZhcmlhYmxlKCJQQUNLQUdFU19EWU5BTUlDIikKLSAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJQQUNLQUdFX0lOU1RBTEwiKQogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIklOSVRTQ1JJUFRfUEFDS0FHRVMiKQogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIlVTRVJBRERfUEFDS0FHRVMiKQogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIlNZU1RFTURfUEFDS0FHRVMiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MKaW5kZXggZmQwYmZlMS4uZDJlYzFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCkBAIC0xMywxMSArMTMsMTQgQEAKIAogICAgIHZlcnNpb25zID0gW10KICAgICBwcm92aWRlcnMgPSBbXQorICAgIHJwcm92aWRlcnMgPSBbXQogICAgIGZvciB2IGluIGQua2V5cygpOgogICAgICAgICBpZiB2LnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9WRVJTSU9OXyIpOgogICAgICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKHYpCiAgICAgICAgIGlmIHYuc3RhcnRzd2l0aCgiUFJFRkVSUkVEX1BST1ZJREVSXyIpOgogICAgICAgICAgICAgcHJvdmlkZXJzLmFwcGVuZCh2KQorICAgICAgICBpZiB2LnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9SUFJPVklERVJfIik6CisgICAgICAgICAgICBycHJvdmlkZXJzLmFwcGVuZCh2KQogCiAgICAgZm9yIHYgaW4gdmVyc2lvbnM6CiAgICAgICAgIHZhbCA9IGQuZ2V0VmFyKHYsIEZhbHNlKQpAQCAtOTEsNiArOTQsMjkgQEAKICAgICAgICAgaWYgcHJvdiAhPSBwcm92ZXhwIGFuZCBkLmdldFZhcihwcm92LCBGYWxzZSk6CiAgICAgICAgICAgICBkLnJlbmFtZVZhcihwcm92LCBwcm92ZXhwKQogCisgICAgZm9yIHByb3YgaW4gcnByb3ZpZGVyczoKKyAgICAgICAgdmFsID0gZC5nZXRWYXIocHJvdiwgRmFsc2UpCisgICAgICAgIHBrZyA9IHByb3YucmVwbGFjZSgiUFJFRkVSUkVEX1JQUk9WSURFUl8iLCAiIikKKyAgICAgICAgZm9yIHAgaW4gcHJlZml4ZXM6CisgICAgICAgICAgICBuZXd2YWwgPSBwICsgIi0iICsgdmFsCisKKyAgICAgICAgICAgICMgaW1wbGVtZW50IHZhcmlhYmxlIGtleXMKKyAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgICAgICAgICAgb3ZlcnJpZGUgPSAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgcAorICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgb3ZlcnJpZGUpCisgICAgICAgICAgICBuZXduYW1lID0gbG9jYWxkYXRhLmV4cGFuZChwcm92KQorICAgICAgICAgICAgaWYgbmV3bmFtZSAhPSBwcm92IGFuZCBub3QgZC5nZXRWYXIobmV3bmFtZSwgRmFsc2UpOgorICAgICAgICAgICAgICAgIGQuc2V0VmFyKG5ld25hbWUsIGxvY2FsZGF0YS5leHBhbmQobmV3dmFsKSkKKworICAgICAgICAgICAgIyBpbXBsZW1lbnQgYWx0ZXJuYXRpdmUgbXVsdGlsaWIgbmFtZQorICAgICAgICAgICAgbmV3bmFtZSA9IGxvY2FsZGF0YS5leHBhbmQoIlBSRUZFUlJFRF9SUFJPVklERVJfIiArIHAgKyAiLSIgKyBwa2cpCisgICAgICAgICAgICBpZiBub3QgZC5nZXRWYXIobmV3bmFtZSwgRmFsc2UpIGFuZCBuZXd2YWwgIT0gTm9uZToKKyAgICAgICAgICAgICAgICBkLnNldFZhcihuZXduYW1lLCBsb2NhbGRhdGEuZXhwYW5kKG5ld3ZhbCkpCisgICAgICAgICMgQXZvaWQgZnV0dXJlIHZhcmlhYmxlIGtleSBleHBhbnNpb24KKyAgICAgICAgcHJvdmV4cCA9IGQuZXhwYW5kKHByb3YpCisgICAgICAgIGlmIHByb3YgIT0gcHJvdmV4cCBhbmQgZC5nZXRWYXIocHJvdiwgRmFsc2UpOgorICAgICAgICAgICAgZC5yZW5hbWVWYXIocHJvdiwgcHJvdmV4cCkKKwogICAgIGRlZiB0cmFuc2xhdGVfcHJvdmlkZShwcmVmaXgsIHByb3YpOgogICAgICAgICBpZiBub3QgcHJvdi5zdGFydHN3aXRoKCJ2aXJ0dWFsLyIpOgogICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArICItIiArIHByb3YKQEAgLTE2Miw3ICsxODgsNyBAQAogICAgICAgICAgICAgaWYgcnByb3ZzLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAgZS5kYXRhLnNldFZhcigiUlBST1ZJREVTIiwgcnByb3ZzKQogCi0JICAgICMgUHJvY2VzcyBSUFJPVklERVNfJHtQTn0uLi4KKyAgICAgICAgICAgICMgUHJvY2VzcyBSUFJPVklERVNfJHtQTn0uLi4KICAgICAgICAgICAgIGZvciBwa2cgaW4gKGUuZGF0YS5nZXRWYXIoIlBBQ0tBR0VTIikgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgb3JpZ3Jwcm92cyA9IHJwcm92cyA9IGUuZGF0YS5nZXRWYXIoIlJQUk9WSURFU18lcyIgJSBwa2cpIG9yICIiCiAgICAgICAgICAgICAgICAgZm9yIGNsc2V4dGVuZCBpbiBjbHNleHRlbmRzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKaW5kZXggOWM0MzRkYy4uYTkxMWYyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCkBAIC01Miw4ICs1Miw2IEBACiAjIG5hdGl2ZSBwa2cgZG9lc24ndCBuZWVkIHRoZSBUT09MQ0hBSU5fT1BUSU9OUy4KIFRPT0xDSEFJTl9PUFRJT05TID0gIiIKIAotREVQRU5EU19HRVRURVhUID0gImdldHRleHQtbmF0aXZlIgotCiAjIERvbid0IGJ1aWxkIHB0ZXN0IG5hdGl2ZWx5CiBQVEVTVF9FTkFCTEVEID0gIjAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCmluZGV4IGE2OWJlZGIuLmMzNTFmZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwpAQCAtMiw3ICsyLDE1IEBACiBSREVQRU5EU18ke1BOfV9wcmVwZW5kID0gIm5vZGVqcyAiCiBTID0gIiR7V09SS0RJUn0vbnBtcGtnIgogCi1OUE1fSU5TVEFMTERJUiA9ICIke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke1BOfSIKK2RlZiBub2RlX3BrZ25hbWUoZCk6CisgICAgYnBuID0gZC5nZXRWYXIoJ0JQTicpCisgICAgaWYgYnBuLnN0YXJ0c3dpdGgoIm5vZGUtIik6CisgICAgICAgIHJldHVybiBicG5bNTpdCisgICAgcmV0dXJuIGJwbgorCitOUE1QTiA/PSAiJHtAbm9kZV9wa2duYW1lKGQpfSIKKworTlBNX0lOU1RBTExESVIgPSAiJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0iCiAKICMgZnVuY3Rpb24gbWFwcyBhcmNoIG5hbWVzIHRvIG5wbSBhcmNoIG5hbWVzCiBkZWYgbnBtX29lX2FyY2hfbWFwKHRhcmdldF9hcmNoLCBkKToKQEAgLTMxLDcgKzM5LDcgQEAKIAlmaQogCW5wbSBzZXQgY2FjaGUgJHtXT1JLRElSfS9ucG1fY2FjaGUKIAkjIGNsZWFyIGNhY2hlIGJlZm9yZSBldmVyeSBidWlsZAotCW5wbSBjYWNoZSBjbGVhcgorCW5wbSBjYWNoZSBjbGVhciAtLWZvcmNlCiAJIyBJbnN0YWxsIHBrZyBpbnRvICR7U30gd2l0aG91dCBnb2luZyB0byB0aGUgcmVnaXN0cnkKIAlpZiBbICAiJHtOUE1fSU5TVEFMTF9ERVZ9IiA9ICIxIiBdOyB0aGVuCiAJCW5wbSAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLW5vLXJlZ2lzdHJ5IGluc3RhbGwKQEAgLTQ1LDcgKzUzLDggQEAKIAkjIGJlIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKIAlleHBvcnQgSE9NRT0ke1dPUktESVJ9CiAJbWtkaXIgLXAgJHtOUE1fSU5TVEFMTERJUn0vCi0JbnBtIGluc3RhbGwgLS1wcmVmaXggJHtEfSR7cHJlZml4fSAtZyAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeQorCW5wbSBwYWNrIC4KKwlucG0gaW5zdGFsbCAtLXByZWZpeCAke0R9JHtwcmVmaXh9IC1nIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tcHJvZHVjdGlvbiAtLW5vLXJlZ2lzdHJ5ICR7TlBNUE59LSR7UFZ9LnRnegogCWlmIFsgLWQgJHtEfSR7cHJlZml4fS9ldGMgXSA7IHRoZW4KIAkJIyBUaGlzIHdpbGwgYmUgZW1wdHkKIAkJcm1kaXIgJHtEfSR7cHJlZml4fS9ldGMKQEAgLTUzLDEzICs2MiwxMyBAQAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgaW5zdGRpciA9IGQuZXhwYW5kKCcke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke1BOfScpCisgICAgaW5zdGRpciA9IGQuZXhwYW5kKCcke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfScpCiAgICAgZXh0cmFwYWNrYWdlcyA9IG9lLnBhY2thZ2UubnBtX3NwbGl0X3BhY2thZ2VfZGlycyhpbnN0ZGlyKQogICAgIHBrZ25hbWVzID0gZXh0cmFwYWNrYWdlcy5rZXlzKCkKICAgICBkLnByZXBlbmRWYXIoJ1BBQ0tBR0VTJywgJyVzICcgJSAnICcuam9pbihwa2duYW1lcykpCiAgICAgZm9yIHBrZ25hbWUgaW4gcGtnbmFtZXM6CiAgICAgICAgIHBrZ3JlbHBhdGgsIHBkYXRhID0gZXh0cmFwYWNrYWdlc1twa2duYW1lXQotICAgICAgICBwa2dwYXRoID0gJyR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0vJyArIHBrZ3JlbHBhdGgKKyAgICAgICAgcGtncGF0aCA9ICcke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59LycgKyBwa2dyZWxwYXRoCiAgICAgICAgICMgcGFja2FnZSBuYW1lcyBjYW4ndCBoYXZlIHVuZGVyc2NvcmVzIGJ1dCBucG0gcGFja2FnZXMgc29tZXRpbWVzIHVzZSB0aGVtCiAgICAgICAgIG9lX3BrZ19uYW1lID0gcGtnbmFtZS5yZXBsYWNlKCdfJywgJy0nKQogICAgICAgICBleHBhbmRlZF9wa2duYW1lID0gZC5leHBhbmQob2VfcGtnX25hbWUpCkBAIC03NSw3ICs4NCw3IEBACiB9CiAKIEZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0gXAorICAgICR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0gXAogIgogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwppbmRleCAyMDUzZDQ2Li5lZGVmZmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtMjYsNyArMjYsNyBAQAogIyAgICBhIGxpc3Qgb2YgYWZmZWN0ZWQgZmlsZXMgaW4gRklMRVJ7UFJPVklERVMsREVQRU5EU31GTElTVF9wa2cKICMKICMgaCkgcGFja2FnZV9kb19zaGxpYnMgLSBMb29rIGF0IHRoZSBzaGFyZWQgbGlicmFyaWVzIGdlbmVyYXRlZCBhbmQgYXV0b3RtYXRpY2FsbHkgYWRkIGFueQotIyAgICBkZXBlbmVkZW5jaWVzIGZvdW5kLiBBbHNvIHN0b3JlcyB0aGUgcGFja2FnZSBuYW1lIHNvIGFueW9uZSBlbHNlIHVzaW5nIHRoaXMgbGlicmFyeQorIyAgICBkZXBlbmRlbmNpZXMgZm91bmQuIEFsc28gc3RvcmVzIHRoZSBwYWNrYWdlIG5hbWUgc28gYW55b25lIGVsc2UgdXNpbmcgdGhpcyBsaWJyYXJ5CiAjICAgIGtub3dzIHdoaWNoIHBhY2thZ2UgdG8gZGVwZW5kIG9uLgogIwogIyBpKSBwYWNrYWdlX2RvX3BrZ2NvbmZpZyAtIEtlZXAgdHJhY2sgb2Ygd2hpY2ggcGFja2FnZXMgbmVlZCBhbmQgcHJvdmlkZSB3aGljaCAucGMgZmlsZXMKQEAgLTUyLDcgKzUyLDggQEAKIEFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTID0gIiR7QGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAnUEFDS0FHRV9BUkNIUycpfSIKIAogIyBycG0gaXMgdXNlZCBmb3IgdGhlIHBlci1maWxlIGRlcGVuZGVuY3kgaWRlbnRpZmljYXRpb24KLVBBQ0tBR0VfREVQRU5EUyArPSAicnBtLW5hdGl2ZSIKKyMgZHdhcmZzcmNmaWxlcyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbGlzdCBvZiBkZWJ1ZyBzb3VyY2UgZmlsZXMKK1BBQ0tBR0VfREVQRU5EUyArPSAicnBtLW5hdGl2ZSBkd2FyZnNyY2ZpbGVzLW5hdGl2ZSIKIAogCiAjIElmIHlvdXIgcG9zdGluc3RhbGwgY2FuIGV4ZWN1dGUgYXQgcm9vdGZzIGNyZWF0aW9uIHRpbWUgcmF0aGVyIHRoYW4gb24KQEAgLTMzNCw2ICszMzUsMzMgQEAKIAogICAgIHJldHVybiBGYWxzZQogCitkZWYgcGFyc2VfZGVidWdzb3VyY2VzX2Zyb21fZHdhcmZzcmNmaWxlc19vdXRwdXQoZHdhcmZzcmNmaWxlc19vdXRwdXQpOgorICAgIGRlYnVnZmlsZXMgPSB7fQorCisgICAgZm9yIGxpbmUgaW4gZHdhcmZzcmNmaWxlc19vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlx0Iik6CisgICAgICAgICAgICBkZWJ1Z2ZpbGVzW29zLnBhdGgubm9ybXBhdGgobGluZS5zcGxpdCgpWzBdKV0gPSAiIgorCisgICAgcmV0dXJuIGRlYnVnZmlsZXMua2V5cygpCisKK2RlZiBhcHBlbmRfc291cmNlX2luZm8oZmlsZSwgc291cmNlZmlsZSwgZCwgZmF0YWw9VHJ1ZSk6CisgICAgY21kID0gIidkd2FyZnNyY2ZpbGVzJyAnJXMnIiAlIChmaWxlKQorICAgIChyZXR2YWwsIG91dHB1dCkgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kKQorICAgICMgMjU1IG1lYW5zIGEgc3BlY2lmaWMgZmlsZSB3YXNuJ3QgZnVsbHkgcGFyc2VkIHRvIGdldCB0aGUgZGVidWcgZmlsZSBsaXN0LCB3aGljaCBpcyBub3QgYSBmYXRhbCBmYWlsdXJlCisgICAgaWYgcmV0dmFsICE9IDAgYW5kIHJldHZhbCAhPSAyNTU6CisgICAgICAgIG1zZyA9ICJkd2FyZnNyY2ZpbGVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpCisgICAgICAgIGlmIGZhdGFsOgorICAgICAgICAgICAgYmIuZmF0YWwobXNnKQorICAgICAgICBiYi5ub3RlKG1zZykKKworICAgIGRlYnVnc291cmNlcyA9IHBhcnNlX2RlYnVnc291cmNlc19mcm9tX2R3YXJmc3JjZmlsZXNfb3V0cHV0KG91dHB1dCkKKyAgICAjIGZpbGVuYW1lcyBhcmUgbnVsbC1zZXBhcmF0ZWQgLSB0aGlzIGlzIGFuIGFydGVmYWN0IG9mIHRoZSBwcmV2aW91cyB1c2UKKyAgICAjIG9mIHJwbSdzIGRlYnVnZWRpdCwgd2hpY2ggd2FzIHdyaXRpbmcgdGhlbSBvdXQgdGhhdCB3YXksIGFuZCB0aGUgY29kZSBlbHNld2hlcmUKKyAgICAjIGlzIHN0aWxsIGFzc3VtaW5nIHRoYXQuCisgICAgZGVidWdsaXN0b3V0cHV0ID0gJ1wwJy5qb2luKGRlYnVnc291cmNlcykgKyAnXDAnCisgICAgb3Blbihzb3VyY2VmaWxlLCAnYScpLndyaXRlKGRlYnVnbGlzdG91dHB1dCkKKworCiBkZWYgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZGVidWdmaWxlLCBkZWJ1Z3NyY2Rpciwgc291cmNlZmlsZSwgZCk6CiAgICAgIyBGdW5jdGlvbiB0byBzcGxpdCBhIHNpbmdsZSBmaWxlIGludG8gdHdvIGNvbXBvbmVudHMsIG9uZSBpcyB0aGUgc3RyaXBwZWQKICAgICAjIHRhcmdldCBzeXN0ZW0gYmluYXJ5LCB0aGUgb3RoZXIgY29udGFpbnMgYW55IGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gVGhlCkBAIC0zNDUsNyArMzczLDYgQEAKIAogICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCiAgICAgb2JqY29weSA9IGQuZ2V0VmFyKCJPQkpDT1BZIikKLSAgICBkZWJ1Z2VkaXQgPSBkLmV4cGFuZCgiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbS9kZWJ1Z2VkaXQiKQogCiAgICAgIyBXZSBpZ25vcmUga2VybmVsIG1vZHVsZXMsIHdlIGRvbid0IGdlbmVyYXRlIGRlYnVnIGluZm8gZmlsZXMuCiAgICAgaWYgZmlsZS5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTEgYW5kIGZpbGUuZW5kc3dpdGgoIi5rbyIpOgpAQCAtMzU5LDEwICszODYsNyBAQAogCiAgICAgIyBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiBoZXJlLi4uCiAgICAgaWYgZGVidWdzcmNkaXI6Ci0gICAgICAgIGNtZCA9ICInJXMnIC1pIC1sICclcycgJyVzJyIgJSAoZGVidWdlZGl0LCBzb3VyY2VmaWxlLCBmaWxlKQotICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICAgICAgaWYgcmV0dmFsOgotICAgICAgICAgICAgYmIuZmF0YWwoImRlYnVnZWRpdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKKyAgICAgICAgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQpCiAKICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCiAKQEAgLTM4Myw3ICs0MDcsNyBAQAogICAgIHJldHVybiAwCiAKIGRlZiBjb3B5ZGVidWdzb3VyY2VzKGRlYnVnc3JjZGlyLCBkKToKLSAgICAjIFRoZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gd3JpdHRlbiBvdXQgdG8gc291cmNlZmlsZSBpcyBmdXJ0aGVyIHByb2NlY2Vzc2VkCisgICAgIyBUaGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIHdyaXR0ZW4gb3V0IHRvIHNvdXJjZWZpbGUgaXMgZnVydGhlciBwcm9jZXNzZWQKICAgICAjIGFuZCBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhlcmUuCiAKICAgICBpbXBvcnQgc3RhdApAQCAtMzkzLDcgKzQxNyw2IEBACiAgICAgICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCiAgICAgICAgIHN0cmlwID0gZC5nZXRWYXIoIlNUUklQIikKICAgICAgICAgb2JqY29weSA9IGQuZ2V0VmFyKCJPQkpDT1BZIikKLSAgICAgICAgZGVidWdlZGl0ID0gZC5leHBhbmQoIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vYmluL2RlYnVnZWRpdCIpCiAgICAgICAgIHdvcmtkaXIgPSBkLmdldFZhcigiV09SS0RJUiIpCiAgICAgICAgIHdvcmtwYXJlbnRkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHdvcmtkaXIpKQogICAgICAgICB3b3JrYmFzZWRpciA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKHdvcmtkaXIpKSArICIvIiArIG9zLnBhdGguYmFzZW5hbWUod29ya2RpcikKQEAgLTYzMyw3ICs2NTYsNyBAQAogICAgICMgX19zdHJfXyBjYW4gYmUgdXNlZCB0byBwcmludCBvdXQgYW4gZW50cnkgaW4gdGhlIGlucHV0IGZvcm1hdAogICAgICMKICAgICAjIGlmIGZzX3Blcm1zX2VudHJ5LnBhdGggaXMgTm9uZToKLSAgICAjICAgIGFuIGVycm9yIG9jY3VyZWQKKyAgICAjICAgIGFuIGVycm9yIG9jY3VycmVkCiAgICAgIyBpZiBmc19wZXJtc19lbnRyeS5saW5rLCB5b3UgY2FuIHJldHJpZXZlOgogICAgICMgICAgZnNfcGVybXNfZW50cnkucGF0aCA9IHBhdGgKICAgICAjICAgIGZzX3Blcm1zX2VudHJ5LmxpbmsgPSB0YXJnZXQgb2YgbGluawpAQCAtODYwLDYgKzg4Myw3IEBACiAKICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICB0YXJnZXRvcyA9IGQuZ2V0VmFyKCdUQVJHRVRfT1MnKQogCiAgICAgb2xkY3dkID0gb3MuZ2V0Y3dkKCkKICAgICBvcy5jaGRpcihkdmFyKQpAQCAtOTAxLDcgKzkyNSw3IEBACiAgICAgIyAxNiAtIGtlcm5lbCBtb2R1bGUKICAgICBkZWYgaXNFTEYocGF0aCk6CiAgICAgICAgIHR5cGUgPSAwCi0gICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIFwiJXNcIiIgJSBwYXRoLnJlcGxhY2UoIlwiIiwgIlxcXCIiKSkKKyAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoImZpbGUgLWIgJyVzJyIgJSBwYXRoKQogCiAgICAgICAgIGlmIHJldDoKICAgICAgICAgICAgIG1zZyA9ICJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdmaWxlICVzJyBmYWlsZWQiICUgcGF0aApAQCAtOTE5LDYgKzk0MywxNSBAQAogICAgICAgICAgICAgICAgIHR5cGUgfD0gOAogICAgICAgICByZXR1cm4gdHlwZQogCisgICAgZGVmIGlzU3RhdGljTGliKHBhdGgpOgorICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKCcuYScpIGFuZCBub3Qgb3MucGF0aC5pc2xpbmsocGF0aCk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZmg6CisgICAgICAgICAgICAgICAgIyBUaGUgbWFnaWMgbXVzdCBpbmNsdWRlIHRoZSBmaXJzdCBzbGFzaCB0byBhdm9pZAorICAgICAgICAgICAgICAgICMgbWF0Y2hpbmcgZ29sYW5nIHN0YXRpYyBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICBtYWdpYyA9IGInITxhcmNoPlx4MGEvJworICAgICAgICAgICAgICAgIHN0YXJ0ID0gZmgucmVhZChsZW4obWFnaWMpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFydCA9PSBtYWdpYworICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICMKICAgICAjIEZpcnN0IGxldHMgZmlndXJlIG91dCBhbGwgb2YgdGhlIGZpbGVzIHdlIG1heSBoYXZlIHRvIHByb2Nlc3MgLi4uIGRvIHRoaXMgb25seSBvbmNlIQpAQCAtOTI2LDkgKzk1OSwxMSBAQAogICAgIGVsZmZpbGVzID0ge30KICAgICBzeW1saW5rcyA9IHt9CiAgICAga2Vybm1vZHMgPSBbXQorICAgIHN0YXRpY2xpYnMgPSBbXQogICAgIGlub2RlcyA9IHt9CiAgICAgbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGR2YXIgKyBvcy5zZXAgKyBkLmdldFZhcigibGliZGlyIikpCiAgICAgYmFzZWxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkdmFyICsgb3Muc2VwICsgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCisgICAgc2tpcGZpbGVzID0gKGQuZ2V0VmFyKCJJTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMiKSBvciAiIikuc3BsaXQoKQogICAgIGlmIChkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX1NUUklQJykgIT0gJzEnIG9yIFwKICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnKSAhPSAnMScpOgogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gY3BhdGgud2FsayhkdmFyKToKQEAgLTkzNyw2ICs5NzIsOSBAQAogICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKICAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgaXNTdGF0aWNMaWIoZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY2xpYnMuYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICAjIFNraXAgZGVidWcgZmlsZXMKICAgICAgICAgICAgICAgICBpZiBkZWJ1Z2FwcGVuZCBhbmQgZmlsZS5lbmRzd2l0aChkZWJ1Z2FwcGVuZCk6CkBAIC05NDQsNiArOTgyLDkgQEAKICAgICAgICAgICAgICAgICBpZiBkZWJ1Z2RpciBhbmQgZGVidWdkaXIgaW4gb3MucGF0aC5kaXJuYW1lKGZpbGVbbGVuKGR2YXIpOl0pOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICAgICAgaWYgZmlsZSBpbiBza2lwZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGx0YXJnZXQgPSBjcGF0aC5yZWFscGF0aChmaWxlLCBkdmFyLCBGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgcyA9IGNwYXRoLmxzdGF0KGx0YXJnZXQpCkBAIC05NTUsNyArOTk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBub3QgczoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIENoZWNrIGl0cyBhbiBleGN1dGFibGUKKyAgICAgICAgICAgICAgICAjIENoZWNrIGl0cyBhbiBleGVjdXRhYmxlCiAgICAgICAgICAgICAgICAgaWYgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWFVTUikgb3IgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWEdSUCkgb3IgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWE9USCkgXAogICAgICAgICAgICAgICAgICAgICAgICAgb3IgKChmaWxlLnN0YXJ0c3dpdGgobGliZGlyKSBvciBmaWxlLnN0YXJ0c3dpdGgoYmFzZWxpYmRpcikpIGFuZCAoIi5zbyIgaW4gZiBvciAiLm5vZGUiIGluIGYpKToKICAgICAgICAgICAgICAgICAgICAgIyBJZiBpdCdzIGEgc3ltbGluaywgYW5kIHBvaW50cyB0byBhbiBFTEYgZmlsZSwgd2UgY2FwdHVyZSB0aGUgcmVhZGxpbmsgdGFyZ2V0CkBAIC05ODMsNyArMTAyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjICBiKSBPbmx5IHN0cmlwIGFueSBoYXJkbGlua2VkIGZpbGUgb25jZSAobm8gcmFjZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAjICBjKSBUcmFjayBhbnkgaGFyZGxpbmtzIGJldHdlZW4gZmlsZXMgc28gdGhhdCB3ZSBjYW4gcmVjb25zdHJ1Y3QgbWF0Y2hpbmcgZGVidWcgZmlsZSBoYXJkbGlua3MKIAotICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgYSByZWZlcmVuY2Ugb2YgZGV2aWNlIElEIGFuZCBpbm9kZSBudW1iZXIgdG8gaW5kZW50aWZ5IGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZSBhIHJlZmVyZW5jZSBvZiBkZXZpY2UgSUQgYW5kIGlub2RlIG51bWJlciB0byBpZGVudGlmeSBmaWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSAiJWRfJWQiICUgKHMuc3RfZGV2LCBzLnN0X2lubykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfcmVmZXJlbmNlIGluIGlub2RlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKQEAgLTEwMTIsNiArMTA1MywxMCBAQAogICAgICAgICAgICAgIyBPbmx5IHN0b3JlIG9mZiB0aGUgaGFyZCBsaW5rIHJlZmVyZW5jZSBpZiB3ZSBzdWNjZXNzZnVsbHkgc3BsaXQhCiAgICAgICAgICAgICBzcGxpdGRlYnVnaW5mbyhmaWxlLCBmcGF0aCwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpCiAKKyAgICAgICAgaWYgZGVidWdzcmNkaXIgYW5kIG5vdCB0YXJnZXRvcy5zdGFydHN3aXRoKCJtaW5ndyIpOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gc3RhdGljbGliczoKKyAgICAgICAgICAgICAgICBhcHBlbmRfc291cmNlX2luZm8oZmlsZSwgc291cmNlZmlsZSwgZCwgZmF0YWw9RmFsc2UpCisKICAgICAgICAgIyBIYXJkbGluayBvdXIgZGVidWcgc3ltYm9scyB0byB0aGUgb3RoZXIgaGFyZGxpbmsgY29waWVzCiAgICAgICAgIGZvciByZWYgaW4gaW5vZGVzOgogICAgICAgICAgICAgaWYgbGVuKGlub2Rlc1tyZWZdKSA9PSAxOgpAQCAtMTEwNSw3ICsxMTUwLDcgQEAKICAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXyVzJyAlIHNyY19wYWNrYWdlX25hbWUsICcvdXNyL3NyYy9kZWJ1ZycpCiAKICAgICAjIFNhbml0eSBjaGVjayBQQUNLQUdFUyBmb3IgZHVwbGljYXRlcwotICAgICMgU2FuaXR5IHNob3VsZCBiZSBtb3ZlZCB0byBzYW5pdHkuYmJjbGFzcyBvbmNlIHdlIGhhdmUgdGhlIGluZnJhc3R1Y3R1cmUKKyAgICAjIFNhbml0eSBzaG91bGQgYmUgbW92ZWQgdG8gc2FuaXR5LmJiY2xhc3Mgb25jZSB3ZSBoYXZlIHRoZSBpbmZyYXN0cnVjdHVyZQogICAgIHBhY2thZ2VfbGlzdCA9IFtdCiAKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CkBAIC0xMzAzLDYgKzEzNDgsMzYgQEAKICAgICBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKICAgICBpbXBvcnQganNvbgogCisgICAgZGVmIHByb2Nlc3NfcG9zdGluc3Rfb25fdGFyZ2V0KHBrZywgbWxwcmVmaXgpOgorICAgICAgICBkZWZlcl9mcmFnbWVudCA9ICIiIgoraWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdCAlcyBtbHByZWZpeD0lcworICAgIGV4aXQgMAorZmkKKyIiIiAlIChwa2csIG1scHJlZml4KQorCisgICAgICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2cpCisgICAgICAgIHBvc3RpbnN0X29udGFyZ2V0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF9vbnRhcmdldF8lcycgJSBwa2cpCisKKyAgICAgICAgaWYgcG9zdGluc3Rfb250YXJnZXQ6CisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnYWRkaW5nIGRlZmVycmVkIHBrZ19wb3N0aW5zdF9vbnRhcmdldCgpIHRvIHBrZ19wb3N0aW5zdCgpIGZvciAlcycgJSBwa2cpCisgICAgICAgICAgICBpZiBub3QgcG9zdGluc3Q6CisgICAgICAgICAgICAgICAgcG9zdGluc3QgPSAnIyEvYmluL3NoXG4nCisgICAgICAgICAgICBwb3N0aW5zdCArPSBkZWZlcl9mcmFnbWVudAorICAgICAgICAgICAgcG9zdGluc3QgKz0gcG9zdGluc3Rfb250YXJnZXQKKyAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKKworICAgIGRlZiBhZGRfc2V0X2VfdG9fc2NyaXB0bGV0cyhwa2cpOgorICAgICAgICBmb3Igc2NyaXB0bGV0X25hbWUgaW4gKCdwa2dfcHJlaW5zdCcsICdwa2dfcG9zdGluc3QnLCAncGtnX3ByZXJtJywgJ3BrZ19wb3N0cm0nKToKKyAgICAgICAgICAgIHNjcmlwdGxldCA9IGQuZ2V0VmFyKCclc18lcycgJSAoc2NyaXB0bGV0X25hbWUsIHBrZykpCisgICAgICAgICAgICBpZiBzY3JpcHRsZXQ6CisgICAgICAgICAgICAgICAgc2NyaXB0bGV0X3NwbGl0ID0gc2NyaXB0bGV0LnNwbGl0KCdcbicpCisgICAgICAgICAgICAgICAgaWYgc2NyaXB0bGV0X3NwbGl0WzBdLnN0YXJ0c3dpdGgoIiMhIik6CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdGxldCA9IHNjcmlwdGxldF9zcGxpdFswXSArICJcbnNldCAtZVxuIiArICJcbiIuam9pbihzY3JpcHRsZXRfc3BsaXRbMTpdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdGxldCA9ICJzZXQgLWVcbiIgKyAiXG4iLmpvaW4oc2NyaXB0bGV0X3NwbGl0WzA6XSkKKyAgICAgICAgICAgIGQuc2V0VmFyKCclc18lcycgJSAoc2NyaXB0bGV0X25hbWUsIHBrZyksIHNjcmlwdGxldCkKKwogICAgIGRlZiB3cml0ZV9pZl9leGlzdHMoZiwgcGtnLCB2YXIpOgogICAgICAgICBkZWYgZW5jb2RlKHN0cik6CiAgICAgICAgICAgICBpbXBvcnQgY29kZWNzCkBAIC0xMzk4LDYgKzE0NzMsOCBAQAogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ0FMTE9XX0VNUFRZJykKICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdGSUxFUycpCiAgICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnQ09ORkZJTEVTJykKKyAgICAgICAgcHJvY2Vzc19wb3N0aW5zdF9vbl90YXJnZXQocGtnLCBkLmdldFZhcigiTUxQUkVGSVgiKSkKKyAgICAgICAgYWRkX3NldF9lX3RvX3NjcmlwdGxldHMocGtnKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wb3N0aW5zdCcpCiAgICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAncGtnX3Bvc3RybScpCiAgICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAncGtnX3ByZWluc3QnKQpAQCAtMTU0MSw3ICsxNjE4LDcgQEAKICAgICBzaGxpYnN3b3JrX2RpciA9IGQuZ2V0VmFyKCdTSExJQlNXT1JLRElSJykKIAogICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCi0gICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSkKKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGQuZXhwYW5kKCIke1BBQ0tBR0VMT0NLfSIpLCBUcnVlKQogCiAgICAgZGVmIGxpbnV4X3NvKGZpbGUsIG5lZWRlZCwgc29uYW1lcywgcmVuYW1lcywgcGtndmVyKToKICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBGYWxzZQpAQCAtMTczMiw2ICsxODA5LDkgQEAKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGJiLmRlYnVnKDIsICJjYWxjdWxhdGluZyBzaGxpYiByZXF1aXJlbWVudHMgZm9yICVzIiAlIHBrZykKIAorICAgICAgICBwcml2YXRlX2xpYnMgPSBkLmdldFZhcignUFJJVkFURV9MSUJTXycgKyBwa2cpIG9yIGQuZ2V0VmFyKCdQUklWQVRFX0xJQlMnKSBvciAiIgorICAgICAgICBwcml2YXRlX2xpYnMgPSBwcml2YXRlX2xpYnMuc3BsaXQoKQorCiAgICAgICAgIGRlcHMgPSBsaXN0KCkKICAgICAgICAgZm9yIG4gaW4gbmVlZGVkW3BrZ106CiAgICAgICAgICAgICAjIGlmIG4gaXMgaW4gcHJpdmF0ZSBsaWJyYXJpZXMsIGRvbid0IHRyeSB0byBzZWFyY2ggcHJvdmlkZXIgZm9yIGl0CkBAIC0xODIzLDcgKzE5MDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2djb25maWdfbmVlZGVkW3BrZ10gKz0gZXhwLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKIAogICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCi0gICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSkKKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGQuZXhwYW5kKCIke1BBQ0tBR0VMT0NLfSIpLCBUcnVlKQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBwa2dzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2hsaWJzd29ya19kaXIsIHBrZyArICIucGNsaXN0IikKQEAgLTIxNTYsMTEgKzIyMzYsOSBAQAogZG9fcGFja2FnZVt2YXJkZXBzXSArPSAiJHtQQUNLQUdFQlVJTERQS0dEfSAke1BBQ0tBR0VTUExJVEZVTkNTfSAke1BBQ0tBR0VGVU5DU30gJHtAZ2VuX3BhY2thZ2V2YXIoZCl9IgogYWRkdGFzayBwYWNrYWdlIGFmdGVyIGRvX2luc3RhbGwKIAotUEFDS0FHRUxPQ0sgPSAiJHtTVEFHSU5HX0RJUn0vcGFja2FnZS1vdXRwdXQubG9jayIKIFNTVEFURVRBU0tTICs9ICJkb19wYWNrYWdlIgogZG9fcGFja2FnZVtjbGVhbmRpcnNdID0gIiR7UEtHREVTVH0gJHtQS0dERVNUV09SS30iCiBkb19wYWNrYWdlW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7UEtHRH0gJHtQS0dERVNUfSAke1BLR0RFU1RXT1JLfSIKLWRvX3BhY2thZ2Vbc3N0YXRlLWxvY2tmaWxlLXNoYXJlZF0gPSAiJHtQQUNLQUdFTE9DS30iCiBkb19wYWNrYWdlX3NldHNjZW5lW2RpcnNdID0gIiR7U1RBR0lOR19ESVJ9IgogCiBweXRob24gZG9fcGFja2FnZV9zZXRzY2VuZSAoKSB7CkBAIC0yMTc1LDEwICsyMjUzLDEzIEBACiBhZGR0YXNrIHBhY2thZ2VkYXRhIGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19wYWNrYWdlCiAKIFNTVEFURVRBU0tTICs9ICJkb19wYWNrYWdlZGF0YSIKKyMgUEFDS0FHRUxPQ0sgcHJvdGVjdHMgcmVhZGVycyBvZiBQS0dEQVRBX0RJUiBhZ2FpbnN0IHdyaXRlcworIyB3aGlsc3QgY29kZSBpcyByZWFkaW5nIGluIGRvX3BhY2thZ2UKK1BBQ0tBR0VMT0NLID0gIiR7U1RBR0lOR19ESVJ9L3BhY2thZ2Utb3V0cHV0LmxvY2siCiBkb19wYWNrYWdlZGF0YVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSIKIGRvX3BhY2thZ2VkYXRhW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSIKLWRvX3BhY2thZ2VkYXRhW3NzdGF0ZS1sb2NrZmlsZS1zaGFyZWRdID0gIiR7UEFDS0FHRUxPQ0t9IgotZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSIKK2RvX3BhY2thZ2VkYXRhW3NzdGF0ZS1sb2NrZmlsZV0gPSAiJHtQQUNLQUdFTE9DS30iCitkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIHB5dGhvbiBkb19wYWNrYWdlZGF0YV9zZXRzY2VuZSAoKSB7CiAgICAgc3N0YXRlX3NldHNjZW5lKGQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKaW5kZXggNWQyOTc5My4uMmU4ZDE3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcwpAQCAtMjMwLDkgKzIzMCwxMSBAQAogICAgICAgICAgICAgIyAgICc+JyA9IGdyZWF0ZXIgb3IgZXF1YWwKICAgICAgICAgICAgICMgYWRqdXN0IHRoZXNlIHRvIHRoZSAnPDwnIGFuZCAnPj4nIGVxdWl2YWxlbnRzCiAgICAgICAgICAgICAjCi0gICAgICAgICAgICBmb3IgZGVwIGluIHZhcjoKLSAgICAgICAgICAgICAgICBpZiAnKCcgaW4gZGVwOgotICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSByZS5zdWIocidbKDopXScsICdfXycsIGRlcCkKKyAgICAgICAgICAgIGZvciBkZXAgaW4gbGlzdCh2YXIua2V5cygpKToKKyAgICAgICAgICAgICAgICBpZiAnKCcgaW4gZGVwIG9yICcvJyBpbiBkZXA6CisgICAgICAgICAgICAgICAgICAgIG5ld2RlcCA9IHJlLnN1YihyJ1soOikvXScsICdfXycsIGRlcCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbmV3ZGVwLnN0YXJ0c3dpdGgoIl9fIik6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSAiQSIgKyBuZXdkZXAKICAgICAgICAgICAgICAgICAgICAgaWYgbmV3ZGVwICE9IGRlcDoKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcltuZXdkZXBdID0gdmFyW2RlcF0KICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCB2YXJbZGVwXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCmluZGV4IDZjMWZkYWEuLmEwYjM0ZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKQEAgLTgsNyArOCw3IEBACiBQS0dXUklURURJUklQSyA9ICIke1dPUktESVJ9L2RlcGxveS1pcGtzIgogCiAjIFByb2dyYW0gdG8gYmUgdXNlZCB0byBidWlsZCBvcGtnIHBhY2thZ2VzCi1PUEtHQlVJTERDTUQgPz89ICJvcGtnLWJ1aWxkIgorT1BLR0JVSUxEQ01EID8/PSAib3BrZy1idWlsZCAtWiB4eiIKIAogT1BLR19BUkdTICs9ICItLWZvcmNlX3Bvc3RpbnN0YWxsIC0tcHJlZmVyLWFyY2gtdG8tdmVyc2lvbiIKIE9QS0dfQVJHUyArPSAiJHtAWycnLCAnLS1uby1pbnN0YWxsLXJlY29tbWVuZHMnXVtkLmdldFZhcigiTk9fUkVDT01NRU5EQVRJT05TIikgPT0gIjEiXX0iCkBAIC0zMDcsNyArMzA3LDcgQEAKIAogcHl0aG9uICgpIHsKICAgICBpZiBkLmdldFZhcignUEFDS0FHRVMnKSAhPSAnJzoKLSAgICAgICAgZGVwcyA9ICcgb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JworICAgICAgICBkZXBzID0gJyBvcGtnLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9pcGsnLCAnZGVwZW5kcycsIGRlcHMpCiAgICAgICAgIGQuc2V0VmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9pcGsnLCAnZmFrZXJvb3QnLCAiMSIpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKaW5kZXggYTQyOGQzMC4uMjFhZGEzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcwpAQCAtMzgyLDYgKzM4MiwxMiBAQAogCiAgICAgICAgICMgR2F0aGVyIHNwZWNpYWwgc3JjL2ZpcnN0IHBhY2thZ2UgZGF0YQogICAgICAgICBpZiBzcmNuYW1lID09IHNwbGl0bmFtZToKKyAgICAgICAgICAgIGFyY2hpdmluZyA9IGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdzcnBtJykgPT0gJzEnIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhcmNoaXZlcicsIGQpCisgICAgICAgICAgICBpZiBhcmNoaXZpbmcgYW5kIHNyY2xpY2Vuc2UgIT0gc3BsaXRsaWNlbnNlOgorICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBTUlBNIHByb2R1Y2VkIG1heSBub3QgaGF2ZSB0aGUgY29ycmVjdCBvdmVyYWxsIHNvdXJjZSBsaWNlbnNlIGluIHRoZSBMaWNlbnNlIHRhZy4gVGhpcyBpcyBkdWUgdG8gdGhlIExJQ0VOU0UgZm9yIHRoZSBwcmltYXJ5IHBhY2thZ2UgYW5kIFNSUE0gY29uZmxpY3RpbmcuIikKKworICAgICAgICAgICAgc3JjbGljZW5zZSAgICAgPSBzcGxpdGxpY2Vuc2UKICAgICAgICAgICAgIHNyY3JkZXBlbmRzICAgID0gc3BsaXRyZGVwZW5kcwogICAgICAgICAgICAgc3JjcnJlY29tbWVuZHMgPSBzcGxpdHJyZWNvbW1lbmRzCiAgICAgICAgICAgICBzcmNyc3VnZ2VzdHMgICA9IHNwbGl0cnN1Z2dlc3RzCkBAIC00MjEsOCArNDI3LDcgQEAKICAgICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnUmVsZWFzZTogJXMnICUgc3BsaXRyZWxlYXNlKQogICAgICAgICBpZiBzcmNlcG9jaCAhPSBzcGxpdGVwb2NoOgogICAgICAgICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCdFcG9jaDogJXMnICUgc3BsaXRlcG9jaCkKLSAgICAgICAgaWYgc3JjbGljZW5zZSAhPSBzcGxpdGxpY2Vuc2U6Ci0gICAgICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRvbS5hcHBlbmQoJ0xpY2Vuc2U6ICVzJyAlIHNwbGl0bGljZW5zZSkKKyAgICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCdMaWNlbnNlOiAlcycgJSBzcGxpdGxpY2Vuc2UpCiAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnR3JvdXA6ICVzJyAlIHNwbGl0c2VjdGlvbikKIAogICAgICAgICBpZiBzcmNjdXN0b210YWdzY2h1bmsgIT0gc3BsaXRjdXN0b210YWdzY2h1bms6CkBAIC02NjUsMTMgKzY3MCwxNSBAQAogICAgIGNtZCA9IHJwbWJ1aWxkCiAgICAgY21kID0gY21kICsgIiAtLW5vY2xlYW4gLS1ub2RlcHMgLS1zaG9ydC1jaXJjdWl0IC0tdGFyZ2V0ICIgKyBwa2dhcmNoICsgIiAtLWJ1aWxkcm9vdCAiICsgcGtnZAogICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ190b3BkaXIgIiArIHdvcmtkaXIgKyAiJyAtLWRlZmluZSAnX3JwbWRpciAiICsgcGtnd3JpdGVkaXIgKyAiJyIKLSAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRkaXIgIiArIGQuZ2V0VmFyKCdTJykgKyAiJyIKKyAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRkaXIgIiArIGQuZ2V0VmFyKCdCJykgKyAiJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRfbmFtZV9mbXQgJSV7TkFNRX0tJSV7VkVSU0lPTn0tJSV7UkVMRUFTRX0uJSV7QVJDSH0ucnBtJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfdXNlX2ludGVybmFsX2RlcGVuZGVuY3lfZ2VuZXJhdG9yIDAnIgogICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19iaW5hcmllc19pbl9ub2FyY2hfcGFja2FnZXNfdGVybWluYXRlX2J1aWxkIDAnIgogICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19idWlsZF9pZF9saW5rcyBub25lJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYmluYXJ5X3BheWxvYWQgdzZULnh6ZGlvJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfc291cmNlX3BheWxvYWQgdzZULnh6ZGlvJyIKKyAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdjbGFtcF9tdGltZV90b19zb3VyY2VfZGF0ZV9lcG9jaCAxJyIKKyAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRob3N0IHJlcHJvZHVjaWJsZSciCiAgICAgaWYgcGVyZmlsZWRlcHM6CiAgICAgICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19fZmluZF9yZXF1aXJlcyAiICsgb3V0ZGVwZW5kcyArICInIgogICAgICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfX2ZpbmRfcHJvdmlkZXMgIiArIG91dHByb3ZpZGVzICsgIiciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcwppbmRleCBlZWEyZTViLi5kNTQwZDQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWdyb3VwLmJiY2xhc3MKQEAgLTU2LDMgKzU2LDQgQEAKICAgICAgICAgYmIuZmF0YWwoIlBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIHNldHRpbmcgb2YgVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciAoJXMpIG1hdGNoZXMgdGhlIGVudHJpZXMgZW5hYmxlZCBpbiBESVNUUk9fRkVBVFVSRVMiICUgaW5pdG1hbikKIH0KIAorQ1ZFX1BST0RVQ1QgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCmluZGV4IDhmMzVjYjQuLjJmYzY5MjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKQEAgLTI2LDkgKzI2LDIzIEBACiAKIHB5dGhvbiBwYXRjaF90YXNrX3BhdGNoX3ByZWZ1bmMoKSB7CiAgICAgIyBQcmVmdW5jIGZvciBkb19wYXRjaAotICAgIGZ1bmMgPSBkLmdldFZhcignQkJfUlVOVEFTSycpCiAgICAgc3Jjc3ViZGlyID0gZC5nZXRWYXIoJ1MnKQogCisgICAgd29ya2RpciA9IG9zLnBhdGguYWJzcGF0aChkLmdldFZhcignV09SS0RJUicpKQorICAgIHRlc3RzcmNkaXIgPSBvcy5wYXRoLmFic3BhdGgoc3Jjc3ViZGlyKQorICAgIGlmICh0ZXN0c3JjZGlyICsgb3Muc2VwKS5zdGFydHN3aXRoKHdvcmtkaXIgKyBvcy5zZXApOgorICAgICAgICAjIERvdWJsZS1jaGVjayB0aGF0IGVpdGhlciB3b3JrZGlyIG9yIFMgb3Igc29tZSBkaXJlY3RvcnkgaW4tYmV0d2VlbiBpcyBhIGdpdCByZXBvc2l0b3J5CisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgd2hpbGUgdGVzdHNyY2RpciAhPSAnLyc6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVzdHNyY2RpciwgJy5naXQnKSk6CisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHRlc3RzcmNkaXIgPT0gd29ya2RpcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdGVzdHNyY2RpciA9IG9zLnBhdGguZGlybmFtZSh0ZXN0c3JjZGlyKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBiYi5mYXRhbCgnUEFUQ0hUT09MID0gImdpdCIgc2V0IGZvciBzb3VyY2UgdHJlZSB0aGF0IGlzIG5vdCBhIGdpdCByZXBvc2l0b3J5LiBSZWZ1c2luZyB0byBjb250aW51ZSBhcyB0aGF0IG1heSByZXN1bHQgaW4gY29tbWl0cyBiZWluZyBtYWRlIGluIHlvdXIgbWV0YWRhdGEgcmVwb3NpdG9yeS4nKQorCiAgICAgcGF0Y2hkaXIgPSBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCAncGF0Y2hlcycpCiAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0Y2hkaXIpOgogICAgICAgICBpZiBvcy5saXN0ZGlyKHBhdGNoZGlyKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCAzMGZjZWZjLi4zZGEzNTA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCkBAIC0yMCw2ICsyMCw5IEBACiBTREtJTUFHRV9GRUFUVVJFUyA/Pz0gImRldi1wa2dzIGRiZy1wa2dzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXBpLWRvY3VtZW50YXRpb24nLCAnZG9jLXBrZ3MnLCAnJywgZCl9IgogU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZID0gJyR7QGNvbXBsZW1lbnRhcnlfZ2xvYnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgZCl9JwogCitQQUNLQUdFX0FSQ0hTX2FwcGVuZF90YXNrLXBvcHVsYXRlLXNkayA9ICIgc2RrLXByb3ZpZGVzLWR1bW15LXRhcmdldCIKK1NES19QQUNLQUdFX0FSQ0hTICs9ICJzZGstcHJvdmlkZXMtZHVtbXktJHtTREtQS0dTVUZGSVh9IgorCiAjIExpc3Qgb2YgbG9jYWxlcyB0byBpbnN0YWxsLCBvciAiYWxsIiBmb3IgYWxsIG9mIHRoZW0sIG9yIHVuc2V0IGZvciBub25lLgogU0RLSU1BR0VfTElOR1VBUyA/PSAiYWxsIgogCkBAIC0zNywxMiArNDAsMTMgQEAKIAogVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAibmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCBwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKIFRPT0xDSEFJTl9IT1NUX1RBU0tfQVRURU1QVE9OTFkgPz0gIiIKLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0Jyl9IgorVE9PTENIQUlOX1RBUkdFVF9UQVNLID89ICIke0BtdWx0aWxpYl9wa2dfZXh0ZW5kKGQsICdwYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLXNkay10YXJnZXQnKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke0BtdWx0aWxpYl9wa2dfZXh0ZW5kKGQsICd0YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15Jyl9IgogVE9PTENIQUlOX1RBUkdFVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCiBUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtTREtfTkFNRX0tdG9vbGNoYWluLSR7U0RLX1ZFUlNJT059IgogCiBTREtfUkRFUEVORFMgPSAiJHtUT09MQ0hBSU5fVEFSR0VUX1RBU0t9ICR7VE9PTENIQUlOX0hPU1RfVEFTS30iCi1TREtfREVQRU5EUyA9ICJ2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZSBwaXh6LW5hdGl2ZSBjcm9zcy1sb2NhbGVkZWYtbmF0aXZlIgorU0RLX0RFUEVORFMgPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmUgeHotbmF0aXZlIGNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgJHtNTFBSRUZJWH1xZW11d3JhcHBlci1jcm9zcyIKIFNES19ERVBFTkRTX2FwcGVuZF9saWJjLWdsaWJjID0gIiBuYXRpdmVzZGstZ2xpYmMtbG9jYWxlIgogCiAjIFdlIHdhbnQgdGhlIE1VTFRJQVJDSF9UQVJHRVRfU1lTIHRvIHBvaW50IHRvIHRoZSBUVU5FX1BLR0FSQ0gsIG5vdCBQQUNLQUdFX0FSQ0ggYXMgaXQKQEAgLTE1Miw3ICsxNTYsNyBAQAogZG9fcG9wdWxhdGVfc2RrW2NsZWFuZGlyc10gPSAiJHtTREtERVBMT1lESVJ9IgogZG9fcG9wdWxhdGVfc2RrW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U0RLREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka1tzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtTREtfREVQTE9ZfSIKLWRvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9JHtTREtNQUNISU5FfSIKK2RvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkVfQVJDSH0ke1NES01BQ0hJTkV9IgogCiBmYWtlcm9vdCBjcmVhdGVfc2RrX2ZpbGVzKCkgewogCWNwICR7Q09SRUJBU0V9L3NjcmlwdHMvcmVsb2NhdGVfc2RrLnB5ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8KQEAgLTIyMSw3ICsyMjUsNyBAQAogCSMgUGFja2FnZSBpdCB1cAogCW1rZGlyIC1wICR7U0RLREVQTE9ZRElSfQogCWNkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfQotCXRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCBwaXh6ID4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci54egorCXRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCB4eiAtVCAwID4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci54egogfQogCiBmYWtlcm9vdCBjcmVhdGVfc2hhcigpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKaW5kZXggMmRkMjEyMy4uZTFiYmE0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKQEAgLTE2MiwxOCArMTYyLDE2IEBACiAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgb3MucmVuYW1lKHNka2Jhc2VwYXRoLCB0ZW1wX3Nka2Jhc2VwYXRoKQorICAgICAgICBjbWRwcmVmaXggPSAnLiAlcyAuOyAnICUgY29uZl9pbml0cGF0aAorICAgICAgICBsb2dmaWxlID0gZC5nZXRWYXIoJ1dPUktESVInKSArICcvdGFza2xpc3RfYmJfbG9nLnR4dCcKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY21kcHJlZml4ID0gJy4gJXMgLjsgJyAlIGNvbmZfaW5pdHBhdGgKLSAgICAgICAgICAgIGxvZ2ZpbGUgPSBkLmdldFZhcignV09SS0RJUicpICsgJy90YXNrbGlzdF9iYl9sb2cudHh0JwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9lLmNvcHlfYnVpbGRzeXN0ZW0uY2hlY2tfc3N0YXRlX3Rhc2tfbGlzdChkLCBnZXRfc2RrX2luc3RhbGxfdGFyZ2V0cyhkKSwgdGFza2xpc3RmaWxlLCBjbWRwcmVmaXg9Y21kcHJlZml4LCBjd2Q9dGVtcF9zZGtiYXNlcGF0aCwgbG9nZmlsZT1sb2dmaWxlKQotICAgICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIGdlbmVyYXRlIGZpbHRlcmVkIHRhc2sgbGlzdCBmb3IgZXh0ZW5zaWJsZSBTREs6XG4lcycgJSAgZS5zdGRvdXQucnN0cmlwKCkKLSAgICAgICAgICAgICAgICBpZiAnYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCcgaW4gZS5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyArPSAnXG4tLS0tLS0tLS0tXG5cbk5PVEU6ICJhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkIiBlcnJvcnMgaW5kaWNhdGUgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IG1pc3Npbmcgc3N0YXRlIGFydGlmYWN0cyB0aGF0IHdlcmUgbGlrZWx5IHByb2R1Y2VkIGluIGVhcmxpZXIgYnVpbGRzLCBidXQgaGF2ZSBiZWVuIHN1YnNlcXVlbnRseSBkZWxldGVkIGZvciBzb21lIHJlYXNvbi5cbicKLSAgICAgICAgICAgICAgICBiYi5mYXRhbChtc2cpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW5hbWUodGVtcF9zZGtiYXNlcGF0aCwgc2RrYmFzZXBhdGgpCisgICAgICAgICAgICBvZS5jb3B5X2J1aWxkc3lzdGVtLmNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoZCwgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCksIHRhc2tsaXN0ZmlsZSwgY21kcHJlZml4PWNtZHByZWZpeCwgY3dkPXRlbXBfc2RrYmFzZXBhdGgsIGxvZ2ZpbGU9bG9nZmlsZSkKKyAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gZ2VuZXJhdGUgZmlsdGVyZWQgdGFzayBsaXN0IGZvciBleHRlbnNpYmxlIFNESzpcbiVzJyAlICBlLnN0ZG91dC5yc3RyaXAoKQorICAgICAgICAgICAgaWYgJ2F0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseSBhbmQgc2hvdWxkIGhhdmUgYmVlbiBzZXRzY2VuZWQnIGluIGUuc3Rkb3V0OgorICAgICAgICAgICAgICAgIG1zZyArPSAnXG4tLS0tLS0tLS0tXG5cbk5PVEU6ICJhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkIiBlcnJvcnMgaW5kaWNhdGUgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IG1pc3Npbmcgc3N0YXRlIGFydGlmYWN0cyB0aGF0IHdlcmUgbGlrZWx5IHByb2R1Y2VkIGluIGVhcmxpZXIgYnVpbGRzLCBidXQgaGF2ZSBiZWVuIHN1YnNlcXVlbnRseSBkZWxldGVkIGZvciBzb21lIHJlYXNvbi5cbicKKyAgICAgICAgICAgIGJiLmZhdGFsKG1zZykKKyAgICAgICAgb3MucmVuYW1lKHRlbXBfc2RrYmFzZXBhdGgsIHNka2Jhc2VwYXRoKQogICAgICAgICAjIENsZWFuIG91dCByZXNpZHVlIG9mIHJ1bm5pbmcgYml0YmFrZSwgd2hpY2ggY2hlY2tfc3N0YXRlX3Rhc2tfbGlzdCgpCiAgICAgICAgICMgd2lsbCBlZmZlY3RpdmVseSBkbwogICAgICAgICBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKQpAQCAtNTM1LDcgKzUzMyw3IEBACiAKIGluc3RhbGxfdG9vbHMoKSB7CiAJaW5zdGFsbCAtZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9Ci0Jc2NyaXB0cz0iZGV2dG9vbCByZWNpcGV0b29sIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3QgcnVucWVtdSoiCisJc2NyaXB0cz0iZGV2dG9vbCByZWNpcGV0b29sIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3QgcnVucWVtdSogd2ljIgogCWZvciBzY3JpcHQgaW4gJHNjcmlwdHM7IGRvCiAJCWZvciBzY3JpcHRmbiBpbiBgZmluZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vJHtzY3JpcHRyZWxwYXRofSAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtbmFtZSAiJHNjcmlwdCJgOyBkbwogCQkJbG5yICR7c2NyaXB0Zm59ICR7U0RLX09VVFBVVH0vJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30vYGJhc2VuYW1lICRzY3JpcHRmbmAKQEAgLTcyNCw2ICs3MjIsNiBAQAogZG9fcG9wdWxhdGVfc2RrX2V4dFtjbGVhbmRpcnNdID0gIiR7U0RLRVhUREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka19leHRbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtTREtFWFRERVBMT1lESVJ9IgogZG9fcG9wdWxhdGVfc2RrX2V4dFtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtTREtfREVQTE9ZfSIKLWRvX3BvcHVsYXRlX3Nka19leHRbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSIKK2RvX3BvcHVsYXRlX3Nka19leHRbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBhZGR0YXNrIHBvcHVsYXRlX3Nka19leHQgYWZ0ZXIgZG9fc2RrX2RlcGVuZHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHRlc3QtcGVybC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wdGVzdC1wZXJsLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiYzQwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHRlc3QtcGVybC5iYmNsYXNzCkBAIC0wLDAgKzEsMzAgQEAKK2luaGVyaXQgcHRlc3QKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7Q09SRUJBU0V9L21ldGEvZmlsZXM6IgorCitTUkNfVVJJICs9ICJmaWxlOi8vcHRlc3QtcGVybC9ydW4tcHRlc3QiCisKK2RvX2luc3RhbGxfcHRlc3RfcGVybCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAhIC1mICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdCBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3B0ZXN0LXBlcmwvcnVuLXB0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisJZmkKKwljcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworRklMRVNfJHtQTn0tcHRlc3RfcHJlcGVuZCA9ICIke1BURVNUX1BBVEh9L3QvKiAke1BURVNUX1BBVEh9L3J1bi1wdGVzdCAiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X3ByZXBlbmQgPSAicGVybCAiCisKK2FkZHRhc2sgaW5zdGFsbF9wdGVzdF9wZXJsIGFmdGVyIGRvX2luc3RhbGxfcHRlc3RfYmFzZSBiZWZvcmUgZG9fcGFja2FnZQorCitweXRob24gKCkgeworICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywgZCk6CisgICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW5zdGFsbF9wdGVzdF9wZXJsJywgJ2Zha2Vyb290JywgJzEnKQorCisgICAgIyBSZW1vdmUgYWxsICcqcHRlc3RfcGVybCcgdGFza3Mgd2hlbiBwdGVzdCBpcyBub3QgZW5hYmxlZAorICAgIGlmIG5vdChkLmdldFZhcignUFRFU1RfRU5BQkxFRCcpID09ICIxIik6CisgICAgICAgIGZvciBpIGluIFsnZG9faW5zdGFsbF9wdGVzdF9wZXJsJ106CisgICAgICAgICAgICBiYi5idWlsZC5kZWx0YXNrKGksIGQpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGY4MDUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwpAQCAtMCwwICsxLDE1MCBAQAorIworIyByZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcworIworIyBUaGlzIGJiY2xhc3MgaXMgbWFpbmx5IHJlc3BvbnNpYmxlIHRvIGRldGVybWluZSBTT1VSQ0VfREFURV9FUE9DSCBvbiBhIHBlciByZWNpcGUgYmFzZS4KKyMgV2UgbmVlZCB0byBzZXQgYSByZWNpcGUgc3BlY2lmaWMgU09VUkNFX0RBVEVfRVBPQ0ggaW4gZWFjaCByZWNpcGUgZW52aXJvbm1lbnQgZm9yIHZhcmlvdXMgdGFza3MuCisjIE9uZSB3YXkgd291bGQgYmUgdG8gbW9kaWZ5IGFsbCByZWNpcGVzIG9uZS1ieS1vbmUgdG8gc3BlY2lmeSBTT1VSQ0VfREFURV9FUE9DSCBleHBsaWNpdGx5LCAKKyMgYnV0IHRoYXQgaXMgbm90IHJlYWxpc3RpYyBhcyB0aGVyZSBhcmUgaHVuZHJlZHMgKHByb2JhYmx5IHRob3VzYW5kcykgb2YgcmVjaXBlcyBpbiB2YXJpb3VzIG1ldGEtbGF5ZXJzLgorIyBUaGVyZWZvcmUgd2UgZG8gaXQgdGhpcyBjbGFzcy4gCisjIEFmdGVyIHNvdXJjZXMgYXJlIHVucGFja2VkIGJ1dCBiZWZvcmUgdGhleSBhcmUgcGF0Y2hlZCwgd2UgdHJ5IHRvIGRldGVybWluZSB0aGUgdmFsdWUgZm9yIFNPVVJDRV9EQVRFX0VQT0NILgorIworIyBUaGVyZSBhcmUgNCB3YXlzIHRvIGRldGVybWluZSBTT1VSQ0VfREFURV9FUE9DSDoKKyMKKyMgMS4gVXNlIHZhbHVlIGZyb20gX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQgZmlsZSBpZiB0aGlzIGZpbGUgZXhpc3RzLiAKKyMgICAgVGhpcyBmaWxlIHdhcyBtb3N0IGxpa2VseSBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBidWlsZCBieSBvbmUgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzIDIsMyw0LiAKKyMgICAgSW4gcHJpbmNpcGxlLCBpdCBjb3VsZCBhY3R1YWxseSBwcm92aWRlZCBieSBhIHJlY2lwZSB2aWEgU1JDX1VSSQorIworIyBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgZmlyc3QgdHJ5IHRvIGRldGVybWluZSB0aGUgdmFsdWUgZm9yIFNPVVJDRV9EQVRFX0VQT0NIOgorIworIyAyLiBJZiB3ZSBkZXRlY3RlZCBhIGZvbGRlciAuZ2l0LCB1c2UgLmdpdCBsYXN0IGNvbW1pdCBkYXRlIHRpbWVzdGFtcCwgYXMgZ2l0IGRvZXMgbm90IGFsbG93IGNoZWNraW5nIG91dAorIyAgICBmaWxlcyBhbmQgcHJlc2VydmluZyB0aGVpciB0aW1lc3RhbXBzLgorIworIyAzLiBVc2UgdGhlIG10aW1lIG9mICJrbm93biIgZmlsZXMgc3VjaCBhcyBORVdTLCBDSEFOR0xFTE9HLCAuLi4KKyMgICAgVGhpcyB3aWxsIHdvcmsgZmluZSBmb3IgYW55IHdlbGwga2VwdCByZXBvc2l0b3J5IGRpc3RyaWJ1dGVkIHZpYSB0YXJiYWxscy4KKyMKKyMgNC4gSWYgdGhlIGFib3ZlIHN0ZXBzIGZhaWwsIHdlIG5lZWQgdG8gY2hlY2sgYWxsIHBhY2thZ2Ugc291cmNlIGZpbGVzIGFuZCB1c2UgdGhlIHlvdW5nZXN0IGZpbGUgb2YgdGhlIHNvdXJjZSB0cmVlLgorIworIyBPbmNlIHRoZSB2YWx1ZSBvZiBTT1VSQ0VfREFURV9FUE9DSCBpcyBkZXRlcm1pbmVkLCBpdCBpcyBzdG9yZWQgaW4gdGhlIHJlY2lwZSAke1dPUktESVJ9L3NvdXJjZV9kYXRlX2Vwb2NoIGZvbGRlcgorIyBpbiBhIHRleHQgZmlsZSAiX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQnLiBJZiB0aGlzIGZpbGUgaXMgZm91bmQgYnkgb3RoZXIgcmVjaXBlIHRhc2ssIHRoZSB2YWx1ZSBpcyBleHBvcnRlZCBpbgorIyB0aGUgU09VUkNFX0RBVEVfRVBPQ0ggdmFyaWFibGUgaW4gdGhlIHRhc2sgZW52aXJvbm1lbnQuIFRoaXMgaXMgZG9uZSBpbiBhbiBhbm9ueW1vdXMgcHl0aG9uIGZ1bmN0aW9uLCAKKyMgc28gU09VUkNFX0RBVEVfRVBPQ0ggaXMgZ3VhcmFudGVlZCB0byBleGlzdCBmb3IgYWxsIHRhc2tzIHRoZSBtYXkgdXNlIGl0IChkb19jb25maWd1cmUsIGRvX2NvbXBpbGUsIGRvX3BhY2thZ2UsIC4uLikKKworQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTID8/PSAnMScKK2luaGVyaXQgJHtAb2UudXRpbHMuaWZlbHNlKGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSA9PSAnMScsICdyZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlJywgJycpfQorCitTREVfRElSID0iJHtXT1JLRElSfS9zb3VyY2UtZGF0ZS1lcG9jaCIKK1NERV9GSUxFID0gIiR7U0RFX0RJUn0vX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQiCisKK1NTVEFURVRBU0tTICs9ICJkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2giCisKK2RvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaCAoKSB7CisgICAgZWNobyAiRGVwbG95aW5nIFNERSB0byAke1NERV9ESVJ9LiIKK30KKworcHl0aG9uIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaF9zZXRzY2VuZSAoKSB7CisgICAgc3N0YXRlX3NldHNjZW5lKGQpCit9CisKK2RvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaFtkaXJzXSA9ICIke1NERV9ESVJ9IgorZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7U0RFX0RJUn0iCithZGR0YXNrIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaF9zZXRzY2VuZQorYWRkdGFzayBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggYmVmb3JlIGRvX2NvbmZpZ3VyZSBhZnRlciBkb19wYXRjaAorCitkZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2tub3duX2ZpbGVzKGQsIHBhdGgpOgorICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAorICAgIGtub3duX2ZpbGVzID0gc2V0KFsiTkVXUyIsICJDaGFuZ2VMb2ciLCAiQ2hhbmdlbG9nIiwgIkNIQU5HRVMiXSkKKyAgICBmb3IgZmlsZSBpbiBrbm93bl9maWxlczoKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCxmaWxlKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlcGF0aCk6CisgICAgICAgICAgICBtdGltZSA9IGludChvcy5wYXRoLmdldG10aW1lKGZpbGVwYXRoKSkKKyAgICAgICAgICAgICMgVGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgImtub3duX2ZpbGUiIHByZXNlbnQsIGlmIHNvLCB1c2UgdGhlIHlvdW5nZXN0IG9uZQorICAgICAgICAgICAgaWYgbXRpbWUgPiBzb3VyY2VfZGF0ZV9lcG9jaDoKKyAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IG10aW1lCisgICAgcmV0dXJuIHNvdXJjZV9kYXRlX2Vwb2NoCisKK2RlZiBmaW5kX2dpdF9mb2xkZXIocGF0aCk6CisgICAgZXhjbHVkZSA9IHNldChbInRlbXAiLCAibGljZW5zZS1kZXN0ZGlyIiwgInBhdGNoZXMiLCAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIiwgInJlY2lwZS1zeXNyb290IiwgInBzZXVkbyIsICJidWlsZCIsICJpbWFnZSIsICJzeXNyb290LWRlc3RkaXIiXSkKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoLCB0b3Bkb3duPVRydWUpOgorICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlXQorICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICNiYi53YXJuKCJmb3VuZCByb290OiVzIiAlIChzdHIocm9vdCkpKQorICAgICAgICAgICAgcmV0dXJuIHJvb3QKKyAgICAgCitkZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2dpdChkLCBwYXRoKToKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICBpZiAiZ2l0Oi8vIiBpbiBkLmdldFZhcignU1JDX1VSSScpOgorICAgICAgICBnaXRwYXRoID0gZmluZF9naXRfZm9sZGVyKGQuZ2V0VmFyKCdXT1JLRElSJykpCisgICAgICAgIGlmIGdpdHBhdGggIT0gTm9uZToKKyAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihnaXRwYXRoLCIuZ2l0IikpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBpbnQoc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCdsb2cnLCctMScsJy0tcHJldHR5PSVjdCddLCBjd2Q9cGF0aCkpCisgICAgICAgICAgICAgICAgICAgICNiYi53YXJuKCJKQiAqKiogZ2l0cGF0aDolcyBzZGU6ICVkIiAlIChnaXRwYXRoLHNvdXJjZV9kYXRlX2Vwb2NoKSkKKyAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgImdpdCByZXBvIHBhdGg6JXMgc2RlOiAlZCIgJSAoZ2l0cGF0aCxzb3VyY2VfZGF0ZV9lcG9jaCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGdyZXBleGM6CisgICAgICAgICAgICAgICAgICAgICNiYi53YXJuKCAiRXhwZWN0ZWQgZ2l0IHJlcG9zaXRvcnkgbm90IGZvdW5kLCAocGF0aDogJXMpIGVycm9yOiVkIiAlIChnaXRwYXRoLCBncmVwZXhjLnJldHVybmNvZGUpKQorICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiRXhwZWN0ZWQgZ2l0IHJlcG9zaXRvcnkgbm90IGZvdW5kLCAocGF0aDogJXMpIGVycm9yOiVkIiAlIChnaXRwYXRoLCBncmVwZXhjLnJldHVybmNvZGUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBmb3IgcGF0aDolcyIgJSAocGF0aCkpCisgICAgcmV0dXJuIHNvdXJjZV9kYXRlX2Vwb2NoCisgICAgICAgICAgICAKK3B5dGhvbiBkb19jcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAoKSB7CisgICAgcGF0aCA9IGQuZ2V0VmFyKCdTJykKKyAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgYmIud2FybigiVW5hYmxlIHRvIGRldGVybWluZSBzb3VyY2VfZGF0ZV9lcG9jaCEgcGF0aDolcyIgJSBwYXRoKQorICAgICAgICByZXR1cm4KKworICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKKyAgICAgICAgYmIuZGVidWcoMSwgIiBwYXRoOiAlcyByZXVzaW5nIF9fc291cmNlX2RhdGVfZXBvY2gudHh0IiAlIGVwb2NoZmlsZSkKKyAgICAgICAgcmV0dXJuCisgCisgICAgIyBUcnkgdG8gZGV0ZWN0L2ZpbmQgYSBnaXQgcmVwb3NpdG9yeQorICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2dpdChkLCBwYXRoKQorICAgIGlmIHNvdXJjZV9kYXRlX2Vwb2NoID09IDA6CisgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2tub3duX2ZpbGVzKGQsIHBhdGgpCisgICAgaWYgc291cmNlX2RhdGVfZXBvY2ggPT0gMDoKKyAgICAgICAgIyBEbyBpdCB0aGUgaGFyZCB3YXk6IGNoZWNrIGFsbCBmaWxlcyBhbmQgZmluZCB0aGUgeW91bmdlc3Qgb25lLi4uCisgICAgICAgIGZpbGVuYW1lX2RiZyA9IE5vbmUKKyAgICAgICAgZXhjbHVkZSA9IHNldChbInRlbXAiLCAibGljZW5zZS1kZXN0ZGlyIiwgInBhdGNoZXMiLCAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIiwgInJlY2lwZS1zeXNyb290IiwgInBzZXVkbyIsICJidWlsZCIsICJpbWFnZSIsICJzeXNyb290LWRlc3RkaXIiXSkKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCwgdG9wZG93bj1UcnVlKToKKyAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gZmlsZXMgaWYgbm90IGZbMF0gPT0gJy4nXQorICAgICAgICAgICAgZGlyc1s6XSA9IFtkIGZvciBkIGluIGRpcnMgaWYgZCBub3QgaW4gZXhjbHVkZV0KKworICAgICAgICAgICAgZm9yIGZuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIGZuYW1lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbXRpbWUgPSBpbnQob3MucGF0aC5nZXRtdGltZShmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG10aW1lID0gMAorICAgICAgICAgICAgICAgIGlmIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gbXRpbWUKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfZGJnID0gZmlsZW5hbWUKKworICAgICAgICBpZiBmaWxlbmFtZV9kYmcgIT0gTm9uZToKKyAgICAgICAgICAgIGJiLmRlYnVnKDEsIiBTT1VSQ0VfREFURV9FUE9DSCAlZCBkZXJpdmVkIGZyb206ICVzIiAlIChzb3VyY2VfZGF0ZV9lcG9jaCwgZmlsZW5hbWVfZGJnKSkKKworICAgICAgICBpZiBzb3VyY2VfZGF0ZV9lcG9jaCA9PSAwOgorICAgICAgICAgICAgIyBlbXB0eSBmb2xkZXIsIG5vdCBhIHNpbmdsZSBmaWxlIC4uLgorICAgICAgICAgICAgIyBrZXJuZWwgc291cmNlIGRvX3VucGFjayBpcyBzcGVjaWFsIGNhc2VkCisgICAgICAgICAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCk6CisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlVuYWJsZSB0byBkZXRlcm1pbmUgc291cmNlX2RhdGVfZXBvY2ghIHBhdGg6JXMiICUgcGF0aCkKKworICAgIGJiLnV0aWxzLm1rZGlyaGllcihkLmdldFZhcignU0RFX0RJUicpKQorICAgIHdpdGggb3BlbihlcG9jaGZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZShzdHIoc291cmNlX2RhdGVfZXBvY2gpKQorfQorCitCQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIlNPVVJDRV9EQVRFX0VQT0NIIgorCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSA9PSAnMSc6CisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fdW5wYWNrIiwgInBvc3RmdW5jcyIsICIgZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wIikKKyAgICAgICAgZXBvY2hmaWxlID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSAiMCIKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKKyAgICAgICAgICAgIHdpdGggb3BlbihlcG9jaGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGYucmVhZCgpCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAic291cmNlX2RhdGVfZXBvY2ggc3RhbXAgZm91bmQgLS0tPiBzdGFtcCAlcyIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKKyAgICAgICAgZC5zZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJywgc291cmNlX2RhdGVfZXBvY2gpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNjBkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwpAQCAtMCwwICsxLDEwIEBACisjIFNldHVwIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIHJlcHJvZHVjaWJsZSBidWlsZHMuCisKK0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyA9ICIxIgorCitleHBvcnQgUFlUSE9OSEFTSFNFRUQgPSAiMCIKK2V4cG9ydCBQRVJMX0hBU0hfU0VFRCA9ICIwIgorZXhwb3J0IFNPVVJDRV9EQVRFX0VQT0NIID8/PSAiMTUyMDU5ODg5NiIKKworUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMgPz89ICIxNTIwNTk4ODk2IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCmluZGV4IGE0ZTYyN2YuLjU1MjIyMDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCkBAIC01Niw2ICs1Niw3IEBACiBTT1JUX1BBU1NXRF9QT1NUUFJPQ0VTU19DT01NQU5EID8/PSAiIHNvcnRfcGFzc3dkOyAiCiBweXRob24gKCkgewogICAgIGQuYXBwZW5kVmFyKCdST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCcsICcke1NPUlRfUEFTU1dEX1BPU1RQUk9DRVNTX0NPTU1BTkR9JykKKyAgICBkLmFwcGVuZFZhcignUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCAncm9vdGZzX3JlcHJvZHVjaWJsZTsnKQogfQogCiBzeXN0ZW1kX2NyZWF0ZV91c2VycyAoKSB7CkBAIC0yNTYsMTAgKzI1NywxNyBAQAogICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUobWFuaWZlc3RfbmFtZSksIG1hbmlmZXN0X2xpbmspCiB9CiAKLSMgQ2FuIGJlIHVzZSB0byBjcmVhdGUgL2V0Yy90aW1lc3RhbXAgZHVyaW5nIGltYWdlIGNvbnN0cnVjdGlvbiB0byBnaXZlIGEgcmVhc29uYWJseQorIyBDYW4gYmUgdXNlZCB0byBjcmVhdGUgL2V0Yy90aW1lc3RhbXAgZHVyaW5nIGltYWdlIGNvbnN0cnVjdGlvbiB0byBnaXZlIGEgcmVhc29uYWJseQogIyBzYW5lIGRlZmF1bHQgdGltZSBzZXR0aW5nCiByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCAoKSB7Ci0JZGF0ZSAtdSArJTRZJTJtJTJkJTJIJTJNJTJTID4ke0lNQUdFX1JPT1RGU30vZXRjL3RpbWVzdGFtcAorCWlmIFsgIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9IiAhPSAiIiBdOyB0aGVuCisJCSMgQ29udmVydCBVVEMgaW50byAlNFklMm0lMmQlMkglMk0lMlMKKwkJc2Zvcm1hdHRlZD1gZGF0ZSAtdSAtZCBAJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30gKyU0WSUybSUyZCUySCUyTSUyU2AKKwllbHNlCisJCXNmb3JtYXR0ZWQ9YGRhdGUgLXUgKyU0WSUybSUyZCUySCUyTSUyU2AKKwlmaQorCWVjaG8gJHNmb3JtYXR0ZWQgPiAke0lNQUdFX1JPT1RGU30vZXRjL3RpbWVzdGFtcAorCWJibm90ZSAicm9vdGZzX3VwZGF0ZV90aW1lc3RhbXA6IHNldCAvZXRjL3RpbWVzdGFtcCB0byAkc2Zvcm1hdHRlZCIKIH0KIAogIyBQcmV2ZW50IFggZnJvbSBiZWluZyBzdGFydGVkCkBAIC0zMjgsMyArMzM2LDE2IEBACiAgICAgICAgICAgICBpZiAndW5zYXRpc2ZpZWQgcmVjb21tZW5kYXRpb24gZm9yJyBpbiBsaW5lOgogICAgICAgICAgICAgICAgIGJiLndhcm4oJ1tsb2dfY2hlY2tdICVzOiAlcycgJSAoZC5nZXRWYXIoJ1BOJyksIGxpbmUpKQogfQorCisjIFBlcmZvcm0gYW55IGFkZGl0aW9uYWwgYWRqdXN0bWVudHMgbmVlZGVkIHRvIG1ha2Ugcm9vdGYgYmluYXJ5IHJlcHJvZHVjaWJsZQorcm9vdGZzX3JlcHJvZHVjaWJsZSAoKSB7CisJaWYgWyAiJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30iICE9ICIiIF07IHRoZW4KKwkJIyBDb252ZXJ0IFVUQyBpbnRvICU0WSUybSUyZCUySCUyTSUyUworCQlzZm9ybWF0dGVkPWBkYXRlIC11IC1kIEAke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfSArJTRZJTJtJTJkJTJIJTJNJTJTYAorCQllY2hvICRzZm9ybWF0dGVkID4gJHtJTUFHRV9ST09URlN9L2V0Yy92ZXJzaW9uCisJCWJibm90ZSAicm9vdGZzX3JlcHJvZHVjaWJsZTogc2V0IC9ldGMvdmVyc2lvbiB0byAkc2Zvcm1hdHRlZCIKKworCQlmaW5kICR7SU1BR0VfUk9PVEZTfS9ldGMvZ2NvbmYgLW5hbWUgJyVnY29uZi54bWwnIC1wcmludDAgfCB4YXJncyAtMHIgXAorCQlzZWQgLWkgLWUgJ3NAXGJtdGltZT0iWzAtOV1bMC05XSoiQG10aW1lPSInJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30nIkBnJworCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcwppbmRleCAxZmViNzk0Li5lMGU1N2NlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKQEAgLTMzNiw3ICszMzYsNyBAQAogICAgIHJldHVybiAiIgogCiBkZWYgZ2V0X2ZpbGVzeXN0ZW1faWQocGF0aCk6Ci0gICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoInN0YXQgLWYgLWMgJyVzJyAlcyIgJSAoIiV0IiwgcGF0aCkpCisgICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoInN0YXQgLWYgLWMgJyVzJyAnJXMnIiAlICgiJXQiLCBwYXRoKSkKICAgICBpZiBzdGF0dXMgPT0gMDoKICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGVsc2U6CkBAIC00NTYsMTMgKzQ1NiwyOSBAQAogCiAgICAgcmV0dXJuIG1lc3NhZ2VzCiAKKyMgUGF0Y2ggYmVmb3JlIDIuNyBjYW4ndCBoYW5kbGUgYWxsIHRoZSBmZWF0dXJlcyBpbiBnaXQtc3R5bGUgZGlmZnMuICBTb21lCisjIHBhdGNoZXMgbWF5IGluY29ycmVjdGx5IGFwcGx5LCBhbmQgb3RoZXJzIHdvbid0IGFwcGx5IGF0IGFsbC4KK2RlZiBjaGVja19wYXRjaF92ZXJzaW9uKHNhbml0eV9kYXRhKToKKyAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KKyAgICBpbXBvcnQgcmUsIHN1YnByb2Nlc3MKKworICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJwYXRjaCIsICItLXZlcnNpb24iXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgdmVyc2lvbiA9IHJlLnNlYXJjaChyIlswLTkuXSsiLCByZXN1bHQuc3BsaXRsaW5lcygpWzBdKS5ncm91cCgpCisgICAgICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMi43Iik6CisgICAgICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiBwYXRjaCBpcyBvbGRlciB0aGFuIDIuNyBhbmQgaGFzIGJ1Z3Mgd2hpY2ggd2lsbCBicmVhayBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiBwYXRjaC5cbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgcGF0Y2ggLS12ZXJzaW9uLCBleGl0IGNvZGUgJWQ6XG4lc1xuIiAlIChlLnJldHVybmNvZGUsIGUub3V0cHV0KQorCiAjIFVucGF0Y2hlZCB2ZXJzaW9ucyBvZiBtYWtlIDMuODIgYXJlIGtub3duIHRvIGJlIGJyb2tlbi4gIFNlZSBHTlUgU2F2YW5uYWggQnVnIDMwNjEyLgogIyBVc2UgYSBtb2RpZmllZCByZXByb2R1Y2VyIGZyb20gaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/MzA2MTIgdG8gdmFsaWRhdGUuCiBkZWYgY2hlY2tfbWFrZV92ZXJzaW9uKHNhbml0eV9kYXRhKToKICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KICAgICBzdGF0dXMsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgibWFrZSAtLXZlcnNpb24iKQogICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIG1ha2UgLS12ZXJzaW9uLCBleGl0IGNvZGUgJXNcbiIgJSBzdGF0dXMKKyAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSBtYWtlIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkXG4iICUgc3RhdHVzCiAgICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzJdCiAgICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pID09IExvb3NlVmVyc2lvbigiMy44MiIpOgogICAgICAgICAjIENvbnN0cnVjdCBhIHRlc3QgZmlsZQpAQCAtNDk4LDcgKzUxNCw3IEBACiAgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCiAgICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoInRhciAtLXZlcnNpb24iKQogICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIHRhciAtLXZlcnNpb24sIGV4aXQgY29kZSAlc1xuIiAlIHN0YXR1cworICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIHRhciAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuIiAlIHN0YXR1cwogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVszXQogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMS4yNCIpOgogICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiB0YXIgaXMgb2xkZXIgdGhhbiAxLjI0IGFuZCBoYXMgYnVncyB3aGljaCB3aWxsIGJyZWFrIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIHRhci5cbiIKQEAgLTUxMSw3ICs1MjcsNyBAQAogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgogICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJnaXQgLS12ZXJzaW9uIDI+IC9kZXYvbnVsbCIpCiAgICAgaWYgc3RhdHVzICE9IDA6Ci0gICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgZ2l0IC0tdmVyc2lvbiwgZXhpdCBjb2RlICVzXG4iICUgc3RhdHVzCisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgZ2l0IC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkXG4iICUgc3RhdHVzCiAgICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzJdCiAgICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCIxLjguMy4xIik6CiAgICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIGdpdCBpcyBvbGRlciB0aGFuIDEuOC4zLjEgYW5kIGhhcyBidWdzIHdoaWNoIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgZ2l0LlxuIgpAQCAtNTk2LDYgKzYxMiw3IEBACiAgICAgaW1wb3J0IHN0YXQKIAogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfbWFrZV92ZXJzaW9uKGQpKQorICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfcGF0Y2hfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3Rhcl92ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfZ2l0X3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19wZXJsX21vZHVsZXMoZCkpCkBAIC02OTIsNyArNzA5LDcgQEAKICAgICB0cnk6CiAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgImVuX1VTLlVURi04IikKICAgICBleGNlcHQgbG9jYWxlLkVycm9yOgotICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdSBzeXN0ZW0gbmVlZHMgdG8gc3VwcG9ydCB0aGUgZW5fVVMuVVRGLTggbG9jYWxlLiIsIGQpCisgICAgICAgIHJhaXNlX3Nhbml0eV9lcnJvcigiWW91ciBzeXN0ZW0gbmVlZHMgdG8gc3VwcG9ydCB0aGUgZW5fVVMuVVRGLTggbG9jYWxlLiIsIGQpCiAKIGRlZiBjaGVja19zYW5pdHlfZXZlcnlidWlsZChzdGF0dXMsIGQpOgogICAgIGltcG9ydCBvcywgc3RhdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCmluZGV4IGYwM2M0ODAuLjdmZjNhMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKQEAgLTQzLDQgKzQzLDQgQEAKIH0KIAogZG9fcGFja2FnZV9pbmRleFtkZXBlbmRzXSArPSAic2lnbmluZy1rZXlzOmRvX2RlcGxveSIKLWRvX3Jvb3Rmc1tkZXBlbmRzXSArPSAic2lnbmluZy1rZXlzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19yb290ZnNbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19wb3B1bGF0ZV9zeXNyb290IGdudXBnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCmluZGV4IDQ5NjFiMDMuLjY0YWU3Y2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKQEAgLTY4LDggKzY4LDQgQEAKIGRvX3BhY2thZ2VfaW5kZXhbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19kZXBsb3kiCiBkb19yb290ZnNbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19wb3B1bGF0ZV9zeXNyb290IgogCi0jIE5ld2VyIHZlcnNpb25zIG9mIGdwZyAoYXQgbGVhc3QgMi4xLjUgYW5kIDIuMi4xKSBoYXZlIGlzc3VlcyB3aGVuIHNpZ25pbmcgb2NjdXJzIGluIHBhcmFsbGVsCi0jIHNvIHVuZm9ydHVuYXRlbHkgdGhlIHNpZ25pbmcgbXVzdCBiZSBkb25lIHNlcmlhbGx5LiBPbmNlIHRoZSB1cHN0cmVhbSBwcm9ibGVtIGlzIGZpeGVkLAotIyB0aGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSByZW1vdmVkIG90aGVyd2lzZSB3ZSBsb29zZSBhbGwgdGhlIGludHJpbnNpYyBwYXJhbGxlbGlzbSBmcm9tCi0jIGJpdGJha2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgY2hlY2sgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMi4KLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW2xvY2tmaWxlc10gKz0gIiR7VE1QRElSfS9ncGcubG9jayIKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiZ251cGctbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCmluZGV4IDFhYWRhNDAuLjg2YmI4NTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKQEAgLTQ3LDYgKzQ3LDggQEAKICAgICAgICAgInBwYyI6ICJlbmRpYW4tYmlnIGJpdC0zMiBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGM2NCI6ICJlbmRpYW4tYmlnIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGM2NGxlIiA6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCisgICAgICAgICJyaXNjdjMyIjogImVuZGlhbi1saXR0bGUgYml0LTMyIHJpc2N2LWNvbW1vbiIsCisgICAgICAgICJyaXNjdjY0IjogImVuZGlhbi1saXR0bGUgYml0LTY0IHJpc2N2LWNvbW1vbiIsCiAgICAgICAgICJzaDMiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgc2gtY29tbW9uIiwKICAgICAgICAgInNoNCI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBzaC1jb21tb24iLAogICAgICAgICAic3BhcmMiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLApAQCAtNTgsNiArNjAsNyBAQAogICAgICAgICAiZGFyd2luOSI6ICJjb21tb24tZGFyd2luIiwKICAgICAgICAgImxpbnV4IjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251IjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAorICAgICAgICAibGludXgtZ251X2lscDMyIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251eDMyIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251bjMyIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251ZWFiaSI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKQEAgLTczLDEyICs3NiwxOCBAQAogICAgIHRhcmdldGluZm8gPSB7CiAgICAgICAgICJhYXJjaDY0LWxpbnV4LWdudSI6ICJhYXJjaDY0LWxpbnV4IiwKICAgICAgICAgImFhcmNoNjRfYmUtbGludXgtZ251IjogImFhcmNoNjRfYmUtbGludXgiLAorICAgICAgICAiYWFyY2g2NC1saW51eC1nbnVfaWxwMzIiOiAiYml0LTMyIGFhcmNoNjRfYmUtbGludXggYXJtLTMyIiwKKyAgICAgICAgImFhcmNoNjRfYmUtbGludXgtZ251X2lscDMyIjogImJpdC0zMiBhYXJjaDY0X2JlLWxpbnV4IGFybS0zMiIsCiAgICAgICAgICJhYXJjaDY0LWxpbnV4LW11c2wiOiAiYWFyY2g2NC1saW51eCIsCiAgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LW11c2wiOiAiYWFyY2g2NF9iZS1saW51eCIsCiAgICAgICAgICJhcm0tbGludXgtZ251ZWFiaSI6ICJhcm0tbGludXgiLAogICAgICAgICAiYXJtLWxpbnV4LW11c2xlYWJpIjogImFybS1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1nbnVlYWJpIjogImFybWViLWxpbnV4IiwKICAgICAgICAgImFybWViLWxpbnV4LW11c2xlYWJpIjogImFybWViLWxpbnV4IiwKKyAgICAgICAgIm1pY3JvYmxhemVlYi1saW51eCIgOiAibWljcm9ibGF6ZS1saW51eCIsCisgICAgICAgICJtaWNyb2JsYXplZWItbGludXgtbXVzbCIgOiAibWljcm9ibGF6ZS1saW51eCIsCisgICAgICAgICJtaWNyb2JsYXplZWwtbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAorICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWlwcy1saW51eC1tdXNsIjogIm1pcHMtbGludXgiLAogICAgICAgICAibWlwc2VsLWxpbnV4LW11c2wiOiAibWlwc2VsLWxpbnV4IiwKICAgICAgICAgIm1pcHM2NC1saW51eC1tdXNsIjogIm1pcHM2NC1saW51eCIsCkBAIC05NSw2ICsxMDQsMTAgQEAKICAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eCI6ICJwb3dlcnBjLWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsIjogInBvd2VycGMtbGludXgiLAorICAgICAgICAicmlzY3YzMi1saW51eCI6ICJyaXNjdjMyLWxpbnV4IiwKKyAgICAgICAgInJpc2N2MzItbGludXgtbXVzbCI6ICJyaXNjdjMyLWxpbnV4IiwKKyAgICAgICAgInJpc2N2NjQtbGludXgiOiAicmlzY3Y2NC1saW51eCIsCisgICAgICAgICJyaXNjdjY0LWxpbnV4LW11c2wiOiAicmlzY3Y2NC1saW51eCIsCiAgICAgICAgICJ4ODZfNjQtY3lnd2luIjogImJpdC02NCIsCiAgICAgICAgICJ4ODZfNjQtZGFyd2luIjogImJpdC02NCIsCiAgICAgICAgICJ4ODZfNjQtZGFyd2luOSI6ICJiaXQtNjQiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggZTMwZmJlMS4uMGIyODg1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCkBAIC0yOCw2ICsyOCw5IEBACiBTU1RBVEVfRFVQV0hJVEVMSVNUID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vICR7REVQTE9ZX0RJUn0vbGljZW5zZXMvICR7REVQTE9ZX0RJUl9SUE19L25vYXJjaC8iCiAjIEF2b2lkIGRvY2Jvb2svc2dtbCBjYXRhbG9nIHdhcm5pbmdzIGZvciBub3cKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19FVENESVJfTkFUSVZFfS9zZ21sICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vc2dtbCIKKyMgc2RrLXByb3ZpZGVzLWR1bW15LW5hdGl2ZXNkayBhbmQgbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teSBvdmVybGFwIGZvciBkaWZmZXJlbnQgU0RLTUFDSElORQorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1JQTX0vc2RrX3Byb3ZpZGVzX2R1bW15X25hdGl2ZXNkay8gJHtERVBMT1lfRElSX0lQS30vc2RrLXByb3ZpZGVzLWR1bW15LW5hdGl2ZXNkay8iCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfUlBNfS9idWlsZHRvb2xzX2R1bW15X25hdGl2ZXNkay8gJHtERVBMT1lfRElSX0lQS30vYnVpbGR0b29scy1kdW1teS1uYXRpdmVzZGsvIgogIyBBcmNoaXZlIHRoZSBzb3VyY2VzIGZvciBtYW55IGFyY2hpdGVjdHVyZXMgaW4gb25lIGRlcGxveSBmb2xkZXIKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9TUkN9IgogCkBAIC00NSw3ICs0OCw4IEBACiAgICAgJHtTREtfQVJDSH1fJHtQQUNLQUdFX0FSQ0h9IFwKICAgICBhbGxhcmNoIFwKICAgICAke1BBQ0tBR0VfQVJDSH0gXAotICAgICR7TUFDSElORX0iCisgICAgJHtQQUNLQUdFX0VYVFJBX0FSQ0hTfSBcCisgICAgJHtNQUNISU5FX0FSQ0h9IgogCiBTU1RBVEVfTUFOTUFDSCA/PSAiJHtTU1RBVEVfUEtHQVJDSH0iCiAKQEAgLTUzOCwxNSArNTQyLDE1IEBACiAgICAgc3RhZ2luZ19ob3N0ID0gZC5nZXRWYXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScpCiAgICAgc3N0YXRlX2J1aWxkZGlyID0gZC5nZXRWYXIoJ1NTVEFURV9CVUlMRERJUicpCiAKKyAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSSE9TVDpnJyIgJSBzdGFnaW5nX2hvc3QKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbicsIGQpOgogICAgICAgICBzc3RhdGVfZ3JlcF9jbWQgPSAiZ3JlcCAtbCAtZSAnJXMnIiAlIChzdGFnaW5nX2hvc3QpCi0gICAgICAgIHNzdGF0ZV9zZWRfY21kID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVJIT1NUOmcnIiAlIChzdGFnaW5nX2hvc3QpCiAgICAgZWxpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nzc2RrJywgZCk6CiAgICAgICAgIHNzdGF0ZV9ncmVwX2NtZCA9ICJncmVwIC1sIC1lICclcycgLWUgJyVzJyIgJSAoc3RhZ2luZ190YXJnZXQsIHN0YWdpbmdfaG9zdCkKLSAgICAgICAgc3N0YXRlX3NlZF9jbWQgPSAic2VkIC1pIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnOyBzOiVzOkZJWE1FU1RBR0lOR0RJUkhPU1Q6ZyciICUgKHN0YWdpbmdfdGFyZ2V0LCBzdGFnaW5nX2hvc3QpCisgICAgICAgIHNzdGF0ZV9zZWRfY21kICs9ICIgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSVEFSR0VUOmcnIiAlIHN0YWdpbmdfdGFyZ2V0CiAgICAgZWxzZToKLSAgICAgICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyVzJyIgJSAoc3RhZ2luZ190YXJnZXQpCi0gICAgICAgIHNzdGF0ZV9zZWRfY21kID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVJUQVJHRVQ6ZyciICUgKHN0YWdpbmdfdGFyZ2V0KQorICAgICAgICBzc3RhdGVfZ3JlcF9jbWQgPSAiZ3JlcCAtbCAtZSAnJXMnIC1lICclcyciICUgKHN0YWdpbmdfdGFyZ2V0LCBzdGFnaW5nX2hvc3QpCisgICAgICAgIHNzdGF0ZV9zZWRfY21kICs9ICIgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSVEFSR0VUOmcnIiAlIHN0YWdpbmdfdGFyZ2V0CiAKICAgICBleHRyYV9zdGFnaW5nX2ZpeG1lcyA9IGQuZ2V0VmFyKCdFWFRSQV9TVEFHSU5HX0ZJWE1FUycpIG9yICcnCiAgICAgZm9yIGZpeG1ldmFyIGluIGV4dHJhX3N0YWdpbmdfZml4bWVzLnNwbGl0KCk6CkBAIC04NDUsNyArODQ5LDcgQEAKICAgICAgICAgICAgICAgICBtaXNzZWQuYXBwZW5kKHRhc2spCiAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTogVW5zdWNjZXNzZnVsIGZldGNoIHRlc3QgZm9yICVzIiAlIHNyY3VyaSkKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcygiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IiwgbGVuKHRhc2tsaXN0KSAtIHRocmVhZF93b3JrZXIudGFza3MucXNpemUoKSksIGQpCisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyhtc2csIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQogCiAgICAgICAgIHRhc2tsaXN0ID0gW10KICAgICAgICAgZm9yIHRhc2sgaW4gcmFuZ2UobGVuKHNxX2ZuKSk6CkBAIC04NTYsNyArODYwLDggQEAKICAgICAgICAgICAgIHRhc2tsaXN0LmFwcGVuZCgodGFzaywgc3N0YXRlZmlsZSkpCiAKICAgICAgICAgaWYgdGFza2xpc3Q6Ci0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKCJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiLCBsZW4odGFza2xpc3QpKSwgZCkKKyAgICAgICAgICAgIG1zZyA9ICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiCisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRhc2tsaXN0KSksIGQpCiAKICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKICAgICAgICAgICAgIG5wcm9jID0gbWluKG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSwgbGVuKHRhc2tsaXN0KSkKQEAgLTg3MCw3ICs4NzUsNyBAQAogICAgICAgICAgICAgcG9vbC53YWl0X2NvbXBsZXRpb24oKQogICAgICAgICAgICAgYmIuZXZlbnQuZGlzYWJsZV90aHJlYWRsb2NrKCkKIAotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQoIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSIpLCBkKQorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQobXNnKSwgZCkKIAogICAgIGluaGVyaXRsaXN0ID0gZC5nZXRWYXIoIklOSEVSSVQiKQogICAgIGlmICJ0b2FzdGVyIiBpbiBpbmhlcml0bGlzdDoKQEAgLTEwMjIsNyArMTAyNyw3IEBACiAgICAgICAgIHdpdGggb3BlbihwcmVzZXJ2ZXN0YW1wZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgcHJlc2VydmVzdGFtcHMgPSBmLnJlYWRsaW5lcygpCiAgICAgc2VlbiA9IFtdCi0gICAgZm9yIGEgaW4gZC5nZXRWYXIoIlNTVEFURV9BUkNIUyIpLnNwbGl0KCk6CisgICAgZm9yIGEgaW4gc29ydGVkKGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkpOgogICAgICAgICB0b3JlbW92ZSA9IFtdCiAgICAgICAgIGkgPSBkLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9pbmRleC0iICsgYSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGkpOgpAQCAtMTAzOCwxOCArMTA0MywyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQoc3RhbXApCiAKICAgICAgICAgaWYgdG9yZW1vdmU6Ci0gICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgJWQgcmVjaXBlcyB0byBiZSByZW1vdmVkIGZyb20gc3lzcm9vdCAlcywgcmVtb3ZpbmcuLi4iICUgKGxlbih0b3JlbW92ZSksIGEpKQorICAgICAgICAgICAgbXNnID0gIlJlbW92aW5nICVkIHJlY2lwZXMgZnJvbSB0aGUgJXMgc3lzcm9vdCIgJSAobGVuKHRvcmVtb3ZlKSwgYSkKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQobXNnLCBsZW4odG9yZW1vdmUpKSwgZCkKIAotICAgICAgICBmb3IgciBpbiB0b3JlbW92ZToKLSAgICAgICAgICAgIChzdGFtcCwgbWFuaWZlc3QsIHdvcmtkaXIpID0gci5zcGxpdCgpCi0gICAgICAgICAgICBmb3IgbSBpbiBnbG9iLmdsb2IobWFuaWZlc3QgKyAiLioiKToKLSAgICAgICAgICAgICAgICBpZiBtLmVuZHN3aXRoKCIucG9zdHJtIik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc3N0YXRlX2NsZWFuX21hbmlmZXN0KG0sIGQpCi0gICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoc3RhbXAgKyAiKiIpCi0gICAgICAgICAgICBpZiByZW1vdmV3b3JrZGlyOgotICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh3b3JrZGlyLCByZWN1cnNlID0gVHJ1ZSkKLSAgICAgICAgICAgIGxpbmVzLnJlbW92ZShyKQorICAgICAgICAgICAgcmVtb3ZlZCA9IDAKKyAgICAgICAgICAgIGZvciByIGluIHRvcmVtb3ZlOgorICAgICAgICAgICAgICAgIChzdGFtcCwgbWFuaWZlc3QsIHdvcmtkaXIpID0gci5zcGxpdCgpCisgICAgICAgICAgICAgICAgZm9yIG0gaW4gZ2xvYi5nbG9iKG1hbmlmZXN0ICsgIi4qIik6CisgICAgICAgICAgICAgICAgICAgIGlmIG0uZW5kc3dpdGgoIi5wb3N0cm0iKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHNzdGF0ZV9jbGVhbl9tYW5pZmVzdChtLCBkKQorICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzdGFtcCArICIqIikKKyAgICAgICAgICAgICAgICBpZiByZW1vdmV3b3JrZGlyOgorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUod29ya2RpciwgcmVjdXJzZSA9IFRydWUpCisgICAgICAgICAgICAgICAgbGluZXMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IHJlbW92ZWQgKyAxCisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MobXNnLCByZW1vdmVkKSwgZCkKKworICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQobXNnKSwgZCkKKwogICAgICAgICB3aXRoIG9wZW4oaSwgInciKSBhcyBmOgogICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgZi53cml0ZShsKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwppbmRleCBjNDc5YmQ5Li4zZmNiYzlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgIGZpeG1lX3BhdGggPSBkLmdldFZhcihmaXhtZXZhcikKICAgICAgICAgY21kICs9ICIgLWUgJ3M6RklYTUVfJXM6JXM6ZyciICUgKGZpeG1ldmFyLCBmaXhtZV9wYXRoKQogICAgIGJiLmRlYnVnKDIsIGNtZCkKLSAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpCisgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKIAogZGVmIHN0YWdpbmdfcG9wdWxhdGVfc3lzcm9vdF9kaXIodGFyZ2V0c3lzcm9vdCwgbmF0aXZlc3lzcm9vdCwgbmF0aXZlLCBkKToKQEAgLTIyOCw3ICsyMjgsNyBAQAogCiAgICAgc3RhZ2luZ19wcm9jZXNzZml4bWUoZml4bWUsIHRhcmdldGRpciwgdGFyZ2V0c3lzcm9vdCwgbmF0aXZlc3lzcm9vdCwgZCkKICAgICBmb3IgcCBpbiBwb3N0aW5zdHM6Ci0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHAsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHAsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogIwogIyBNYW5pZmVzdHMgaGVyZSBhcmUgY29tcGxpY2F0ZWQuIFRoZSBtYWluIHN5c3Jvb3QgYXJlYSBoYXMgdGhlIHVucGFja2VkIHNzdGF0ZQpAQCAtNDcwLDQwICs0NzAsMTQgQEAKIAogICAgICAgICBvcy5zeW1saW5rKGMgKyAiLiIgKyB0YXNraGFzaCwgZGVwZGlyICsgIi8iICsgYykKIAotICAgICAgICBkMiA9IGQKLSAgICAgICAgZGVzdHN5c3Jvb3QgPSByZWNpcGVzeXNyb290Ci0gICAgICAgIHZhcmlhbnQgPSAnJwotICAgICAgICBpZiBzZXRzY2VuZWRlcHNbZGVwXVsyXS5zdGFydHN3aXRoKCJ2aXJ0dWFsOm11bHRpbGliIik6Ci0gICAgICAgICAgICB2YXJpYW50ID0gc2V0c2NlbmVkZXBzW2RlcF1bMl0uc3BsaXQoIjoiKVsyXQotICAgICAgICAgICAgaWYgdmFyaWFudCAhPSBjdXJyZW50X3ZhcmlhbnQ6Ci0gICAgICAgICAgICAgICAgaWYgdmFyaWFudCBub3QgaW4gbXVsdGlsaWJzOgotICAgICAgICAgICAgICAgICAgICBtdWx0aWxpYnNbdmFyaWFudF0gPSBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpCi0gICAgICAgICAgICAgICAgZDIgPSBtdWx0aWxpYnNbdmFyaWFudF0KLSAgICAgICAgICAgICAgICBkZXN0c3lzcm9vdCA9IGQyLmdldFZhcigiUkVDSVBFX1NZU1JPT1QiKQorICAgICAgICBtYW5pZmVzdCwgZDIgPSBvZS5zc3RhdGVzaWcuZmluZF9zc3RhdGVfbWFuaWZlc3QoYywgc2V0c2NlbmVkZXBzW2RlcF1bMl0sICJwb3B1bGF0ZV9zeXNyb290IiwgZCwgbXVsdGlsaWJzKQorICAgICAgICBkZXN0c3lzcm9vdCA9IGQyLmdldFZhcigiUkVDSVBFX1NZU1JPT1QiKQogCiAgICAgICAgIG5hdGl2ZSA9IEZhbHNlCi0gICAgICAgIGlmIGMuZW5kc3dpdGgoIi1uYXRpdmUiKToKLSAgICAgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7QlVJTERfQVJDSH0tJXMucG9wdWxhdGVfc3lzcm9vdCIgJSBjKQorICAgICAgICBpZiBjLmVuZHN3aXRoKCItbmF0aXZlIikgb3IgIi1jcm9zcy0iIGluIGMgb3IgIi1jcm9zc3NkayIgaW4gYzoKICAgICAgICAgICAgIG5hdGl2ZSA9IFRydWUKLSAgICAgICAgZWxpZiBjLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKToKLSAgICAgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7U0RLX0FSQ0h9XyR7U0RLX09TfS0lcy5wb3B1bGF0ZV9zeXNyb290IiAlIGMpCi0gICAgICAgIGVsaWYgIi1jcm9zcy0iIGluIGM6Ci0gICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke0JVSUxEX0FSQ0h9XyR7VEFSR0VUX0FSQ0h9LSVzLnBvcHVsYXRlX3N5c3Jvb3QiICUgYykKLSAgICAgICAgICAgIG5hdGl2ZSA9IFRydWUKLSAgICAgICAgZWxpZiAiLWNyb3Nzc2RrIiBpbiBjOgotICAgICAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJHtCVUlMRF9BUkNIfV8ke1NES19BUkNIfV8ke1NES19PU30tJXMucG9wdWxhdGVfc3lzcm9vdCIgJSBjKQotICAgICAgICAgICAgbmF0aXZlID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGtnYXJjaHMgPSBbJyR7TUFDSElORV9BUkNIfSddCi0gICAgICAgICAgICBwa2dhcmNocyA9IHBrZ2FyY2hzICsgbGlzdChyZXZlcnNlZChkMi5nZXRWYXIoIlBBQ0tBR0VfRVhUUkFfQVJDSFMiKS5zcGxpdCgpKSkKLSAgICAgICAgICAgIHBrZ2FyY2hzLmFwcGVuZCgnYWxsYXJjaCcpCi0gICAgICAgICAgICBmb3IgcGtnYXJjaCBpbiBwa2dhcmNoczoKLSAgICAgICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0lcy0lcy5wb3B1bGF0ZV9zeXNyb290IiAlIChwa2dhcmNoLCBjKSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6Ci0gICAgICAgICAgICBiYi53YXJuKCJNYW5pZmVzdCAlcyBub3QgZm91bmQ/IiAlIG1hbmlmZXN0KQotICAgICAgICBlbHNlOgorCisgICAgICAgIGlmIG1hbmlmZXN0OgogICAgICAgICAgICAgbmV3bWFuaWZlc3QgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAgICAgICAgICAgICBpZiBuYXRpdmU6CiAgICAgICAgICAgICAgICAgZm0gPSBmaXhtZVsnbmF0aXZlJ10KQEAgLTU3Niw3ICs1NTAsNyBAQAogICAgICAgICAgICAgc3RhZ2luZ19wcm9jZXNzZml4bWUoZml4bWVbZl0sIG11bHRpbGlic1tmXS5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIiksIHJlY2lwZXN5c3Jvb3QsIHJlY2lwZXN5c3Jvb3RuYXRpdmUsIGQpCiAKICAgICBmb3IgcCBpbiBwb3N0aW5zdHM6Ci0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHAsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHAsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgIGZvciBkZXAgaW4gbWFuaWZlc3RzOgogICAgICAgICBjID0gc2V0c2NlbmVkZXBzW2RlcF1bMF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzbGludXguYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzbGludXguYmJjbGFzcwppbmRleCBkNmY4ODI0Li4wMzFkYWNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXNsaW51eC5iYmNsYXNzCkBAIC0xNzMsOCArMTczLDkgQEAKICAgICAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgICAgICBiYi5mYXRhbCgnU1lTTElOVVhfUk9PVCBub3QgZGVmaW5lZCcpCiAKKyAgICAgICAga2VybmVsID0gbG9jYWxkYXRhLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRScpCiAgICAgICAgIGZvciBidHlwZSBpbiBidHlwZXM6Ci0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdMQUJFTCAlcyVzXG5LRVJORUwgL3ZtbGludXpcbicgJSAoYnR5cGVbMF0sIGxhYmVsKSkKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ0xBQkVMICVzJXNcbktFUk5FTCAvJXNcbicgJSAoYnR5cGVbMF0sIGxhYmVsLCBrZXJuZWwpKQogCiAgICAgICAgICAgICBleGFyZ3MgPSBkLmdldFZhcignU1lTTElOVVhfS0VSTkVMX0FSR1MnKQogICAgICAgICAgICAgaWYgZXhhcmdzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QtY2ZnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC1jZmcuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjFjOWY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QtY2ZnLmJiY2xhc3MKQEAgLTAsMCArMSw2OCBAQAorU1lTVEVNRF9CT09UX0NGRyA/PSAiJHtTfS9sb2FkZXIuY29uZiIKK1NZU1RFTURfQk9PVF9FTlRSSUVTID89ICIiCitTWVNURU1EX0JPT1RfVElNRU9VVCA/PSAiMTAiCisKKyMgTmVlZCBVVUlEIHV0aWxpdHkgY29kZS4KK2luaGVyaXQgZnMtdXVpZAorCitweXRob24gYnVpbGRfZWZpX2NmZygpIHsKKyAgICBzID0gZC5nZXRWYXIoIlMiKQorICAgIGxhYmVscyA9IGQuZ2V0VmFyKCdMQUJFTFMnKQorICAgIGlmIG5vdCBsYWJlbHM6CisgICAgICAgIGJiLmRlYnVnKDEsICJMQUJFTFMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGlmIGxhYmVscyA9PSBbXToKKyAgICAgICAgYmIuZGVidWcoMSwgIk5vIGxhYmVscywgbm90aGluZyB0byBkbyIpCisgICAgICAgIHJldHVybgorCisgICAgY2ZpbGUgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX0NGRycpCisgICAgY2RpciA9IG9zLnBhdGguZGlybmFtZShjZmlsZSkKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGNkaXIpCisgICAgdHJ5OgorICAgICAgICAgY2ZnZmlsZSA9IG9wZW4oY2ZpbGUsICd3JykKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGNmaWxlKQorCisgICAgY2ZnZmlsZS53cml0ZSgnIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgT0VcbicpCisgICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdCAlc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCisgICAgdGltZW91dCA9IGQuZ2V0VmFyKCdTWVNURU1EX0JPT1RfVElNRU9VVCcpCisgICAgaWYgdGltZW91dDoKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dCAlc1xuJyAlIHRpbWVvdXQpCisgICAgZWxzZToKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dCAxMFxuJykKKyAgICBjZmdmaWxlLmNsb3NlKCkKKworICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKKyAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKKworICAgICAgICBlbnRyeWZpbGUgPSAiJXMvJXMuY29uZiIgJSAocywgbGFiZWwpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHMpCisgICAgICAgIGQuYXBwZW5kVmFyKCJTWVNURU1EX0JPT1RfRU5UUklFUyIsICIgIiArIGVudHJ5ZmlsZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZW50cnljZmcgPSBvcGVuKGVudHJ5ZmlsZSwgInciKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBlbnRyeWZpbGUpCisKKyAgICAgICAgZW50cnljZmcud3JpdGUoJ3RpdGxlICVzXG4nICUgbGFiZWwpCisKKyAgICAgICAga2VybmVsID0gbG9jYWxkYXRhLmdldFZhcigiS0VSTkVMX0lNQUdFVFlQRSIpCisgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdsaW51eCAvJXNcbicgJSBrZXJuZWwpCisKKyAgICAgICAgYXBwZW5kID0gbG9jYWxkYXRhLmdldFZhcignQVBQRU5EJykKKyAgICAgICAgaW5pdHJkID0gbG9jYWxkYXRhLmdldFZhcignSU5JVFJEJykKKworICAgICAgICBpZiBpbml0cmQ6CisgICAgICAgICAgICBlbnRyeWNmZy53cml0ZSgnaW5pdHJkIC9pbml0cmRcbicpCisgICAgICAgIGxiID0gbGFiZWwKKyAgICAgICAgaWYgbGFiZWwgPT0gImluc3RhbGwiOgorICAgICAgICAgICAgbGIgPSAiaW5zdGFsbC1lZmkiCisgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdvcHRpb25zIExBQkVMPSVzICcgJSBsYikKKyAgICAgICAgaWYgYXBwZW5kOgorICAgICAgICAgICAgYXBwZW5kID0gcmVwbGFjZV9yb290ZnNfdXVpZChkLCBhcHBlbmQpCisgICAgICAgICAgICBlbnRyeWNmZy53cml0ZSgnJXMnICUgYXBwZW5kKQorICAgICAgICBlbnRyeWNmZy53cml0ZSgnXG4nKQorICAgICAgICBlbnRyeWNmZy5jbG9zZSgpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcwppbmRleCA5MzczMDcwLi4zY2Q2ODExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKQEAgLTEyLDExICsxMiw2IEBACiBkb19ib290aW1nW2RlcGVuZHNdICs9ICIke01MUFJFRklYfXN5c3RlbWQtYm9vdDpkb19kZXBsb3kiCiAKIEVGSURJUiA9ICIvRUZJL0JPT1QiCi0KLVNZU1RFTURfQk9PVF9DRkcgPz0gIiR7U30vbG9hZGVyLmNvbmYiCi1TWVNURU1EX0JPT1RfRU5UUklFUyA/PSAiIgotU1lTVEVNRF9CT09UX1RJTUVPVVQgPz0gIjEwIgotCiAjIE5lZWQgVVVJRCB1dGlsaXR5IGNvZGUuCiBpbmhlcml0IGZzLXV1aWQKIApAQCAtNTAsNyArNDUsNyBAQAogICAgICAgICBta2RpciAtcCAke0VGSUlNR0RJUn0vJHtFRklESVJ9CiAgICAgICAgIGNwICRpc29fZGlyLyR7RUZJRElSfS8qICR7RUZJSU1HRElSfSR7RUZJRElSfQogICAgICAgICBjcCAtciAkaXNvX2Rpci9sb2FkZXIgJHtFRklJTUdESVJ9Ci0gICAgICAgIGNwICRpc29fZGlyL3ZtbGludXogJHtFRklJTUdESVJ9CisgICAgICAgIGNwICRpc29fZGlyLyR7S0VSTkVMX0lNQUdFVFlQRX0gJHtFRklJTUdESVJ9CiAgICAgICAgIEVGSVBBVEg9JChlY2hvICIke0VGSURJUn0iIHwgc2VkICdzL1wvL1xcL2cnKQogICAgICAgICBlY2hvICJmczA6JHtFRklQQVRIfVxcJHtERVNUX0VGSV9JTUFHRX0iID4gJHtFRklJTUdESVJ9L3N0YXJ0dXAubnNoCiAgICAgICAgIGlmIFsgLWYgIiRpc29fZGlyL2luaXRyZCIgXSA7IHRoZW4KQEAgLTYyLDY3ICs1Nyw0IEBACiAgICAgICAgIGVmaV9wb3B1bGF0ZSAkMQogfQogCi1weXRob24gYnVpbGRfZWZpX2NmZygpIHsKLSAgICBzID0gZC5nZXRWYXIoIlMiKQotICAgIGxhYmVscyA9IGQuZ2V0VmFyKCdMQUJFTFMnKQotICAgIGlmIG5vdCBsYWJlbHM6Ci0gICAgICAgIGJiLmRlYnVnKDEsICJMQUJFTFMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGlmIGxhYmVscyA9PSBbXToKLSAgICAgICAgYmIuZGVidWcoMSwgIk5vIGxhYmVscywgbm90aGluZyB0byBkbyIpCi0gICAgICAgIHJldHVybgotCi0gICAgY2ZpbGUgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX0NGRycpCi0gICAgY2RpciA9IG9zLnBhdGguZGlybmFtZShjZmlsZSkKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2Rpcik6Ci0gICAgICAgIG9zLm1ha2VkaXJzKGNkaXIpCi0gICAgdHJ5OgotICAgICAgICAgY2ZnZmlsZSA9IG9wZW4oY2ZpbGUsICd3JykKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGNmaWxlKQotCi0gICAgY2ZnZmlsZS53cml0ZSgnIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgT0VcbicpCi0gICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdCAlc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCi0gICAgdGltZW91dCA9IGQuZ2V0VmFyKCdTWVNURU1EX0JPT1RfVElNRU9VVCcpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dCAlc1xuJyAlIHRpbWVvdXQpCi0gICAgZWxzZToKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dCAxMFxuJykKLSAgICBjZmdmaWxlLmNsb3NlKCkKLQotICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKLSAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKLQotICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnKQotICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgotICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCi0KLSAgICAgICAgZW50cnlmaWxlID0gIiVzLyVzLmNvbmYiICUgKHMsIGxhYmVsKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocyk6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhzKQotICAgICAgICBkLmFwcGVuZFZhcigiU1lTVEVNRF9CT09UX0VOVFJJRVMiLCAiICIgKyBlbnRyeWZpbGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVudHJ5Y2ZnID0gb3BlbihlbnRyeWZpbGUsICJ3IikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgZW50cnlmaWxlKQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBsYWJlbCArICc6JyArIG92ZXJyaWRlcykKLQotICAgICAgICBlbnRyeWNmZy53cml0ZSgndGl0bGUgJXNcbicgJSBsYWJlbCkKLSAgICAgICAgZW50cnljZmcud3JpdGUoJ2xpbnV4IC92bWxpbnV6XG4nKQotCi0gICAgICAgIGFwcGVuZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0FQUEVORCcpCi0gICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCi0KLSAgICAgICAgaWYgaW5pdHJkOgotICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJ2luaXRyZCAvaW5pdHJkXG4nKQotICAgICAgICBsYiA9IGxhYmVsCi0gICAgICAgIGlmIGxhYmVsID09ICJpbnN0YWxsIjoKLSAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgotICAgICAgICBlbnRyeWNmZy53cml0ZSgnb3B0aW9ucyBMQUJFTD0lcyAnICUgbGIpCi0gICAgICAgIGlmIGFwcGVuZDoKLSAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQotICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJyVzJyAlIGFwcGVuZCkKLSAgICAgICAgZW50cnljZmcud3JpdGUoJ1xuJykKLSAgICAgICAgZW50cnljZmcuY2xvc2UoKQotfQoraW5oZXJpdCBzeXN0ZW1kLWJvb3QtY2ZnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwppbmRleCA0NWJiMmJkLi43NzI5MWMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTQ0LDIwICs0NCwyMiBAQAogREVGQVVMVF9URVNUX1NVSVRFUyA9ICIke01JTlRFU1RTVUlURX0gYXV0byIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1taW5pbWFsID0gIiR7TUlOVEVTVFNVSVRFfSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1taW5pbWFsLWRldiA9ICIke01JTlRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lID0gIiR7TkVUVEVTVFNVSVRFfSBwZXJsIHB5dGhvbiBsb2dyb3RhdGUiCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lID0gIiR7TkVUVEVTVFNVSVRFfSBwZXJsIHB5dGhvbiBsb2dyb3RhdGUgcHRlc3QiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UteDExID0gIiR7TUlOVEVTVFNVSVRFfSIKLURFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2IgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gcHRlc3QiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0byA9ICIke05FVFRFU1RTVUlURX0gY29ubm1hbiB4b3JnIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdweXRob24nLCAnJywgZCl9IgorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdweXRob24nLCAnJywgZCl9IHB0ZXN0IGdpIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8tc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCi0gICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1JQTVRFU1RTVUlURX0geG9yZyIKLURFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2ItZGV2ID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGVybCBweXRob24gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSIKKyAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGVybCBwYXJzZWxvZ3MgcHl0aG9uICR7UlBNVEVTVFNVSVRFfSB4b3JnIHB0ZXN0IGdpIHN0YXAiCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gcHRlc3QgZ2kiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAotICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwYW0gcGFyc2Vsb2dzIHBlcmwgcHl0aG9uICR7UlBNVEVTVFNVSVRFfSIKKyAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1JQTVRFU1RTVUlURX0gcHRlc3QgZ2kgc3RhcCIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tbWV0YS10b29sY2hhaW4gPSAiYXV0byIKIAogIyBhYXJjaDY0IGhhcyBubyBncmFwaGljcwogREVGQVVMVF9URVNUX1NVSVRFU19yZW1vdmVfYWFyY2g2NCA9ICJ4b3JnIgorIyBtdXNsIGRvZXNuJ3Qgc3VwcG9ydCBzeXN0ZW10YXAKK0RFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX2xpYmMtbXVzbCA9ICJzdGFwIgogCiAjIHFlbXVtaXBzIGlzIHF1aXRlIHNsb3cgYW5kIGhhcyByZWFjaGVkIHRoZSB0aW1lb3V0IGxpbWl0IHNldmVyYWwgdGltZXMgb24gdGhlIFlQIGJ1aWxkIGNsdXN0ZXIsCiAjIG1pdGlnYXRlIHRoaXMgYnkgcmVtb3ZpbmcgYnVpbGQgdGVzdHMgZm9yIHFlbXVtaXBzIG1hY2hpbmVzLgpAQCAtMjE1LDcgKzIxNyw3IEBACiAgICAgIyBHZXQgdXNlX2t2bQogICAgIHFlbXVfdXNlX2t2bSA9IGQuZ2V0VmFyKCJRRU1VX1VTRV9LVk0iKQogICAgIGlmIHFlbXVfdXNlX2t2bSBhbmQgXAotICAgICAgIChxZW11X3VzZV9rdm0gPT0gJ1RydWUnIGFuZCAneDg2JyBpbiBtYWNoaW5lIG9yIFwKKyAgICAgICAob2UudHlwZXMuYm9vbGVhbihxZW11X3VzZV9rdm0pIGFuZCAneDg2JyBpbiBtYWNoaW5lIG9yIFwKICAgICAgICAgZC5nZXRWYXIoJ01BQ0hJTkUnKSBpbiBxZW11X3VzZV9rdm0uc3BsaXQoKSk6CiAgICAgICAgIGt2bSA9IFRydWUKICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwppbmRleCA2YjUxYTMzLi4yZTQzMzQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwpAQCAtMTU2LDEwICsxNTYsMTEgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZGtfZGlyLCAnY29uZicsICdhdXRvLmNvbmYnKSwgJ2ErJykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTICs9ICIgXFxuIGZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCJcbicgJSB0ZXN0X2RhdGEuZ2V0KCdTU1RBVEVfRElSJykpCiAgICAgICAgICAgICBmLndyaXRlKCdTT1VSQ0VfTUlSUk9SX1VSTCA9ICJmaWxlOi8vJXMiXG4nICUgdGVzdF9kYXRhLmdldCgnRExfRElSJykpCi0gICAgICAgICAgICBmLndyaXRlKCdJTkhFUklUICs9ICJvd24tbWlycm9ycyInKQorICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAib3duLW1pcnJvcnMiXG4nKQogCiAgICAgICAgICMgV2UgbmVlZCB0byBkbyB0aGlzIGluIGNhc2Ugd2UgaGF2ZSBhIG1pbmltYWwgU0RLCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIuICVzID4gL2Rldi9udWxsOyBkZXZ0b29sIHNkay1pbnN0YWxsIG1ldGEtZXh0c2RrLXRvb2xjaGFpbiIgJSBzZGtfZW52LCBjd2Q9c2RrX2Rpciwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIi4gJXMgPiAvZGV2L251bGw7IGRldnRvb2wgc2RrLWluc3RhbGwgbWV0YS1leHRzZGstdG9vbGNoYWluIiAlIFwKKyAgICAgICAgICAgICAgICBzZGtfZW52LCBjd2Q9c2RrX2Rpciwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAgICAgICAgIHRjID0gT0VTREtFeHRUZXN0Q29udGV4dCh0ZD10ZXN0X2RhdGEsIGxvZ2dlcj1sb2dnZXIsIHNka19kaXI9c2RrX2RpciwKICAgICAgICAgICAgIHNka19lbnY9c2RrX2VudiwgdGFyZ2V0X3BrZ19tYW5pZmVzdD10YXJnZXRfcGtnX21hbmlmZXN0LApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCmluZGV4IDliY2ZlNzAuLjcxZGE1ZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKQEAgLTYyLDcgKzYyLDggQEAKIAlzY3JpcHQ9JHtUTVBESVJ9L2Vudmlyb25tZW50LXNldHVwLSR7UkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZU30KIAlybSAtZiAkc2NyaXB0CiAJdG91Y2ggJHNjcmlwdAotCWVjaG8gJ2V4cG9ydCBQQVRIPSR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvYmluOiR7UEFUSH0nID4+ICRzY3JpcHQKKwllY2hvICdvcmlnPWBwd2RgOyBjZCAke0NPUkVCQVNFfTsgLiAuL29lLWluaXQtYnVpbGQtZW52ICR7VE9QRElSfTsgY2QgJG9yaWcnID4+ICRzY3JpcHQKKwllY2hvICdleHBvcnQgUEFUSD0ke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2Jpbjoke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn06JFBBVEgnID4+ICRzY3JpcHQKIAllY2hvICdleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0ke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JyA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IFBLR19DT05GSUdfUEFUSD0ke1BLR19DT05GSUdfUEFUSH0nID4+ICRzY3JpcHQKIAllY2hvICdleHBvcnQgQ09ORklHX1NJVEU9IiR7QHNpdGVpbmZvX2dldF9maWxlcyhkKX0iJyA+PiAkc2NyaXB0CkBAIC0xMTYsNiArMTE3LDIxIEBACiBFT0YKIH0KIAordG9vbGNoYWluX2NyZWF0ZV9wb3N0X3JlbG9jYXRlX3NjcmlwdCgpIHsKKwlzY3JpcHQ9JDEKKwlybSAtZiAkc2NyaXB0CisJdG91Y2ggJHNjcmlwdAorCisgICAgY2F0ID4+ICRzY3JpcHQgPDxFT0YKK2lmIFsgLWQgIiR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLyIgXTsgdGhlbgorICAgIGZvciBzIGluICR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLyouc2g7IGRvCisgICAgICAgIFwkcyAiXCQxIgorICAgIGRvbmUKKyAgICBybSAtcmYgIiR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kIgorZmkKK0VPRgorfQorCiAjd2UgZ2V0IHRoZSBjYWNoZWQgc2l0ZSBjb25maWcgaW4gdGhlIHJ1bnRpbWUKIFRPT0xDSEFJTl9DT05GSUdTSVRFX05PQ0FDSEUgPSAiJHtAc2l0ZWluZm9fZ2V0X2ZpbGVzKGQpfSIKIFRPT0xDSEFJTl9DT05GSUdTSVRFX1NZU1JPT1RDQUNIRSA9ICIke1NUQUdJTkdfRElSfS8ke01MUFJFRklYfSR7TUFDSElORX0vJHt0YXJnZXRfZGF0YWRpcn0vJHtUQVJHRVRfU1lTfV9jb25maWdfc2l0ZS5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKaW5kZXggNTMzZTE3NS4uODlmZjk3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCkBAIC0yNywxMyArMjcsMTMgQEAKICAgICAgICAgRklMRSA9IG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoIkZJTEUiKSkKICAgICAgICAgYmIuZGVidWcoMSwgIlRvIGJ1aWxkICVzLCBzZWUgJXMgZm9yIGluc3RydWN0aW9ucyBvbiBcCiAgICAgICAgICAgICAgICAgIHNldHRpbmcgdXAgeW91ciBtYWNoaW5lIGNvbmZpZyIgJSAoUE4sIEZJTEUpKQotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiRWl0aGVyIFVCT09UX01BQ0hJTkUgb3IgVUJPT1RfQ09ORklHIG11c3QgYmUgc2V0IGluIHRoZSAlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb24uIiAlIGQuZ2V0VmFyKCJNQUNISU5FIikpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkVpdGhlciBVQk9PVF9NQUNISU5FIG9yIFVCT09UX0NPTkZJRyBtdXN0IGJlIHNldCBpbiB0aGUgJXMgbWFjaGluZSBjb25maWd1cmF0aW9uLiIgJSBkLmdldFZhcigiTUFDSElORSIpKQogCiAgICAgaWYgdWJvb3RtYWNoaW5lIGFuZCB1Ym9vdGNvbmZpZzoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIllvdSBjYW5ub3QgdXNlIFVCT09UX01BQ0hJTkUgYW5kIFVCT09UX0NPTkZJRyBhdCB0aGUgc2FtZSB0aW1lLiIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIllvdSBjYW5ub3QgdXNlIFVCT09UX01BQ0hJTkUgYW5kIFVCT09UX0NPTkZJRyBhdCB0aGUgc2FtZSB0aW1lLiIpCiAKICAgICBpZiB1Ym9vdGNvbmZpZ2ZsYWdzIGFuZCB1Ym9vdGJpbmFyaWVzOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiWW91IGNhbm5vdCB1c2UgVUJPT1RfQklOQVJJRVMgYXMgaXQgaXMgaW50ZXJuYWwgdG8gdWJvb3RfY29uZmlnLmJiY2xhc3MuIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiWW91IGNhbm5vdCB1c2UgVUJPT1RfQklOQVJJRVMgYXMgaXQgaXMgaW50ZXJuYWwgdG8gdWJvb3RfY29uZmlnLmJiY2xhc3MuIikKIAogICAgIGlmIGxlbih1Ym9vdGNvbmZpZykgPiAwOgogICAgICAgICBmb3IgY29uZmlnIGluIHVib290Y29uZmlnOgpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICAgICAgICAgIGlmIGNvbmZpZyA9PSBmOiAKICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB2LnNwbGl0KCcsJykKICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbXNbMF0gYW5kIGxlbihpdGVtcykgPiAzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoJ09ubHkgY29uZmlnLGltYWdlcyxiaW5hcnkgY2FuIGJlIHNwZWNpZmllZCEnKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnT25seSBjb25maWcsaW1hZ2VzLGJpbmFyeSBjYW4gYmUgc3BlY2lmaWVkIScpCiAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdVQk9PVF9NQUNISU5FJywgJyAnICsgaXRlbXNbMF0pCiAgICAgICAgICAgICAgICAgICAgICMgSU1BR0VfRlNUWVBFUyBhcHBlbmRpbmcKICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA+IDEgYW5kIGl0ZW1zWzFdOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKaW5kZXggMTcyMzM2NC4uZGUyMjIxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCkBAIC04LDYgKzgsOSBAQAogI1VOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID0gImRlYWQiCiBVTklOQVRJVkVfRExESVIgPz0gIiR7RExfRElSfS91bmluYXRpdmUvIgogCisjIEVuYWJsaW5nIHVuaW5hdGl2ZSB3aWxsIGNoYW5nZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBzbyB0aGV5IG5lZWQgdG8gZ28gdGhlIHBhcnNpbmcgd2hpdGUgbGlzdCB0byBwcmV2ZW50IG11bHRpcGxlIHJlY2lwZSBwYXJzaW5nCitCQl9IQVNIQ09ORklHX1dISVRFTElTVCArPSAiTkFUSVZFTFNCU1RSSU5HIFNTVEFURVBPU1RVTlBBQ0tGVU5DUyBCVUlMRF9MREZMQUdTIgorCiBhZGRoYW5kbGVyIHVuaW5hdGl2ZV9ldmVudF9mZXRjaGxvYWRlcgogdW5pbmF0aXZlX2V2ZW50X2ZldGNobG9hZGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQnVpbGRTdGFydGVkIgogCkBAIC0xMjYsNiArMTI5LDkgQEAKICAgICAgICAgZC5zZXRWYXIoIk5BVElWRUxTQlNUUklORyIsICJ1bml2ZXJzYWwlcyIgJSBvZS51dGlscy5ob3N0X2djY192ZXJzaW9uKGQpKQogICAgICAgICBkLmFwcGVuZFZhcigiU1NUQVRFUE9TVFVOUEFDS0ZVTkNTIiwgIiB1bmluYXRpdmVfY2hhbmdlaW50ZXJwIikKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJTU1RBVEVQT1NUVU5QQUNLRlVOQ1MiLCAidmFyZGVwdmFsdWVleGNsdWRlIiwgInwgdW5pbmF0aXZlX2NoYW5nZWludGVycCIpCisgICAgICAgIGQuYXBwZW5kVmFyKCJCVUlMRF9MREZMQUdTIiwgIiAtV2wsLS1hbGxvdy1zaGxpYi11bmRlZmluZWQgLVdsLC0tZHluYW1pYy1saW5rZXI9JHtVTklOQVRJVkVfTE9BREVSfSIpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiQlVJTERfTERGTEFHUyIsICJ2YXJkZXB2YWx1ZWV4Y2x1ZGUiLCAifCAtV2wsLS1hbGxvdy1zaGxpYi11bmRlZmluZWQgLVdsLC0tZHluYW1pYy1saW5rZXI9JHtVTklOQVRJVkVfTE9BREVSfSIpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiQlVJTERfTERGTEFHUyIsICJ2YXJkZXBzZXhjbHVkZSIsICJVTklOQVRJVkVfTE9BREVSIikKICAgICAgICAgZC5wcmVwZW5kVmFyKCJQQVRIIiwgIiR7U1RBR0lOR19ESVJ9LXVuaW5hdGl2ZS8ke0JVSUxEX0FSQ0h9LWxpbnV4JHtiaW5kaXJfbmF0aXZlfToiKQogCiBweXRob24gdW5pbmF0aXZlX2NoYW5nZWludGVycCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKaW5kZXggNTg5YTk5Zi4uNjRiZjZkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcwpAQCAtMzA3LDUgKzMwNyw1IEBACiAgICAgICAgICAgICB1cGRhdGVfdXNlcmFkZF9zdGF0aWNfY29uZmlnKGQpCiAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yIGFzIGY6CiAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgcmVjaXBlICVzOiAlcyIgJSAoZC5nZXRWYXIoJ1BOJyksIGYpKQotICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoZikKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoZikKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlsaXR5LXRhc2tzLmJiY2xhc3MKaW5kZXggNTg3YmZkNC4uYjFmMjdkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlsaXR5LXRhc2tzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlsaXR5LXRhc2tzLmJiY2xhc3MKQEAgLTUwLDE3ICs1MCw0IEBACiAgICAgICAgIGJiLmZhdGFsKHN0cihlKSkKIH0KIAotYWRkdGFzayBjaGVja3VyaWFsbCBhZnRlciBkb19jaGVja3VyaQotZG9fY2hlY2t1cmlhbGxbcmVjcmRlcHRhc2tdID0gImRvX2NoZWNrdXJpYWxsIGRvX2NoZWNrdXJpIgotZG9fY2hlY2t1cmlhbGxbcmVjaWRlcHRhc2tdID0gImRvXyR7QkJfREVGQVVMVF9UQVNLfSIKLWRvX2NoZWNrdXJpYWxsW25vc3RhbXBdID0gIjEiCi1kb19jaGVja3VyaWFsbCgpIHsKLQk6Ci19CiAKLWFkZHRhc2sgZmV0Y2hhbGwgYWZ0ZXIgZG9fZmV0Y2gKLWRvX2ZldGNoYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19mZXRjaGFsbCBkb19mZXRjaCIKLWRvX2ZldGNoYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19mZXRjaGFsbCgpIHsKLQk6Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKaW5kZXggOGUwN2VhYy4uNGYwMTZlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcwpAQCAtMSw0NCArMSwzIEBACi0jIEZvciBjb21wYXRpYmlsaXR5Ci1kZWYgYmFzZV9wYXRoX2pvaW4oYSwgKnApOgotICAgIHJldHVybiBvZS5wYXRoLmpvaW4oYSwgKnApCi0KLWRlZiBiYXNlX3BhdGhfcmVsYXRpdmUoc3JjLCBkZXN0KToKLSAgICByZXR1cm4gb2UucGF0aC5yZWxhdGl2ZShzcmMsIGRlc3QpCi0KLWRlZiBiYXNlX3BhdGhfb3V0KHBhdGgsIGQpOgotICAgIHJldHVybiBvZS5wYXRoLmZvcm1hdF9kaXNwbGF5KHBhdGgsIGQpCi0KLWRlZiBiYXNlX3JlYWRfZmlsZShmaWxlbmFtZSk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLnJlYWRfZmlsZShmaWxlbmFtZSkKLQotZGVmIGJhc2VfaWZlbHNlKGNvbmRpdGlvbiwgaWZ0cnVlID0gVHJ1ZSwgaWZmYWxzZSA9IEZhbHNlKToKLSAgICByZXR1cm4gb2UudXRpbHMuaWZlbHNlKGNvbmRpdGlvbiwgaWZ0cnVlLCBpZmZhbHNlKQotCi1kZWYgYmFzZV9jb25kaXRpb25hbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMuY29uZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKLQotZGVmIGJhc2VfbGVzc19vcl9lcXVhbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMubGVzc19vcl9lcXVhbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQotCi1kZWYgYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQotCi1kZWYgYmFzZV9jb250YWlucyh2YXJpYWJsZSwgY2hlY2t2YWx1ZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgYmIubm90ZSgnYmFzZV9jb250YWlucyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGJiLnV0aWxzLmNvbnRhaW5zIGluc3RlYWQuJykKLSAgICByZXR1cm4gYmIudXRpbHMuY29udGFpbnModmFyaWFibGUsIGNoZWNrdmFsdWVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCi0KLWRlZiBiYXNlX2JvdGhfY29udGFpbih2YXJpYWJsZTEsIHZhcmlhYmxlMiwgY2hlY2t2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmJvdGhfY29udGFpbih2YXJpYWJsZTEsIHZhcmlhYmxlMiwgY2hlY2t2YWx1ZSwgZCkKLQotZGVmIGJhc2VfcHJ1bmVfc3VmZml4KHZhciwgc3VmZml4ZXMsIGQpOgotICAgIHJldHVybiBvZS51dGlscy5wcnVuZV9zdWZmaXgodmFyLCBzdWZmaXhlcywgZCkKLQotZGVmIG9lX2ZpbHRlcihmLCBzdHIsIGQpOgotICAgIHJldHVybiBvZS51dGlscy5zdHJfZmlsdGVyKGYsIHN0ciwgZCkKLQotZGVmIG9lX2ZpbHRlcl9vdXQoZiwgc3RyLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoZiwgc3RyLCBkKQotCiBkZWYgbWFjaGluZV9wYXRocyhkKToKICAgICAiIiJMaXN0IGFueSBleGlzdGluZyBtYWNoaW5lIHNwZWNpZmljIGZpbGVzcGF0aCBkaXJlY3RvcmllcyIiIgogICAgIG1hY2hpbmUgPSBkLmdldFZhcigiTUFDSElORSIpCkBAIC0zNjQsMTIgKzMyMyw3IEBACiAgICAgcmV0dXJuIHBrZ3MKIAogZGVmIGdldF9tdWx0aWxpYl9kYXRhc3RvcmUodmFyaWFudCwgZCk6Ci0gICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCi0gICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIHZhcmlhbnQKLSAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCi0gICAgbG9jYWxkYXRhLnNldFZhcigiTUxQUkVGSVgiLCB2YXJpYW50ICsgIi0iKQotICAgIHJldHVybiBsb2NhbGRhdGEKLWdldF9tdWx0aWxpYl9kYXRhc3RvcmVbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKKyAgICByZXR1cm4gb2UudXRpbHMuZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKQogCiBkZWYgYWxsX211bHRpbGliX3R1bmVfdmFsdWVzKGQsIHZhciwgdW5pcXVlID0gVHJ1ZSwgbmVlZF9zcGxpdCA9IFRydWUsIGRlbGltID0gJyAnKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgb2YgYWxsICR7dmFyfSBpbiBhbGwgbXVsdGlsaWIgdHVuZSBjb25maWd1cmF0aW9uIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcwppbmRleCBhY2JkYTI3Li4xOWU5Mzc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKQEAgLTMsMzkgKzMsMjAgQEAKIAogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAotZGVmIGdldF93YWZfcGFyYWxsZWxfbWFrZShkKToKLSAgICBwbSA9IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykKLSAgICBpZiBwbToKLSAgICAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKLSAgICAgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBpbiBiamFtCi0gICAgICAgIHBtID0gcG0uc3BsaXQoKQotICAgICAgICB3aGlsZSBwbToKLSAgICAgICAgICAgIHYgPSBOb25lCi0gICAgICAgICAgICBvcHQgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6Ci0gICAgICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gTm9uZQotCi0gICAgICAgICAgICBpZiB2OgotICAgICAgICAgICAgICAgIHYgPSBtaW4oNjQsIGludCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJy1qJyArIHN0cih2KQotCi0gICAgcmV0dXJuICIiCi0KIHB5dGhvbiB3YWZfcHJlY29uZmlndXJlKCkgeworICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgU3RyaWN0VmVyc2lvbgotICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdTJykKLSAgICB3YWZiaW4gPSBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCAnd2FmJykKLSAgICBzdGF0dXMsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCh3YWZiaW4gKyAiIC0tdmVyc2lvbiIpCi0gICAgaWYgc3RhdHVzICE9IDA6Ci0gICAgICAgIGJiLndhcm4oIlVuYWJsZSB0byBleGVjdXRlIHdhZiAtLXZlcnNpb24sIGV4aXQgY29kZSAlZC4gQXNzdW1pbmcgd2FmIHZlcnNpb24gd2l0aG91dCBiaW5kaXIvbGliZGlyIHN1cHBvcnQuIiAlIHN0YXR1cykKLSAgICAgICAgcmV0dXJuCi0gICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzFdCi0gICAgaWYgU3RyaWN0VmVyc2lvbih2ZXJzaW9uKSA+PSBTdHJpY3RWZXJzaW9uKCIxLjguNyIpOgotICAgICAgICBkLnNldFZhcigiV0FGX0VYVFJBX0NPTkYiLCAiLS1iaW5kaXI9JHtiaW5kaXJ9IC0tbGliZGlyPSR7bGliZGlyfSIpCisgICAgc3Vic3JjZGlyID0gZC5nZXRWYXIoJ1MnKQorICAgIHdhZmJpbiA9IG9zLnBhdGguam9pbihzdWJzcmNkaXIsICd3YWYnKQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3dhZmJpbiwgJy0tdmVyc2lvbiddLCBjd2Q9c3Vic3JjZGlyLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHZlcnNpb24gPSByZXN1bHQuZGVjb2RlKCd1dGYtOCcpLnNwbGl0KClbMV0KKyAgICAgICAgaWYgU3RyaWN0VmVyc2lvbih2ZXJzaW9uKSA+PSBTdHJpY3RWZXJzaW9uKCIxLjguNyIpOgorICAgICAgICAgICAgZC5zZXRWYXIoIldBRl9FWFRSQV9DT05GIiwgIi0tYmluZGlyPSR7YmluZGlyfSAtLWxpYmRpcj0ke2xpYmRpcn0iKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICBiYi53YXJuKCJVbmFibGUgdG8gZXhlY3V0ZSB3YWYgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWQuIEFzc3VtaW5nIHdhZiB2ZXJzaW9uIHdpdGhvdXQgYmluZGlyL2xpYmRpciBzdXBwb3J0LiIgJSBlLnJldHVybmNvZGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBiYi5mYXRhbCgid2FmIGRvZXMgbm90IGV4aXN0IGluICVzIiAlIHN1YnNyY2RpcikKIH0KIAogZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAid2FmX3ByZWNvbmZpZ3VyZSIKQEAgLTQ0LDggKzI1LDkgQEAKIAkke1N9L3dhZiBjb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9ICR7V0FGX0VYVFJBX0NPTkZ9ICR7RVhUUkFfT0VDT05GfQogfQogCitkb19jb21waWxlW3Byb2dyZXNzXSA9ICJvdXRvZjpeXFtccyooXGQrKS9ccyooXGQrKVxdXHMrIgogd2FmX2RvX2NvbXBpbGUoKSAgewotCSR7U30vd2FmIGJ1aWxkICR7QGdldF93YWZfcGFyYWxsZWxfbWFrZShkKX0KKwkke1N9L3dhZiBidWlsZCAke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfQogfQogCiB3YWZfZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKaW5kZXggMWNkYmY0My4uYTIxYjcyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTE4Nyw2ICsxODcsNyBAQAogICAgIHRhci1uYXRpdmUgXAogICAgIHZpcnR1YWwvbGliaW50bC1uYXRpdmUgXAogICAgIHZpcnR1YWwvbGliaWNvbnYtbmF0aXZlIFwKKyAgICB2aXJ0dWFsL2NyeXB0LW5hdGl2ZSBcCiAgICAgdGV4aW5mby1uYXRpdmUgXAogICAgIGJhc2gtbmF0aXZlIFwKICAgICBzZWQtbmF0aXZlIFwKQEAgLTIyMCw3ICsyMjEsNyBAQAogIyBBdXRvbWF0aWNhbGx5IGRlcml2ZXMgImZvbyIgZnJvbSAiZm9vLW5hdGl2ZSIsICJmb28tY3Jvc3MiIG9yICJmb28taW5pdGlhbCIKICMgb3RoZXJ3aXNlIGl0IGlzIHRoZSBzYW1lIGFzIFBOIGFuZCBQCiBTUEVDSUFMX1BLR1NVRkZJWCA9ICItbmF0aXZlIC1jcm9zcyAtaW5pdGlhbCAtaW50ZXJtZWRpYXRlIC1jcm9zc3NkayAtY3Jvc3MtY2FuYWRpYW4iCi1CUE4gPSAiJHtAYmFzZV9wcnVuZV9zdWZmaXgoZC5nZXRWYXIoJ1BOJyksIGQuZ2V0VmFyKCdTUEVDSUFMX1BLR1NVRkZJWCcpLnNwbGl0KCksIGQpfSIKK0JQTiA9ICIke0BvZS51dGlscy5wcnVuZV9zdWZmaXgoZC5nZXRWYXIoJ1BOJyksIGQuZ2V0VmFyKCdTUEVDSUFMX1BLR1NVRkZJWCcpLnNwbGl0KCksIGQpfSIKIEJQID0gIiR7QlBOfS0ke1BWfSIKIAogIyBQYWNrYWdlIGluZm8uCkBAIC00MjMsNiArNDI0LDggQEAKIE9MREVTVF9LRVJORUwgPSAiMy4yLjAiCiBPTERFU1RfS0VSTkVMX2FhcmNoNjQgPSAiMy4xNCIKIE9MREVTVF9LRVJORUxfbmlvczIgPSAiMy4xOSIKK09MREVTVF9LRVJORUxfcmlzY3YzMiA9ICI0LjE1IgorT0xERVNUX0tFUk5FTF9yaXNjdjY0ID0gIjQuMTUiCiAKICMgU0RLX09MREVTVF9LRVJORUwgY2FuJ3QgYmUgc2V0IHVzaW5nIG92ZXJyaWRlcyBzaW5jZSB0aGVyZSBhcmUKICMgbm9uZSBmb3IgdGhlIFNESyBhcmNoaXRlY3R1cmUuIEJlc3QgdG8gc2V0IGl0IGZyb20gYSBtYWNoaW5lLXNkawpAQCAtNDk1LDYgKzQ5OCw5IEBACiAjIFVzZWQgYnkgYnpyIGZldGNoZXIKIEhPU1RUT09MU19OT05GQVRBTCArPSAiYnpyIgogCisjIFVzZWQgYnkgc3NoIGZldGNoZXIKK0hPU1RUT09MU19OT05GQVRBTCArPSAic2NwIgorCiBDQ0FDSEUgPz89ICIiCiAjIGNjYWNoZSA8IDMuMS4xMCB3aWxsIGNyZWF0ZSBDQ0FDSEVfRElSIG9uIHN0YXJ0dXAgZXZlbiBpZiBkaXNhYmxlZCwgYW5kCiAjIGF1dG9nZW4gc2V0cyBIT01FPS9kZXYvbnVsbCBzbyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgYnVpbGRzIGNhbiBmYWlsLgpAQCAtNTM2LDYgKzU0Miw3IEBACiBFWFRSQV9PRU1BS0UgPSAiIgogRVhUUkFfT0VDT05GID0gIiIKIGV4cG9ydCBMQ19BTEwgPSAiZW5fVVMuVVRGLTgiCitleHBvcnQgVFogPSAnVVRDJwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUGF0Y2ggaGFuZGxpbmcuCkBAIC01OTMsOSArNjAwLDEwIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgT3B0aW1pemF0aW9uIGZsYWdzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEJld2FyZTogYXBwbGllZCBsYXN0IHRvIGZpcnN0CiBERUJVR19QUkVGSVhfTUFQID89ICItZmRlYnVnLXByZWZpeC1tYXA9JHtXT1JLRElSfT0vdXNyL3NyYy9kZWJ1Zy8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9IFwKLSAgICAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKICAgICAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX0hPU1R9PSBcCisgICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9OQVRJVkV9PSBcCiAiCiBERUJVR19GTEFHUyA/PSAiLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzICR7REVCVUdfUFJFRklYX01BUH0iCiAKQEAgLTY2Myw2ICs2NzEsNyBAQAogU1JDREFURSA9ICIke0RBVEV9IgogU1JDUkVWID8/PSAiSU5WQUxJRCIKIEFVVE9SRVYgPSAiJHtAYmIuZmV0Y2gyLmdldF9hdXRvcmV2KGQpfSIKK0FVVE9SRVZbdmFyZGVwdmFsdWVdID0gIiR7U1JDUFZ9IgogIyBTZXQgRHluYW1pY2FsbHkgaW4gYmFzZS5iYmNsYXNzCiAjIFNSQ1BWID0gIiR7QGJiLmZldGNoMi5nZXRfc3JjcmV2KGQpfSIKIFNSQ1BWW3ZhcmRlcHZhbHVlXSA9ICIke1NSQ1BWfSIKQEAgLTc1Nyw3ICs3NjYsNyBAQAogRExfRElSID89ICIke1RPUERJUn0vZG93bmxvYWRzIgogU1NUQVRFX0RJUiA/PSAiJHtUT1BESVJ9L3NzdGF0ZS1jYWNoZSIKIElNQUdFX0ZTVFlQRVMgPz0gInRhci5neiIKLUlNQUdFX0ZTVFlQRVNfREVCVUdGUyA/PSAiJHtJTUFHRV9GU1RZUEVTfSIKK0lNQUdFX0ZTVFlQRVNfREVCVUdGUyA/PSAidGFyLmd6IgogCiBJTklUUkFNRlNfRlNUWVBFUyA/PSAiY3Bpby5neiIKICMgVGhlIG1heGltdW0gc2l6ZSBpbiBLYnl0ZXMgZm9yIHRoZSBnZW5lcmF0ZWQgaW5pdHJhbWZzIGltYWdlIHNpemUuCkBAIC04MDcsNyArODE2LDcgQEAKIAogIyBOYXRpdmUgZGlzdHJvIGZlYXR1cmVzICh3aWxsIGFsd2F5cyBiZSB1c2VkIGZvciAtbmF0aXZlLCBldmVuIGlmIHRoZXkKICMgYXJlIG5vdCBlbmFibGVkIGZvciB0YXJnZXQpCi1ESVNUUk9fRkVBVFVSRVNfTkFUSVZFID89ICJ4MTEgaXB2NiIKK0RJU1RST19GRUFUVVJFU19OQVRJVkUgPz0gIngxMSBpcHY2IHhhdHRyIgogRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyA/PSAieDExIGxpYmMtY2hhcnNldHMgbGliYy1sb2NhbGVzIGxpYmMtbG9jYWxlLWNvZGUiCiAKICMgTm9ybWFsbHkgdGFyZ2V0IGRpc3RybyBmZWF0dXJlcyB3aWxsIG5vdCBiZSBhcHBsaWVkIHRvIG5hdGl2ZSBidWlsZHM6CkBAIC04NTYsNyArODY1LDcgQEAKIEJCX0hBU0hCQVNFX1dISVRFTElTVCA/PSAiVE1QRElSIEZJTEUgUEFUSCBQV0QgQkJfVEFTS0hBU0ggQkJQQVRIIEJCU0VSVkVSIERMX0RJUiBcCiAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAogICAgIFVTRVIgRklMRVNQQVRIIFNUQUdJTkdfRElSX0hPU1QgU1RBR0lOR19ESVJfVEFSR0VUIENPUkVCQVNFIFBSU0VSVl9IT1NUIFwKLSAgICBQUlNFUlZfRFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dOIFBBUkFMTEVMX01BS0UgXAorICAgIFNUQU1QU19ESVIgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKICAgICBDQ0FDSEVfRElSIEVYVEVSTkFMX1RPT0xDSEFJTiBDQ0FDSEUgQ0NBQ0hFX05PSEFTSERJUiBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIFwKICAgICBXQVJOX1FBIEVSUk9SX1FBIFdPUktESVIgU1RBTVBDTEVBTiBQS0dEQVRBX0RJUiBCVUlMRF9BUkNIIFNTVEFURV9QS0dBUkNIIFwKICAgICBCQl9XT1JLRVJDT05URVhUIEJCX0xJTUlURURERVBTIGV4dGVuZF9yZWNpcGVfc3lzcm9vdCBERVBMT1lfRElSIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCmluZGV4IDc2ZDA5YWYuLjk2MjBhZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKQEAgLTQ3LDMgKzQ3LDkgQEAKIAogR1RLMkRJU1RST0ZFQVRVUkVTID0gImRpcmVjdGZiIHgxMSIKIEdUSzNESVNUUk9GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworQVJDSF9ERUZBVUxUX0tFUk5FTElNQUdFVFlQRSA9ICJ6SW1hZ2UiCitBUkNIX0RFRkFVTFRfS0VSTkVMSU1BR0VUWVBFX3g4NiA9ICJiekltYWdlIgorQVJDSF9ERUZBVUxUX0tFUk5FTElNQUdFVFlQRV94ODYtNjQgPSAiYnpJbWFnZSIKK0tFUk5FTF9JTUFHRVRZUEUgPz89ICIke0FSQ0hfREVGQVVMVF9LRVJORUxJTUFHRVRZUEV9IgorS0VSTkVMX0lNQUdFVFlQRVMgPz89ICIke0tFUk5FTF9JTUFHRVRZUEV9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwppbmRleCAyYjc2YzNjLi5lNjVjMWVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwpAQCAtMSw4ICsxLDYgQEAKICMKICMgRGVmYXVsdCB2aXJ0dWFsIHByb3ZpZGVycwogIwotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGIgPz0gImRiIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGItbmF0aXZlID89ICJkYi1uYXRpdmUiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyLXhmODYgPz0gInhzZXJ2ZXIteG9yZyIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2VnbCA/PSAibWVzYSIKQEAgLTQ0LDcgKzQyLDYgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl9vcGtnLW5hdGl2ZSA/PSAib3BrZy1uYXRpdmUiCiBQUkVGRVJSRURfUFJPVklERVJfbmF0aXZlc2RrLW9wa2cgPz0gIm5hdGl2ZXNkay1vcGtnIgogUFJFRkVSUkVEX1BST1ZJREVSX2NvbnNvbGUtdG9vbHMgPz0gImtiZCIKLVBSRUZFUlJFRF9QUk9WSURFUl9nemlwLW5hdGl2ZSA/PSAicGlnei1uYXRpdmUiCiBQUkVGRVJSRURfUFJPVklERVJfdWRldiA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kJywnZXVkZXYnLGQpfSIKIFBSRUZFUlJFRF9SUFJPVklERVJfYmx1ZXotaGNpZHVtcCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV0b290aCBibHVlejUnLCdibHVlejUnLCdibHVlei1oY2lkdW1wJyxkKX0iCiAjIEFsdGVybmF0aXZlIGlzIGx0cC1kZHQgaW4gbWV0YS1vZTogbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cC1kZHQvbHRwLWRkdF8wLjAuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IGY3YzhiNGEuLjEzYzdlNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTEzOCw3ICsxMzgsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1zeXN0ZW1kLWJvb3QgPSAiVWJ1bnR1PXN5c3RlbWQtYm9vdCBGZWRvcmE9c3lzdGVtZC1ib290IgogRElTVFJPX1BOX0FMSUFTX3BuLWhlbGxvLW1vZCA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWhvc3RhcC1jb25mID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4taHdsYXRkZXRlY3QgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4taWNlY2MtY3JlYXRlLWVudiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWluaXQtaWZ1cGRvd24gPSAiRGViaWFuPWlmdXBkb3duIFVidW50dT1pZnVwZG93biIKQEAgLTE2MCw3ICsxNTksNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWtleW1hcHMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1rZiA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1sYW1lID0gIkRlYmlhbj1sYW1lIFVidW50dT1sYW1lIgotRElTVFJPX1BOX0FMSUFTX3BuLWxhdGVuY3l0b3AgPSAiTWVlZ289bGF0ZW5jeXRvcCBGZWRvcmE9bGF0ZW5jeXRvcCBEZWJpYW49bGF0ZW5jeXRvcCBPcGVuU3VTRT1sYXRlbmN5dG9wIgogRElTVFJPX1BOX0FMSUFTX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJVYnVudHU9bGliYy1iaW4gRmVkb3JhPWdsaWJjIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYmE1MiA9ICJNYW5kcml2YT1hNTJkZWMgRGViaWFuPWE1MmRlYyIKIERJU1RST19QTl9BTElBU19wbi1saWJhY3BpID0gIlVidW50dT1saWJhY3BpIE1hbmRyaXZhPWxpYmFjcGkiCkBAIC0yNzgsNyArMjc2LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1vcGtnLWtleXJpbmdzID0gIk9TUERUIHVwc3RyZWFtPWdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL29wa2ctdXRpbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tb3BrZy1ub2dwZyA9ICJPU1BEVCB1cHN0cmVhbT1naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLW9wa2ctdXRpbHMgPSAiT1NQRFQgdXBzdHJlYW09Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyIKLURJU1RST19QTl9BTElBU19wbi1vcHJvZmlsZSA9ICJEZWJpYW49b3Byb2ZpbGUgRmVkb3JhPW9wcm9maWxlIgogRElTVFJPX1BOX0FMSUFTX3BuLW9zLXJlbGVhc2UgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtYmFzZSA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlID0gIk9FLUNvcmUiCkBAIC0zMTYsNyArMzEzLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBvbmctY2xvY2sgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1wb3J0bWFwID0gIkRlYmlhbj1ycGNiaW5kIEZlZG9yYT1ycGNiaW5kIgotRElTVFJPX1BOX0FMSUFTX3BuLXBvc3RpbnN0LWludGVyY2VwdCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBvd2VydG9wID0gIk1lZWdvPXBvd2VydG9wIEZlZG9yYT1wb3dlcnRvcCBEZWJpYW49cG93ZXJ0b3AgT3BlblN1U0U9cG93ZXJ0b3AgTWFuZHJpdmE9cG93ZXJ0b3AiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHBwLWRpYWxpbiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXByZXNlbnRwcm90byA9ICJEZWJpYW49eDExcHJvdG8tcHJlc2VudC1kZXYgRmVkb3JhPXhvcmcteDExLXByb3RvLWRldmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwppbmRleCBkMGU2NDUwLi40OGFmZjk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpAQCAtMzEsNyArMzEsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWNhID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaXRlc3RzID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYWR3YWl0YS1pY29uLXRoZW1lID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWR3YWl0YS1pY29uLXRoZW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtbGliID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXBsdWdpbnMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2Etc3RhdGUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKQEAgLTQ2LDExICs0NiwxMSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXJncC1zdGFuZGFsb25lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXNjaWlkb2MgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXR0ciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYtYXJjaGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCkBAIC01OSw4ICs1OSw4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGktdWkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2gtY29tcGxldGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJjID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCkBAIC03Nyw3ICs3Nyw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0b29sID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJtYXAtdG9vbHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vc3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib290Y2hhcnQyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnNkLWhlYWRlcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC04OSwxMCArODksOSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3gtaW5pdHRhYiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ5YWNjID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iemlwMiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhLWNlcnRpZmljYXRlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2Fpcm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2FsaWJyYXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2NhY2hlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKQEAgLTEwMCwxMiArOTksMTIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1ndGstMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlLW5hdGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvZ2wtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29nbC0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29tcG9zaXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbiA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgpAQCAtMTE2LDIyICsxMTUsMjIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNwaW8gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmFja2xpYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmVhdGVyZXBvLWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9uaWUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9uaWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi1saW51eCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbW9kdWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi10ZXN0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXBzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXJsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLWNoZWNrLXRvb2wgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYW1hZ2Vwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYiA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy1nbGliID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXRlc3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtd2FpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlcG1vZHdyYXBwZXItY3Jvc3MgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaGNwID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC0xNTIsNiArMTUxLDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcm9wYmVhciA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZHRjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHdhcmZzcmNmaWxlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWUyZnNwcm9ncyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVlZS1hY3BpLXNjcmlwdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCkBAIC0xNjQsMjIgKzE2NCwyMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jb2RpbmdzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVwaXBoYW55ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXRodG9vbCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ldWRldiA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldWRldiA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBhdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmZtcGVnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1maWxlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1maW5kdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpeGVzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmxhYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmxleCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC1hbGlhcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udHNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb29tYXRpYy1maWx0ZXJzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZnN0ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZ0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdhd2sgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKQEAgLTE5MywzNCArMTkzLDM1IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc2FuaXRpemVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zb3VyY2UgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2NtYWtlZGVwID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY3IgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGJtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RrLXBpeGJ1ZiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0LW1pbmltYWwtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdob3N0c2NyaXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1naXQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xldyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItMi4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xldyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLW5ldHdvcmtpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbG9jYWxlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbXRyYWNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtc2NyaXB0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWRlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1jb21tb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1jb21tb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZG9jLXV0aWxzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZG9jLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtY29uZmlnID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1lZmkgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251cGcgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXRscyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKQEAgLTIzNSw1MSArMjM2LDUxIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncmVwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JvZmYgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViLWJvb3Rjb25mID0gIkNhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1lZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LXBsYXllciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbGliYXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW9teCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbWV0YS1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtZXhhbXBsZXMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtdmFsaWRhdGUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbGliYXYgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtb214ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1weXRob24gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1kb2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZW5naW5lcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1zYXRvLWVuZ2luZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1lbmdpbmVzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstc2F0by1lbmdpbmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VpbHQtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1bW1pYm9vdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZHBhcm0gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZWxwMm1hbi1uYXRpdmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhpY29sb3ItaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taHdsYXRkZXRlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pMmMtdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWNlY2MtY3JlYXRlLWVudi1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY2VjYy1jcmVhdGUtZW52ID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY29uLW5hbWluZy11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXQtaWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWJvb3QgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtZnJhbWV3b3JrID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290ID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QtdGlueSA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0c2NyaXB0cyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnB1dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWludGx0b29sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXByb3V0ZTIgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgpAQCAtMzAyLDQzICszMDMsMzcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QtbmF0aXZlID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbXNjdWJlID0gIkNhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sM2FmcGFkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sYW1lID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sYXRlbmN5dG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGRjb25maWctbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sZXNzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhNTIgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFjcGkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWlvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJjaGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJ0LWxncGwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXNzdWFuID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF0b21pYy1vcHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJic2QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcC1uZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJic2QgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwLW5nID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjZ3JvdXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjbGFzcy1pc2EtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNoZWNrID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb21wcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbnZlcnQtYXNuMS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjcm9jbyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkYWVtb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkbXggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZHJtID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZHVtcHZhbHVlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlbnYtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXBveHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXJhdGlvbi1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVycm9yLXBlcmwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmVudCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVycm9yLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZkZXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXhpZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZha2VrZXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmaWxlLWNoZWNrdHJlZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbS1leHRyYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZvbnRlbmMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtMzQ2LDU2ICszNDEsNTUgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NyeXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnZm9ydHJhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsYWRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdwZy1lcnJvciA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3VkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpMThuLWNvbGxhdGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljb252ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWQzdGFnID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlucHV0ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpzb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJrc2JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibWF0Y2hib3ggPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtYXRjaGJveCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtbmwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtcGMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0LXB5dGhvbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmZzaWRtYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNsMiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zcy1tZG5zID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib2dnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9teGlsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm93bCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm93bCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwYW0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNhcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2lhY2Nlc3MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBmbTQgPSAiTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwaXBlbGluZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcxMiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwb2QtcGxhaW5lci1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHJveHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHRocmVhZC1zdHVicyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJlcG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyc3ZnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzYW1wbGVyYXRlMCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbDIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZWNyZXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbmRmaWxlMSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic29sdiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvdXAtMi40ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRhc24xID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRlc3QtbmVlZHMtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aGVvcmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aW1lZGF0ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aXJwYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtY3Jvc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgpAQCAtNDAzLDEyICszOTcsMTIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVuaXN0cmluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bndpbmQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJjdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyaS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2ItY29tcGF0ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNlciA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJXZWkgVGVlIE5nIDx3ZWkudGVlLm5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YS11dGlscyA9ICJXZWkgVGVlIE5nIDx3ZWkudGVlLm5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTQyOSwxMiArNDIzLDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aW5lcmFtYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2Jjb21tb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiZmlsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBhcnNlci1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LWJhc2UtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zaW1wbGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBhcnNlci1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtYmFzZS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sMiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG11ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhwbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCkBAIC00NDIsNyArNDM2LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZW5kZXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2NybnNhdmVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzZXR0aW5ncy1jbGllbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2V0dGluZ3MtY2xpZW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzaG1mZW5jZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2x0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtNDYyLDEwICs0NTYsMTAgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLXJ0ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLXRpbnkgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGx2bSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxvZ3JvdGF0ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxyenN6ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2Jpbml0c2NyaXB0cyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2J0ZXN0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc29mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0cCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgpAQCAtNDc4LDM1ICs0NzIsMzYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6b3AgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tNCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tNC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFpbHggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGVwZW5kID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2VkZXZzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2UtbW9kLXNjcmlwdHMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLWRiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4tcGFnZXMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcC1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1wYW5lbC0yID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24tc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRlcm1pbmFsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGhlbWUtc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXdtID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtY29uZmlnLWd0ayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1rZXlib2FyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1wYW5lbC0yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbi1zYXRvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRlcm1pbmFsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtd20gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWRhZG0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWVudS1jYWNoZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZGVtb3MgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWdsID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQtZXh0c2RrID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZXh0c2RrLXRvb2xjaGFpbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWlkZS1zdXBwb3J0ID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS10b29sY2hhaW4gPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLXdvcmxkLXBrZ2RhdGEgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluZ2V0dHkgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluZ2V0dHkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmkteC1zZXNzaW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmljb20gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWtlbGZpbWFnZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKQEAgLTUxNiwyMiArNTExLDIyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta3RlbXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vZHV0aWxzLWluaXRzY3JpcHRzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vZHV0aWxzLWluaXRzY3JpcHRzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGVnMmRlYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZnIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGcxMjMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tc210cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZC11dGlscyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkZXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW11c2wgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1teC0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsLXV0aWxzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hc20gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWxpYnRvb2wgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1xZW11LWhlbHBlciA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHQgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uY3Vyc2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZWFyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKQEAgLTUzOSwxNCArNTM0LDE0IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXRiYXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldHRsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy1leHBvcnQtcm9vdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmluamEgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnNwciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb2Zvbm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb2gtcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9oLXB1enpsZXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzaCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKQEAgLTU2MSwzMSArNTU2LDI5IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vdm1mLXNoZWxsLWltYWdlID0gIlJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wMTEta2l0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZS1pbmRleCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGFuZ28gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGFydGVkID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXRjaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2hlbGYgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXgtdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBiemlwMiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjaXV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtY2lhdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGVyZiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybC1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWd6ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waW5lbnRyeSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeG1hbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeG1hbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wa2djb25maWcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcG0tdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9pbnRlcmNhbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwteGlucHV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9uZy1jbG9jayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcG9wdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9ydG1hcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3dlcnRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHBwLWRpYWxpbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtNTk1LDU0ICs1ODgsMzcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzZXVkbyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHNtaXNjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHNwbGFzaCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1hc3luYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWRpc3RyaWJ1dGUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXRkYiA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWltYWdpbmcgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1tYWtvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbnVtcHkgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1wZXhwZWN0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHR5cHJvY2VzcyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Y2Fpcm8gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWN1cmwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWd0ayA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5cmV4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucy1uYXRpdmUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zZXR1cHRvb2xzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2l4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc21hcnRwbSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtbWFwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRvY3V0aWxzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXRkYiA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbnVtcHkgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcGlwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNldHVwdG9vbHMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2l4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNtbWFwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdS1oZWxwZXItbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdXdyYXBwZXItY3Jvc3MgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdXp6bGVzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1uYXRpdmUgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbm9zZSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1udW1weSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucy1uYXRpdmUgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kYnVzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXRkYiA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW1ha28gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5hdGl2ZSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbm9zZSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbnVtcHkgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHljYWlybyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zaXggPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNtbWFwID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXV3cmFwcGVyLWNyb3NzID0gIkp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1b3RhID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKQEAgLTY1OSwyNyArNjM1LDI2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ybmctdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG1yZXNvbHZlID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yc3luYyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yc3luYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnQtdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydWJ5ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnVieSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ydW4tcG9zdGluc3RzID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnh2dC11bmljb2RlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNhdG8taWNvbi10aGVtZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2JjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3JlZW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2NybnNhdmVycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2VkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXJmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHNlcmlhbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHRpbmdzLWRhZW1vbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3cgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zZWN1cmV0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zeXNyb290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFyZWQtbWltZS1pbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhcmVkLW1pbWUtaW5mbyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaHV0ZG93bi1kZXNrdG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2lnbmluZy1rZXlzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNsYW5nID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNsYW5nID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zb2NhdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc291cmNlLWhpZ2hsaWdodCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNwZWV4ID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCkBAIC02ODcsMTMgKzY2MiwxMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tc3FsaXRlMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcXVhc2hmcy10b29scyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGFydHVwLW5vdGlmaWNhdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmFjZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJlc3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3VidmVyc2lvbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdWRvID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2FiYmVyLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3aWcgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2ZzdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2tsb2dkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKQEAgLTcwMiwyOSArNjc2LDI4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdGNoYXJ0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3Rjb25mID0gIkNhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1jb21wYXQtdW5pdHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc2VyaWFsZ2V0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwLXVwcm9iZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0LWluaXR0YWIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRhZ2xpYiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10YXIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjZi1hZ2VudCA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjcC13cmFwcGVycyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXN0ZXhwb3J0LXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aTJodG1sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbWUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGlueS1pbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdHJhY2UtY21kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHJlbW9yID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10c2xpYiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCkBAIC03MzYsNyArNzA5LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaWZkZWYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmluYXRpdmUtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bnppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXBkYXRlLXJjLmQgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdXNiaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYnV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdXRpbC1saW51eCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgpAQCAtNzQ2LDEwICs3MTksMTAgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGdyaW5kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdmlkZW9wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi12b2xhdGlsZS1iaW5kcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdnRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuLWRlbW9zID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2FmZmxlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnRlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4tZGVtb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2FmZmxlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2ctY29uZmlnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2F5bGFuZCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKQEAgLTc1NywxNCArNzMwLDE0IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZWJraXRndGsgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24taW5pdCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdnZXQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2hpY2ggPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2dldCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2hpY2ggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpcmVsZXNzLXRvb2xzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwYS1zdXBwbGljYW50ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMS1jb21tb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teDExcGVyZiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14MjY0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhhdXRoID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi1wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCkBAIC03NzQsNyArNzQ3LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXdtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjbWlzY3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGRnLXV0aWxzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGRnLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkcHlpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXh0cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtODE2LDcgKzc4OSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhvcmcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teHNldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14dHJhbnMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHRzY2FsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh1c2VyLWFjY291bnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teHZpZGVvLXRlc3RzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCkBAIC04MjQsNSArNzk2LDQgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teWFzbSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4temlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4temlzb2ZzLXRvb2xzLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXpsaWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IGFiMjA2MmIuLmQ2NmRkNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC02LDEwICs2LDExIEBACiAjIGluIHRoZSBESVNUUk89InBva3ktbHNiIiBjb25maWd1cmF0aW9uLgogCiBHQ0NQSUUgPz0gIi0tZW5hYmxlLWRlZmF1bHQtcGllIgorR0xJQkNQSUUgPz0gIi0tZW5hYmxlLXN0YXRpYy1waWUiCiAKICMgX0ZPUlRJRllfU09VUkNFIHJlcXVpcmVzIC1PMSBvciBoaWdoZXIsIHNvIGRpc2FibGUgaW4gZGVidWcgYnVpbGRzIGFzIHRoZXkgdXNlCiAjIC1PMCB3aGljaCB0aGVuIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5nLgotbGNsX21heWJlX2ZvcnRpZnkgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnREVCVUdfQlVJTEQnLCcxJywnJywnLURfRk9SVElGWV9TT1VSQ0U9MicsZCl9IgorbGNsX21heWJlX2ZvcnRpZnkgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKIAogIyBFcnJvciBvbiB1c2Ugb2YgZm9ybWF0IHN0cmluZ3MgdGhhdCByZXByZXNlbnQgcG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbXMKIFNFQ1VSSVRZX1NUUklOR0ZPUk1BVCA/PSAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiCkBAIC0zMCw2ICszMSw3IEBACiBTRUNVUklUWV9DRkxBR1NfcG93ZXJwYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdjY19wb3dlcnBjID0gIiIKIEdDQ1BJRV9wb3dlcnBjID0gIiIKK0dMSUJDUElFX3Bvd2VycGMgPSAiIgogCiAjIGFybSBzcGVjaWZpYyBzZWN1cml0eSBmbGFnIGlzc3VlcwogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdsaWJjID0gIiIKQEAgLTU5LDEyICs2MSw4IEBACiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nY2MtcnVudGltZSA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYy1pbml0aWFsID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1mYmRldiA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8taW50ZWwgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLW9tYXBmYiA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tb21hcCA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tdmVzYSA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tdm13YXJlID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKKyMgQWxsIHhvcmcgbW9kdWxlIGRyaXZlcnMgbmVlZCB0byBiZSBsaW5rZWQgdGhpcyB3YXkgYXMgd2VsbCBhbmQgYXJlCisjIGhhbmRsZWQgaW4gcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCiBTRUNVUklUWV9MREZMQUdTX3BuLXhzZXJ2ZXIteG9yZyA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCiAKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1iaW51dGlscyA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYwppbmRleCA5YWUyYTkzLi41NGUxYWNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYwpAQCAtMjYsNCArMjYsNyBAQAogICAgIG11c2wgXAogICAgIG11c2wtZGJnIFwKICAgICBtdXNsLWRldiBcCisgICAgbXVzbC11dGlscyBcCisgICAgbXVzbC11dGlscy1pY29udiBcCisgICAgYnNkLWhlYWRlcnMtZGV2IFwKICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCmluZGV4IDE3ODdhODIuLjAwMzk5YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0yNCwxMCArMjQsMTEgQEAKIAogR0NDVkVSU0lPTiA/PSAiNy4lIgogU0RLR0NDVkVSU0lPTiA/PSAiJHtHQ0NWRVJTSU9OfSIKLUJJTlVWRVJTSU9OID89ICIyLjI5JSIKK0JJTlVWRVJTSU9OID89ICIyLjMwJSIKIEdEQlZFUlNJT04gPz0gIjguMCUiCi1HTElCQ1ZFUlNJT04gPz0gIjIuMjYlIgotTElOVVhMSUJDVkVSU0lPTiA/PSAiNC4xMiUiCitHTElCQ1ZFUlNJT04gPz0gIjIuMjclIgorTElOVVhMSUJDVkVSU0lPTiA/PSAiNC4xNSUiCitRRU1VVkVSU0lPTiA/PSAiMi4xMSUiCiAKIFBSRUZFUlJFRF9WRVJTSU9OX2djYyA/PSAiJHtHQ0NWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHQ0NWRVJTSU9OfSIKQEAgLTYzLDEwICs2NCwyMSBAQAogUFJFRkVSUkVEX1ZFUlNJT05fZ2xpYmMtaW5pdGlhbCAgICAgICAgICAgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ2xpYmMtaW5pdGlhbCAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmUgICA/PSAiJHtHTElCQ1ZFUlNJT059IgotIyBkb24ndCB1c2UgdmVyc2lvbiBlYXJsaWVyIHRoYW4gMS40IGZvciBnemlwLW5hdGl2ZSwgYXMgaXQncyBuZWNlc3NhcnkgZm9yCi0jIHNvbWUgcGFja2FnZXMgdXNpbmcgYW4gYXJjaGl2ZSBmb3JtYXQgaW5jb21wYXRpYmxlIHdpdGggZWFybGllciBnemlwCi1QUkVGRVJSRURfVkVSU0lPTl9nemlwLW5hdGl2ZSA/PSAiMS44IgogCisKK1BSRUZFUlJFRF9WRVJTSU9OX3FlbXUgPz0gIiR7UUVNVVZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fcWVtdS1uYXRpdmUgPz0gIiR7UUVNVVZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLXFlbXUgPz0gIiR7UUVNVVZFUlNJT059IgogIyBTZXR1cCBzdWl0YWJsZSB0b29sY2hhaW4gZmxhZ3MKIHJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCiAKK0dPVkVSU0lPTiA/PSAiMS45JSIKK1BSRUZFUlJFRF9WRVJTSU9OX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ28tY3Jvc3NzZGstJHtTREtfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2dvLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2dvID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1uYXRpdmUgPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2dvLXJ1bnRpbWUgPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1nbyA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdvLXJ1bnRpbWUgPz0gIiR7R09WRVJTSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwppbmRleCBjZDVmYzBiLi5hOGU4MmNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCkBAIC04LDYgKzgsNiBAQAogCiBVTklOQVRJVkVfTUFYR0xJQkNWRVJTSU9OID0gIjIuMjciCiAKLVVOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMS44LyIKLVVOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiNDI3Y2U1MjJlYzk3ZjY1Yzc1ZmQ4OTU4N2Q5MGVmNzg5ZThjYmNhNGE2MTdhYmM0YjU4MjJhYmIwMWMyZDBhZSIKLVVOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICJkZTQ5NDdlOThlMDllMTQzMmQwNjkzMTFjYzIwOTM5NzRlY2I5MTM4YTcxNGZkNTQ2NmY3MzUyNGRlNjZhNjkzIgorVU5JTkFUSVZFX1VSTCA/PSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3VuaW5hdGl2ZS8xLjkvIgorVU5JTkFUSVZFX0NIRUNLU1VNW2k2ODZdID89ICI4M2E0ZjkyN2RhODFkOTg4OWVmMGNiZTVjMTJjYjc4MmUyMWM2Y2MxMWU2MTU1NjAwYjk0ZmYwYzk5NTc2ZGNlIgorVU5JTkFUSVZFX0NIRUNLU1VNW3g4Nl82NF0gPz0gImMyNjYyMmExZjI3ZGJmNWIyNWRlOTg2YjExNTg0YjVjNWIyZjMyMmQ5ZWIzNjdmNzA1YTc0NGY1OGE1NTYxZWMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCmluZGV4IDA4MWU3MjYuLjI1NGY4ZjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCkBAIC04LDcgKzgsNiBAQAogZG9fYnVpbGRbZG9jXSA9ICJEZWZhdWx0IHRhc2sgZm9yIGEgcmVjaXBlIC0gZGVwZW5kcyBvbiBhbGwgb3RoZXIgbm9ybWFsIHRhc2tzIHJlcXVpcmVkIHRvICdidWlsZCcgYSByZWNpcGUiCiBkb19idW5kbGVfaW5pdHJhbWZzW2RvY10gPSAiQ29tYmluZXMgYW4gaW5pdGlhbCByYW1kaXNrIGltYWdlIGFuZCBrZXJuZWwgdG9nZXRoZXIgdG8gZm9ybSBhIHNpbmdsZSBpbWFnZSIKIGRvX2NoZWNrdXJpW2RvY10gPSAiVmFsaWRhdGVzIHRoZSBTUkNfVVJJIHZhbHVlIgotZG9fY2hlY2t1cmlhbGxbZG9jXSA9ICJWYWxpZGF0ZXMgdGhlIFNSQ19VUkkgdmFsdWUgZm9yIGFsbCByZWNpcGVzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgdGFyZ2V0IgogZG9fY2xlYW5bZG9jXSA9ICJSZW1vdmVzIGFsbCBvdXRwdXQgZmlsZXMgZm9yIGEgdGFyZ2V0IgogZG9fY2xlYW5hbGxbZG9jXSA9ICJSZW1vdmVzIGFsbCBvdXRwdXQgZmlsZXMsIHNoYXJlZCBzdGF0ZSBjYWNoZSwgYW5kIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCIKIGRvX2NsZWFuc3N0YXRlW2RvY10gPSAiUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzIGFuZCBzaGFyZWQgc3RhdGUgY2FjaGUgZm9yIGEgdGFyZ2V0IgpAQCAtMjIsNyArMjEsNiBAQAogZG9fZGV2c2hlbGxbZG9jXSA9ICJTdGFydHMgYSBzaGVsbCB3aXRoIHRoZSBlbnZpcm9ubWVudCBzZXQgdXAgZm9yIGRldmVsb3BtZW50L2RlYnVnZ2luZyIKIGRvX2RpZmZjb25maWdbZG9jXSA9ICJDb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgY29uZmlnIGZpbGVzIGFmdGVyIHJ1bm5pbmcgZG9fbWVudWNvbmZpZyBmb3IgdGhlIGtlcm5lbCIKIGRvX2ZldGNoW2RvY10gPSAiRmV0Y2hlcyB0aGUgc291cmNlIGNvZGUiCi1kb19mZXRjaGFsbFtkb2NdID0gIkZldGNoZXMgYWxsIHJlbW90ZSBzb3VyY2VzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgdGFyZ2V0IgogZG9faW5zdGFsbFtkb2NdID0gIkNvcGllcyBmaWxlcyBmcm9tIHRoZSBjb21waWxhdGlvbiBkaXJlY3RvcnkgdG8gYSBob2xkaW5nIGFyZWEiCiBkb19pbnN0YWxsX3B0ZXN0X2Jhc2VbZG9jXSA9ICJDb3BpZXMgdGhlIHJ1bnRpbWUgdGVzdCBzdWl0ZSBmaWxlcyBmcm9tIHRoZSBjb21waWxhdGlvbiBkaXJlY3RvcnkgdG8gYSBob2xkaW5nIGFyZWEiCiBkb19rZXJuZWxfY2hlY2tvdXRbZG9jXSA9ICJDaGVja3Mgb3V0IHNvdXJjZS9tZXRhIGJyYW5jaGVzIGZvciBhIGxpbnV4LXlvY3RvIHN0eWxlIGtlcm5lbCIKQEAgLTI0Nyw2ICsyNDUsNyBAQAogS0VSTkVMX0lNQUdFVFlQRVNbZG9jXSA9ICJUaGUgbGlzdCBvZiB0eXBlcyBvZiBrZXJuZWwgdG8gYnVpbGQgZm9yIGEgZGV2aWNlLCB1c3VhbGx5IHNldCBieSB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBkZWZhdWx0cyB0byBLRVJORUxfSU1BR0VUWVBFLiIKIEtFUk5FTF9NT0RVTEVfQVVUT0xPQURbZG9jXSA9ICJMaXN0cyBrZXJuZWwgbW9kdWxlcyB0aGF0IG5lZWQgdG8gYmUgYXV0by1sb2FkZWQgZHVyaW5nIGJvb3QiCiBLRVJORUxfTU9EVUxFX1BST0JFQ09ORltkb2NdID0gIkxpc3RzIGtlcm5lbCBtb2R1bGVzIGZvciB3aGljaCB0aGUgYnVpbGQgc3lzdGVtIGV4cGVjdHMgdG8gZmluZCBtb2R1bGVfY29uZl8qIHZhbHVlcyB0aGF0IHNwZWNpZnkgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBvZiB0aGUgbW9kdWxlcyIKK0tFUk5FTF9QQUNLQUdFX05BTUVbZG9jXSA9ICJOYW1lIHByZWZpeCBmb3Iga2VybmVsIHBhY2thZ2VzLiBEZWZhdWx0cyB0byAna2VybmVsJy4iCiBLRVJORUxfUEFUSFtkb2NdID0gIlRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZXMuIFRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgU1RBR0lOR19LRVJORUxfRElSIHdpdGhpbiB0aGUgbW9kdWxlIGNsYXNzIChtb2R1bGUuYmJjbGFzcykuIgogS0VSTkVMX1NSQ1tkb2NdID0gIlRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZXMuIFRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgU1RBR0lOR19LRVJORUxfRElSIHdpdGhpbiB0aGUgbW9kdWxlIGNsYXNzIChtb2R1bGUuYmJjbGFzcykuIgogS0ZFQVRVUkVfREVTQ1JJUFRJT05bZG9jXSA9ICJQcm92aWRlcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudC4gWW91IHVzZSB0aGlzIHZhcmlhYmxlIGluIHRoZSAuc2NjIGZpbGUgdGhhdCBkZXNjcmliZXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGUuIgpAQCAtMzMzLDcgKzMzMiw2IEBACiBQUkVGRVJSRURfUFJPVklERVJbZG9jXSA9ICJJZiBtdWx0aXBsZSByZWNpcGVzIHByb3ZpZGUgYW4gaXRlbSwgdGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4iCiBQUkVGRVJSRURfVkVSU0lPTltkb2NdID0gIklmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiByZWNpcGVzIGF2YWlsYWJsZSwgdGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4iCiBQUkVNSVJST1JTW2RvY10gPSAiU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZXRzIHNvdXJjZSBjb2RlLiIKLVBSSU5DW2RvY10gPSAiQ2F1c2VzIHRoZSBQUiB2YXJpYWJsZSBvZiAuYmJhcHBlbmQgZmlsZXMgdG8gZHluYW1pY2FsbHkgaW5jcmVtZW50LiBUaGlzIGluY3JlbWVudCBtaW5pbWl6ZXMgdGhlIGltcGFjdCBvZiBsYXllciBvcmRlcmluZy4gVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byAnMCcuIgogUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJyBhbmQgJ2V4dHJhJy4iCiBQUk9WSURFU1tkb2NdID0gIkEgbGlzdCBvZiBhbGlhc2VzIHRoYXQgYSByZWNpcGUgYWxzbyBwcm92aWRlcy4gVGhlc2UgYWxpYXNlcyBhcmUgdXNlZnVsIGZvciBzYXRpc2Z5aW5nIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzIGR1cmluZyB0aGUgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5IERFUEVORFMuIgogUFJTRVJWX0hPU1RbZG9jXSA9ICJUaGUgbmV0d29yayBiYXNlZCBQUiBzZXJ2aWNlIGhvc3QgYW5kIHBvcnQuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCmluZGV4IDBjM2RhZTUuLjMxNWZiOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTcsMTEgKzcsMTIgQEAKIEJCRklMRV9QQVRURVJOX2NvcmUgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9jb3JlID0gIjUiCiAKK0xBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJzdW1vIgorCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl9jb3JlID0gIjExIgotCi1MQVlFUlNFUklFU19DT1JFTkFNRVMgPSAicm9ja28iCitMQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJzdW1vIgogCiBCQkxBWUVSU19MQVlFUklOREVYX05BTUVfY29yZSA9ICJvcGVuZW1iZWRkZWQtY29yZSIKIApAQCAtNDUsNiArNDYsMTEgQEAKICIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKKyAgKi0+cXVpbHQtbmF0aXZlIFwKKyAgKi0+c3VidmVyc2lvbi1uYXRpdmUgXAorICAqLT5naXQtbmF0aXZlIFwKKyAgKi0+Y2NhY2hlLW5hdGl2ZSBcCisgICotPmljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlIFwKICAgZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9LT52aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MgXAogICBnY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0tPmxpbnV4LWxpYmMtaGVhZGVycyBcCiAgIHBwcC1kaWFsaW4tPnBwcCBcCkBAIC02MiwxMyArNjgsMTQgQEAKICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT5ncnViIFwKICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT5wYXJ0ZWQgXAogICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtPnV0aWwtbGludXggXAorICBncnViLWVmaS0+Z3J1Yi1ib290Y29uZiBcCiAgIGxpYmVyYXRpb24tZm9udHMtPmZvbnRjb25maWcgXAogICBjYW50YXJlbGwtZm9udHMtPmZvbnRjb25maWcgXAogICBnbm9tZS1pY29uLXRoZW1lLT5saWJyc3ZnIFwKICAgZm9udC1hbGlhcy0+Zm9udC11dGlsIFwKKyAgc3lzdGVtZC1ib290LT5zeXN0ZW1kLWJvb3Rjb25mIFwKICAgd2VzdG9uLWluaXQtPndlc3RvbiBcCiAgIHdlc3Rvbi1pbml0LT5rYmQgXAotICBvcHJvZmlsZS0+dmlydHVhbC9rZXJuZWwgXAogIgogCiAjIFdlIG5lZWQgdG8ga2VlcCBiaXRiYWtlIHRvb2xzIGluIFBBVEgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWI3MTcxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCkBAIC0wLDAgKzEsNTMgQEAKKyMgTWljcm9CbGF6ZSBhcmNoaXRlY3R1cmUgdHVuZSBmZWF0dXJlIGNvbmZpZ3VyYXRpb24KKworIyBBcmNoaXRlY3R1cmUgZmVhdHVyZSBhbmQgb3ZlcnJpZGUKK1RVTkVWQUxJRFttaWNyb2JsYXplXSA9ICJNaWNyb0JsYXplIgorTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibWljcm9ibGF6ZSIsICJtaWNyb2JsYXplOiIsICIiLCBkKX0iCisKKyMgRW5kaWFuCitUVU5FVkFMSURbYmlnZW5kaWFuXSA9ICJVc2UgTWljcm9ibGF6ZSBCaWcgRW5kaWFuIgorVFVORUNPTkZMSUNUU1tiaWdlbmRpYW5dICs9ICJ2MTAuMCIKKworTUJQS0dBUkNIX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiZWIiLCAiZWwiLCBkKX0iCisKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiLW1iaWctZW5kaWFuIiwgIi1tbGl0dGxlLWVuZGlhbiIsIGQpfSIKKworIyBHZW5lcmFsIGZlYXR1cmVzCitUVU5FVkFMSURbYmFycmVsLXNoaWZ0XSA9ICJFbmFibGUgSGFyZHdhcmUgQmFycmVsIFNoaWZ0ZXIiCitUVU5FVkFMSURbcGF0dGVybi1jb21wYXJlXSA9ICJFbmFibGUgUGF0dGVybiBDb21wYXJlIEluc3RydWN0aW9ucyIKK1RVTkVWQUxJRFtyZW9yZGVyXSA9ICJFbmFibGUgUmVvcmRlciBJbnN0cnVjdGlvbnMiCitUVU5FQ09ORkxJQ1RTW3Jlb3JkZXJdICs9ICJ2OC4wMCB2OC4xMCB2OC4yMCIKKworIyBDb3JlIGNvbmZpZ3VyYXRpb24gdHVuZSBvcHRpbWl6YXRpb25zCitUVU5FVkFMSURbZnJlcXVlbmN5LW9wdGltaXplZF0gPSAiRW5hYmxpbmcgdHVuaW5nIGZvciBmcmVxdWVuY3kgb3B0aW1pemVkIGNvcmUgKEFSRUFfT1BUSU1JWkVEXzIpIgorVFVORUNPTkZMSUNUU1tmcmVxdWVuY3ktb3B0aW1pemVkXSArPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiIKKworIyBGZWF0dXJlIGNvbXBpbGVyIGFyZ3MKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiYXJyZWwtc2hpZnQiLCAiLW14bC1iYXJyZWwtc2hpZnQiLCAiLW1uby14bC1iYXJyZWwtc2hpZnQiLCBkKX0iCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgIi1teGwtcGF0dGVybi1jb21wYXJlIiwgIi1tbm8teGwtcGF0dGVybi1jb21wYXJlIiwgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImZyZXF1ZW5jeS1vcHRpbWl6ZWQiLCAiLW14bC1mcmVxdWVuY3kiLCAiIiwgZCl9IgorCisjIERpc2FibGUgcmVvcmRlciBmb3IgdjguMzAgaWYgcGF0dGVybi1jb21wYXJlIGlzIG5vdCBlbmFibGVkCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicmVvcmRlciIsIFwKKyAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAidjguMzAiLCBcCisgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCBcCisgICAgICAgICAgICAgICAgIi1teGwtcmVvcmRlciIsICItbW5vLXhsLXJlb3JkZXIiLCBkKSwgXAorICAgICAgICAgICAgIi1teGwtcmVvcmRlciIsIGQpLCAiLW1uby14bC1yZW9yZGVyIiwgZCl9IgorCisjIEZlYXR1cmUgcGFja2FnZSBhcmNoaXRlY3R1cmUgZm9ybWF0dGluZworTUJQS0dBUkNIX1RVTkUgPSAiIgorTUJQS0dBUkNIX1RVTkUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJhcnJlbC1zaGlmdCIsICItYnMiLCAiIiwgZCl9IgorTUJQS0dBUkNIX1RVTkUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsICItY21wIiwgIiIsIGQpfSIKK01CUEtHQVJDSF9UVU5FIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJyZW9yZGVyIiwgIi1yZSIsICIiLCBkKX0iCitNQlBLR0FSQ0hfVFVORSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnJlcXVlbmN5LW9wdGltaXplZCIsICItZm8iLCAiIiwgZCl9IgorCisjIEFkZGl0aW9uYWwgZmVhdHVyZXMKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCisKKyMgQXJjaGl0ZWN0dXJlIG5hbWUsIGVpdGhlciAnbWljcm9ibGF6ZWViJyBvciAnbWljcm9ibGF6ZWVsJyBkZXBlbmRpbmcgb24gZW5kaWFuZXNzCitUVU5FX0FSQ0ggPSAibWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICJlYiIsICJlbCIsIGQpfSIKKworIyBQYWNrYWdlIEFyY2hpdGVjdHVyZSBmb3JtYXR0aW5nCitUVU5FX1BLR0FSQ0ggPSAibWljcm9ibGF6ZSR7TUJQS0dBUkNIX0VORElBTn0ke01CUEtHQVJDSF9WRVJTSU9OfSR7TUJQS0dBUkNIX1RVTkV9JHtNQlBLR0FSQ0hfTUFUSH0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMxNTE2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCkBAIC0wLDAgKzEsMzMgQEAKKyMgVGhpcyBpbmNsdWRlIGRlc2NyaWJlcyB0aGUgbWF0aCBmZWF0dXJlcyAoaW50ZWdlciBhbmQgZmxvYXRpbmcgcG9pbnQpIHRoYXQKKyMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIE1pY3JvQmxhemUgSVNBCisKK1RVTkVWQUxJRFttdWx0aXBseS1sb3ddID0gIkhhcmR3YXJlIG11bHRpcGxlciB3aXRoIDMyIGJpdCByZXN1bHQiCitUVU5FVkFMSURbbXVsdGlwbHktaGlnaF0gPSAiSGFyZHdhcmUgbXVsdGlwbGVyIHdpdGggNjQgYml0IHJlc3VsdCIKK1RVTkVWQUxJRFtkaXZpZGUtaGFyZF0gPSAiSGFyZHdhcmUgZGl2aWRlciIKK1RVTkVWQUxJRFtmcHUtc29mdF0gPSAiU29mdHdhcmUgRlBVIgorVFVORVZBTElEW2ZwdS1oYXJkXSA9ICJIYXJkd2FyZSBGUFUgaW4gYmFzaWMgbW9kZSIKK1RVTkVWQUxJRFtmcHUtaGFyZC1leHRlbmRlZF0gPSAiSGFyZHdhcmUgRlBVIGluIGV4dGVuZGVkIG1vZGUgKGNvbnZlcnNpb24gYW5kIHNxdWFyZSByb290IGluc3RydWN0aW9ucykiCisKK1RVTkVDT05GTElDVFNbZnB1LXNvZnRdID0gImZwdS1oYXJkIGZwdS1oYXJkLWV4dGVuZGVkIgorVFVORUNPTkZMSUNUU1tmcHUtaGFyZF0gPSAiZnB1LXNvZnQiCitUVU5FQ09ORkxJQ1RTW2ZwdS1oYXJkLWV4dGVuZGVkXSA9ICJmcHUtc29mdCIKKworIyBDb21waWxlciBhcmdzCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydtdWx0aXBseS1sb3cnLCAnbXVsdGlwbHktaGlnaCddLCAnLW1uby14bC1zb2Z0LW11bCcsICctbXhsLXNvZnQtbXVsJywgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnLW14bC1tdWx0aXBseS1oaWdoJywgJycsIGQpfSIKKworVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2RpdmlkZS1oYXJkJywgJy1tbm8teGwtc29mdC1kaXYnLCAnLW14bC1zb2Z0LWRpdicsIGQpfSIKKworVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1zb2Z0JywgJycsICcnLCBkKX0iCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydmcHUtaGFyZCcsICdmcHUtaGFyZC1leHRlbmRlZCddLCAnLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZC1leHRlbmRlZCcsICctbXhsLWZsb2F0LWNvbnZlcnQgLW14bC1mbG9hdC1zcXJ0JywgJycsIGQpfSIKKworIyBTZXQgdGFyZ2V0IGZwdSAoYml0YmFrZSBrbm93biB0YXJnZXQpIHRvIHNvZnQgb3IgaGFyZCAoYmFzaWMgb3IgZXh0ZW5kZWQpCitUQVJHRVRfRlBVID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZCBmcHUtaGFyZC1leHRlbmRlZCcsICdmcHUtaGFyZCcsICdmcHUtc29mdCcsIGQpfSIKKworIyBQYWNrYWdlIEFyY2hpdGVjdHVyZSBmb3JtYXR0aW5nCitNQlBLR0FSQ0hfTUFUSCA9ICIiCitNQlBLR0FSQ0hfTUFUSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktaGlnaCcsICctbWgnLCBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtdWx0aXBseS1sb3cnLCAnLW1sJywgJycsIGQpLCBkKX0iCitNQlBLR0FSQ0hfTUFUSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZGl2aWRlLWhhcmQnLCAnLWRpdicsICcnLCBkKX0iCitNQlBLR0FSQ0hfTUFUSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnLWZlJywgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQnLCAnLWZiJywgJycsIGQpLCBkKX0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTU2NzRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCkBAIC0wLDAgKzEsNjcgQEAKKyMgTWljcm9CbGF6ZSB2ZXJzaW9ucyBhcmUgZGVmaW5lZCBhcyBmZWF0dXJlcywgdGhlIGZlYXR1cmVzIGFyZSBzZXR1cCB0bworIyBjb25mbGljdCB3aXRoIG90aGVyIHZlcnNpb25zIGFzIHdlbGwgYXMgdW5hdmFpbGFibGUgZmVhdHVyZXMgZm9yIHBhcnRpY3VsYXIKKyMgdmVyc2lvbnMuCisjCisjIFZlcnNpb25zIGJlZm9yZSB2OS4wIG9mIE1pY3JvQmxhemUgdXNlIGEgdmVyc2lvbmluZyBzY2hlbWUgb2YgInZYLllZLloiCisjICh3aGVyZSBaID0gW2FiY10pLiBGb3IgdjguKiB2ZXJzaW9ucyBvZiBNaWNyb0JsYXplIHRoZSByZXZpc2lvbiAoWikgY2hhbmdlcworIyBkaWQgbm90IGFmZmVjdCBBQkkgYW5kIGFyZSBpZ25vcmVkIGJ5IHRoaXMgdHVuZSBjb25maWd1cmF0aW9uLiBUaG91Z2ggdGhpcworIyBmb3JtYXQgaXMgZXhwZWN0ZWQgYnkgR0NDIGluY2x1ZGluZyB0aGUgcmV2aXNpb24sIGJ1dCB0aGlzIGlzIGRlZmF1bHRlZCB0bworIyAiLmEiLgorIworIyBTaW5jZSB2OS4wIG9mIE1pY3JvQmxhemUgdGhlIHJldmlzaW9uIChaKSBwYXJ0IG9mIHZlcnNpb25zIHdhcyBlbnRpcmVseQorIyBkcm9wcGVkIGFuZCB0aGUgdmVyc2lvbiBzY2hlbWUgd2FzIGNoYW5nZWQgdG8gInZYLlkiLgorCitkZWYgbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgZ2NjID0gRmFsc2UpOgorICAgIGltcG9ydCByZQorICAgICMgZmluZCB0aGUgY3VycmVudCB2ZXJzaW9uLCBhbmQgY29udmVydCBpdCB0byBtYWpvci9taW5vciBpbnRlZ2VycworICAgIHZlcnNpb24gPSBOb25lCisgICAgZm9yIHQgaW4gKGQuZ2V0VmFyKCJUVU5FX0ZFQVRVUkVTIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgIG0gPSByZS5zZWFyY2goIl52KFxkKylcLihcZCspIiwgdCkKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbnQobS5ncm91cCgxKSksIGludChtLmdyb3VwKDIpKQorICAgICAgICAgICAgYnJlYWsKKworICAgICMgZm9ybWF0IHRoZSB2ZXJzaW9uIHN0cmluZyBpbiBnZW5lcmljIG9yIEdDQyBzcGVjaWZpYyBmb3JtYXRzCisgICAgaWYgdmVyc2lvbjoKKyAgICAgICAgaWYgdmVyc2lvblswXSA8PSA4OgorICAgICAgICAgICAgcmV0dXJuICgidiVkLiUwMmQiICUgdmVyc2lvblswOjJdKSArICgiLmEiIGlmIGdjYyBlbHNlICIiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJ2JWQuJWQiICUgdmVyc2lvblswOjJdCisgICAgcmV0dXJuICIiCisKKyMgTWljcm9CbGF6ZSB2ZXJzaW9ucworVFVORVZBTElEW3Y4LjAwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC4wMCIKK1RVTkVWQUxJRFt2OC4xMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguMTAiCitUVU5FVkFMSURbdjguMjBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjIwIgorVFVORVZBTElEW3Y4LjMwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC4zMCIKK1RVTkVWQUxJRFt2OC40MF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguNDAiCitUVU5FVkFMSURbdjguNTBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjUwIgorVFVORVZBTElEW3Y5LjBdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS4wIgorVFVORVZBTElEW3Y5LjFdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS4xIgorVFVORVZBTElEW3Y5LjJdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS4yIgorVFVORVZBTElEW3Y5LjNdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS4zIgorVFVORVZBTElEW3Y5LjRdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS40IgorVFVORVZBTElEW3Y5LjVdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS41IgorVFVORVZBTElEW3Y5LjZdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS42IgorVFVORVZBTElEW3YxMC4wXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gMTAuMCIKKworIyBWZXJzaW9uIGNvbmZsaWN0IG1hdHJpeAorVFVORUNPTkZMSUNUU1t2OC4wMF0gPSAiIgorVFVORUNPTkZMSUNUU1t2OC4xMF0gPSAidjguMDAiCitUVU5FQ09ORkxJQ1RTW3Y4LjIwXSA9ICJ2OC4wMCB2OC4xMCIKK1RVTkVDT05GTElDVFNbdjguMzBdID0gInY4LjAwIHY4LjEwIHY4LjIwIgorVFVORUNPTkZMSUNUU1t2OC40MF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAiCitUVU5FQ09ORkxJQ1RTW3Y4LjUwXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCIKK1RVTkVDT05GTElDVFNbdjkuMF0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIgorVFVORUNPTkZMSUNUU1t2OS4xXSAgPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCIKK1RVTkVDT05GTElDVFNbdjkuMl0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSIKK1RVTkVDT05GTElDVFNbdjkuM10gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIgorVFVORUNPTkZMSUNUU1t2OS40XSAgPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyIKK1RVTkVDT05GTElDVFNbdjkuNV0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCIKK1RVTkVDT05GTElDVFNbdjkuNl0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IgorVFVORUNPTkZMSUNUU1t2MTAuMF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiIKKworIyBWZXJzaW9uIGZsYWdzCitUVU5FX0NDQVJHUyArPSAiLW1jcHU9JHtAbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSl9IgorTUJQS0dBUkNIX1ZFUlNJT04gPSAiLSR7QG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQpfSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwppbmRleCBlNjRiMGM4Li5hYTMzMmZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwpAQCAtMTYsNyArMTYsNyBAQAogSU1BR0VfRlNUWVBFUyArPSAidGFyLmJ6MiBleHQ0IgogCiAjIERvbid0IGluY2x1ZGUga2VybmVscyBpbiBzdGFuZGFyZCBpbWFnZXMKLVJERVBFTkRTX2tlcm5lbC1iYXNlID0gIiIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIiCiAKICMgVXNlIGEgY29tbW9uIGtlcm5lbCByZWNpcGUgZm9yIGFsbCBRRU1VIG1hY2hpbmVzCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgpAQCAtMjcsNiArMjcsNCBAQAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvLXJ0ID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKIAotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAicm5nLXRvb2xzIgotCiBJTUFHRV9DTEFTU0VTICs9ICJxZW11Ym9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKaW5kZXggZjRiYTQzZi4uYzY4NmJiNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKQEAgLTgsMTEgKzgsOCBAQAogIwogREVGQVVMVFRVTkUgPz0gImNvcmUyLTMyIgogCi0jIFNldCB4ODYgdGFyZ2V0IGFyY2ggdG8gaTY4Niwgc28gdGhhdCBnbGliYyBlbmFibGVzIFNTRSBvcHRpbWlzZWQgbWVtY3B5LCBldGMuCi1YODZBUkNIMzIgPz0gImk2ODYiCi0KICMgSW5jbHVkZSB0aGUgcHJldmlvdXMgdHVuZSB0byBwdWxsIGluIFBBQ0tBR0VfRVhUUkFfQVJDSFMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNTg2LmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk2ODYuaW5jCiAKICMgRXh0cmEgdHVuZSBmZWF0dXJlcwogVFVORVZBTElEW2NvcmUyXSA9ICJFbmFibGUgY29yZTIgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCkBAIC0yMywxNiArMjAsMTkgQEAKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3JlMi0zMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODZ9IGNvcmUyIgogQkFTRV9MSUJfdHVuZS1jb3JlMi0zMiA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi0zMiA9ICJjb3JlMi0zMiIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3JlMi0zMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1pNTg2fSBjb3JlMi0zMiIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3JlMi0zMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1pNjg2fSBjb3JlMi0zMiIKK1FFTVVfRVhUUkFPUFRJT05TX2NvcmUyLTMyID0gIiAtY3B1IGNvcmUyZHVvIgogCiBBVkFJTFRVTkVTICs9ICJjb3JlMi02NCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3JlMi02NCA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODYtNjR9IGNvcmUyIgogQkFTRV9MSUJfdHVuZS1jb3JlMi02NCA9ICJsaWI2NCIKIFRVTkVfUEtHQVJDSF90dW5lLWNvcmUyLTY0ID0gImNvcmUyLTY0IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcmUyLTY0ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXg4Ni02NH0gY29yZTItNjQiCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi02NCA9ICIgLWNwdSBjb3JlMmR1byIKIAogQVZBSUxUVU5FUyArPSAiY29yZTItNjQteDMyIgogVFVORV9GRUFUVVJFU190dW5lLWNvcmUyLTY0LXgzMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODYtNjQteDMyfSBjb3JlMiIKIEJBU0VfTElCX3R1bmUtY29yZTItNjQteDMyID0gImxpYngzMiIKIFRVTkVfUEtHQVJDSF90dW5lLWNvcmUyLTY0LXgzMiA9ICJjb3JlMi02NC14MzIiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29yZTItNjQteDMyID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXg4Ni02NC14MzJ9IGNvcmUyLTY0LXgzMiIKK1FFTVVfRVhUUkFPUFRJT05TX2NvcmUyLTY0LXgzMiA9ICIgLWNwdSBjb3JlMmR1byIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtaTY4Ni5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk2ODYuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYjQ3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk2ODYuaW5jCkBAIC0wLDAgKzEsMjcgQEAKKyMKKyMgVGhlIGk2ODYgQ1BVIGZhbWlseSB3YXMgaW50cm9kdWNlZCB3aXRoIHRoZSBJbnRlbCBQZW50aXVtIFBybyBpbiAxOTk1LgorIyBJdCBoYXMgYXMgcmVxdWlyZWQgZmVhdHVyZSBmbGFnczogZnB1IHRzYyBjeDggY21vdi4KKyMKKyMgSXQgaXMgdGhlIG1pbmltdW0gQ1BVIHJlcXVpcmVkIGJ5IHRoZSBEZWJpYW4gaTM4NiBwb3J0LgorIyBodHRwczovL2xpc3RzLmRlYmlhbi5vcmcvZGViaWFuLWRldmVsLWFubm91bmNlLzIwMTYvMDUvbXNnMDAwMDEuaHRtbAorIworIworCitERUZBVUxUVFVORSA/PSAiaTY4NiIKKworIyBTZXQgeDg2IHRhcmdldCBhcmNoIHRvIGk2ODYsIHNvIHRoYXQgZ2xpYmMgZW5hYmxlcyBTU0Ugb3B0aW1pc2VkIG1lbWNweSwgZXRjLgorWDg2QVJDSDMyID89ICJpNjg2IgorCisjIEluY2x1ZGUgdGhlIHByZXZpb3VzIHR1bmUgdG8gcHVsbCBpbiBQQUNLQUdFX0VYVFJBX0FSQ0hTCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtaTU4Ni5pbmMKKworIyBFeHRyYSB0dW5lIGZlYXR1cmVzCitUVU5FVkFMSURbaTY4Nl0gPSAiRW5hYmxlIGk2ODYgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnaTY4NicsICcgLW1hcmNoPWk2ODYnLCAnJywgZCl9IgorCisjIEV4dHJhIHR1bmUgc2VsZWN0aW9ucworQVZBSUxUVU5FUyArPSAiaTY4NiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1pNjg2ID0gIiR7VFVORV9GRUFUVVJFU190dW5lLXg4Nn0gaTY4NiIKK0JBU0VfTElCX3R1bmUtaTY4NiA9ICJsaWIiCitUVU5FX1BLR0FSQ0hfdHVuZS1pNjg2ID0gImk2ODYiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTY4NiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1pNTg2fSBpNjg2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taWNyb2JsYXplLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWljcm9ibGF6ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmMGFmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWljcm9ibGF6ZS5pbmMKQEAgLTAsMCArMSw4IEBACitERUZBVUxUVFVORSA/PSAibWljcm9ibGF6ZSIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKKworQVZBSUxUVU5FUyArPSAibWljcm9ibGF6ZSIKK1RVTkVfRkVBVFVSRVNfdHVuZS1taWNyb2JsYXplID0gIm1pY3JvYmxhemUiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWljcm9ibGF6ZSA9ICIke1RVTkVfUEtHQVJDSH0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCAwMjNlYjVlLi5mOGFhY2VhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC0yMSw3ICsyMSw3IEBACiAjIGtlcm5lbC1yZWxhdGVkIHZhcmlhYmxlcwogIwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE1JSIKIAogIwogIyBYU0VSVkVSIHN1YmNvbXBvbmVudHMsIHVzZWQgdG8gYnVpbGQgdGhlIFhTRVJWRVIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCmluZGV4IGM4OTMyZGQuLjk0MDNiMWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgpAQCAtMTYsNSArMTYsNSBAQAogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCwxMTUyMDAgY29uc29sZT10dHkiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEyJSIKLVFCX0RUQiA9ICIke0BiYXNlX3ZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xNSUiCitRQl9EVEIgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0JTRC0xLUNsYXVzZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMS1DbGF1c2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkODg5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMS1DbGF1c2UKQEAgLTAsMCArMSw5IEBACisKK0NvcHlyaWdodCAoYykgPFlFQVI+LCA8T1dORVI+CitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKK1JlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQmVya2VsZXkgU29mdHdhcmUgRGVzaWduLCBJbmMuICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQmVya2VsZXkgU29mdHdhcmUgRGVzaWduLCBJbmMuIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9wdGVzdC1wZXJsL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3B0ZXN0LXBlcmwvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZjljYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9wdGVzdC1wZXJsL3J1bi1wdGVzdApAQCAtMCwwICsxLDE2IEBACisjIS9iaW4vc2gKKworZm9yIGNhc2UgaW4gYGZpbmQgdCAtdHlwZSBmIC1uYW1lICcqLnQnYDsgZG8KKyAgICBwZXJsICRjYXNlID4kY2FzZS5vdXRwdXQgMj4mMQorICAgIHJldD0kPworICAgIGNhdCAkY2FzZS5vdXRwdXQKKyAgICBpZiBbICRyZXQgLW5lIDAgXTsgdGhlbgorICAgICAgICBlY2hvICJGQUlMOiAke2Nhc2UlLnR9IgorICAgIGVsaWYgZ3JlcCAtaSAnU0tJUCcgJGNhc2Uub3V0cHV0OyB0aGVuCisgICAgICAgIGVjaG8gIlNLSVA6ICR7Y2FzZSUudH0iCisgICAgZWxzZQorICAgICAgICBlY2hvICJQQVNTOiAke2Nhc2UlLnR9IgorICAgIGZpCisKKyAgICBybSAtZiAkY2FzZS5vdXRwdXQKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCmluZGV4IDkxODA0ZWMuLmY3YWI0MzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaApAQCAtMjU5LDYgKzI1OSwxNCBAQAogCSRTVURPX0VYRUMgcm0gLWYgJHtlbnZfc2V0dXBfc2NyaXB0JS8qfS9yZWxvY2F0ZV9zZGsucHkgJHtlbnZfc2V0dXBfc2NyaXB0JS8qfS9yZWxvY2F0ZV9zZGsuc2gKIGZpCiAKKyMgRXhlY3V0ZSBwb3N0LXJlbG9jYXRpb24gc2NyaXB0Citwb3N0X3JlbG9jYXRlPSIkdGFyZ2V0X3Nka19kaXIvcG9zdC1yZWxvY2F0ZS1zZXR1cC5zaCIKK2lmIFsgLWUgIiRwb3N0X3JlbG9jYXRlIiBdOyB0aGVuCisJJFNVRE9fRVhFQyBzZWQgLWUgInM6QFNES1BBVEhAOiR0YXJnZXRfc2RrX2RpcjpnIiAtaSAkcG9zdF9yZWxvY2F0ZQorCSRTVURPX0VYRUMgL2Jpbi9zaCAkcG9zdF9yZWxvY2F0ZSAiJHRhcmdldF9zZGtfZGlyIiAiQFNES1BBVEhAIgorCSRTVURPX0VYRUMgcm0gLWYgJHBvc3RfcmVsb2NhdGUKK2ZpCisKIGVjaG8gIlNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLiIKIGVjaG8gIkVhY2ggdGltZSB5b3Ugd2lzaCB0byB1c2UgdGhlIFNESyBpbiBhIG5ldyBzaGVsbCBzZXNzaW9uLCB5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBlLmcuIgogZm9yIGVudl9zZXR1cF9zY3JpcHQgaW4gYGxzICR0YXJnZXRfc2RrX2Rpci9lbnZpcm9ubWVudC1zZXR1cC0qYDsgZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CmluZGV4IDNlODZhNDYuLmIwMzY1YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQpAQCAtMzYsMTAgKzM2LDI5IEBACiByZWxhdGVkX2ZpZWxkc1snUkRFUEVORFMnXSA9IFsnREVQRU5EUyddCiByZWxhdGVkX2ZpZWxkc1snUlJFQ09NTUVORFMnXSA9IFsnREVQRU5EUyddCiByZWxhdGVkX2ZpZWxkc1snRklMRUxJU1QnXSA9IFsnRklMRVMnXQotcmVsYXRlZF9maWVsZHNbJ1BLR1NJWkUnXSA9IFsnRklMRUxJU1QnXQogcmVsYXRlZF9maWVsZHNbJ2ZpbGVzLWluLWltYWdlLnR4dCddID0gWydpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQnLCAnVVNFUl9DTEFTU0VTJywgJ0lNQUdFX0NMQVNTRVMnLCAnUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCAnSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCddCiByZWxhdGVkX2ZpZWxkc1snaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0J10gPSBbJ0lNQUdFX0ZFQVRVUkVTJywgJ0lNQUdFX0xJTkdVQVMnLCAnSU1BR0VfSU5TVEFMTCcsICdCQURfUkVDT01NRU5EQVRJT05TJywgJ05PX1JFQ09NTUVOREFUSU9OUycsICdQQUNLQUdFX0VYQ0xVREUnXQogCitjb2xvdXJzID0geworICAgICdjb2xvdXJfZGVmYXVsdCc6ICcnLAorICAgICdjb2xvdXJfYWRkJzogICAgICcnLAorICAgICdjb2xvdXJfcmVtb3ZlJzogICcnLAorfQorCitkZWYgaW5pdF9jb2xvdXJzKHVzZV9jb2xvdXJzKToKKyAgICBnbG9iYWwgY29sb3VycworICAgIGlmIHVzZV9jb2xvdXJzOgorICAgICAgICBjb2xvdXJzID0geworICAgICAgICAgICAgJ2NvbG91cl9kZWZhdWx0JzogJ1wwMzNbMG0nLAorICAgICAgICAgICAgJ2NvbG91cl9hZGQnOiAgICAgJ1wwMzNbMTszMm0nLAorICAgICAgICAgICAgJ2NvbG91cl9yZW1vdmUnOiAgJ1wwMzNbMTszMW0nLAorICAgICAgICB9CisgICAgZWxzZToKKyAgICAgICAgY29sb3VycyA9IHsKKyAgICAgICAgICAgICdjb2xvdXJfZGVmYXVsdCc6ICcnLAorICAgICAgICAgICAgJ2NvbG91cl9hZGQnOiAgICAgJycsCisgICAgICAgICAgICAnY29sb3VyX3JlbW92ZSc6ICAnJywKKyAgICAgICAgfQogCiBjbGFzcyBDaGFuZ2VSZWNvcmQ6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGZpZWxkbmFtZSwgb2xkdmFsdWUsIG5ld3ZhbHVlLCBtb25pdG9yZWQpOgpAQCAtNzksNyArOTgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gYWRpcnMgLSBiZGlyc10KICAgICAgICAgICAgIGZpbGVzX2JhID0gWyhuYW1lLCBzb3J0ZWQob3MucGF0aC5iYXNlbmFtZShpdGVtKSBmb3IgaXRlbSBpbiBiaXRlbXMgaWYgb3MucGF0aC5kaXJuYW1lKGl0ZW0pID09IG5hbWUpKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGJkaXJzIC0gYWRpcnNdCi0gICAgICAgICAgICByZW5hbWVkX2RpcnMgPSBbKGRpcjEsIGRpcjIpIGZvciBkaXIxLCBmaWxlczEgaW4gZmlsZXNfYWIgZm9yIGRpcjIsIGZpbGVzMiBpbiBmaWxlc19iYSBpZiBmaWxlczEgPT0gZmlsZXMyXQorICAgICAgICAgICAgcmVuYW1lZF9kaXJzID0gW10KKyAgICAgICAgICAgIGZvciBkaXIxLCBmaWxlczEgaW4gZmlsZXNfYWI6CisgICAgICAgICAgICAgICAgcmVuYW1lID0gRmFsc2UKKyAgICAgICAgICAgICAgICBmb3IgZGlyMiwgZmlsZXMyIGluIGZpbGVzX2JhOgorICAgICAgICAgICAgICAgICAgICBpZiBmaWxlczEgPT0gZmlsZXMyIGFuZCBub3QgcmVuYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lZF9kaXJzLmFwcGVuZCgoZGlyMSxkaXIyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdXNlIHRoaXMgKGRpciwgZmlsZXMpIHBhaXIgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc19iYS5yZW1vdmUoKGRpcjIsZmlsZXMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgYSBkaXIgaGFzIGFscmVhZHkgYmVlbiBmb3VuZCB0byBoYXZlIGEgcmVuYW1lLCBzdG9wIGFuZCBnbyBubyBmdXJ0aGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lID0gVHJ1ZQorCiAgICAgICAgICAgICAjIHJlbW92ZSBmaWxlcyB0aGF0IGJlbG9uZyB0byByZW5hbWVkIGRpcnMgZnJvbSBhaXRlbXMgYW5kIGJpdGVtcwogICAgICAgICAgICAgZm9yIGRpcjEsIGRpcjIgaW4gcmVuYW1lZF9kaXJzOgogICAgICAgICAgICAgICAgIGFpdGVtcyA9IFtpdGVtIGZvciBpdGVtIGluIGFpdGVtcyBpZiBvcy5wYXRoLmRpcm5hbWUoaXRlbSkgbm90IGluIChkaXIxLCBkaXIyKV0KQEAgLTg4LDYgKzExNyw3IEBACiAKICAgICAgICAgaWYgc2VsZi5maWVsZG5hbWUgaW4gbGlzdF9maWVsZHMgb3Igc2VsZi5maWVsZG5hbWUgaW4gbGlzdF9vcmRlcl9maWVsZHM6CiAgICAgICAgICAgICByZW5hbWVkX2RpcnMgPSBbXQorICAgICAgICAgICAgY2hhbmdlZF9vcmRlciA9IEZhbHNlCiAgICAgICAgICAgICBpZiBzZWxmLmZpZWxkbmFtZSBpbiBbJ1JQUk9WSURFUycsICdSREVQRU5EUycsICdSUkVDT01NRU5EUycsICdSU1VHR0VTVFMnLCAnUlJFUExBQ0VTJywgJ1JDT05GTElDVFMnXToKICAgICAgICAgICAgICAgICAoZGVwdmVyYSwgZGVwdmVyYikgPSBjb21wYXJlX3BrZ19saXN0cyhzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlKQogICAgICAgICAgICAgICAgIGFpdGVtcyA9IHBrZ2xpc3RfY29tYmluZShkZXB2ZXJhKQpAQCAtMTAxLDIyICsxMzEsMzMgQEAKICAgICAgICAgICAgIHJlbW92ZWQgPSBsaXN0KHNldChhaXRlbXMpIC0gc2V0KGJpdGVtcykpCiAgICAgICAgICAgICBhZGRlZCA9IGxpc3Qoc2V0KGJpdGVtcykgLSBzZXQoYWl0ZW1zKSkKIAorICAgICAgICAgICAgaWYgbm90IHJlbW92ZWQgYW5kIG5vdCBhZGRlZDoKKyAgICAgICAgICAgICAgICBkZXB2ZXJhID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKHNlbGYub2xkdmFsdWUsIHNvcnQ9RmFsc2UpCisgICAgICAgICAgICAgICAgZGVwdmVyYiA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihzZWxmLm5ld3ZhbHVlLCBzb3J0PUZhbHNlKQorICAgICAgICAgICAgICAgIGZvciBpLCBqIGluIHppcChkZXB2ZXJhLml0ZW1zKCksIGRlcHZlcmIuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGlbMF0gIT0galswXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfb3JkZXIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgICAgICBpZiByZW5hbWVkX2RpcnM6CiAgICAgICAgICAgICAgICAgZm9yIGRmcm9tLCBkdG8gaW4gcmVuYW1lZF9kaXJzOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ2RpcmVjdG9yeSByZW5hbWVkICVzIC0+ICVzJyAlIChkZnJvbSwgZHRvKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdkaXJlY3RvcnkgcmVuYW1lZCB7Y29sb3VyX3JlbW92ZX17fXtjb2xvdXJfZGVmYXVsdH0gLT4ge2NvbG91cl9hZGR9e317Y29sb3VyX2RlZmF1bHR9Jy5mb3JtYXQoZGZyb20sIGR0bywgKipjb2xvdXJzKSkKICAgICAgICAgICAgIGlmIHJlbW92ZWQgb3IgYWRkZWQ6CiAgICAgICAgICAgICAgICAgaWYgcmVtb3ZlZCBhbmQgbm90IGJpdGVtczoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdyZW1vdmVkIGFsbCBpdGVtcyAiJXMiJyAlICcgJy5qb2luKHJlbW92ZWQpKQorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3JlbW92ZWQgYWxsIGl0ZW1zICJ7Y29sb3VyX3JlbW92ZX17fXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQoJyAnLmpvaW4ocmVtb3ZlZCksICoqY29sb3VycykpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaWYgcmVtb3ZlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgncmVtb3ZlZCAiJXMiJyAlICcgJy5qb2luKHJlbW92ZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdyZW1vdmVkICJ7Y29sb3VyX3JlbW92ZX17dmFsdWV9e2NvbG91cl9kZWZhdWx0fSInLmZvcm1hdCh2YWx1ZT0nICcuam9pbihyZW1vdmVkKSwgKipjb2xvdXJzKSkKICAgICAgICAgICAgICAgICAgICAgaWYgYWRkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ2FkZGVkICIlcyInICUgJyAnLmpvaW4oYWRkZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdhZGRlZCAie2NvbG91cl9hZGR9e3ZhbHVlfXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQodmFsdWU9JyAnLmpvaW4oYWRkZWQpLCAqKmNvbG91cnMpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ2NoYW5nZWQgb3JkZXInKQogCi0gICAgICAgICAgICBvdXQgPSAnJXM6ICVzJyAlIChzZWxmLmZpZWxkbmFtZSwgJywgJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGlmIG5vdCAocmVtb3ZlZCBvciBhZGRlZCBvciBjaGFuZ2VkX29yZGVyKToKKyAgICAgICAgICAgICAgICBvdXQgPSAnJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdXQgPSAnJXM6ICVzJyAlIChzZWxmLmZpZWxkbmFtZSwgJywgJy5qb2luKGxpbmVzKSkKIAogICAgICAgICBlbGlmIHNlbGYuZmllbGRuYW1lIGluIG51bWVyaWNfZmllbGRzOgogICAgICAgICAgICAgYXZhbCA9IGludChzZWxmLm9sZHZhbHVlIG9yIDApCkBAIC0xMjUsOSArMTY2LDkgQEAKICAgICAgICAgICAgICAgICBwZXJjZW50Y2hnID0gKChidmFsIC0gYXZhbCkgLyBmbG9hdChhdmFsKSkgKiAxMDAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGVyY2VudGNoZyA9IDEwMAotICAgICAgICAgICAgb3V0ID0gJyVzIGNoYW5nZWQgZnJvbSAlcyB0byAlcyAoJXMlZCUlKScgJSAoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUgb3IgIicnIiwgc2VsZi5uZXd2YWx1ZSBvciAiJyciLCAnKycgaWYgcGVyY2VudGNoZyA+IDAgZWxzZSAnJywgcGVyY2VudGNoZykKKyAgICAgICAgICAgIG91dCA9ICd7fSBjaGFuZ2VkIGZyb20ge2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IHRvIHtjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fSAoe317Oi4wZn0lKScuZm9ybWF0KHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlIG9yICInJyIsIHNlbGYubmV3dmFsdWUgb3IgIicnIiwgJysnIGlmIHBlcmNlbnRjaGcgPiAwIGVsc2UgJycsIHBlcmNlbnRjaGcsICoqY29sb3VycykKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBkZWZhdWx0dmFsX21hcDoKLSAgICAgICAgICAgIG91dCA9ICclcyBjaGFuZ2VkIGZyb20gJXMgdG8gJXMnICUgKHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlKQorICAgICAgICAgICAgb3V0ID0gJ3t9IGNoYW5nZWQgZnJvbSB7Y29sb3VyX3JlbW92ZX17fXtjb2xvdXJfZGVmYXVsdH0gdG8ge2NvbG91cl9hZGR9e317Y29sb3VyX2RlZmF1bHR9Jy5mb3JtYXQoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUsICoqY29sb3VycykKICAgICAgICAgICAgIGlmIHNlbGYuZmllbGRuYW1lID09ICdQS0cnIGFuZCAnW2RlZmF1bHRdJyBpbiBzZWxmLm5ld3ZhbHVlOgogICAgICAgICAgICAgICAgIG91dCArPSAnIC0gbWF5IGluZGljYXRlIGRlYmlhbiByZW5hbWluZyBmYWlsdXJlJwogICAgICAgICBlbGlmIHNlbGYuZmllbGRuYW1lIGluIFsncGtnX3ByZWluc3QnLCAncGtnX3Bvc3RpbnN0JywgJ3BrZ19wcmVybScsICdwa2dfcG9zdHJtJ106CkBAIC0xNjMsNyArMjA0LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgb3V0ID0gJycKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dCA9ICclcyBjaGFuZ2VkIGZyb20gIiVzIiB0byAiJXMiJyAlIChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKKyAgICAgICAgICAgIG91dCA9ICd7fSBjaGFuZ2VkIGZyb20gIntjb2xvdXJfcmVtb3ZlfXt9e2NvbG91cl9kZWZhdWx0fSIgdG8gIntjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fSInLmZvcm1hdChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSwgKipjb2xvdXJzKQogCiAgICAgICAgIGlmIHNlbGYucmVsYXRlZDoKICAgICAgICAgICAgIGZvciBjaGcgaW4gc2VsZi5yZWxhdGVkOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQppbmRleCBhYzJmYWUxLi40Yjk0ODA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQpAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICAgICAgICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGguam9pbihsYXllcmRlc3RwYXRoLCBmX2Jhc2VuYW1lKQogICAgICAgICAgICAgICAgICAgICBfc21hcnRfY29weShmLCBkZXN0bmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGF5ZXJkZXN0cGF0aCk6CisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGxheWVyZGVzdHBhdGgsICdjb25mL2xheWVyLmNvbmYnKSk6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGxheWVyICVzLCBhbHJlYWR5IGhhbmRsZWQiICUgbGF5ZXIpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgX3NtYXJ0X2NvcHkobGF5ZXIsIGxheWVyZGVzdHBhdGgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKaW5kZXggOWNjODhmMC4uYjE3MjcyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICBzZWxmLmdwZ19wYXRoID0gZC5nZXRWYXIoJ0dQR19QQVRIJykKICAgICAgICAgc2VsZi5ncGdfdmVyc2lvbiA9IHNlbGYuZ2V0X2dwZ192ZXJzaW9uKCkKICAgICAgICAgc2VsZi5ycG1fYmluID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJycG1zaWduIikKKyAgICAgICAgc2VsZi5ncGdfYWdlbnRfYmluID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJncGctYWdlbnQiKQogCiAgICAgZGVmIGV4cG9ydF9wdWJrZXkoc2VsZiwgb3V0cHV0X2ZpbGUsIGtleWlkLCBhcm1vcj1UcnVlKToKICAgICAgICAgIiIiRXhwb3J0IEdQRyBwdWJsaWMga2V5IHRvIGEgZmlsZSIiIgpAQCAtMzEsNyArMzIsNyBAQAogICAgICAgICAiIiJTaWduIFJQTSBmaWxlcyIiIgogCiAgICAgICAgIGNtZCA9IHNlbGYucnBtX2JpbiArICIgLS1hZGRzaWduIC0tZGVmaW5lICdfZ3BnX25hbWUgJXMnICAiICUga2V5aWQKLSAgICAgICAgZ3BnX2FyZ3MgPSAnLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgLS1iYXRjaCAtLXBhc3NwaHJhc2U9JXMnICUgcGFzc3BocmFzZQorICAgICAgICBncGdfYXJncyA9ICctLW5vLXBlcm1pc3Npb24td2FybmluZyAtLWJhdGNoIC0tcGFzc3BocmFzZT0lcyAtLWFnZW50LXByb2dyYW09JXN8LS1hdXRvLWV4cGFuZC1zZWNtZW0nICUgKHBhc3NwaHJhc2UsIHNlbGYuZ3BnX2FnZW50X2JpbikKICAgICAgICAgaWYgc2VsZi5ncGdfdmVyc2lvbiA+ICgyLDEsKToKICAgICAgICAgICAgIGdwZ19hcmdzICs9ICcgLS1waW5lbnRyeS1tb2RlPWxvb3BiYWNrJwogICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfZ3BnX3NpZ25fY21kX2V4dHJhX2FyZ3MgJXMnICIgJSBncGdfYXJncwpAQCAtNzEsNiArNzIsOSBAQAogICAgICAgICBpZiBzZWxmLmdwZ192ZXJzaW9uID4gKDIsMSwpOgogICAgICAgICAgICAgY21kICs9IFsnLS1waW5lbnRyeS1tb2RlJywgJ2xvb3BiYWNrJ10KIAorICAgICAgICBpZiBzZWxmLmdwZ19hZ2VudF9iaW46CisgICAgICAgICAgICBjbWQgKz0gWyItLWFnZW50LXByb2dyYW09JXN8LS1hdXRvLWV4cGFuZC1zZWNtZW0iICUgKHNlbGYuZ3BnX2FnZW50X2JpbildCisKICAgICAgICAgY21kICs9IFtpbnB1dF9maWxlXQogCiAgICAgICAgIHRyeToKQEAgLTk5LDcgKzEwMyw3IEBACiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZlcl9zdHIgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoc2VsZi5ncGdfYmluLCAiLS12ZXJzaW9uIiwgIi0tbm8tcGVybWlzc2lvbi13YXJuaW5nIikpLnNwbGl0KClbMl0uZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICByZXR1cm4gdHVwbGUoW2ludChpKSBmb3IgaSBpbiB2ZXJfc3RyLnNwbGl0KCcuJyldKQorICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtpbnQoaSkgZm9yIGkgaW4gdmVyX3N0ci5zcGxpdCgiLSIpWzBdLnNwbGl0KCcuJyldKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkNvdWxkIG5vdCBnZXQgZ3BnIHZlcnNpb246ICVzIiAlIGUpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYW5pZmVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYW5pZmVzdC5weQppbmRleCA2MGM0OWJlLi42NzQzMDNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21hbmlmZXN0LnB5CkBAIC0yNzQsOCArMjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgaWYgcGtnX2xpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBwa2dzW3NlbGYudmFyX21hcHNbc2VsZi5tYW5pZmVzdF90eXBlXVt2YXJdXSA9IHNlbGYuZC5nZXRWYXIodmFyKQogCi0gICAgICAgICAgICBmb3IgcGtnX3R5cGUgaW4gcGtnczoKLSAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBrZ3NbcGtnX3R5cGVdLnNwbGl0KCk6CisgICAgICAgICAgICBmb3IgcGtnX3R5cGUgaW4gc29ydGVkKHBrZ3MpOgorICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ3NbcGtnX3R5cGVdLnNwbGl0KCkpOgogICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdC53cml0ZSgiJXMsJXNcbiIgJSAocGtnX3R5cGUsIHBrZykpCiAKICAgICBkZWYgY3JlYXRlX2ZpbmFsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQppbmRleCAxZTVjM2FhLi40ZjNlMjFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQpAQCAtNzIsOCArNzIsNyBAQAogICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCiAgICAgZGVmIGlzX2VsZihwYXRoKToKICAgICAgICAgZXhlY190eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgKLSAgICAgICAgICAgICJmaWxlIFwiJXNcIiIgJSBwYXRoLnJlcGxhY2UoIlwiIiwgIlxcXCIiKSkKKyAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoImZpbGUgLWIgJyVzJyIgJSBwYXRoKQogCiAgICAgICAgIGlmIHJldDoKICAgICAgICAgICAgIGJiLmVycm9yKCJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdmaWxlICVzJyBmYWlsZWQiICUgcGF0aCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IGVkOGZlYzguLjJkOGFlYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtMTIsNiArMTIsNyBAQAogaW1wb3J0IG9lLnBhdGgKIGltcG9ydCBzdHJpbmcKIGZyb20gb2UuZ3BnX3NpZ24gaW1wb3J0IGdldF9zaWduZXIKK2ltcG9ydCBoYXNobGliCiAKICMgdGhpcyBjYW4gYmUgdXNlZCBieSBhbGwgUE0gYmFja2VuZHMgdG8gY3JlYXRlIHRoZSBpbmRleCBmaWxlcyBpbiBwYXJhbGxlbAogZGVmIGNyZWF0ZV9pbmRleChhcmcpOgpAQCAtMjIsMTIgKzIzLDEyIEBACiAgICAgaWYgcmVzdWx0OgogICAgICAgICBiYi5ub3RlKHJlc3VsdCkKIAotIiIiCi1UaGlzIG1ldGhvZCBwYXJzZSB0aGUgb3V0cHV0IGZyb20gdGhlIHBhY2thZ2UgbWFuYWdlcmFuZCByZXR1cm4KLWEgZGljdGlvbmFyeSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgcGFja2FnZXMuIFRoaXMgaXMgdXNlZAotd2hlbiB0aGUgcGFja2FnZXMgYXJlIGluIGRlYiBvciBpcGsgZm9ybWF0LgotIiIiCiBkZWYgb3BrZ19xdWVyeShjbWRfb3V0cHV0KToKKyAgICAiIiIKKyAgICBUaGlzIG1ldGhvZCBwYXJzZSB0aGUgb3V0cHV0IGZyb20gdGhlIHBhY2thZ2UgbWFuYWdlcmFuZCByZXR1cm4KKyAgICBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHBhY2thZ2VzLiBUaGlzIGlzIHVzZWQKKyAgICB3aGVuIHRoZSBwYWNrYWdlcyBhcmUgaW4gZGViIG9yIGlwayBmb3JtYXQuCisgICAgIiIiCiAgICAgdmVycmVnZXggPSByZS5jb21waWxlKCcgXChbPTw+XSogW14gKV0qXCknKQogICAgIG91dHB1dCA9IGRpY3QoKQogICAgIHBrZyA9ICIiCkBAIC04Myw2ICs4NCwxMSBAQAogCiAgICAgcmV0dXJuIG91dHB1dAogCisjIE5vdGU6IHRoaXMgc2hvdWxkIGJlIGJiLmZhdGFsIGluIHRoZSBmdXR1cmUuCitkZWYgZmFpbGVkX3Bvc3RpbnN0c193YXJuKHBrZ3MsIGxvZ19wYXRoKToKKyAgICBiYi53YXJuKCIiIkludGVudGlvbmFsbHkgZmFpbGluZyBwb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mICVzIHRvIGRlZmVyIHRoZW0gdG8gZmlyc3QgYm9vdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGxhY2UgdGhlbSBpbnRvIHBrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSAoKS4KK0lmIGRlZmVycmluZyB0byBmaXJzdCBib290IHdhc24ndCB0aGUgaW50ZW50LCB0aGVuIHNjcmlwdGxldCBmYWlsdXJlIG1heSBtZWFuIGFuIGlzc3VlIGluIHRoZSByZWNpcGUsIG9yIGEgcmVncmVzc2lvbiBlbHNld2hlcmUuCitEZXRhaWxzIG9mIHRoZSBmYWlsdXJlIGFyZSBpbiAlcy4iIiIgJShwa2dzLCBsb2dfcGF0aCkpCiAKIGNsYXNzIEluZGV4ZXIob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGRlcGxveV9kaXIpOgpAQCAtOTYsMTMgKzEwMiwxNiBAQAogCiBjbGFzcyBScG1JbmRleGVyKEluZGV4ZXIpOgogICAgIGRlZiB3cml0ZV9pbmRleChzZWxmKToKKyAgICAgICAgc2VsZi5kb193cml0ZV9pbmRleChzZWxmLmRlcGxveV9kaXIpCisKKyAgICBkZWYgZG9fd3JpdGVfaW5kZXgoc2VsZiwgZGVwbG95X2Rpcik6CiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgogICAgICAgICAgICAgc2lnbmVyID0gZ2V0X3NpZ25lcihzZWxmLmQsIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfQkFDS0VORCcpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2lnbmVyID0gTm9uZQogCiAgICAgICAgIGNyZWF0ZXJlcG9fYyA9IGJiLnV0aWxzLndoaWNoKG9zLmVudmlyb25bJ1BBVEgnXSwgImNyZWF0ZXJlcG9fYyIpCi0gICAgICAgIHJlc3VsdCA9IGNyZWF0ZV9pbmRleCgiJXMgLS11cGRhdGUgLXEgJXMiICUgKGNyZWF0ZXJlcG9fYywgc2VsZi5kZXBsb3lfZGlyKSkKKyAgICAgICAgcmVzdWx0ID0gY3JlYXRlX2luZGV4KCIlcyAtLXVwZGF0ZSAtcSAlcyIgJSAoY3JlYXRlcmVwb19jLCBkZXBsb3lfZGlyKSkKICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgYmIuZmF0YWwocmVzdWx0KQogCkBAIC0xMTAsMTcgKzExOSwyOCBAQAogICAgICAgICBpZiBzaWduZXI6CiAgICAgICAgICAgICBzaWdfdHlwZSA9IHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEUnKQogICAgICAgICAgICAgaXNfYXNjaWlfc2lnID0gKHNpZ190eXBlLnVwcGVyKCkgIT0gIkJJTiIpCi0gICAgICAgICAgICBzaWduZXIuZGV0YWNoX3NpZ24ob3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgJ3JlcG9kYXRhJywgJ3JlcG9tZC54bWwnKSwKKyAgICAgICAgICAgIHNpZ25lci5kZXRhY2hfc2lnbihvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgJ3JlcG9kYXRhJywgJ3JlcG9tZC54bWwnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX05BTUUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1BBU1NQSFJBU0VfRklMRScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybW9yPWlzX2FzY2lpX3NpZykKIAorY2xhc3MgUnBtU3ViZGlySW5kZXhlcihScG1JbmRleGVyKToKKyAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CisgICAgICAgIGJiLm5vdGUoIkdlbmVyYXRpbmcgcGFja2FnZSBpbmRleCBmb3IgJXMiICUoc2VsZi5kZXBsb3lfZGlyKSkKKyAgICAgICAgc2VsZi5kb193cml0ZV9pbmRleChzZWxmLmRlcGxveV9kaXIpCisgICAgICAgIGZvciBlbnRyeSBpbiBvcy53YWxrKHNlbGYuZGVwbG95X2Rpcik6CisgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVmaWxlKHNlbGYuZGVwbG95X2RpciwgZW50cnlbMF0pOgorICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gZW50cnlbMV06CisgICAgICAgICAgICAgICAgICAgIGlmIGRpciAhPSAncmVwb2RhdGEnOgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyX3BhdGggPSBvZS5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJHZW5lcmF0aW5nIHBhY2thZ2UgaW5kZXggZm9yICVzIiAlKGRpcl9wYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9fd3JpdGVfaW5kZXgoZGlyX3BhdGgpCiAKIGNsYXNzIE9wa2dJbmRleGVyKEluZGV4ZXIpOgogICAgIGRlZiB3cml0ZV9pbmRleChzZWxmKToKICAgICAgICAgYXJjaF92YXJzID0gWyJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIsCiAgICAgICAgICAgICAgICAgICAgICAiU0RLX1BBQ0tBR0VfQVJDSFMiLAotICAgICAgICAgICAgICAgICAgICAgIk1VTFRJTElCX0FSQ0hTIl0KKyAgICAgICAgICAgICAgICAgICAgIF0KIAogICAgICAgICBvcGtnX2luZGV4X2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAib3BrZy1tYWtlLWluZGV4IikKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX1NJR04nKSA9PSAnMSc6CkBAIC0zMDcsMzkgKzMyNywxMDMgQEAKICAgICBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBkaXJlY3RseS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3Rmcyk6CiAgICAgICAgIHNlbGYuZCA9IGQKKyAgICAgICAgc2VsZi50YXJnZXRfcm9vdGZzID0gdGFyZ2V0X3Jvb3RmcwogICAgICAgICBzZWxmLmRlcGxveV9kaXIgPSBOb25lCiAgICAgICAgIHNlbGYuZGVwbG95X2xvY2sgPSBOb25lCisgICAgICAgIHNlbGYuX2luaXRpYWxpemVfaW50ZXJjZXB0cygpCiAKLSAgICAiIiIKLSAgICBVcGRhdGUgdGhlIHBhY2thZ2UgbWFuYWdlciBwYWNrYWdlIGRhdGFiYXNlLgotICAgICIiIgorICAgIGRlZiBfaW5pdGlhbGl6ZV9pbnRlcmNlcHRzKHNlbGYpOgorICAgICAgICBiYi5ub3RlKCJJbml0aWFsaXppbmcgaW50ZXJjZXB0IGRpciBmb3IgJXMiICUgc2VsZi50YXJnZXRfcm9vdGZzKQorICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpciA9IHNlbGYuZC5nZXRWYXIoIlBPU1RJTlNUX0lOVEVSQ0VQVFNfRElSIikKKyAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyOgorICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiKQorICAgICAgICAjIEFzIHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgUGFja2FnZU1hbmFnZXIgb3BlcmF0aW5nIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgIyB3ZSBuZWVkIHRvIGlzb2xhdGUgdGhlIGludGVyY2VwdF9zY3JpcHRzIGRpcmVjdG9yaWVzIGZyb20gZWFjaCBvdGhlciwKKyAgICAgICAgIyBoZW5jZSB0aGUgdWdseSBoYXNoIGRpZ2VzdCBpbiBkaXIgbmFtZS4KKyAgICAgICAgc2VsZi5pbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cy0lcyIgJShoYXNobGliLnNoYTI1NihzZWxmLnRhcmdldF9yb290ZnMuZW5jb2RlKCkpLmhleGRpZ2VzdCgpKSApCisKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuaW50ZXJjZXB0c19kaXIsIFRydWUpCisgICAgICAgIHNodXRpbC5jb3B5dHJlZShwb3N0aW5zdF9pbnRlcmNlcHRzX2Rpciwgc2VsZi5pbnRlcmNlcHRzX2RpcikKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIGZhaWxlZF9zY3JpcHQpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX3Bvc3Rwb25lX3RvX2ZpcnN0X2Jvb3Qoc2VsZiwgcG9zdGluc3RfaW50ZXJjZXB0X2hvb2spOgorICAgICAgICB3aXRoIG9wZW4ocG9zdGluc3RfaW50ZXJjZXB0X2hvb2spIGFzIGludGVyY2VwdDoKKyAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGludGVyY2VwdC5yZWFkKCkuc3BsaXQoIlxuIik6CisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJeIyNQS0dTOiguKikiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IG0uZ3JvdXAoMSkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiByZWdpc3RlcmVkX3BrZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYmIubm90ZSgiSWYgYW4gaW1hZ2UgaXMgYmVpbmcgYnVpbHQsIHRoZSBwb3N0aW5zdGFsbHMgZm9yIHRoZSBmb2xsb3dpbmcgcGFja2FnZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIndpbGwgYmUgcG9zdHBvbmVkIGZvciBmaXJzdCBib290OiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9wa2dzKQorCisgICAgICAgICAgICAgICAgIyBjYWxsIHRoZSBiYWNrZW5kIGRlcGVuZGVudCBoYW5kbGVyCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHJlZ2lzdGVyZWRfcGtncykKKworCisgICAgZGVmIHJ1bl9pbnRlcmNlcHRzKHNlbGYpOgorICAgICAgICBpbnRlcmNlcHRzX2RpciA9IHNlbGYuaW50ZXJjZXB0c19kaXIKKworICAgICAgICBiYi5ub3RlKCJSdW5uaW5nIGludGVyY2VwdCBzY3JpcHRzOiIpCisgICAgICAgIG9zLmVudmlyb25bJ0QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcworICAgICAgICBvcy5lbnZpcm9uWydTVEFHSU5HX0RJUl9OQVRJVkUnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCisgICAgICAgIGZvciBzY3JpcHQgaW4gb3MubGlzdGRpcihpbnRlcmNlcHRzX2Rpcik6CisgICAgICAgICAgICBzY3JpcHRfZnVsbCA9IG9zLnBhdGguam9pbihpbnRlcmNlcHRzX2Rpciwgc2NyaXB0KQorCisgICAgICAgICAgICBpZiBzY3JpcHQgPT0gInBvc3RpbnN0X2ludGVyY2VwdCIgb3Igbm90IG9zLmFjY2VzcyhzY3JpcHRfZnVsbCwgb3MuWF9PSyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgc2NyaXB0ID09ICJkZWxheV90b19maXJzdF9ib290IjoKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3N0cG9uZV90b19maXJzdF9ib290KHNjcmlwdF9mdWxsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGJiLm5vdGUoIj4gRXhlY3V0aW5nICVzIGludGVyY2VwdCAuLi4iICUgc2NyaXB0KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2NyaXB0X2Z1bGwsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgICAgICBpZiBvdXRwdXQ6IGJiLm5vdGUob3V0cHV0LmRlY29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGZhaWxlZCwgZGV0YWlscyBpbiAlcy9sb2cuZG9fJXMiICUgKHNjcmlwdCwgc2VsZi5kLmdldFZhcignVCcpLCBzZWxmLmQuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycpKSkKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJFeGl0IGNvZGUgJWQuIE91dHB1dDpcbiVzIiAlIChlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCisgICAgICAgICAgICAgICAgc2VsZi5fcG9zdHBvbmVfdG9fZmlyc3RfYm9vdChzY3JpcHRfZnVsbCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiB1cGRhdGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBVcGRhdGUgdGhlIHBhY2thZ2UgbWFuYWdlciBwYWNrYWdlIGRhdGFiYXNlLgorICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgSW5zdGFsbCBhIGxpc3Qgb2YgcGFja2FnZXMuICdwa2dzJyBpcyBhIGxpc3Qgb2JqZWN0LiBJZiAnYXR0ZW1wdF9vbmx5JyBpcwotICAgIFRydWUsIGluc3RhbGxhdGlvbiBmYWlsdXJlcyBhcmUgaWdub3JlZC4KLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgaW5zdGFsbChzZWxmLCBwa2dzLCBhdHRlbXB0X29ubHk9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBhIGxpc3Qgb2YgcGFja2FnZXMuICdwa2dzJyBpcyBhIGxpc3Qgb2JqZWN0LiBJZiAnYXR0ZW1wdF9vbmx5JyBpcworICAgICAgICBUcnVlLCBpbnN0YWxsYXRpb24gZmFpbHVyZXMgYXJlIGlnbm9yZWQuCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBSZW1vdmUgYSBsaXN0IG9mIHBhY2thZ2VzLiAncGtncycgaXMgYSBsaXN0IG9iamVjdC4gSWYgJ3dpdGhfZGVwZW5kZW5jaWVzJwotICAgIGlzIEZhbHNlLCB0aGUgYW55IGRlcGVuZGVuY2llcyBhcmUgbGVmdCBpbiBwbGFjZS4KLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgcmVtb3ZlKHNlbGYsIHBrZ3MsIHdpdGhfZGVwZW5kZW5jaWVzPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVtb3ZlIGEgbGlzdCBvZiBwYWNrYWdlcy4gJ3BrZ3MnIGlzIGEgbGlzdCBvYmplY3QuIElmICd3aXRoX2RlcGVuZGVuY2llcycKKyAgICAgICAgaXMgRmFsc2UsIHRoZW4gYW55IGRlcGVuZGVuY2llcyBhcmUgbGVmdCBpbiBwbGFjZS4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0aGUgaW5kZXggZmlsZXMKLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIGluZGV4IGZpbGVzCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKICAgICBAYWJzdHJhY3RtZXRob2QKQEAgLTM1MCwzMCArNDM0LDI4IEBACiAgICAgZGVmIGxpc3RfaW5zdGFsbGVkKHNlbGYpOgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLQotICAgICIiIgogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKyAgICAgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgQWRkIHJlbW90ZSBwYWNrYWdlIGZlZWRzIGludG8gcmVwb3NpdG9yeSBtYW5hZ2VyIGNvbmZpZ3VyYXRpb24uIFRoZSBwYXJhbWV0ZXJzCi0gICAgZm9yIHRoZSBmZWVkcyBhcmUgc2V0IGJ5IGZlZWRfdXJpcywgZmVlZF9iYXNlX3BhdGhzIGFuZCBmZWVkX2FyY2hzLgotICAgIFNlZSBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9jdXJyZW50L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI3Zhci1QQUNLQUdFX0ZFRURfVVJJUwotICAgIGZvciB0aGVpciBkZXNjcmlwdGlvbi4KLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgaW5zZXJ0X2ZlZWRzX3VyaXMoc2VsZiwgZmVlZF91cmlzLCBmZWVkX2Jhc2VfcGF0aHMsIGZlZWRfYXJjaHMpOgorICAgICAgICAiIiIKKyAgICAgICAgQWRkIHJlbW90ZSBwYWNrYWdlIGZlZWRzIGludG8gcmVwb3NpdG9yeSBtYW5hZ2VyIGNvbmZpZ3VyYXRpb24uIFRoZSBwYXJhbWV0ZXJzCisgICAgICAgIGZvciB0aGUgZmVlZHMgYXJlIHNldCBieSBmZWVkX3VyaXMsIGZlZWRfYmFzZV9wYXRocyBhbmQgZmVlZF9hcmNocy4KKyAgICAgICAgU2VlIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL2N1cnJlbnQvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjdmFyLVBBQ0tBR0VfRkVFRF9VUklTCisgICAgICAgIGZvciB0aGVpciBkZXNjcmlwdGlvbi4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIEluc3RhbGwgYWxsIHBhY2thZ2VzIHRoYXQgbWF0Y2ggYSBnbG9iLgotICAgICIiIgogICAgIGRlZiBpbnN0YWxsX2dsb2Ioc2VsZiwgZ2xvYnMsIHNkaz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBJbnN0YWxsIGFsbCBwYWNrYWdlcyB0aGF0IG1hdGNoIGEgZ2xvYi4KKyAgICAgICAgIiIiCiAgICAgICAgICMgVE9ETyBkb24ndCBoYXZlIHNkayBoZXJlIGJ1dCBoYXZlIGEgcHJvcGVydHkgb24gdGhlIHN1cGVyY2xhc3MKICAgICAgICAgIyAoYW5kIHJlc3BlY3QgaW4gaW5zdGFsbF9jb21wbGVtZW50YXJ5KQogICAgICAgICBpZiBzZGs6CkBAIC0zOTMsMTQgKzQ3NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAnLmpvaW4oY21kKSwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCi0gICAgIiIiCi0gICAgSW5zdGFsbCBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGJhc2VkIHVwb24gdGhlIGxpc3Qgb2YgY3VycmVudGx5IGluc3RhbGxlZAotICAgIHBhY2thZ2VzIGUuZy4gbG9jYWxlcywgKi1kZXYsICotZGJnLCBldGMuIFRoaXMgd2lsbCBvbmx5IGF0dGVtcHQgdG8gaW5zdGFsbAotICAgIHRoZXNlIHBhY2thZ2VzLCBpZiB0aGV5IGRvbid0IGV4aXN0IHRoZW4gbm8gZXJyb3Igd2lsbCBvY2N1ci4gIE5vdGU6IGV2ZXJ5Ci0gICAgYmFja2VuZCBuZWVkcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZXhwbGljaXRseSBhZnRlciB0aGUgbm9ybWFsIHBhY2thZ2UKLSAgICBpbnN0YWxsYXRpb24KLSAgICAiIiIKICAgICBkZWYgaW5zdGFsbF9jb21wbGVtZW50YXJ5KHNlbGYsIGdsb2JzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGJhc2VkIHVwb24gdGhlIGxpc3Qgb2YgY3VycmVudGx5IGluc3RhbGxlZAorICAgICAgICBwYWNrYWdlcyBlLmcuIGxvY2FsZXMsICotZGV2LCAqLWRiZywgZXRjLiBUaGlzIHdpbGwgb25seSBhdHRlbXB0IHRvIGluc3RhbGwKKyAgICAgICAgdGhlc2UgcGFja2FnZXMsIGlmIHRoZXkgZG9uJ3QgZXhpc3QgdGhlbiBubyBlcnJvciB3aWxsIG9jY3VyLiAgTm90ZTogZXZlcnkKKyAgICAgICAgYmFja2VuZCBuZWVkcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZXhwbGljaXRseSBhZnRlciB0aGUgbm9ybWFsIHBhY2thZ2UKKyAgICAgICAgaW5zdGFsbGF0aW9uCisgICAgICAgICIiIgogICAgICAgICBpZiBnbG9icyBpcyBOb25lOgogICAgICAgICAgICAgZ2xvYnMgPSBzZWxmLmQuZ2V0VmFyKCdJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKQogICAgICAgICAgICAgc3BsaXRfbGluZ3VhcyA9IHNldCgpCkBAIC00NTcsMTMgKzUzOSwxMyBAQAogCiAgICAgICAgIHNlbGYuZGVwbG95X2xvY2sgPSBOb25lCiAKLSAgICAiIiIKLSAgICBDb25zdHJ1Y3QgVVJJcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHBhdHRlcm46IHVyaS9iYXNlX3BhdGggd2hlcmUgJ3VyaScKLSAgICBhbmQgJ2Jhc2VfcGF0aCcgY29ycmVzcG9uZCB0byBlYWNoIGVsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXJyYXkKLSAgICBhcmd1bWVudCBsZWFkaW5nIHRvIGxlbih1cmlzKSB4IGxlbihiYXNlX3BhdGhzKSBlbGVtZW50cyBvbiB0aGUgcmV0dXJuZWQKLSAgICBhcnJheQotICAgICIiIgogICAgIGRlZiBjb25zdHJ1Y3RfdXJpcyhzZWxmLCB1cmlzLCBiYXNlX3BhdGhzKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnN0cnVjdCBVUklzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0dGVybjogdXJpL2Jhc2VfcGF0aCB3aGVyZSAndXJpJworICAgICAgICBhbmQgJ2Jhc2VfcGF0aCcgY29ycmVzcG9uZCB0byBlYWNoIGVsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXJyYXkKKyAgICAgICAgYXJndW1lbnQgbGVhZGluZyB0byBsZW4odXJpcykgeCBsZW4oYmFzZV9wYXRocykgZWxlbWVudHMgb24gdGhlIHJldHVybmVkCisgICAgICAgIGFycmF5CisgICAgICAgICIiIgogICAgICAgICBkZWYgX2FwcGVuZChhcnIxLCBhcnIyLCBzZXA9Jy8nKToKICAgICAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgICAgICBuYXJyMSA9IFthLnJzdHJpcChzZXApIGZvciBhIGluIGFycjFdCkBAIC00NzcsMTggKzU1OSw5OCBAQAogICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgICAgICByZXR1cm4gX2FwcGVuZCh1cmlzLCBiYXNlX3BhdGhzKQogCitkZWYgY3JlYXRlX3BhY2thZ2VzX2RpcihkLCBycG1fcmVwb19kaXIsIGRlcGxveWRpciwgdGFza25hbWUsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzKToKKyAgICAiIiIKKyAgICBHbyB0aHJvdWdoIG91ciBkb19wYWNrYWdlX3dyaXRlX1ggZGVwZW5kZW5jaWVzIGFuZCBoYXJkbGluayB0aGUgcGFja2FnZXMgd2UgZGVwZW5kCisgICAgdXBvbiBpbnRvIHRoZSByZXBvIGRpcmVjdG9yeS4gVGhpcyBwcmV2ZW50cyB1cyBzZWVpbmcgb3RoZXIgcGFja2FnZXMgdGhhdCBtYXkKKyAgICBoYXZlIGJlZW4gYnVpbHQgdGhhdCB3ZSBkb24ndCBkZXBlbmQgdXBvbiBhbmQgYWxzbyBwYWNrYWdlcyBmb3IgYXJjaGl0ZWN0dXJlcyB3ZSBkb24ndAorICAgIHN1cHBvcnQuCisgICAgIiIiCisgICAgaW1wb3J0IGVycm5vCisKKyAgICB0YXNrZGVwZGF0YSA9IGQuZ2V0VmFyKCJCQl9UQVNLREVQREFUQSIsIEZhbHNlKQorICAgIG15dGFza25hbWUgPSBkLmdldFZhcigiQkJfUlVOVEFTSyIpCisgICAgcG4gPSBkLmdldFZhcigiUE4iKQorICAgIHNlZW5kaXJzID0gc2V0KCkKKyAgICBtdWx0aWxpYnMgPSB7fQorICAgCisgICAgcnBtX3N1YnJlcG9fZGlyID0gb2UucGF0aC5qb2luKHJwbV9yZXBvX2RpciwgInJwbSIpCisKKyAgICBiYi51dGlscy5yZW1vdmUocnBtX3N1YnJlcG9fZGlyLCByZWN1cnNlPVRydWUpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKHJwbV9zdWJyZXBvX2RpcikKKworICAgICMgRGV0ZWN0IGJpdGJha2UgLWIgdXNhZ2UKKyAgICBub2RlcHMgPSBkLmdldFZhcigiQkJfTElNSVRFRERFUFMiKSBvciBGYWxzZQorICAgIGlmIG5vZGVwcyBvciBub3QgZmlsdGVyYnlkZXBlbmRlbmNpZXM6CisgICAgICAgIG9lLnBhdGguc3ltbGluayhkZXBsb3lkaXIsIHJwbV9zdWJyZXBvX2RpciwgVHJ1ZSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdGFydCA9IE5vbmUKKyAgICBmb3IgZGVwIGluIHRhc2tkZXBkYXRhOgorICAgICAgICBkYXRhID0gdGFza2RlcGRhdGFbZGVwXQorICAgICAgICBpZiBkYXRhWzFdID09IG15dGFza25hbWUgYW5kIGRhdGFbMF0gPT0gcG46CisgICAgICAgICAgICBzdGFydCA9IGRlcAorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBzdGFydCBpcyBOb25lOgorICAgICAgICBiYi5mYXRhbCgiQ291bGRuJ3QgZmluZCBvdXJzZWxmIGluIEJCX1RBU0tERVBEQVRBPyIpCisgICAgcnBtZGVwcyA9IHNldCgpCisgICAgc3RhcnQgPSBbc3RhcnRdCisgICAgc2VlbiA9IHNldChzdGFydCkKKyAgICAjIFN1cHBvcnQgZGlyZWN0IGRlcGVuZGVuY2llcyAoZG9fcm9vdGZzIC0+IHJwbXMpCisgICAgIyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgd2l0aGluIFBOIChkb19wb3B1bGF0ZV9zZGtfZXh0IC0+IGRvX3Jvb3RmcyAtPiBycG1zKQorICAgIHdoaWxlIHN0YXJ0OgorICAgICAgICBuZXh0ID0gW10KKyAgICAgICAgZm9yIGRlcDIgaW4gc3RhcnQ6CisgICAgICAgICAgICBmb3IgZGVwIGluIHRhc2tkZXBkYXRhW2RlcDJdWzNdOgorICAgICAgICAgICAgICAgIGlmIHRhc2tkZXBkYXRhW2RlcF1bMF0gIT0gcG46CisgICAgICAgICAgICAgICAgICAgIGlmICJkb18iICsgdGFza25hbWUgaW4gZGVwOgorICAgICAgICAgICAgICAgICAgICAgICAgcnBtZGVwcy5hZGQoZGVwKQorICAgICAgICAgICAgICAgIGVsaWYgZGVwIG5vdCBpbiBzZWVuOgorICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcGVuZChkZXApCisgICAgICAgICAgICAgICAgICAgIHNlZW4uYWRkKGRlcCkKKyAgICAgICAgc3RhcnQgPSBuZXh0CisKKyAgICBmb3IgZGVwIGluIHJwbWRlcHM6CisgICAgICAgIGMgPSB0YXNrZGVwZGF0YVtkZXBdWzBdCisgICAgICAgIG1hbmlmZXN0LCBkMiA9IG9lLnNzdGF0ZXNpZy5maW5kX3NzdGF0ZV9tYW5pZmVzdChjLCB0YXNrZGVwZGF0YVtkZXBdWzJdLCB0YXNrbmFtZSwgZCwgbXVsdGlsaWJzKQorICAgICAgICBpZiBub3QgbWFuaWZlc3Q6CisgICAgICAgICAgICBiYi5mYXRhbCgiTm8gbWFuaWZlc3QgZ2VuZXJhdGVkIGZyb206ICVzIGluICVzIiAlIChjLCB0YXNrZGVwZGF0YVtkZXBdWzJdKSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInIiKSBhcyBmOgorICAgICAgICAgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgICAgICAgICBsID0gbC5zdHJpcCgpCisgICAgICAgICAgICAgICAgZGVzdCA9IGwucmVwbGFjZShkZXBsb3lkaXIsICIiKQorICAgICAgICAgICAgICAgIGRlc3QgPSBycG1fc3VicmVwb19kaXIgKyBkZXN0CisgICAgICAgICAgICAgICAgaWYgbC5lbmRzd2l0aCgiLyIpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXN0IG5vdCBpbiBzZWVuZGlyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VlbmRpcnMuYWRkKGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBUcnkgdG8gaGFyZGxpbmsgdGhlIGZpbGUsIGNvcHkgaWYgdGhhdCBmYWlscworICAgICAgICAgICAgICAgIGRlc3RkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZGVzdCkKKyAgICAgICAgICAgICAgICBpZiBkZXN0ZGlyIG5vdCBpbiBzZWVuZGlyczoKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgIHNlZW5kaXJzLmFkZChkZXN0ZGlyKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3MubGluayhsLCBkZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVYREVWOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUobCwgZGVzdCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKIGNsYXNzIFJwbVBNKFBhY2thZ2VNYW5hZ2VyKToKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgZCwKICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Jvb3RmcywKICAgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlbmRvciwKICAgICAgICAgICAgICAgICAgdGFza19uYW1lPSd0YXJnZXQnLAotICAgICAgICAgICAgICAgICBwcm92aWRlbmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBhcmNoX3Zhcj1Ob25lLAogICAgICAgICAgICAgICAgICBvc192YXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgcnBtX3JlcG9fd29ya2Rpcj0ib2Utcm9vdGZzLXJlcG8iKToKLSAgICAgICAgc3VwZXIoUnBtUE0sIHNlbGYpLl9faW5pdF9fKGQpCi0gICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKKyAgICAgICAgICAgICAgICAgcnBtX3JlcG9fd29ya2Rpcj0ib2Utcm9vdGZzLXJlcG8iLAorICAgICAgICAgICAgICAgICBmaWx0ZXJieWRlcGVuZGVuY2llcz1UcnVlKToKKyAgICAgICAgc3VwZXIoUnBtUE0sIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldF9yb290ZnMpCiAgICAgICAgIHNlbGYudGFyZ2V0X3ZlbmRvciA9IHRhcmdldF92ZW5kb3IKICAgICAgICAgc2VsZi50YXNrX25hbWUgPSB0YXNrX25hbWUKICAgICAgICAgaWYgYXJjaF92YXIgPT0gTm9uZToKQEAgLTUwMSw4ICs2NjMsNyBAQAogICAgICAgICAgICAgc2VsZi5wcmltYXJ5X2FyY2ggPSBzZWxmLmQuZ2V0VmFyKCdNQUNISU5FX0FSQ0gnKQogCiAgICAgICAgIHNlbGYucnBtX3JlcG9fZGlyID0gb2UucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwgcnBtX3JlcG9fd29ya2RpcikKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYucnBtX3JlcG9fZGlyKQotICAgICAgICBvZS5wYXRoLnN5bWxpbmsoc2VsZi5kLmdldFZhcignREVQTE9ZX0RJUl9SUE0nKSwgb2UucGF0aC5qb2luKHNlbGYucnBtX3JlcG9fZGlyLCAicnBtIiksIFRydWUpCisgICAgICAgIGNyZWF0ZV9wYWNrYWdlc19kaXIoc2VsZi5kLCBzZWxmLnJwbV9yZXBvX2RpciwgZC5nZXRWYXIoIkRFUExPWV9ESVJfUlBNIiksICJwYWNrYWdlX3dyaXRlX3JwbSIsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzKQogCiAgICAgICAgIHNlbGYuc2F2ZWRfcGFja2FnaW5nX2RhdGEgPSBzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkX3BhY2thZ2luZ19kYXRhLyVzJyAlIHNlbGYudGFza19uYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5kLmV4cGFuZCgnJHtUfS9zYXZlZF9wYWNrYWdpbmdfZGF0YScpKToKQEAgLTU3Nyw3ICs3MzgsNyBAQAogICAgICAgICAgICAgZ3BnX29wdHMgKz0gJ3JlcG9fZ3BnY2hlY2s9MVxuJwogICAgICAgICAgICAgZ3BnX29wdHMgKz0gJ2dwZ2tleT1maWxlOi8vJXMvcGtpL3BhY2thZ2VmZWVkLWdwZy9QQUNLQUdFRkVFRC1HUEctS0VZLSVzLSVzXG4nICUgKHNlbGYuZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSwgc2VsZi5kLmdldFZhcignRElTVFJPJyksIHNlbGYuZC5nZXRWYXIoJ0RJU1RST19DT0RFTkFNRScpKQogCi0gICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1JQTV9TSUdOX1BBQ0tBR0VTJykgPT0gJzAnOgorICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdSUE1fU0lHTl9QQUNLQUdFUycpICE9ICcxJzoKICAgICAgICAgICAgIGdwZ19vcHRzICs9ICdncGdjaGVjaz0wXG4nCiAKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMiLCAieXVtLnJlcG9zLmQiKSkKQEAgLTYwMiw4ICs3NjMsNyBAQAogICAgICAgICBvcy5lbnZpcm9uWydPRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydJUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ09QS0dfT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKLSAgICAgICAgb3MuZW52aXJvblsnSU5URVJDRVBUX0RJUiddID0gb2UucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCisgICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IHNlbGYuaW50ZXJjZXB0c19kaXIKICAgICAgICAgb3MuZW52aXJvblsnTkFUSVZFX1JPT1QnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCiAKIApAQCAtNjI4LDYgKzc4OCw4IEBACiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk5vbi1mYXRhbCBQT1NUSU4gc2NyaXB0bGV0IGZhaWx1cmUgaW4gcnBtIHBhY2thZ2UiKToKICAgICAgICAgICAgICAgICBmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lc1tsaW5lLnNwbGl0KClbLTFdXSA9IFRydWUKIAorICAgICAgICBpZiBsZW4oZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXMpID4gMDoKKyAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihsaXN0KGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzLmtleXMoKSksIHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvXyR7QkJfQ1VSUkVOVFRBU0t9IikpCiAgICAgICAgIGZvciBwa2cgaW4gZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXMua2V5cygpOgogICAgICAgICAgICAgc2VsZi5zYXZlX3JwbXBvc3RpbnN0KHBrZykKIApAQCAtNzMwLDYgKzg5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXNldG9wdD1sb2dkaXI9JXMiICUgKHNlbGYuZC5nZXRWYXIoJ1QnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGNtZCA9IFtkbmZfY21kXSArIHN0YW5kYXJkX2RuZl9hcmdzICsgZG5mX2FyZ3MKKyAgICAgICAgYmIubm90ZSgnUnVubmluZyAlcycgJSAnICcuam9pbihjbWQpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIHByaW50X291dHB1dDoKQEAgLTc4Miw2ICs5NDUsMTQgQEAKICAgICAgICAgb3BlbihzYXZlZF9zY3JpcHRfbmFtZSwgJ3cnKS53cml0ZShvdXRwdXQpCiAgICAgICAgIG9zLmNobW9kKHNhdmVkX3NjcmlwdF9uYW1lLCAwbzc1NSkKIAorICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIHJlZ2lzdGVyZWRfcGtncyk6CisgICAgICAgIHJwbV9wb3N0aW5zdHNfZGlyID0gc2VsZi50YXJnZXRfcm9vdGZzICsgc2VsZi5kLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9ycG0tcG9zdGluc3RzLycpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihycG1fcG9zdGluc3RzX2RpcikKKworICAgICAgICAjIFNhdmUgdGhlIHBhY2thZ2UgcG9zdGluc3RhbGxzIGluIC9ldGMvcnBtLXBvc3RpbnN0cworICAgICAgICBmb3IgcGtnIGluIHJlZ2lzdGVyZWRfcGtncy5zcGxpdCgpOgorICAgICAgICAgICAgc2VsZi5zYXZlX3JwbXBvc3RpbnN0KHBrZykKKwogICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2ludm9rZV9kbmYoWyJyZXBvcXVlcnkiLCAiLS1xdWVyeWZvcm1hdCIsICIle2xvY2F0aW9ufSIsIHBrZ10pCiAgICAgICAgIHBrZ19uYW1lID0gb3V0cHV0LnNwbGl0bGluZXMoKVstMV0KQEAgLTgxOSwxOCArOTkwLDE4IEBACiAKIAogY2xhc3MgT3BrZ0Rwa2dQTShQYWNrYWdlTWFuYWdlcik6Ci0gICAgIiIiCi0gICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gRG8gbm90IGluc3RhbnRpYXRlIHRoaXMgZGlyZWN0bHkuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQpOgotICAgICAgICBzdXBlcihPcGtnRHBrZ1BNLCBzZWxmKS5fX2luaXRfXyhkKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuIERvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGRpcmVjdGx5LgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoT3BrZ0Rwa2dQTSwgc2VsZikuX19pbml0X18oZCwgdGFyZ2V0X3Jvb3RmcykKIAotICAgICIiIgotICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KLQotICAgIFRoaXMgbWV0aG9kIGV4dHJhY3RzIHRoZSBjb21tb24gcGFydHMgZm9yIE9wa2cgYW5kIERwa2cKLSAgICAiIiIKICAgICBkZWYgcGFja2FnZV9pbmZvKHNlbGYsIHBrZywgY21kKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KKworICAgICAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCisgICAgICAgICIiIgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKQEAgLTgzOSwxNCArMTAxMCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogICAgICAgICByZXR1cm4gb3BrZ19xdWVyeShvdXRwdXQpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLQotICAgIFRoaXMgbWV0aG9kIGV4dHJhY3RzIHRoZSBjb21tb24gcGFydHMgZm9yIE9wa2cgYW5kIERwa2cKLSAgICAiIiIKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2csIHBrZ19pbmZvKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHBhdGggdG8gYSB0bXBkaXIgd2hlcmUgcmVzaWRlcyB0aGUgY29udGVudHMgb2YgYSBwYWNrYWdlLgorCisgICAgICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KKworICAgICAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCisgICAgICAgICIiIgogCiAgICAgICAgIGFyX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAiYXIiKQogICAgICAgICB0YXJfY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJ0YXIiKQpAQCAtODg1LDEyICsxMDU2LDEzIEBACiAKICAgICAgICAgcmV0dXJuIHRtcF9kaXIKIAorICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIHJlZ2lzdGVyZWRfcGtncyk6CisgICAgICAgIHNlbGYubWFya19wYWNrYWdlcygidW5wYWNrZWQiLCByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKSkKIAogY2xhc3MgT3BrZ1BNKE9wa2dEcGtnUE0pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBjb25maWdfZmlsZSwgYXJjaHMsIHRhc2tfbmFtZT0ndGFyZ2V0Jyk6Ci0gICAgICAgIHN1cGVyKE9wa2dQTSwgc2VsZikuX19pbml0X18oZCkKKyAgICAgICAgc3VwZXIoT3BrZ1BNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogCi0gICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKICAgICAgICAgc2VsZi5jb25maWdfZmlsZSA9IGNvbmZpZ19maWxlCiAgICAgICAgIHNlbGYucGtnX2FyY2hzID0gYXJjaHMKICAgICAgICAgc2VsZi50YXNrX25hbWUgPSB0YXNrX25hbWUKQEAgLTkyMSwxMiArMTA5MywxMiBAQAogCiAgICAgICAgIHNlbGYuaW5kZXhlciA9IE9wa2dJbmRleGVyKHNlbGYuZCwgc2VsZi5kZXBsb3lfZGlyKQogCi0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBhIHBhY2thZ2UncyBzdGF0dXMgaW4gL3Zhci9saWIvb3BrZy9zdGF0dXMgZmlsZS4KLSAgICBJZiAncGFja2FnZXMnIGlzIE5vbmUgdGhlbiB0aGUgbmV3X3N0YXR1cyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsCi0gICAgcGFja2FnZXMKLSAgICAiIiIKICAgICBkZWYgbWFya19wYWNrYWdlcyhzZWxmLCBzdGF0dXNfdGFnLCBwYWNrYWdlcz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgYSBwYWNrYWdlJ3Mgc3RhdHVzIGluIC92YXIvbGliL29wa2cvc3RhdHVzIGZpbGUuCisgICAgICAgIElmICdwYWNrYWdlcycgaXMgTm9uZSB0aGVuIHRoZSBuZXdfc3RhdHVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwKKyAgICAgICAgcGFja2FnZXMKKyAgICAgICAgIiIiCiAgICAgICAgIHN0YXR1c19maWxlID0gb3MucGF0aC5qb2luKHNlbGYub3BrZ19kaXIsICJzdGF0dXMiKQogCiAgICAgICAgIHdpdGggb3BlbihzdGF0dXNfZmlsZSwgInIiKSBhcyBzZjoKQEAgLTEwNzksOCArMTI1MSw3IEBACiAgICAgICAgIG9zLmVudmlyb25bJ09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ0lQS0dfT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnT1BLR19PRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwotICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyY2VwdF9zY3JpcHRzIikKKyAgICAgICAgb3MuZW52aXJvblsnSU5URVJDRVBUX0RJUiddID0gc2VsZi5pbnRlcmNlcHRzX2RpcgogICAgICAgICBvcy5lbnZpcm9uWydOQVRJVkVfUk9PVCddID0gc2VsZi5kLmdldFZhcignU1RBR0lOR19ESVJfTkFUSVZFJykKIAogICAgICAgICB0cnk6CkBAIC0xMDg4LDYgKzEyNTksMTMgQEAKICAgICAgICAgICAgIGJiLm5vdGUoY21kKQogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLnNwbGl0KCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBiYi5ub3RlKG91dHB1dCkKKyAgICAgICAgICAgIGZhaWxlZF9wa2dzID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKCJjb25maWd1cmF0aW9uIHJlcXVpcmVkIG9uIHRhcmdldC4iKToKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybihsaW5lKQorICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcGtncy5hcHBlbmQobGluZS5zcGxpdCgiLiIpWzBdKQorICAgICAgICAgICAgaWYgZmFpbGVkX3BrZ3M6CisgICAgICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c193YXJuKGZhaWxlZF9wa2dzLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIChiYi5mYXRhbCwgYmIud2FybilbYXR0ZW1wdF9vbmx5XSgiVW5hYmxlIHRvIGluc3RhbGwgcGFja2FnZXMuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbWFuZCAnJXMnIHJldHVybmVkICVkOlxuJXMiICUKQEAgLTExNzAsMTAgKzEzNDgsMTAgQEAKICAgICAgICAgICAgICAgICAjIGlzIHNlcGFyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZW50cnkKICAgICAgICAgICAgICAgICBzdGF0dXMud3JpdGUoIlxuIikKIAotICAgICcnJwotICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gZHVtbXkgaW5zdGFsbHMgcGtncyBhbmQgcmV0dXJucyB0aGUgbG9nIG9mIG91dHB1dC4KLSAgICAnJycKICAgICBkZWYgZHVtbXlfaW5zdGFsbChzZWxmLCBwa2dzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gZHVtbXkgaW5zdGFsbHMgcGtncyBhbmQgcmV0dXJucyB0aGUgbG9nIG9mIG91dHB1dC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIGxlbihwa2dzKSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTEyMjgsMTAgKzE0MDYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wa2dfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPVRydWUpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCi0gICAgIiIiCiAgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgorICAgICAgICAiIiIKICAgICAgICAgY21kID0gIiVzICVzIGluZm8gJXMiICUgKHNlbGYub3BrZ19jbWQsIHNlbGYub3BrZ19hcmdzLCBwa2cpCiAgICAgICAgIHBrZ19pbmZvID0gc3VwZXIoT3BrZ1BNLCBzZWxmKS5wYWNrYWdlX2luZm8ocGtnLCBjbWQpCiAKQEAgLTEyNDIsMTIgKzE0MjAsMTIgQEAKIAogICAgICAgICByZXR1cm4gcGtnX2luZm8KIAotICAgICIiIgotICAgIFJldHVybnMgdGhlIHBhdGggdG8gYSB0bXBkaXIgd2hlcmUgcmVzaWRlcyB0aGUgY29udGVudHMgb2YgYSBwYWNrYWdlLgotCi0gICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgotICAgICIiIgogICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKworICAgICAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisgICAgICAgICIiIgogICAgICAgICBwa2dfaW5mbyA9IHNlbGYucGFja2FnZV9pbmZvKHBrZykKICAgICAgICAgaWYgbm90IHBrZ19pbmZvOgogICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byBnZXQgaW5mb3JtYXRpb24gZm9yIHBhY2thZ2UgJyVzJyB3aGlsZSAiCkBAIC0xMjYwLDggKzE0MzgsNyBAQAogCiBjbGFzcyBEcGtnUE0oT3BrZ0Rwa2dQTSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMsIGFyY2hzLCBiYXNlX2FyY2hzLCBhcHRfY29uZl9kaXI9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKERwa2dQTSwgc2VsZikuX19pbml0X18oZCkKLSAgICAgICAgc2VsZi50YXJnZXRfcm9vdGZzID0gdGFyZ2V0X3Jvb3RmcworICAgICAgICBzdXBlcihEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldF9yb290ZnMpCiAgICAgICAgIHNlbGYuZGVwbG95X2RpciA9IHNlbGYuZC5nZXRWYXIoJ0RFUExPWV9ESVJfREVCJykKICAgICAgICAgaWYgYXB0X2NvbmZfZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmFwdF9jb25mX2RpciA9IHNlbGYuZC5leHBhbmQoIiR7QVBUQ09ORl9UQVJHRVR9L2FwdCIpCkBAIC0xMjgxLDEyICsxNDU4LDEyIEBACiAKICAgICAgICAgc2VsZi5pbmRleGVyID0gRHBrZ0luZGV4ZXIoc2VsZi5kLCBzZWxmLmRlcGxveV9kaXIpCiAKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGEgcGFja2FnZSdzIHN0YXR1cyBpbiAvdmFyL2xpYi9kcGtnL3N0YXR1cyBmaWxlLgotICAgIElmICdwYWNrYWdlcycgaXMgTm9uZSB0aGVuIHRoZSBuZXdfc3RhdHVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwKLSAgICBwYWNrYWdlcwotICAgICIiIgogICAgIGRlZiBtYXJrX3BhY2thZ2VzKHNlbGYsIHN0YXR1c190YWcsIHBhY2thZ2VzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBhIHBhY2thZ2UncyBzdGF0dXMgaW4gL3Zhci9saWIvZHBrZy9zdGF0dXMgZmlsZS4KKyAgICAgICAgSWYgJ3BhY2thZ2VzJyBpcyBOb25lIHRoZW4gdGhlIG5ld19zdGF0dXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbAorICAgICAgICBwYWNrYWdlcworICAgICAgICAiIiIKICAgICAgICAgc3RhdHVzX2ZpbGUgPSBzZWxmLnRhcmdldF9yb290ZnMgKyAiL3Zhci9saWIvZHBrZy9zdGF0dXMiCiAKICAgICAgICAgd2l0aCBvcGVuKHN0YXR1c19maWxlLCAiciIpIGFzIHNmOgpAQCAtMTMwOSwxMSArMTQ4NiwxMSBAQAogCiAgICAgICAgIG9zLnJlbmFtZShzdGF0dXNfZmlsZSArICIudG1wIiwgc3RhdHVzX2ZpbGUpCiAKLSAgICAiIiIKLSAgICBSdW4gdGhlIHByZS9wb3N0IGluc3RhbGxzIGZvciBwYWNrYWdlICJwYWNrYWdlX25hbWUiLiBJZiBwYWNrYWdlX25hbWUgaXMKLSAgICBOb25lLCB0aGVuIHJ1biBhbGwgcHJlL3Bvc3QgaW5zdGFsbCBzY3JpcHRsZXRzLgotICAgICIiIgogICAgIGRlZiBydW5fcHJlX3Bvc3RfaW5zdGFsbHMoc2VsZiwgcGFja2FnZV9uYW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUnVuIHRoZSBwcmUvcG9zdCBpbnN0YWxscyBmb3IgcGFja2FnZSAicGFja2FnZV9uYW1lIi4gSWYgcGFja2FnZV9uYW1lIGlzCisgICAgICAgIE5vbmUsIHRoZW4gcnVuIGFsbCBwcmUvcG9zdCBpbnN0YWxsIHNjcmlwdGxldHMuCisgICAgICAgICIiIgogICAgICAgICBpbmZvX2RpciA9IHNlbGYudGFyZ2V0X3Jvb3RmcyArICIvdmFyL2xpYi9kcGtnL2luZm8iCiAgICAgICAgIENvbnRyb2xTY3JpcHQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJDb250cm9sU2NyaXB0IiwgWyJzdWZmaXgiLCAibmFtZSIsICJhcmd1bWVudCJdKQogICAgICAgICBjb250cm9sX3NjcmlwdHMgPSBbCkBAIC0xMzM1LDggKzE1MTIsNyBAQAogICAgICAgICBvcy5lbnZpcm9uWydPRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydJUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ09QS0dfT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKLSAgICAgICAgb3MuZW52aXJvblsnSU5URVJDRVBUX0RJUiddID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCisgICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IHNlbGYuaW50ZXJjZXB0c19kaXIKICAgICAgICAgb3MuZW52aXJvblsnTkFUSVZFX1JPT1QnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCiAKICAgICAgICAgZmFpbGVkX3BrZ3MgPSBbXQpAQCAtMTM1MSw5ICsxNTI3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKG91dHB1dCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCIlcyBmb3IgcGFja2FnZSAlcyBmYWlsZWQgd2l0aCAlZDpcbiVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlcyBmb3IgcGFja2FnZSAlcyBmYWlsZWQgd2l0aCAlZDpcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250cm9sX3NjcmlwdC5uYW1lLCBwa2dfbmFtZSwgZS5yZXR1cm5jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihbcGtnX25hbWVdLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKHBrZ19uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIApAQCAtMTU1OCwxMCArMTczNSwxMCBAQAogICAgIGRlZiBsaXN0X2luc3RhbGxlZChzZWxmKToKICAgICAgICAgcmV0dXJuIERwa2dQa2dzTGlzdChzZWxmLmQsIHNlbGYudGFyZ2V0X3Jvb3RmcykubGlzdF9wa2dzKCkKIAotICAgICIiIgotICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KLSAgICAiIiIKICAgICBkZWYgcGFja2FnZV9pbmZvKHNlbGYsIHBrZyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCisgICAgICAgICIiIgogICAgICAgICBjbWQgPSAiJXMgc2hvdyAlcyIgJSAoc2VsZi5hcHRfY2FjaGVfY21kLCBwa2cpCiAgICAgICAgIHBrZ19pbmZvID0gc3VwZXIoRHBrZ1BNLCBzZWxmKS5wYWNrYWdlX2luZm8ocGtnLCBjbWQpCiAKQEAgLTE1NzIsMTIgKzE3NDksMTIgQEAKIAogICAgICAgICByZXR1cm4gcGtnX2luZm8KIAotICAgICIiIgotICAgIFJldHVybnMgdGhlIHBhdGggdG8gYSB0bXBkaXIgd2hlcmUgcmVzaWRlcyB0aGUgY29udGVudHMgb2YgYSBwYWNrYWdlLgotCi0gICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgotICAgICIiIgogICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKworICAgICAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisgICAgICAgICIiIgogICAgICAgICBwa2dfaW5mbyA9IHNlbGYucGFja2FnZV9pbmZvKHBrZykKICAgICAgICAgaWYgbm90IHBrZ19pbmZvOgogICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byBnZXQgaW5mb3JtYXRpb24gZm9yIHBhY2thZ2UgJyVzJyB3aGlsZSAiCkBAIC0xNTkyLDcgKzE3NjksNyBAQAogICAgIGNsYXNzZXMgPSBkLmdldFZhcignUEFDS0FHRV9DTEFTU0VTJykucmVwbGFjZSgicGFja2FnZV8iLCAiIikuc3BsaXQoKQogCiAgICAgaW5kZXhlcl9tYXAgPSB7Ci0gICAgICAgICJycG0iOiAoUnBtSW5kZXhlciwgZC5nZXRWYXIoJ0RFUExPWV9ESVJfUlBNJykpLAorICAgICAgICAicnBtIjogKFJwbVN1YmRpckluZGV4ZXIsIGQuZ2V0VmFyKCdERVBMT1lfRElSX1JQTScpKSwKICAgICAgICAgImlwayI6IChPcGtnSW5kZXhlciwgZC5nZXRWYXIoJ0RFUExPWV9ESVJfSVBLJykpLAogICAgICAgICAiZGViIjogKERwa2dJbmRleGVyLCBkLmdldFZhcignREVQTE9ZX0RJUl9ERUInKSkKICAgICB9CkBAIC0xNjA4LDEyICsxNzg1LDMgQEAKIAogICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKHJlc3VsdCkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAiIiIKLSAgICBXZSBzaG91bGQgYmUgYWJsZSB0byBydW4gdGhpcyBhcyBhIHN0YW5kYWxvbmUgc2NyaXB0LCBmcm9tIG91dHNpZGUgYml0YmFrZQotICAgIGVudmlyb25tZW50LgotICAgICIiIgotICAgICIiIgotICAgIFRCRAotICAgICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CmluZGV4IDU4NGJmNmMuLmFmN2FhNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKQEAgLTM2LDYgKzM2LDIyIEBACiAgICAgICAgIChleGl0c3RhdHVzLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKICAgICAgICAgaWYgZXhpdHN0YXR1cyAhPSAwOgogICAgICAgICAgICAgcmFpc2UgQ21kRXJyb3IoY21kLCBleGl0c3RhdHVzID4+IDgsIG91dHB1dCkKKyAgICAgICAgaWYgIiBmdXp6ICIgaW4gb3V0cHV0OgorICAgICAgICAgICAgYmIud2FybigiIiIKK1NvbWUgb2YgdGhlIGNvbnRleHQgbGluZXMgaW4gcGF0Y2hlcyB3ZXJlIGlnbm9yZWQuIFRoaXMgY2FuIGxlYWQgdG8gaW5jb3JyZWN0bHkgYXBwbGllZCBwYXRjaGVzLgorVGhlIGNvbnRleHQgbGluZXMgaW4gdGhlIHBhdGNoZXMgY2FuIGJlIHVwZGF0ZWQgd2l0aCBkZXZ0b29sOgorCisgICAgZGV2dG9vbCBtb2RpZnkgPHJlY2lwZT4KKyAgICBkZXZ0b29sIGZpbmlzaCAtLWZvcmNlLXBhdGNoLXJlZnJlc2ggPHJlY2lwZT4gPGxheWVyX3BhdGg+CisKK1RoZW4gdGhlIHVwZGF0ZWQgcGF0Y2hlcyBhbmQgdGhlIHNvdXJjZSB0cmVlIChpbiBkZXZ0b29sJ3Mgd29ya3NwYWNlKQorc2hvdWxkIGJlIHJldmlld2VkIHRvIG1ha2Ugc3VyZSB0aGUgcGF0Y2hlcyBhcHBseSBpbiB0aGUgY29ycmVjdCBwbGFjZQorYW5kIGRvbid0IGludHJvZHVjZSBkdXBsaWNhdGUgbGluZXMgKHdoaWNoIGNhbiwgYW5kIGRvZXMgaGFwcGVuCit3aGVuIHNvbWUgb2YgdGhlIGNvbnRleHQgaXMgaWdub3JlZCkuIEZ1cnRoZXIgaW5mb3JtYXRpb246CitodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxOC1NYXJjaC8xNDg2NzUuaHRtbAoraHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ1MAorRGV0YWlsczoKK3t9IiIiLmZvcm1hdChvdXRwdXQpKQogICAgICAgICByZXR1cm4gb3V0cHV0CiAKICAgICBmaW5hbGx5OgpAQCAtMjEyLDcgKzIyOCw3IEBACiAgICAgICAgIHNlbGYucGF0Y2hlcy5pbnNlcnQoaSwgcGF0Y2gpCiAKICAgICBkZWYgX2FwcGx5cGF0Y2goc2VsZiwgcGF0Y2gsIGZvcmNlID0gRmFsc2UsIHJldmVyc2UgPSBGYWxzZSwgcnVuID0gVHJ1ZSk6Ci0gICAgICAgIHNoZWxsY21kID0gWyJjYXQiLCBwYXRjaFsnZmlsZSddLCAifCIsICJwYXRjaCIsICItcCIsIHBhdGNoWydzdHJpcHBhdGgnXV0KKyAgICAgICAgc2hlbGxjbWQgPSBbImNhdCIsIHBhdGNoWydmaWxlJ10sICJ8IiwgInBhdGNoIiwgIi0tbm8tYmFja3VwLWlmLW1pc21hdGNoIiwgIi1wIiwgcGF0Y2hbJ3N0cmlwcGF0aCddXQogICAgICAgICBpZiByZXZlcnNlOgogICAgICAgICAgICAgc2hlbGxjbWQuYXBwZW5kKCctUicpCiAKQEAgLTQzMiw3ICs0NDgsNyBAQAogICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXBhdGNoJykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2hlbGxjbWQgPSBbImdpdCIsICJmb3JtYXQtcGF0Y2giLCBzdGFydGNvbW1pdCwgIi1vIiwgdGVtcGRpcl0KKyAgICAgICAgICAgIHNoZWxsY21kID0gWyJnaXQiLCAiZm9ybWF0LXBhdGNoIiwgIi0tbm8tc2lnbmF0dXJlIiwgIi0tbm8tbnVtYmVyZWQiLCBzdGFydGNvbW1pdCwgIi1vIiwgdGVtcGRpcl0KICAgICAgICAgICAgIGlmIHBhdGhzOgogICAgICAgICAgICAgICAgIHNoZWxsY21kLmFwcGVuZCgnLS0nKQogICAgICAgICAgICAgICAgIHNoZWxsY21kLmV4dGVuZChwYXRocykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKaW5kZXggMWVhMDNkNS4uNzZjNThmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKQEAgLTIzNywzICsyMzcsMjUgQEAKICAgICAgICAgcmFpc2UKIAogICAgIHJldHVybiBmaWxlCisKK2RlZiBpc19wYXRoX3BhcmVudChwb3NzaWJsZV9wYXJlbnQsICpwYXRocyk6CisgICAgIiIiCisgICAgUmV0dXJuIFRydWUgaWYgYSBwYXRoIGlzIHRoZSBwYXJlbnQgb2YgYW5vdGhlciwgRmFsc2Ugb3RoZXJ3aXNlLgorICAgIE11bHRpcGxlIHBhdGhzIHRvIHRlc3QgY2FuIGJlIHNwZWNpZmllZCBpbiB3aGljaCBjYXNlIGFsbAorICAgIHNwZWNpZmllZCB0ZXN0IHBhdGhzIG11c3QgYmUgdW5kZXIgdGhlIHBhcmVudCBpbiBvcmRlciB0bworICAgIHJldHVybiBUcnVlLgorICAgICIiIgorICAgIGRlZiBhYnNfcGF0aF90cmFpbGluZyhwdGgpOgorICAgICAgICBwdGhfYWJzID0gb3MucGF0aC5hYnNwYXRoKHB0aCkKKyAgICAgICAgaWYgbm90IHB0aF9hYnMuZW5kc3dpdGgob3Muc2VwKToKKyAgICAgICAgICAgIHB0aF9hYnMgKz0gb3Muc2VwCisgICAgICAgIHJldHVybiBwdGhfYWJzCisKKyAgICBwb3NzaWJsZV9wYXJlbnRfYWJzID0gYWJzX3BhdGhfdHJhaWxpbmcocG9zc2libGVfcGFyZW50KQorICAgIGlmIG5vdCBwYXRoczoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgIHBhdGhfYWJzID0gYWJzX3BhdGhfdHJhaWxpbmcocGF0aCkKKyAgICAgICAgaWYgbm90IHBhdGhfYWJzLnN0YXJ0c3dpdGgocG9zc2libGVfcGFyZW50X2Ficyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CmluZGV4IGNhYjhlNDAuLmFhNjQ1NTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKQEAgLTIyLDcgKzIyLDcgQEAKICMgSGVscCB1cyB0byBmaW5kIHBsYWNlcyB0byBpbnNlcnQgdmFsdWVzCiByZWNpcGVfcHJvZ3Jlc3Npb24gPSBbJ1NVTU1BUlknLCAnREVTQ1JJUFRJT04nLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTRUNUSU9OJywgJ0xJQ0VOU0UnLCAnTElDRU5TRV9GTEFHUycsICdMSUNfRklMRVNfQ0hLU1VNJywgJ1BST1ZJREVTJywgJ0RFUEVORFMnLCAnUFInLCAnUFYnLCAnU1JDUkVWJywgJ1NSQ1BWJywgJ1NSQ19VUkknLCAnUycsICdkb19mZXRjaCgpJywgJ2RvX3VucGFjaygpJywgJ2RvX3BhdGNoKCknLCAnRVhUUkFfT0VDT05GJywgJ0VYVFJBX09FQ01BS0UnLCAnRVhUUkFfT0VTQ09OUycsICdkb19jb25maWd1cmUoKScsICdFWFRSQV9PRU1BS0UnLCAnZG9fY29tcGlsZSgpJywgJ2RvX2luc3RhbGwoKScsICdkb19wb3B1bGF0ZV9zeXNyb290KCknLCAnSU5JVFNDUklQVCcsICdVU0VSQUREJywgJ0dST1VQQUREJywgJ1BBQ0tBR0VTJywgJ0ZJTEVTJywgJ1JERVBFTkRTJywgJ1JSRUNPTU1FTkRTJywgJ1JTVUdHRVNUUycsICdSUFJPVklERVMnLCAnUlJFUExBQ0VTJywgJ1JDT05GTElDVFMnLCAnQUxMT1dfRU1QVFknLCAncG9wdWxhdGVfcGFja2FnZXMoKScsICdkb19wYWNrYWdlKCknLCAnZG9fZGVwbG95KCknXQogIyBWYXJpYWJsZXMgdGhhdCBzb21ldGltZXMgYXJlIGEgYml0IGxvbmcgYnV0IHNob3VsZG4ndCBiZSB3cmFwcGVkCi1ub3dyYXBfdmFycyA9IFsnU1VNTUFSWScsICdIT01FUEFHRScsICdCVUdUUkFDS0VSJywgJ1NSQ19VUklbbWQ1c3VtXScsICdTUkNfVVJJW3NoYTI1NnN1bV0nXQorbm93cmFwX3ZhcnMgPSBbJ1NVTU1BUlknLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTUkNfVVJJXFsoLitcLik/bWQ1c3VtXF0nLCAnU1JDX1VSSVxbKC4rXC4pP3NoYTI1NnN1bVxdJ10KIGxpc3RfdmFycyA9IFsnU1JDX1VSSScsICdMSUNfRklMRVNfQ0hLU1VNJ10KIG1ldGFfdmFycyA9IFsnU1VNTUFSWScsICdERVNDUklQVElPTicsICdIT01FUEFHRScsICdCVUdUUkFDS0VSJywgJ1NFQ1RJT04nXQogCkBAIC0xNDIsNiArMTQyLDEwIEBACiAgICAgZWxzZToKICAgICAgICAgbmV3bGluZSA9ICcnCiAKKyAgICBub3dyYXBfdmFyc19yZXMgPSBbXQorICAgIGZvciBpdGVtIGluIG5vd3JhcF92YXJzOgorICAgICAgICBub3dyYXBfdmFyc19yZXMuYXBwZW5kKHJlLmNvbXBpbGUoJ14lcyQnICUgaXRlbSkpCisKICAgICByZWNpcGVfcHJvZ3Jlc3Npb25fcmVzID0gW10KICAgICByZWNpcGVfcHJvZ3Jlc3Npb25fcmVzdHJzID0gW10KICAgICBmb3IgaXRlbSBpbiByZWNpcGVfcHJvZ3Jlc3Npb246CkBAIC0xNzQsNyArMTc4LDEyIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcmF3dGV4dCA9ICclcyA9ICIlcyIlcycgJSAobmFtZSwgdmFsdWVzW25hbWVdLCBuZXdsaW5lKQogICAgICAgICBhZGRsaW5lcyA9IFtdCi0gICAgICAgIGlmIG5hbWUgaW4gbm93cmFwX3ZhcnM6CisgICAgICAgIG5vd3JhcCA9IEZhbHNlCisgICAgICAgIGZvciBub3dyYXBfcmUgaW4gbm93cmFwX3ZhcnNfcmVzOgorICAgICAgICAgICAgaWYgbm93cmFwX3JlLm1hdGNoKG5hbWUpOgorICAgICAgICAgICAgICAgIG5vd3JhcCA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBub3dyYXA6CiAgICAgICAgICAgICBhZGRsaW5lcy5hcHBlbmQocmF3dGV4dCkKICAgICAgICAgZWxpZiBuYW1lIGluIGxpc3RfdmFyczoKICAgICAgICAgICAgIHNwbGl0dmFsdWUgPSBzcGxpdF92YXJfdmFsdWUodmFsdWVzW25hbWVdLCBhc3NpZ25tZW50PUZhbHNlKQpAQCAtMjQyLDcgKzI1MSw3IEBACiAgICAgcmV0dXJuIGNoYW5nZWQsIHRvbGluZXMKIAogCi1kZWYgcGF0Y2hfcmVjaXBlX2ZpbGUoZm4sIHZhbHVlcywgcGF0Y2g9RmFsc2UsIHJlbHBhdGg9JycpOgorZGVmIHBhdGNoX3JlY2lwZV9maWxlKGZuLCB2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnLCByZWRpcmVjdF9vdXRwdXQ9Tm9uZSk6CiAgICAgIiIiVXBkYXRlIG9yIGluc2VydCB2YXJpYWJsZSB2YWx1ZXMgaW50byBhIHJlY2lwZSBmaWxlIChhc3N1bWluZyB5b3UKICAgICAgICBoYXZlIGFscmVhZHkgaWRlbnRpZmllZCB0aGUgZXhhY3QgZmlsZSB5b3Ugd2FudCB0byB1cGRhdGUuKQogICAgICAgIE5vdGUgdGhhdCBzb21lIG1hbnVhbCBpbnNwZWN0aW9uL2ludGVydmVudGlvbiBtYXkgYmUgcmVxdWlyZWQKQEAgLTI1NCw3ICsyNjMsMTEgQEAKIAogICAgIF8sIHRvbGluZXMgPSBwYXRjaF9yZWNpcGVfbGluZXMoZnJvbWxpbmVzLCB2YWx1ZXMpCiAKLSAgICBpZiBwYXRjaDoKKyAgICBpZiByZWRpcmVjdF9vdXRwdXQ6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVkaXJlY3Rfb3V0cHV0LCBvcy5wYXRoLmJhc2VuYW1lKGZuKSksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGVsaW5lcyh0b2xpbmVzKQorICAgICAgICByZXR1cm4gTm9uZQorICAgIGVsaWYgcGF0Y2g6CiAgICAgICAgIHJlbGZuID0gb3MucGF0aC5yZWxwYXRoKGZuLCByZWxwYXRoKQogICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCAnYS8lcycgJSByZWxmbiwgJ2IvJXMnICUgcmVsZm4pCiAgICAgICAgIHJldHVybiBkaWZmCkBAIC0zMDQsNyArMzE3LDcgQEAKIAogICAgIHJldHVybiBmaWxldmFycwogCi1kZWYgcGF0Y2hfcmVjaXBlKGQsIGZuLCB2YXJ2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnKToKK2RlZiBwYXRjaF9yZWNpcGUoZCwgZm4sIHZhcnZhbHVlcywgcGF0Y2g9RmFsc2UsIHJlbHBhdGg9JycsIHJlZGlyZWN0X291dHB1dD1Ob25lKToKICAgICAiIiJNb2RpZnkgYSBsaXN0IG9mIHZhcmlhYmxlIHZhbHVlcyBpbiB0aGUgc3BlY2lmaWVkIHJlY2lwZS4gSGFuZGxlcyBpbmMgZmlsZXMgaWYKICAgICB1c2VkIGJ5IHRoZSByZWNpcGUuCiAgICAgIiIiCkBAIC0zMTQsNyArMzI3LDcgQEAKICAgICBwYXRjaGVzID0gW10KICAgICBmb3IgZix2IGluIGxvY3MuaXRlbXMoKToKICAgICAgICAgdmFscyA9IHtrOiB2YXJ2YWx1ZXNba10gZm9yIGsgaW4gdn0KLSAgICAgICAgcGF0Y2hkYXRhID0gcGF0Y2hfcmVjaXBlX2ZpbGUoZiwgdmFscywgcGF0Y2gsIHJlbHBhdGgpCisgICAgICAgIHBhdGNoZGF0YSA9IHBhdGNoX3JlY2lwZV9maWxlKGYsIHZhbHMsIHBhdGNoLCByZWxwYXRoLCByZWRpcmVjdF9vdXRwdXQpCiAgICAgICAgIGlmIHBhdGNoOgogICAgICAgICAgICAgcGF0Y2hlcy5hcHBlbmQocGF0Y2hkYXRhKQogCkBAIC0zOTUsNyArNDA4LDcgQEAKICAgICAjIGZldGNoZXIpIHRob3VnaCBub3RlIHRoYXQgdGhpcyBvbmx5IGVuY29tcGFzc2VzIGFjdHVhbCBjb250YWluZXIgZm9ybWF0cwogICAgICMgaS5lLiB0aGF0IGNhbiBjb250YWluIG11bHRpcGxlIGZpbGVzIGFzIG9wcG9zZWQgdG8gdGhvc2UgdGhhdCBvbmx5CiAgICAgIyBjb250YWluIGEgY29tcHJlc3NlZCBzdHJlYW0gKGkuZS4gLnRhci5neiBhcyBvcHBvc2VkIHRvIGp1c3QgLmd6KQotICAgIGFyY2hpdmVfZXh0cyA9IFsnLnRhcicsICcudGd6JywgJy50YXIuZ3onLCAnLnRhci5aJywgJy50YnonLCAnLnRiejInLCAnLnRhci5iejInLCAnLnRhci54eicsICcudGFyLmx6JywgJy56aXAnLCAnLmphcicsICcucnBtJywgJy5zcnBtJywgJy5kZWInLCAnLmlwaycsICcudGFyLjd6JywgJy43eiddCisgICAgYXJjaGl2ZV9leHRzID0gWycudGFyJywgJy50Z3onLCAnLnRhci5neicsICcudGFyLlonLCAnLnRieicsICcudGJ6MicsICcudGFyLmJ6MicsICcudHh6JywgJy50YXIueHonLCAnLnRhci5seicsICcuemlwJywgJy5qYXInLCAnLnJwbScsICcuc3JwbScsICcuZGViJywgJy5pcGsnLCAnLnRhci43eicsICcuN3onXQogICAgIHJldCA9IHt9CiAgICAgZm9yIHVyaSBpbiB1cmlzOgogICAgICAgICBpZiBmZXRjaC51ZFt1cmldLnR5cGUgPT0gJ2ZpbGUnOgpAQCAtNTc1LDcgKzU4OCw3IEBACiAgICAgcmV0dXJuIChhcHBlbmRwYXRoLCBwYXRob2spCiAKIAotZGVmIGJiYXBwZW5kX3JlY2lwZShyZCwgZGVzdGxheWVyZGlyLCBzcmNmaWxlcywgaW5zdGFsbD1Ob25lLCB3aWxkY2FyZHZlcj1GYWxzZSwgbWFjaGluZT1Ob25lLCBleHRyYWxpbmVzPU5vbmUsIHJlbW92ZXZhbHVlcz1Ob25lKToKK2RlZiBiYmFwcGVuZF9yZWNpcGUocmQsIGRlc3RsYXllcmRpciwgc3JjZmlsZXMsIGluc3RhbGw9Tm9uZSwgd2lsZGNhcmR2ZXI9RmFsc2UsIG1hY2hpbmU9Tm9uZSwgZXh0cmFsaW5lcz1Ob25lLCByZW1vdmV2YWx1ZXM9Tm9uZSwgcmVkaXJlY3Rfb3V0cHV0PU5vbmUpOgogICAgICIiIgogICAgIFdyaXRlcyBhIGJiYXBwZW5kIGZpbGUgZm9yIGEgcmVjaXBlCiAgICAgUGFyYW1ldGVyczoKQEAgLTYwMiw2ICs2MTUsOSBAQAogICAgICAgICAgICAgdmFsdWUgcGFpcnMsIG9yIHNpbXBseSBhIGxpc3Qgb2YgdGhlIGxpbmVzLgogICAgICAgICByZW1vdmV2YWx1ZXM6CiAgICAgICAgICAgICBWYXJpYWJsZSB2YWx1ZXMgdG8gcmVtb3ZlIC0gYSBkaWN0IG9mIG5hbWVzL3ZhbHVlcy4KKyAgICAgICAgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICAgICAgSWYgc3BlY2lmaWVkLCByZWRpcmVjdHMgd3JpdGluZyB0aGUgb3V0cHV0IGZpbGUgdG8gdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgZGlyZWN0b3J5IChmb3IgZHJ5LXJ1biBwdXJwb3NlcykKICAgICAiIiIKIAogICAgIGlmIG5vdCByZW1vdmV2YWx1ZXM6CkBAIC02MTYsNyArNjMyLDggQEAKICAgICAgICAgYmIud2FybignVW5hYmxlIHRvIGRldGVybWluZSBjb3JyZWN0IHN1YmRpcmVjdG9yeSBwYXRoIGZvciBiYmFwcGVuZCBmaWxlIC0gY2hlY2sgdGhhdCB3aGF0ICVzIGFkZHMgdG8gQkJGSUxFUyBhbHNvIG1hdGNoZXMgLmJiYXBwZW5kIGZpbGVzLiBVc2luZyAlcyBmb3Igbm93LCBidXQgdW50aWwgeW91IGZpeCB0aGlzIHRoZSBiYmFwcGVuZCB3aWxsIG5vdCBiZSBhcHBsaWVkLicgJSAob3MucGF0aC5qb2luKGRlc3RsYXllcmRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCBvcy5wYXRoLmRpcm5hbWUoYXBwZW5kcGF0aCkpKQogCiAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5kaXJuYW1lKGFwcGVuZHBhdGgpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKGFwcGVuZGRpcikKKyAgICBpZiBub3QgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoYXBwZW5kZGlyKQogCiAgICAgIyBGSVhNRSBjaGVjayBpZiB0aGUgYmJhcHBlbmQgZG9lc24ndCBnZXQgb3ZlcnJpZGRlbiBieSBhIGhpZ2hlciBwcmlvcml0eSBsYXllcj8KIApAQCAtNjkzLDkgKzcxMCwxOCBAQAogICAgICAgICBpZiBpbnN0ZnVuY2xpbmVzOgogICAgICAgICAgICAgYmJhcHBlbmRsaW5lcy5hcHBlbmQoKCdkb19pbnN0YWxsX2FwcGVuZCVzKCknICUgYXBwZW5kb3ZlcnJpZGUsICcnLCBpbnN0ZnVuY2xpbmVzKSkKIAotICAgIGJiLm5vdGUoJ1dyaXRpbmcgYXBwZW5kIGZpbGUgJXMnICUgYXBwZW5kcGF0aCkKKyAgICBpZiByZWRpcmVjdF9vdXRwdXQ6CisgICAgICAgIGJiLm5vdGUoJ1dyaXRpbmcgYXBwZW5kIGZpbGUgJXMgKGRyeS1ydW4pJyAlIGFwcGVuZHBhdGgpCisgICAgICAgIG91dGZpbGUgPSBvcy5wYXRoLmpvaW4ocmVkaXJlY3Rfb3V0cHV0LCBvcy5wYXRoLmJhc2VuYW1lKGFwcGVuZHBhdGgpKQorICAgICAgICAjIE9ubHkgdGFrZSBhIGNvcHkgaWYgdGhlIGZpbGUgaXNuJ3QgYWxyZWFkeSB0aGVyZSAodGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkCisgICAgICAgICMgbXVsdGlwbGUgdGltZXMgcGVyIG9wZXJhdGlvbiB3aGVuIHdlJ3JlIGhhbmRsaW5nIG92ZXJyaWRlcykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kcGF0aCkgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRmaWxlKToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5MihhcHBlbmRwYXRoLCBvdXRmaWxlKQorICAgIGVsc2U6CisgICAgICAgIGJiLm5vdGUoJ1dyaXRpbmcgYXBwZW5kIGZpbGUgJXMnICUgYXBwZW5kcGF0aCkKKyAgICAgICAgb3V0ZmlsZSA9IGFwcGVuZHBhdGgKIAotICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZHBhdGgpOgorICAgIGlmIG9zLnBhdGguZXhpc3RzKG91dGZpbGUpOgogICAgICAgICAjIFdvcmsgYXJvdW5kIGxhY2sgb2Ygbm9ubG9jYWwgaW4gcHl0aG9uIDIKICAgICAgICAgZXh0dmFycyA9IHsnZGVzdHN1YmRpcic6IGRlc3RzdWJkaXJ9CiAKQEAgLTc2Nyw3ICs3OTMsNyBAQAogICAgICAgICBpZiByZW1vdmV2YWx1ZXM6CiAgICAgICAgICAgICB2YXJuYW1lcy5leHRlbmQobGlzdChyZW1vdmV2YWx1ZXMua2V5cygpKSkKIAotICAgICAgICB3aXRoIG9wZW4oYXBwZW5kcGF0aCwgJ3InKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgKHVwZGF0ZWQsIG5ld2xpbmVzKSA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEoZiwgdmFybmFtZXMsIGFwcGVuZGZpbGVfdmFyZnVuYykKIAogICAgICAgICBkZXN0c3ViZGlyID0gZXh0dmFyc1snZGVzdHN1YmRpciddCkBAIC03ODQsMjAgKzgxMCwyNyBAQAogICAgICAgICB1cGRhdGVkID0gVHJ1ZQogCiAgICAgaWYgdXBkYXRlZDoKLSAgICAgICAgd2l0aCBvcGVuKGFwcGVuZHBhdGgsICd3JykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhuZXdsaW5lcykKIAogICAgIGlmIGNvcHlmaWxlczoKICAgICAgICAgaWYgbWFjaGluZToKICAgICAgICAgICAgIGRlc3RzdWJkaXIgPSBvcy5wYXRoLmpvaW4oZGVzdHN1YmRpciwgbWFjaGluZSkKKyAgICAgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICAgICAgb3V0ZGlyID0gcmVkaXJlY3Rfb3V0cHV0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvdXRkaXIgPSBhcHBlbmRkaXIKICAgICAgICAgZm9yIG5ld2ZpbGUsIHNyY2ZpbGUgaW4gY29weWZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICBmaWxlZGVzdCA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIGRlc3RzdWJkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCisgICAgICAgICAgICBmaWxlZGVzdCA9IG9zLnBhdGguam9pbihvdXRkaXIsIGRlc3RzdWJkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmFic3BhdGgobmV3ZmlsZSkgIT0gb3MucGF0aC5hYnNwYXRoKGZpbGVkZXN0KToKICAgICAgICAgICAgICAgICBpZiBuZXdmaWxlLnN0YXJ0c3dpdGgodGVtcGZpbGUuZ2V0dGVtcGRpcigpKToKICAgICAgICAgICAgICAgICAgICAgbmV3ZmlsZWRpc3AgPSBvcy5wYXRoLmJhc2VuYW1lKG5ld2ZpbGUpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbmV3ZmlsZWRpc3AgPSBuZXdmaWxlCi0gICAgICAgICAgICAgICAgYmIubm90ZSgnQ29weWluZyAlcyB0byAlcycgJSAobmV3ZmlsZWRpc3AsIGZpbGVkZXN0KSkKKyAgICAgICAgICAgICAgICBpZiByZWRpcmVjdF9vdXRwdXQ6CisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgJXMgdG8gJXMgKGRyeS1ydW4pJyAlIChuZXdmaWxlZGlzcCwgb3MucGF0aC5qb2luKGFwcGVuZGRpciwgZGVzdHN1YmRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgJXMgdG8gJXMnICUgKG5ld2ZpbGVkaXNwLCBmaWxlZGVzdCkpCiAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShmaWxlZGVzdCkpCiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG5ld2ZpbGUsIGZpbGVkZXN0KQogCkBAIC04NjcsMjUgKzkwMCwyNSBAQAogICAgICAgICAgICAgRmV0Y2hFcnJvciB3aGVuIGRvbid0IGhhdmUgbmV0d29yayBhY2Nlc3Mgb3IgdXBzdHJlYW0gc2l0ZSBkb24ndCByZXNwb25zZS4KICAgICAgICAgICAgIE5vTWV0aG9kRXJyb3Igd2hlbiB1cmkgbGF0ZXN0X3ZlcnNpb25zdHJpbmcgbWV0aG9kIGlzbid0IGltcGxlbWVudGVkLgogCi0gICAgICAgIFJldHVybnMgYSBkaWN0b25hcnkgd2l0aCB2ZXJzaW9uLCB0eXBlIGFuZCBkYXRldGltZS4KKyAgICAgICAgUmV0dXJucyBhIGRpY3RvbmFyeSB3aXRoIHZlcnNpb24sIHJlcG9zaXRvcnkgcmV2aXNpb24sIGN1cnJlbnRfdmVyc2lvbiwgdHlwZSBhbmQgZGF0ZXRpbWUuCiAgICAgICAgIFR5cGUgY2FuIGJlIEEgZm9yIEF1dG9tYXRpYywgTSBmb3IgTWFudWFsIGFuZCBVIGZvciBVbmtub3duLgogICAgICIiIgogICAgIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBkZWNvZGV1cmwKICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogCiAgICAgcnUgPSB7fQorICAgIHJ1WydjdXJyZW50X3ZlcnNpb24nXSA9IHJkLmdldFZhcignUFYnKQogICAgIHJ1Wyd2ZXJzaW9uJ10gPSAnJwogICAgIHJ1Wyd0eXBlJ10gPSAnVScKICAgICBydVsnZGF0ZXRpbWUnXSA9ICcnCi0KLSAgICBwdiA9IHJkLmdldFZhcignUFYnKQorICAgIHJ1WydyZXZpc2lvbiddID0gJycKIAogICAgICMgWFhYOiBJZiBkb24ndCBoYXZlIFNSQ19VUkkgbWVhbnMgdGhhdCBkb24ndCBoYXZlIHVwc3RyZWFtIHNvdXJjZXMgc28KICAgICAjIHJldHVybnMgdGhlIGN1cnJlbnQgcmVjaXBlIHZlcnNpb24sIHNvIHRoYXQgdXBzdHJlYW0gdmVyc2lvbiBjaGVjawogICAgICMgZGVjbGFyZXMgYSBtYXRjaC4KICAgICBzcmNfdXJpcyA9IHJkLmdldFZhcignU1JDX1VSSScpCiAgICAgaWYgbm90IHNyY191cmlzOgotICAgICAgICBydVsndmVyc2lvbiddID0gcHYKKyAgICAgICAgcnVbJ3ZlcnNpb24nXSA9IHJ1WydjdXJyZW50X3ZlcnNpb24nXQogICAgICAgICBydVsndHlwZSddID0gJ00nCiAgICAgICAgIHJ1WydkYXRldGltZSddID0gZGF0ZXRpbWUubm93KCkKICAgICAgICAgcmV0dXJuIHJ1CkBAIC04OTQsNiArOTI3LDkgQEAKICAgICBzcmNfdXJpID0gc3JjX3VyaXMuc3BsaXQoKVswXQogICAgIHVyaV90eXBlLCBfLCBfLCBfLCBfLCBfID0gIGRlY29kZXVybChzcmNfdXJpKQogCisgICAgKHB2LCBwZngsIHNmeCkgPSBnZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocmQuZ2V0VmFyKCdQVicpLCB1cmlfdHlwZSkKKyAgICBydVsnY3VycmVudF92ZXJzaW9uJ10gPSBwdgorCiAgICAgbWFudWFsX3Vwc3RyZWFtX3ZlcnNpb24gPSByZC5nZXRWYXIoIlJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OIikKICAgICBpZiBtYW51YWxfdXBzdHJlYW1fdmVyc2lvbjoKICAgICAgICAgIyBtYW51YWwgdHJhY2tpbmcgb2YgdXBzdHJlYW0gdmVyc2lvbi4KQEAgLTkxNCwzMyArOTUwLDIyIEBACiAgICAgICAgIHJ1WydkYXRldGltZSddID0gZGF0ZXRpbWUubm93KCkKICAgICBlbHNlOgogICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEoc3JjX3VyaSwgcmQpCi0gICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgcmQpCi0gICAgICAgICh1cHZlcnNpb24sIHJldmlzaW9uKSA9IHB1cHZlcgotCi0gICAgICAgICMgZm9ybWF0IGdpdCB2ZXJzaW9uIHZlcnNpb24rZ2l0QVVUT0lOQytIQVNICi0gICAgICAgIGlmIHVyaV90eXBlID09ICdnaXQnOgotICAgICAgICAgICAgKHB2LCBwZngsIHNmeCkgPSBnZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHYsIHVyaV90eXBlKQotCi0gICAgICAgICAgICAjIGlmIGNvbnRhaW5zIHJldmlzaW9uIGJ1dCBub3QgdXB2ZXJzaW9uIHVzZSBjdXJyZW50IHB2Ci0gICAgICAgICAgICBpZiB1cHZlcnNpb24gPT0gJycgYW5kIHJldmlzaW9uOgotICAgICAgICAgICAgICAgIHVwdmVyc2lvbiA9IHB2Ci0KLSAgICAgICAgICAgIGlmIHVwdmVyc2lvbjoKLSAgICAgICAgICAgICAgICB0bXAgPSB1cHZlcnNpb24KLSAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSAnJwotCi0gICAgICAgICAgICAgICAgaWYgcGZ4OgotICAgICAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSBwZnggKyB0bXAKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSB0bXAKLQotICAgICAgICAgICAgICAgIGlmIHNmeDoKLSAgICAgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gdXB2ZXJzaW9uICsgc2Z4ICsgcmV2aXNpb25bOjEwXQorICAgICAgICBpZiByZC5nZXRWYXIoIlVQU1RSRUFNX0NIRUNLX0NPTU1JVFMiKSA9PSAiMSI6CisgICAgICAgICAgICByZXZpc2lvbiA9IHVkLm1ldGhvZC5sYXRlc3RfcmV2aXNpb24odWQsIHJkLCAnZGVmYXVsdCcpCisgICAgICAgICAgICB1cHZlcnNpb24gPSBwdgorICAgICAgICAgICAgaWYgcmV2aXNpb24gIT0gcmQuZ2V0VmFyKCJTUkNSRVYiKToKKyAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSB1cHZlcnNpb24gKyAiLW5ldy1jb21taXRzLWF2YWlsYWJsZSIgCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwdXB2ZXIgPSB1ZC5tZXRob2QubGF0ZXN0X3ZlcnNpb25zdHJpbmcodWQsIHJkKQorICAgICAgICAgICAgKHVwdmVyc2lvbiwgcmV2aXNpb24pID0gcHVwdmVyCiAKICAgICAgICAgaWYgdXB2ZXJzaW9uOgogICAgICAgICAgICAgcnVbJ3ZlcnNpb24nXSA9IHVwdmVyc2lvbgogICAgICAgICAgICAgcnVbJ3R5cGUnXSA9ICdBJwogCisgICAgICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAgcnVbJ3JldmlzaW9uJ10gPSByZXZpc2lvbgorCiAgICAgICAgIHJ1WydkYXRldGltZSddID0gZGF0ZXRpbWUubm93KCkKIAogICAgIHJldHVybiBydQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKaW5kZXggNzU0ZWY1Ni4uZjhmNzE3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CkBAIC05MiwxMCArOTIsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9BUkNIUycpKQogCiAKLSAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCBmYWlsZWRfc2NyaXB0KToKLSAgICAgICAgcGFzcwotCiAgICAgIiIiCiAgICAgVGhlIF9jbGVhbnVwKCkgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuLXVwIHN0dWZmIHRoYXQgd2UgZG9uJ3QgcmVhbGx5CiAgICAgd2FudCB0byBlbmQgdXAgb24gdGFyZ2V0LiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgUlBNLCB0aGUgREIgbG9ja3MuCkBAIC0xNzgsMjAgKzE3NCwxMCBAQAogICAgICAgICBwb3N0X3Byb2Nlc3NfY21kcyA9IHNlbGYuZC5nZXRWYXIoIlJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EIikKICAgICAgICAgcm9vdGZzX3Bvc3RfaW5zdGFsbF9jbWRzID0gc2VsZi5kLmdldFZhcignUk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkQnKQogCi0gICAgICAgIHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyID0gc2VsZi5kLmdldFZhcigiUE9TVElOU1RfSU5URVJDRVBUU19ESVIiKQotICAgICAgICBpZiBub3QgcG9zdGluc3RfaW50ZXJjZXB0c19kaXI6Ci0gICAgICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpciA9IHNlbGYuZC5leHBhbmQoIiR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cyIpCi0gICAgICAgIGludGVyY2VwdHNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyY2VwdF9zY3JpcHRzIikKLQotICAgICAgICBiYi51dGlscy5yZW1vdmUoaW50ZXJjZXB0c19kaXIsIFRydWUpCi0KICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuaW1hZ2Vfcm9vdGZzKQogCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmRlcGxveWRpcikKIAotICAgICAgICBzaHV0aWwuY29weXRyZWUocG9zdGluc3RfaW50ZXJjZXB0c19kaXIsIGludGVyY2VwdHNfZGlyKQotCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHByZV9wcm9jZXNzX2NtZHMpCiAKICAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKQEAgLTIwNyw3ICsxOTMsNyBAQAogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHJvb3Rmc19wb3N0X2luc3RhbGxfY21kcykKIAotICAgICAgICBzZWxmLl9ydW5faW50ZXJjZXB0cygpCisgICAgICAgIHNlbGYucG0ucnVuX2ludGVyY2VwdHMoKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHBvc3RfcHJvY2Vzc19jbWRzKQogCkBAIC0yOTMsNDQgKzI3OSw2IEBACiAgICAgICAgICAgICAjIFJlbW92ZSB0aGUgcGFja2FnZSBtYW5hZ2VyIGRhdGEgZmlsZXMKICAgICAgICAgICAgIHNlbGYucG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKIAotICAgIGRlZiBfcnVuX2ludGVyY2VwdHMoc2VsZik6Ci0gICAgICAgIGludGVyY2VwdHNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyY2VwdF9zY3JpcHRzIikKLQotICAgICAgICBiYi5ub3RlKCJSdW5uaW5nIGludGVyY2VwdCBzY3JpcHRzOiIpCi0gICAgICAgIG9zLmVudmlyb25bJ0QnXSA9IHNlbGYuaW1hZ2Vfcm9vdGZzCi0gICAgICAgIG9zLmVudmlyb25bJ1NUQUdJTkdfRElSX05BVElWRSddID0gc2VsZi5kLmdldFZhcignU1RBR0lOR19ESVJfTkFUSVZFJykKLSAgICAgICAgZm9yIHNjcmlwdCBpbiBvcy5saXN0ZGlyKGludGVyY2VwdHNfZGlyKToKLSAgICAgICAgICAgIHNjcmlwdF9mdWxsID0gb3MucGF0aC5qb2luKGludGVyY2VwdHNfZGlyLCBzY3JpcHQpCi0KLSAgICAgICAgICAgIGlmIHNjcmlwdCA9PSAicG9zdGluc3RfaW50ZXJjZXB0IiBvciBub3Qgb3MuYWNjZXNzKHNjcmlwdF9mdWxsLCBvcy5YX09LKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBiYi5ub3RlKCI+IEV4ZWN1dGluZyAlcyBpbnRlcmNlcHQgLi4uIiAlIHNjcmlwdCkKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgICAgICAgICAgaWYgb3V0cHV0OiBiYi5ub3RlKG91dHB1dC5kZWNvZGUoInV0Zi04IikpCi0gICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gbG9nLmRvX3Jvb3RmcyIgJSBzY3JpcHQpCi0gICAgICAgICAgICAgICAgYmIubm90ZSgiRXhpdCBjb2RlICVkLiBPdXRwdXQ6XG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQotCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9mdWxsKSBhcyBpbnRlcmNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gaW50ZXJjZXB0LnJlYWQoKS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXiMjUEtHUzooLiopIiwgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9wa2dzID0gbS5ncm91cCgxKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgICAgICAgICBpZiByZWdpc3RlcmVkX3BrZ3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGxzIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpbGwgYmUgcG9zdHBvbmVkIGZvciBmaXJzdCBib290OiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgY2FsbCB0aGUgYmFja2VuZCBkZXBlbmRlbnQgaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHJlZ2lzdGVyZWRfcGtncykKLQogICAgIGRlZiBfcnVuX2xkY29uZmlnKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdMRENPTkZJR0RFUEVORCcpOgogICAgICAgICAgICAgYmIubm90ZSgiRXhlY3V0aW5nOiBsZGNvbmZpZyAtciIgKyBzZWxmLmltYWdlX3Jvb3RmcyArICItYyBuZXcgLXYiKQpAQCAtNTIzLDE0ICs0NzEsNiBAQAogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfd2FybigpCiAgICAgICAgIHNlbGYuX2xvZ19jaGVja19lcnJvcigpCiAKLSAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgotICAgICAgICBycG1fcG9zdGluc3RzX2RpciA9IHNlbGYuaW1hZ2Vfcm9vdGZzICsgc2VsZi5kLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9ycG0tcG9zdGluc3RzLycpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihycG1fcG9zdGluc3RzX2RpcikKLQotICAgICAgICAjIFNhdmUgdGhlIHBhY2thZ2UgcG9zdGluc3RhbGxzIGluIC9ldGMvcnBtLXBvc3RpbnN0cwotICAgICAgICBmb3IgcGtnIGluIHJlZ2lzdGVyZWRfcGtncy5zcGxpdCgpOgotICAgICAgICAgICAgc2VsZi5wbS5zYXZlX3JwbXBvc3RpbnN0KHBrZykKLQogICAgIGRlZiBfY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5wbS5faW52b2tlX2RuZihbImNsZWFuIiwgImFsbCJdKQogCkBAIC03MTEsOSArNjUxLDYgQEAKICAgICAgICAgc3JjX3Bvc3RpbnN0X2RpciA9IHNlbGYuZC5leHBhbmQoIiR7SU1BR0VfUk9PVEZTfS92YXIvbGliL2Rwa2cvaW5mbyIpCiAgICAgICAgIHJldHVybiBzZWxmLl9zYXZlX3Bvc3RpbnN0c19jb21tb24oZHN0X3Bvc3RpbnN0X2Rpciwgc3JjX3Bvc3RpbnN0X2RpcikKIAotICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIHJlZ2lzdGVyZWRfcGtncyk6Ci0gICAgICAgIHNlbGYucG0ubWFya19wYWNrYWdlcygidW5wYWNrZWQiLCByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKSkKLQogICAgIGRlZiBfbG9nX2NoZWNrKHNlbGYpOgogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfd2FybigpCiAgICAgICAgIHNlbGYuX2xvZ19jaGVja19lcnJvcigpCkBAIC05ODIsOSArOTE5LDYgQEAKICAgICAgICAgc3JjX3Bvc3RpbnN0X2RpciA9IHNlbGYuZC5leHBhbmQoIiR7SU1BR0VfUk9PVEZTfSR7T1BLR0xJQkRJUn0vb3BrZy9pbmZvIikKICAgICAgICAgcmV0dXJuIHNlbGYuX3NhdmVfcG9zdGluc3RzX2NvbW1vbihkc3RfcG9zdGluc3RfZGlyLCBzcmNfcG9zdGluc3RfZGlyKQogCi0gICAgZGVmIF9oYW5kbGVfaW50ZXJjZXB0X2ZhaWx1cmUoc2VsZiwgcmVnaXN0ZXJlZF9wa2dzKToKLSAgICAgICAgc2VsZi5wbS5tYXJrX3BhY2thZ2VzKCJ1bnBhY2tlZCIsIHJlZ2lzdGVyZWRfcGtncy5zcGxpdCgpKQotCiAgICAgZGVmIF9sb2dfY2hlY2soc2VsZik6CiAgICAgICAgIHNlbGYuX2xvZ19jaGVja193YXJuKCkKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX2Vycm9yKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CmluZGV4IDdmNzFjZmIuLmQ2YTUwMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQpAQCAtMTYyLDQwICsxNjIsMjEgQEAKICAgICAgICAgc2VsZi5ob3N0X21hbmlmZXN0ID0gUnBtTWFuaWZlc3QoZCwgc2VsZi5tYW5pZmVzdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmlmZXN0Lk1BTklGRVNUX1RZUEVfU0RLX0hPU1QpCiAKLSAgICAgICAgdGFyZ2V0X3Byb3ZpZGVuYW1lID0gWycvYmluL3NoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYmluL2Jhc2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL2VudicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9iaW4vcGVybCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGtnY29uZmlnJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotCiAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXIgPSAib2Utc2RrLXJlcG8iCiAgICAgICAgIGlmICJzZGtfZXh0IiBpbiBkLmdldFZhcigiQkJfUlVOVEFTSyIpOgogICAgICAgICAgICAgcnBtX3JlcG9fd29ya2RpciA9ICJvZS1zZGstZXh0LXJlcG8iCiAKLQogICAgICAgICBzZWxmLnRhcmdldF9wbSA9IFJwbVBNKGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZGtfdGFyZ2V0X3N5c3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignVEFSR0VUX1ZFTkRPUicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9wcm92aWRlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycG1fcmVwb193b3JrZGlyPXJwbV9yZXBvX3dvcmtkaXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgc2RrX3Byb3ZpZGVuYW1lID0gWycvYmluL3NoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYmluL2Jhc2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL2VudicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9iaW4vcGVybCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGtnY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJHTC5zbygpKDY0Yml0KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliR0wuc28nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0KICAgICAgICAgc2VsZi5ob3N0X3BtID0gUnBtUE0oZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZGtfaG9zdF9zeXNyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdTREtfVkVORE9SJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RrX3Byb3ZpZGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0RLX1BBQ0tBR0VfQVJDSFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0RLX09TIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnBtX3JlcG9fd29ya2Rpcj1ycG1fcmVwb193b3JrZGlyCkBAIC0yMjgsNiArMjA5LDggQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKKyAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EIikpCiAKICAgICAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCJTREtJTUFHRV9GRUFUVVJFUyIsICJwYWNrYWdlLW1hbmFnZW1lbnQiLCBUcnVlLCBGYWxzZSwgc2VsZi5kKToKQEAgLTIzNyw2ICsyMjAsOCBAQAogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYuaG9zdF9wbSwgc2VsZi5ob3N0X21hbmlmZXN0KQogICAgICAgICBzZWxmLmluc3RhbGxfbG9jYWxlcyhzZWxmLmhvc3RfcG0pCiAKKyAgICAgICAgc2VsZi5ob3N0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIAogICAgICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgpAQCAtMzEyLDYgKzI5Nyw4IEBACiAKICAgICAgICAgc2VsZi50YXJnZXRfcG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KHNlbGYuZC5nZXRWYXIoJ1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScpKQogCisgICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCIpKQogCiAgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CkBAIC0zMjEsNiArMzA4LDggQEAKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi5pbnN0YWxsX2xvY2FsZXMoc2VsZi5ob3N0X3BtKQogCisgICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIikpCiAKICAgICAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCJTREtJTUFHRV9GRUFUVVJFUyIsICJwYWNrYWdlLW1hbmFnZW1lbnQiLCBUcnVlLCBGYWxzZSwgc2VsZi5kKToKQEAgLTM5Nyw2ICszODYsOCBAQAogCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtLmluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLmQuZ2V0VmFyKCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKSkKIAorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIAogICAgICAgICBzZWxmLl9jb3B5X2FwdF9kaXJfdG8ob3MucGF0aC5qb2luKHNlbGYuc2RrX3RhcmdldF9zeXNyb290LCAiZXRjIiwgImFwdCIpKQpAQCAtNDA4LDYgKzM5OSw4IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCIpKQogCiAgICAgICAgIHNlbGYuX2NvcHlfYXB0X2Rpcl90byhvcy5wYXRoLmpvaW4oc2VsZi5zZGtfb3V0cHV0LCBzZWxmLnNka19uYXRpdmVfcGF0aCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CmluZGV4IDNhODc3OGUuLmI4MmUwZjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBiYi5zaWdnZW4KK2ltcG9ydCBvZQogCiBkZWYgc3N0YXRlX3J1bmRlcGZpbHRlcihzaWdnZW4sIGZuLCByZWNpcGVuYW1lLCB0YXNrLCBkZXAsIGRlcG5hbWUsIGRhdGFDYWNoZSk6CiAgICAgIyBSZXR1cm4gVHJ1ZSBpZiB3ZSBzaG91bGQga2VlcCB0aGUgZGVwZW5kZW5jeSwgRmFsc2UgdG8gZHJvcCBpdApAQCAtMjgsMTUgKzI5LDE0IEBACiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICMgUXVpbHQgKHBhdGNoIGFwcGxpY2F0aW9uKSBjaGFuZ2luZyBpc24ndCBsaWtlbHkgdG8gYWZmZWN0IGFueXRoaW5nCi0gICAgZXhjbHVkZWxpc3QgPSBbJ3F1aWx0LW5hdGl2ZScsICdzdWJ2ZXJzaW9uLW5hdGl2ZScsICdnaXQtbmF0aXZlJywgJ2NjYWNoZS1uYXRpdmUnXQotICAgIGlmIGRlcG5hbWUgaW4gZXhjbHVkZWxpc3QgYW5kIHJlY2lwZW5hbWUgIT0gZGVwbmFtZToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KICAgICAjIEV4Y2x1ZGUgd2VsbCBkZWZpbmVkIHJlY2lwZS0+ZGVwZW5kZW5jeQogICAgIGlmICIlcy0+JXMiICUgKHJlY2lwZW5hbWUsIGRlcG5hbWUpIGluIHNpZ2dlbi5zYWZlcmVjaXBlZGVwczoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICAjIENoZWNrIGZvciBzcGVjaWFsIHdpbGRjYXJkCisgICAgaWYgIiotPiVzIiAlIGRlcG5hbWUgaW4gc2lnZ2VuLnNhZmVyZWNpcGVkZXBzIGFuZCByZWNpcGVuYW1lICE9IGRlcG5hbWU6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgIyBEb24ndCBjaGFuZ2UgbmF0aXZlL2Nyb3NzL25hdGl2ZXNkayByZWNpcGUgZGVwZW5kZW5jaWVzIGFueSBmdXJ0aGVyCiAgICAgaWYgaXNOYXRpdmUocmVjaXBlbmFtZSkgb3IgaXNDcm9zcyhyZWNpcGVuYW1lKSBvciBpc05hdGl2ZVNESyhyZWNpcGVuYW1lKToKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTM2OCwzICszNjgsMzcgQEAKICAgICBpZiBleHRyYWluZjoKICAgICAgICAgZDIuc2V0VmFyKCJTU1RBVEVfTUFOTUFDSCIsIGV4dHJhaW5mKQogICAgIHJldHVybiAoZDIuZXhwYW5kKCIke1NTVEFURV9NQU5GSUxFUFJFRklYfS4lcyIgJSB0YXNrKSwgZDIpCisKK2RlZiBmaW5kX3NzdGF0ZV9tYW5pZmVzdCh0YXNrZGF0YSwgdGFza2RhdGEyLCB0YXNrbmFtZSwgZCwgbXVsdGlsaWJjYWNoZSk6CisgICAgZDIgPSBkCisgICAgdmFyaWFudCA9ICcnCisgICAgaWYgdGFza2RhdGEyLnN0YXJ0c3dpdGgoInZpcnR1YWw6bXVsdGlsaWIiKToKKyAgICAgICAgdmFyaWFudCA9IHRhc2tkYXRhMi5zcGxpdCgiOiIpWzJdCisgICAgICAgIGlmIHZhcmlhbnQgbm90IGluIG11bHRpbGliY2FjaGU6CisgICAgICAgICAgICBtdWx0aWxpYmNhY2hlW3ZhcmlhbnRdID0gb2UudXRpbHMuZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKQorICAgICAgICBkMiA9IG11bHRpbGliY2FjaGVbdmFyaWFudF0KKworICAgIGlmIHRhc2tkYXRhLmVuZHN3aXRoKCItbmF0aXZlIik6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke0JVSUxEX0FSQ0h9Il0KKyAgICBlbGlmIHRhc2tkYXRhLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKToKKyAgICAgICAgcGtnYXJjaHMgPSBbIiR7U0RLX0FSQ0h9XyR7U0RLX09TfSIsICJhbGxhcmNoIl0KKyAgICBlbGlmICItY3Jvc3MtY2FuYWRpYW4iIGluIHRhc2tkYXRhOgorICAgICAgICBwa2dhcmNocyA9IFsiJHtTREtfQVJDSH1fJHtTREtfQVJDSH0tJHtTREtQS0dTVUZGSVh9Il0KKyAgICBlbGlmICItY3Jvc3MtIiBpbiB0YXNrZGF0YToKKyAgICAgICAgcGtnYXJjaHMgPSBbIiR7QlVJTERfQVJDSH1fJHtUQVJHRVRfQVJDSH0iXQorICAgIGVsaWYgIi1jcm9zc3NkayIgaW4gdGFza2RhdGE6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke0JVSUxEX0FSQ0h9XyR7U0RLX0FSQ0h9XyR7U0RLX09TfSJdCisgICAgZWxzZToKKyAgICAgICAgcGtnYXJjaHMgPSBbJyR7TUFDSElORV9BUkNIfSddCisgICAgICAgIHBrZ2FyY2hzID0gcGtnYXJjaHMgKyBsaXN0KHJldmVyc2VkKGQyLmdldFZhcigiUEFDS0FHRV9FWFRSQV9BUkNIUyIpLnNwbGl0KCkpKQorICAgICAgICBwa2dhcmNocy5hcHBlbmQoJ2FsbGFyY2gnKQorICAgICAgICBwa2dhcmNocy5hcHBlbmQoJyR7U0RLX0FSQ0h9XyR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfScpCisKKyAgICBmb3IgcGtnYXJjaCBpbiBwa2dhcmNoczoKKyAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJXMtJXMuJXMiICUgKHBrZ2FyY2gsIHRhc2tkYXRhLCB0YXNrbmFtZSkpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKKyAgICAgICAgICAgIHJldHVybiBtYW5pZmVzdCwgZDIKKyAgICBiYi53YXJuKCJNYW5pZmVzdCAlcyBub3QgZm91bmQgaW4gJXMgKHZhcmlhbnQgJyVzJyk/IiAlIChtYW5pZmVzdCwgZDIuZXhwYW5kKCIgIi5qb2luKHBrZ2FyY2hzKSksIHZhcmlhbnQpKQorICAgIHJldHVybiBOb25lLCBkMgorCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQppbmRleCA2NDNhYjc4Li44MGYwNDQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CkBAIC04NiwxNyArODYsNiBAQAogICAgIGZyb20gcmUgaW1wb3J0IG1hdGNoCiAgICAgcmV0dXJuICIgIi5qb2luKFt4IGZvciB4IGluIHN0ci5zcGxpdCgpIGlmIG5vdCBtYXRjaChmLCB4LCAwKV0pCiAKLWRlZiBwYXJhbV9ib29sKGNmZywgZmllbGQsIGRmbHQgPSBOb25lKToKLSAgICAiIiJMb29rdXAgPGZpZWxkPiBpbiA8Y2ZnPiBtYXAgYW5kIGNvbnZlcnQgaXQgdG8gYSBib29sZWFuOyB0YWtlCi0gICAgPGRmbHQ+IHdoZW4gdGhpcyA8ZmllbGQ+IGRvZXMgbm90IGV4aXN0IiIiCi0gICAgdmFsdWUgPSBjZmcuZ2V0KGZpZWxkLCBkZmx0KQotICAgIHN0cnZhbHVlID0gc3RyKHZhbHVlKS5sb3dlcigpCi0gICAgaWYgc3RydmFsdWUgaW4gKCd5ZXMnLCAneScsICd0cnVlJywgJ3QnLCAnMScpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgc3RydmFsdWUgaW4gKCdubycsICduJywgJ2ZhbHNlJywgJ2YnLCAnMCcpOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHZhbHVlIGZvciBib29sZWFuIHBhcmFtZXRlciAnJXMnOiAnJXMnIiAlIChmaWVsZCwgdmFsdWUpKQotCiBkZWYgYnVpbGRfZGVwZW5kc19zdHJpbmcoZGVwZW5kcywgdGFzayk6CiAgICAgIiIiQXBwZW5kIGEgdGFza25hbWUgdG8gYSBzdHJpbmcgb2YgZGVwZW5kZW5jaWVzIGFzIHVzZWQgYnkgdGhlIFtkZXBlbmRzXSBmbGFnIiIiCiAgICAgcmV0dXJuICIgIi5qb2luKGRlcCArICI6IiArIHRhc2sgZm9yIGRlcCBpbiBkZXBlbmRzLnNwbGl0KCkpCkBAIC0xNjcsNiArMTU2LDQ5IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKIAorZGVmIHBhcmFsbGVsX21ha2UoZCk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBpbnRlZ2VyIHZhbHVlIGZvciB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgdG8gdXNlIHdoZW4KKyAgICBidWlsZGluZywgc2NyYXBlZCBvdXQgb2YgUEFSQUxMRUxfTUFLRS4gSWYgbm8gcGFyYWxsZWxpemF0aW9uIG9wdGlvbiBpcworICAgIGZvdW5kLCByZXR1cm5zIE5vbmUKKworICAgIGUuZy4gaWYgUEFSQUxMRUxfTUFLRSA9ICItaiAxMCIsIHRoaXMgd2lsbCByZXR1cm4gMTAgYXMgYW4gaW50ZWdlci4KKyAgICAiIiIKKyAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRScpIG9yICcnKS5zcGxpdCgpCisgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKKyAgICB3aGlsZSBwbToKKyAgICAgICAgb3B0ID0gcG0ucG9wKDApCisgICAgICAgIGlmIG9wdCA9PSAnLWonOgorICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQorICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgorICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZXR1cm4gaW50KHYpCisKKyAgICByZXR1cm4gTm9uZQorCitkZWYgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCBmbXQsIGxpbWl0PU5vbmUpOgorICAgICIiIgorICAgIEhlbHBlciB1dGlsaXR5IHRvIGNvbnN0cnVjdCBhIHBhcmFsbGVsIG1ha2UgYXJndW1lbnQgZnJvbSB0aGUgbnVtYmVyIG9mCisgICAgcGFyYWxsZWwgdGhyZWFkcyBzcGVjaWZpZWQgaW4gUEFSQUxMRUxfTUFLRS4KKworICAgIFJldHVybnMgdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcgYGZtdGAgd2hlcmUgYSBzaW5nbGUgJyVkJyB3aWxsIGJlIGV4cGFuZGVkCisgICAgd2l0aCB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgdG8gdXNlLiBJZiBgbGltaXRgIGlzIHNwZWNpZmllZCwgdGhlCisgICAgbnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgd2lsbCBiZSBubyBsYXJnZXIgdGhhbiBpdC4gSWYgbm8gcGFyYWxsZWxpemF0aW9uCisgICAgb3B0aW9uIGlzIGZvdW5kIGluIFBBUkFMTEVMX01BS0UsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nCisKKyAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCBwYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICItbiAlZCIpIHdpbGwgcmV0dXJuCisgICAgIi1uIDEwIgorICAgICIiIgorICAgIHYgPSBwYXJhbGxlbF9tYWtlKGQpCisgICAgaWYgdjoKKyAgICAgICAgaWYgbGltaXQ6CisgICAgICAgICAgICB2ID0gbWluKGxpbWl0LCB2KQorICAgICAgICByZXR1cm4gZm10ICUgdgorICAgIHJldHVybiAnJworCiBkZWYgcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCk6CiAgICAgIiIiCiAgICAgUmV0dXJuIGEgbGlzdCBvZiBwYWNrYWdlcyBmcm9tIFBBQ0tBR0VTIHdpdGggdGhlICJzeXN0ZW0iIHBhY2thZ2VzIHN1Y2ggYXMKQEAgLTI5Miw2ICszMjQsMTQgQEAKICAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoMSkKICAgICByZXR1cm4gIi0lcyIgJSB2ZXJzaW9uIGlmIHZlcnNpb24gaW4gKCI0LjgiLCAiNC45IikgZWxzZSAiIgogCisKK2RlZiBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpOgorICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50CisgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQorICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKKyAgICByZXR1cm4gbG9jYWxkYXRhCisKICMKICMgUHl0aG9uIDIuNyBkb2Vzbid0IGhhdmUgdGhyZWFkZWQgcG9vbHMgKGp1c3QgbXVsdGlwcm9jZXNzaW5nKQogIyBzbyBpbXBsZW1lbnQgYSB2ZXJzaW9uIGhlcmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKaW5kZXggN2IyYjRhYS4uYWM2ZWUxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzZWxmLnRtcF9kaXIpOgogICAgICAgICAgICAgb3MubWtkaXIoc2VsZi50bXBfZGlyKQogICAgICAgICBpZiBzZWxmLmJ1aWxkX3RhcmdldDoKLSAgICAgICAgICAgIHNlbGYucnVuX2NtZChbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldCwgJy1jJywgJ2ZldGNoYWxsJ10pCisgICAgICAgICAgICBzZWxmLnJ1bl9jbWQoWydiaXRiYWtlJywgc2VsZi5idWlsZF90YXJnZXQsICctLXJ1bmFsbD1mZXRjaCddKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAiIiJUZWFyLWRvd24gZml4dHVyZSBmb3IgZWFjaCB0ZXN0IiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CmluZGV4IGExOTA4OWEuLjZkNmIwMWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CkBAIC0xNSw4ICsxNSw3IEBACiAKIGltcG9ydCBvZS5wYXRoCiBmcm9tIG9lcWEuYnVpbGRwZXJmIGltcG9ydCBCdWlsZFBlcmZUZXN0Q2FzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycwotCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIsIGdldF9iYl92YXJzCiAKIGNsYXNzIFRlc3QxUDEoQnVpbGRQZXJmVGVzdENhc2UpOgogICAgIGJ1aWxkX3RhcmdldCA9ICdjb3JlLWltYWdlLXNhdG8nCkBAIC0zMCw2ICsyOSw3IEBACiAgICAgICAgIHNlbGYubWVhc3VyZV9jbWRfcmVzb3VyY2VzKFsnYml0YmFrZScsIHNlbGYuYnVpbGRfdGFyZ2V0XSwgJ2J1aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgJyArIHNlbGYuYnVpbGRfdGFyZ2V0LCBzYXZlX2JzPVRydWUpCiAgICAgICAgIHNlbGYubWVhc3VyZV9kaXNrX3VzYWdlKHNlbGYuYmJfdmFyc1snVE1QRElSJ10sICd0bXBkaXInLCAndG1wZGlyJykKKyAgICAgICAgc2VsZi5tZWFzdXJlX2Rpc2tfdXNhZ2UoZ2V0X2JiX3ZhcigiSU1BR0VfUk9PVEZTIiwgc2VsZi5idWlsZF90YXJnZXQpLCAncm9vdGZzJywgJ3Jvb3RmcycsIFRydWUpCiAKIAogY2xhc3MgVGVzdDFQMihCdWlsZFBlcmZUZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CmluZGV4IDk3NWEwODEuLmE0NzQ0ZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CkBAIC00Myw3ICs0Myw3IEBACiAgICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgogICAgICAgICAjIEFzc3VtcHRpb246IHBhY2thZ2UgYW5kIG1vZHVsZSBuYW1lcyBkbyBub3QgY29udGFpbiB1cHBlciBjYXNlCiAgICAgICAgICMgY2hhcmFjdGVycywgd2hlcmVhcyBjbGFzcyBuYW1lcyBkbwotICAgICAgICBtID0gcmUubWF0Y2gocideKFteQS1aXSspKD86XC4oW0EtWl1bXi5dKikoPzpcLihbXi5dKykpPyk/JCcsIG1vZHVsZSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInXihcdyspKD86XC4oXHdbXi5dKikoPzpcLihbXi5dKykpPyk/JCcsIG1vZHVsZSwgZmxhZ3M9cmUuQVNDSUkpCiAKICAgICAgICAgbW9kdWxlX25hbWUsIGNsYXNzX25hbWUsIHRlc3RfbmFtZSA9IG0uZ3JvdXBzKCkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKaW5kZXggZDM1OWJmOS4uYmYzYjYzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CkBAIC05LDcgKzksNyBAQAogZnJvbSAuc3NoIGltcG9ydCBPRVNTSFRhcmdldAogZnJvbSBvZXFhLnV0aWxzLnFlbXVydW5uZXIgaW1wb3J0IFFlbXVSdW5uZXIKIAotc3VwcG9ydGVkX2ZzdHlwZXMgPSBbJ2V4dDMnLCAnZXh0NCcsICdjcGlvLmd6JywgJ3dpYycsICdlbGYnXQorc3VwcG9ydGVkX2ZzdHlwZXMgPSBbJ2V4dDMnLCAnZXh0NCcsICdjcGlvLmd6JywgJ3dpYyddCiAKIGNsYXNzIE9FUWVtdVRhcmdldChPRVNTSFRhcmdldCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgaXAsIHNlcnZlcl9pcCwgdGltZW91dD0zMDAsIHVzZXI9J3Jvb3QnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDRkZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKQEAgLTAsMCArMSw0NyBAQAoraW1wb3J0IG9zCitmcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RGF0YVZhciwgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQorCitjbGFzcyBBcHRUZXN0KE9FUnVudGltZVRlc3RDYXNlKToKKworICAgIGRlZiBwa2coc2VsZiwgY29tbWFuZCwgZXhwZWN0ZWQgPSAwKToKKyAgICAgICAgY29tbWFuZCA9ICdhcHQtZ2V0ICVzJyAlIGNvbW1hbmQKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY29tbWFuZCwgMTUwMCkKKyAgICAgICAgbWVzc2FnZSA9IG9zLmxpbmVzZXAuam9pbihbY29tbWFuZCwgb3V0cHV0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIGV4cGVjdGVkLCBtZXNzYWdlKQorICAgICAgICByZXR1cm4gb3V0cHV0CisKK2NsYXNzIEFwdFJlcG9UZXN0KEFwdFRlc3QpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9ERUInXSwgJ2FsbCcpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXApCisgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RvcCgpCisKKyAgICBkZWYgc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICBhcHRfZ2V0X3NvdXJjZV9zZXJ2ZXIgPSAnaHR0cDovLyVzOiVzLycgJSAoc2VsZi50Yy50YXJnZXQuc2VydmVyX2lwLCBzZWxmLnJlcG9fc2VydmVyLnBvcnQpCisgICAgICAgIGFwdF9nZXRfc291cmNlc2xpc3RfZGlyID0gJy9ldGMvYXB0LycKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjZCAlczsgZWNobyBkZWIgJXMgLi8gPiBzb3VyY2VzLmxpc3QnICUgKGFwdF9nZXRfc291cmNlc2xpc3RfZGlyLCBhcHRfZ2V0X3NvdXJjZV9zZXJ2ZXIpKQorCisgICAgZGVmIGNsZWFudXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL2FwdC8nCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY2QgJXM7IHJtIHNvdXJjZXMubGlzdCcgJSAoYXB0X2dldF9zb3VyY2VzbGlzdF9kaXIpKQorCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3BhY2thZ2UtbWFuYWdlbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgcmVxdWlyZXMgcGFja2FnZS1tYW5hZ2VtZW50IHRvIGJlIGluIElNQUdFX0ZFQVRVUkVTJykKKyAgICBAc2tpcElmTm90RGF0YVZhcignSU1BR0VfUEtHVFlQRScsICdkZWInLAorICAgICAgICAgICAgICAgICAgICAgICdERUIgaXMgbm90IHRoZSBwcmltYXJ5IHBhY2thZ2UgbWFuYWdlcicpCisgICAgQE9FSGFzUGFja2FnZShbJ2FwdCddKQorICAgIGRlZiB0ZXN0X2FwdF9pbnN0YWxsX2Zyb21fcmVwbyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXR1cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQorICAgICAgICBzZWxmLnBrZygndXBkYXRlJykKKyAgICAgICAgc2VsZi5wa2coJ3JlbW92ZSAtLXllcyBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYucGtnKCdpbnN0YWxsIC0teWVzIC0tYWxsb3ctdW5hdXRoZW50aWNhdGVkIHJ1bi1wb3N0aW5zdHMtZGV2JykKKyAgICAgICAgc2VsZi5jbGVhbnVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2dpLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9naS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTA3M2U1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9naS5weQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCisKK2NsYXNzIEdPYmplY3RJbnRyb3NwZWN0aW9uVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0RGVwZW5kcyhbInNzaC5TU0hUZXN0LnRlc3Rfc3NoIl0pCisgICAgQE9FSGFzUGFja2FnZShbInB5dGhvbjMtcHlnb2JqZWN0Il0pCisgICAgZGVmIHRlc3RfcHl0aG9uKHNlbGYpOgorICAgICAgICBzY3JpcHQgPSAiIiJmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdPYmplY3Q7IHByaW50KEdPYmplY3QubWFya3VwX2VzY2FwZV90ZXh0KCI8dGVzdGluZyZ0ZXN0aW5nPiIpKSIiIgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigicHl0aG9uMyAtYyAnJXMnIiAlIHNjcmlwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0iUHl0aG9uIGZhaWxlZCAoJXMpIiAlIChvdXRwdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgIiZsdDt0ZXN0aW5nJmFtcDt0ZXN0aW5nJmd0OyIsIG1zZz0iVW5leHBlY3RlZCBvdXRwdXQgKCVzKSIgJSBvdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMva2VybmVsbW9kdWxlLnB5CmluZGV4IDExYWQ3YjcuLmRlMWE1YWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMva2VybmVsbW9kdWxlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMva2VybmVsbW9kdWxlLnB5CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgQE9FVGVzdERlcGVuZHMoWydnY2MuR2NjQ29tcGlsZVRlc3QudGVzdF9nY2NfY29tcGlsZSddKQogICAgIGRlZiB0ZXN0X2tlcm5lbF9tb2R1bGUoc2VsZik6CiAgICAgICAgIGNtZHMgPSBbCi0gICAgICAgICAgICAnY2QgL3Vzci9zcmMva2VybmVsICYmIG1ha2Ugc2NyaXB0cycsCisgICAgICAgICAgICAnY2QgL3Vzci9zcmMva2VybmVsICYmIG1ha2Ugc2NyaXB0cyBwcmVwYXJlJywKICAgICAgICAgICAgICdjZCAvdG1wICYmIG1ha2UnLAogICAgICAgICAgICAgJ2NkIC90bXAgJiYgaW5zbW9kIGhlbGxvbW9kLmtvJywKICAgICAgICAgICAgICdsc21vZCB8IGdyZXAgaGVsbG9tb2QnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MWVlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKQEAgLTAsMCArMSw0NyBAQAoraW1wb3J0IG9zCitmcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RGF0YVZhciwgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQorCitjbGFzcyBPcGtnVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICBkZWYgcGtnKHNlbGYsIGNvbW1hbmQsIGV4cGVjdGVkID0gMCk6CisgICAgICAgIGNvbW1hbmQgPSAnb3BrZyAlcycgJSBjb21tYW5kCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNvbW1hbmQsIDE1MDApCisgICAgICAgIG1lc3NhZ2UgPSBvcy5saW5lc2VwLmpvaW4oW2NvbW1hbmQsIG91dHB1dF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBleHBlY3RlZCwgbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCitjbGFzcyBPcGtnUmVwb1Rlc3QoT3BrZ1Rlc3QpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9JUEsnXSwgJ2FsbCcpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXApCisgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RvcCgpCisKKyAgICBkZWYgc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICBhcHRfZ2V0X3NvdXJjZV9zZXJ2ZXIgPSAnaHR0cDovLyVzOiVzLycgJSAoc2VsZi50Yy50YXJnZXQuc2VydmVyX2lwLCBzZWxmLnJlcG9fc2VydmVyLnBvcnQpCisgICAgICAgIGFwdF9nZXRfc291cmNlc2xpc3RfZGlyID0gJy9ldGMvb3BrZy8nCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY2QgJXM7IGVjaG8gc3JjL2d6IGFsbCAlcyA+PiBvcGtnLmNvbmYnICUgKGFwdF9nZXRfc291cmNlc2xpc3RfZGlyLCBhcHRfZ2V0X3NvdXJjZV9zZXJ2ZXIpKQorICAgICAgICAKKyAgICBkZWYgY2xlYW51cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoc2VsZik6CisgICAgICAgIGFwdF9nZXRfc291cmNlc2xpc3RfZGlyID0gJy9ldGMvb3BrZy8nCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY2QgJXM7IHNlZCAtaSAiL15zcmMvZCIgb3BrZy5jb25mJyAlIChhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpcikpCisgICAgICAgIAorICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwYWNrYWdlLW1hbmFnZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHBhY2thZ2UtbWFuYWdlbWVudCB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQHNraXBJZk5vdERhdGFWYXIoJ0lNQUdFX1BLR1RZUEUnLCAnaXBrJywKKyAgICAgICAgICAgICAgICAgICAgICAnSVBLIGlzIG5vdCB0aGUgcHJpbWFyeSBwYWNrYWdlIG1hbmFnZXInKQorICAgIEBPRUhhc1BhY2thZ2UoWydvcGtnJ10pCisgICAgZGVmIHRlc3Rfb3BrZ19pbnN0YWxsX2Zyb21fcmVwbyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXR1cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQorICAgICAgICBzZWxmLnBrZygndXBkYXRlJykKKyAgICAgICAgc2VsZi5wa2coJ3JlbW92ZSBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYucGtnKCdpbnN0YWxsIHJ1bi1wb3N0aW5zdHMtZGV2JykKKyAgICAgICAgc2VsZi5jbGVhbnVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQppbmRleCBlYzhjMDM4Li5mNjBhNDMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKQEAgLTQ4LDkgKzQ4LDEyIEBACiAKICAgICBAT0VUZXN0SUQoMTYwMCkKICAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QnLCAnVGVzdCByZXF1aXJlcyBwdGVzdCB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMnKQotICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwdGVzdC1wa2dzJywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QtcGtncyB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyKHNlbGYpOgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignd2hpY2ggcHRlc3QtcnVubmVyJywgMCkKKyAgICAgICAgaWYgc3RhdHVzICE9IDA6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJObyAtcHRlc3QgcGFja2FnZXMgYXJlIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UiKQorCiAgICAgICAgIGltcG9ydCBkYXRldGltZQogCiAgICAgICAgIHRlc3RfbG9nX2RpciA9IHNlbGYudGQuZ2V0KCdURVNUX0xPR19ESVInLCAnJykKQEAgLTgwLDMgKzgzLDExIEBACiAgICAgICAgICAgICAjIFJlbW92ZSB0aGUgb2xkIGxpbmsgdG8gY3JlYXRlIGEgbmV3IG9uZQogICAgICAgICAgICAgb3MucmVtb3ZlKHB0ZXN0X2xvZ19kaXJfbGluaykKICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHB0ZXN0X2xvZ19kaXIpLCBwdGVzdF9sb2dfZGlyX2xpbmspCisKKyAgICAgICAgZmFpbGVkX3Rlc3RzID0ge30KKyAgICAgICAgZm9yIHNlY3Rpb24gaW4gcGFyc2VfcmVzdWx0LnJlc3VsdF9kaWN0OgorICAgICAgICAgICAgZmFpbGVkX3Rlc3RjYXNlcyA9IFsgdGVzdCBmb3IgdGVzdCwgcmVzdWx0IGluIHBhcnNlX3Jlc3VsdC5yZXN1bHRfZGljdFtzZWN0aW9uXSBpZiByZXN1bHQgPT0gJ2ZhaWwnIF0KKyAgICAgICAgICAgIGlmIGZhaWxlZF90ZXN0Y2FzZXM6CisgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzW3NlY3Rpb25dID0gZmFpbGVkX3Rlc3RjYXNlcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbGVkX3Rlc3RzLCBtc2cgPSAiRmFpbGVkIHB0ZXN0czogJXMiICUoc3RyKGZhaWxlZF90ZXN0cykpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNzI4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N0YXAucHkKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RmVhdHVyZQorCitjbGFzcyBTdGFwVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnJ1bnRpbWVfZmlsZXNfZGlyLCAnaGVsbG8uc3RwJykKKyAgICAgICAgZHN0ID0gJy90bXAvaGVsbG8uc3RwJworICAgICAgICBjbHMudGMudGFyZ2V0LmNvcHlUbyhzcmMsIGRzdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGZpbGVzID0gJy90bXAvaGVsbG8uc3RwJworICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gJXMnICUgZmlsZXMpCisKKyAgICBAT0VUZXN0SUQoMTY1MikKKyAgICBAc2tpcElmTm90RmVhdHVyZSgndG9vbHMtcHJvZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgcmVxdWlyZXMgdG9vbHMtcHJvZmlsZSB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQE9FVGVzdERlcGVuZHMoWydrZXJuZWxtb2R1bGUuS2VybmVsTW9kdWxlVGVzdC50ZXN0X2tlcm5lbF9tb2R1bGUnXSkKKyAgICBkZWYgdGVzdF9zdGFwKHNlbGYpOgorICAgICAgICBjbWRzID0gWworICAgICAgICAgICAgJ2NkIC91c3Ivc3JjL2tlcm5lbCAmJiBtYWtlIHNjcmlwdHMgcHJlcGFyZScsCisgICAgICAgICAgICAnY2QgL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAgJiYgKGlmIFsgISAtTCBidWlsZCBdOyB0aGVuIGxuIC1zIC91c3Ivc3JjL2tlcm5lbCBidWlsZDsgZmkpJywKKyAgICAgICAgICAgICdzdGFwIC0tZGlzYWJsZS1jYWNoZSAtRFNUUF9OT19WRVJSRUxfQ0hFQ0sgL3RtcC9oZWxsby5zdHAnCisgICAgICAgICAgICBdCisgICAgICAgIGZvciBjbWQgaW4gY21kczoKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCwgOTAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0nXG4nLmpvaW4oW2NtZCwgb3V0cHV0XSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2ZpbGVzL2hlbGxvLnN0cCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvZmlsZXMvaGVsbG8uc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NzcxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2ZpbGVzL2hlbGxvLnN0cApAQCAtMCwwICsxIEBACitwcm9iZSBvbmVzaG90IHsgcHJpbnRsbigiaGVsbG8gd29ybGQiKSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CmluZGV4IGY2MWE1MjIuLjBhNmQ0ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CkBAIC0xMTYsMyArMTE2LDE2IEBACiAKICAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGVzWzFdKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIHRhcmdldF9yZWNpcGVzWzFdKQorCisKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX3NycG1fbW9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBpbiBzcnBtIG1vZGUsIHRoZSBhZGRlZCByZWNpcGUgZGVwZW5kZW5jaWVzIGF0IGxlYXN0IGV4aXN0L3dvcmsgW1lPQ1RPICMxMTEyMV0KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NycG1dID0gIjEiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1uIGNvcmUtaW1hZ2Utc2F0bycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQppbmRleCA0YzgyMDQ5Li4zNTA2MTQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKQEAgLTY0LDE1ICs2NCwxNCBAQAogCiAgICAgQE9FVGVzdElEKDEwOCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX3BhdGNoKHNlbGYpOgotICAgICAgICAjIFRoaXMgcGF0Y2ggYWxyZWFkeSBleGlzdHMgaW4gU1JDX1VSSSBzbyBhZGRpbmcgaXQgYWdhaW4gd2lsbCBjYXVzZSB0aGUKLSAgICAgICAgIyBwYXRjaCB0byBmYWlsLgotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgJ1NSQ19VUkkgKz0gImZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCInKQorICAgICAgICAjIFRoaXMgcGF0Y2ggc2hvdWxkIGZhaWwgdG8gYXBwbHkuCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4tZGInLCAnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IlxuU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVGVzdC1wYXRjaC1oZXJlLnBhdGNoIicpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtYW4gLWMgcGF0Y2gnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbiBtYW4nKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtYW4tZGIgLWMgcGF0Y2gnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuLWRiJykKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbiBtYW4tZGInKQogICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgIkZ1bmN0aW9uIGZhaWxlZDogcGF0Y2hfZG9fcGF0Y2giKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlJlcGVhdGVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJJbmNvcnJlY3RseSBmb3JtZWQgcGF0Y2ggYXBwbGljYXRpb24gZGlkbid0IGZhaWwuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQogCiAgICAgQE9FVGVzdElEKDEzNTQpCiAgICAgZGVmIHRlc3RfZm9yY2VfdGFza18xKHNlbGYpOgpAQCAtMTMyLDE3ICsxMzEsMTcgQEAKICAgICBAT0VUZXN0SUQoMTY4KQogICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVjaXBlX3NyY191cmkoc2VsZik6CiAgICAgICAgIGRhdGEgPSAnU1JDX1VSSSA9ICJmaWxlOi8vaW52YWxpZCInCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCBkYXRhKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuLWRiJywgZGF0YSkKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgogU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKIElOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKIAotICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbicpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1jIGZldGNoIG1hbicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuLWRiJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWMgZmV0Y2ggbWFuLWRiJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbi1kYicpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuLWRiJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCBtc2c9IkNvbW1hbmQgc3VjY2VkZWQgd2hlbiBpdCBzaG91bGQgaGF2ZSBmYWlsZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0ZldGNoZXIgZmFpbHVyZTogVW5hYmxlIHRvIGZpbmQgZmlsZSBmaWxlOi8vaW52YWxpZCBhbnl3aGVyZS4gVGhlIHBhdGhzIHRoYXQgd2VyZSBzZWFyY2hlZCB3ZXJlOicgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlwiaW52YWxpZFwiIGZpbGUgXAogZG9lc24ndCBleGlzdCwgeWV0IG5vIGVycm9yIG1lc3NhZ2UgZW5jb3VudGVyZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQpAQCAtMjIyLDkgKzIyMSw5IEBACiBJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKICIiIikKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCJcbmRvX2ZhaWxfdGFzayAoKSB7XG5leGl0IDEgXG59XG5cbmFkZHRhc2sgZG9fZmFpbF90YXNrIGJlZm9yZSBkb19mZXRjaFxuIiApCi0gICAgICAgIHJ1bkNtZCgnYml0YmFrZSAtYyBjbGVhbmFsbCBtYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyB1bnBhY2sgLWsgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4tZGInLCJcbmRvX2ZhaWxfdGFzayAoKSB7XG5leGl0IDEgXG59XG5cbmFkZHRhc2sgZG9fZmFpbF90YXNrIGJlZm9yZSBkb19mZXRjaFxuIiApCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZSAtYyBjbGVhbmFsbCBtYW4tZGIgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyB1bnBhY2sgLWsgbWFuLWRiIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGVycm9ycG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdFUlJPUjogRnVuY3Rpb24gZmFpbGVkOiBkb19mYWlsX3Rhc2snKQogICAgICAgICBtYW52ZXIgPSByZS5zZWFyY2goIk5PVEU6IHJlY2lwZSB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLSguKj8pOiB0YXNrIGRvX3VucGFjazogU3RhcnRlZCIsIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIGNvbnRpbnVlcG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0lczogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQnICUgbWFudmVyLmdyb3VwKDEpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CmluZGV4IGNmMjIxYzMuLmU2MGUzMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKQEAgLTE2NCwzICsxNjQsMTcgQEAKICAgICAgICAgc3JjX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi5zcmMucnBtIgogICAgICAgICB0YXJfZmlsZV9nbG9iID0gc3RyKHBrZ3NfcGF0aFswXSkgKyAiL3hjdXJzb3IqLnRhci5neiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChnLmdsb2Ioc3JjX2ZpbGVfZ2xvYikgYW5kIGcuZ2xvYih0YXJfZmlsZV9nbG9iKSksICJDb3VsZG4ndCBmaW5kIC5zcmMucnBtIGFuZCAudGFyLmd6IGZpbGVzIHVuZGVyICVzL2FsbGFyY2gqL3hjdXJzb3IqIiAlIGRlcGxveV9kaXJfc3JjKQorCitjbGFzcyBUb29sY2hhaW5PcHRpb25zKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF90b29sY2hhaW5fZm9ydHJhbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgd2hldGhlciB3ZSBjYW4gZW5hYmxlIGFuZCBidWlsZCBmb3J0cmFuIGFuZCBpdHMgc3VwcG9ydGluZyBsaWJyYXJpZXMKKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnRk9SVFJBTl9mb3JjZXZhcmlhYmxlID0gIixmb3J0cmFuIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnUlVOVElNRVRBUkdFVF9hcHBlbmRfcG4tZ2NjLXJ1bnRpbWUgPSAiIGxpYnF1YWRtYXRoIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCdnY2MtcnVudGltZSBsaWJnZm9ydHJhbicpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CmluZGV4IDQzMjgwY2QuLmQ1YjZhNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgZGVmIHRlc3RfY3JlYXRlX3dvcmtzcGFjZShzZWxmKToKICAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJy93b3Jrc3BhY2UnIG5vdCBpbiByZXN1bHQub3V0cHV0LCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBsYXllciBpbiBiYmxheWVycy5jb25mJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcbndvcmtzcGFjZScgbm90IGluIHJlc3VsdC5vdXRwdXQsICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGxheWVyIGluIGJibGF5ZXJzLmNvbmYnKQogICAgICAgICAjIFRyeSBjcmVhdGluZyBhIHdvcmtzcGFjZSBsYXllciB3aXRoIGEgc3BlY2lmaWMgcGF0aAogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKQEAgLTYxMSw3ICs2MTEsNyBAQAogICAgIEBPRVRlc3RJRCgxMTY1KQogICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2dpdChzZWxmKToKICAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWtlbGZpbWFnZScKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdwc3BsYXNoJwogICAgICAgICBzcmNfdXJpID0gZ2V0X2JiX3ZhcignU1JDX1VSSScsIHRlc3RyZWNpcGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQogICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCkBAIC02MjMsOSArNjIzLDkgQEAKICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdta2VsZmltYWdlXyouYmJhcHBlbmQnKSkKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJ3BzcGxhc2hfKi5iYmFwcGVuZCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkJykKICAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQpAQCAtODk5LDYgKzg5OSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIl4ke0xBWUVSRElSfS8iXG4nKQogICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BSSU9SSVRZX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiOTk5IlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjEiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnTEFZRVJTRVJJRVNfQ09NUEFUX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiJHtMQVlFUlNFUklFU19DT01QQVRfY29yZX0iXG4nKQogICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMgfHwgdHJ1ZScgJSB0ZW1wbGF5ZXJkaXIpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCiAgICAgICAgICMgQ3JlYXRlIHRoZSBiYmFwcGVuZApAQCAtOTg3LDggKzk4OCwxMiBAQAogICAgIEBPRVRlc3RJRCgxMzcxKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc18yKHNlbGYpOgogICAgICAgICAiIiJDaGVjayBsb2NhbCBzb3VyY2UgZmlsZXMgc3VwcG9ydCB3aGVuIG9lLWxvY2FsLWZpbGVzIGlzIGluIEdpdCIiIgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2x6bycKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3QtbG9jYWwnCiAgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKKyAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB1bmNvbW1pdHRlZCBjaGFuZ2VzJyAlIHRlc3RyZWNpcGUpCiAgICAgICAgICMgU2V0dXAgc3JjdHJlZSBmb3IgbW9kaWZ5aW5nIHRoZSByZWNpcGUKICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCkBAIC0xMDAyLDkgKzEwMDcsOSBAQAogICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMnLCBjd2Q9dGVtcGRpcikKICAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbG9jYWwgc291cmNlcyInLCBjd2Q9dGVtcGRpcikKICAgICAgICAgIyBFZGl0IC8gY29tbWl0IGxvY2FsIHNvdXJjZXMKLSAgICAgICAgcnVuQ21kKCdlY2hvICIjIEZvb2JhciIgPj4gb2UtbG9jYWwtZmlsZXMvYWNpbmNsdWRlLm00JywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiIyBGb29iYXIiID4+IG9lLWxvY2FsLWZpbGVzL2ZpbGUxJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYW0gIkVkaXQgZXhpc3RpbmcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgcm0gb2UtbG9jYWwtZmlsZXMvcnVuLXB0ZXN0JywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IHJtIG9lLWxvY2FsLWZpbGVzL2ZpbGUyJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSJSZW1vdmUgZmlsZSInLCBjd2Q9dGVtcGRpcikKICAgICAgICAgcnVuQ21kKCdlY2hvICJGb28iID4gb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKQEAgLTEwMTYsMTEgKzEwMjEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCiAgICAgICAgICMgQ2hlY2tvdXQgdW5tb2RpZmllZCBmaWxlIHRvIHdvcmtpbmcgY29weSAtPiBkZXZ0b29sIHNob3VsZCBzdGlsbCBwaWNrCiAgICAgICAgICMgdGhlIG1vZGlmaWVkIHZlcnNpb24gZnJvbSBIRUFECi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNoZWNrb3V0IEhFQUReIC0tIG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjaGVja291dCBIRUFEXiAtLSBvZS1sb2NhbC1maWxlcy9maWxlMScsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQogICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBNJywgJy4qL2FjaW5jbHVkZS5tNCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIEQnLCAnLiovcnVuLXB0ZXN0JCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9maWxlMSQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIEQnLCAnLiovZmlsZTIkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL25ldy1sb2NhbCQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMS1BZGQtbmV3LWZpbGUucGF0Y2gkJyldCiAgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKaW5kZXggMTI1NDBhZC4uN2IyODAwNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CkBAIC05LDYgKzksMTEgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBzdXBlcihEaXN0cm9kYXRhLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gImRpc3Ryb2RhdGEiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ0xJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcbicKKworICAgICAgICBjbHMud3JpdGVfY29uZmlnKGNscywgZmVhdHVyZSkKKyAgICAgICAgYml0YmFrZSgnLWMgY2hlY2twa2cgd29ybGQnKQogCiAgICAgQE9FVGVzdElEKDE5MDIpCiAgICAgZGVmIHRlc3RfY2hlY2twa2coc2VsZik6CkBAIC0xOCwxMSArMjMsNiBAQAogICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQogICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KICAgICAgICAgIiIiCi0gICAgICAgIGZlYXR1cmUgPSAnSU5IRVJJVCArPSAiZGlzdHJvZGF0YSJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnTElDRU5TRV9GTEFHU19XSElURUxJU1QgKz0gIiBjb21tZXJjaWFsIlxuJwotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCi0gICAgICAgIGJpdGJha2UoJy1jIGNoZWNrcGtnIHdvcmxkJykKICAgICAgICAgY2hlY2twa2dfcmVzdWx0ID0gb3Blbihvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiTE9HX0RJUiIpLCAiY2hlY2twa2cuY3N2IikpLnJlYWRsaW5lcygpWzE6XQogICAgICAgICByZWdyZXNzZWRfZmFpbHVyZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ1VOS05PV05fQlJPS0VOJ10KICAgICAgICAgcmVncmVzc2VkX3N1Y2Nlc3NlcyA9IFtwa2dfZGF0YVswXSBmb3IgcGtnX2RhdGEgaW4gW3BrZ19saW5lLnNwbGl0KCdcdCcpIGZvciBwa2dfbGluZSBpbiBjaGVja3BrZ19yZXN1bHRdIGlmIHBrZ19kYXRhWzExXSA9PSAnS05PV05fQlJPS0VOJ10KQEAgLTQwLDMgKzQwLDYwIEBACiBidXQgdGhlaXIgcmVjaXBlcyBjbGFpbSBvdGhlcndpc2UgYnkgc2V0dGluZyBVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04uIFBsZWFzZSByZW1vdmUgdGhhdCBsaW5lIGZyb20gdGhlIHJlY2lwZXMuCiAiIiIgKyAiXG4iLmpvaW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWdyZXNzZWRfZmFpbHVyZXMpID09IDAgYW5kIGxlbihyZWdyZXNzZWRfc3VjY2Vzc2VzKSA9PSAwLCBtc2cpCisKKyAgICBkZWYgdGVzdF9tYWludGFpbmVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgb2UtY29yZSByZWNpcGVzIGhhdmUgYSBtYWludGFpbmVyCisgICAgICAgIEV4cGVjdGVkOiAgICBBbGwgb2UtY29yZSByZWNpcGVzIChleGNlcHQgYSBmZXcgc3BlY2lhbCBzdGF0aWMvdGVzdGluZyBvbmVzKSBzaG91bGQgaGF2ZSBhIG1haW50YWluZXIgbGlzdGVkIGluIG1haW50YWluZXJzLmluYyBmaWxlLgorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBpc19leGNlcHRpb24ocGtnKToKKyAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBbInBhY2thZ2Vncm91cC0iLCAiaW5pdHJhbWZzLSIsICJzeXN0ZW1kLW1hY2hpbmUtdW5pdHMiLCAidGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSJdCisgICAgICAgICAgICBmb3IgaSBpbiBleGNlcHRpb25zOgorICAgICAgICAgICAgICAgICBpZiBpIGluIHBrZzoKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkZWYgaXNfaW5fb2VfY29yZShyZWNpcGUsIHJlY2lwZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlY2lwZSBpbiByZWNpcGVzLmtleXMoKSwgIlJlY2lwZSAlcyB3YXMgbm90IGluICdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMnIG91dHB1dCIgJShyZWNpcGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWNpcGVzW3JlY2lwZV0pID4gMCwgIidiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMnIGNvdWxkIG5vdCBkZXRlcm1pbmUgd2hhdCBsYXllcihzKSBhIHJlY2lwZSAlcyBpcyBpbiIgJShyZWNpcGUpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlY2lwZXNbcmVjaXBlXS5pbmRleCgnbWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGRlZiBnZXRfcmVjaXBlX2xheWVycygpOgorICAgICAgICAgICAgaW1wb3J0IHJlCisKKyAgICAgICAgICAgIHJlY2lwZXMgPSB7fQorICAgICAgICAgICAgcmVjaXBlX3JlZ2V4ID0gcmUuY29tcGlsZSgnXig/UDxuYW1lPi4qKTokJykKKyAgICAgICAgICAgIGxheWVyX3JlZ2V4ID0gcmUuY29tcGlsZSgnXiAgKD9QPG5hbWU+XFMqKSArJykKKyAgICAgICAgICAgIG91dHB1dCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJykub3V0cHV0CisgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgcmVjaXBlX25hbWVfb2JqID0gcmVjaXBlX3JlZ2V4LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIHJlY2lwZV9uYW1lX29iajoKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlX25hbWUgPSByZWNpcGVfbmFtZV9vYmouZ3JvdXAoJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICByZWNpcGVzW3JlY2lwZV9uYW1lXSA9IFtdCisgICAgICAgICAgICAgICAgcmVjaXBlX2xheWVyX29iaiA9IGxheWVyX3JlZ2V4LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIHJlY2lwZV9sYXllcl9vYmo6CisgICAgICAgICAgICAgICAgICAgIGxheWVyX25hbWUgPSByZWNpcGVfbGF5ZXJfb2JqLmdyb3VwKCduYW1lJykKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlc1tyZWNpcGVfbmFtZV0uYXBwZW5kKGxheWVyX25hbWUpCisgICAgICAgICAgICByZXR1cm4gcmVjaXBlcworCisgICAgICAgIGNoZWNrcGtnX3Jlc3VsdCA9IG9wZW4ob3MucGF0aC5qb2luKGdldF9iYl92YXIoIkxPR19ESVIiKSwgImNoZWNrcGtnLmNzdiIpKS5yZWFkbGluZXMoKVsxOl0KKyAgICAgICAgcmVjaXBlc19sYXllcnMgPSBnZXRfcmVjaXBlX2xheWVycygpCisgICAgICAgIG5vX21haW50YWluZXJfbGlzdCA9IFtwa2dfZGF0YVswXSBmb3IgcGtnX2RhdGEgaW4gW3BrZ19saW5lLnNwbGl0KCdcdCcpIGZvciBwa2dfbGluZSBpbiBjaGVja3BrZ19yZXN1bHRdIFwKKyAgICAgICAgICAgIGlmIHBrZ19kYXRhWzE0XSA9PSAnJyBhbmQgaXNfaW5fb2VfY29yZShwa2dfZGF0YVswXSwgcmVjaXBlc19sYXllcnMpIGFuZCBub3QgaXNfZXhjZXB0aW9uKHBrZ19kYXRhWzBdKV0KKyAgICAgICAgbXNnID0gIiIiCitUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGRvIG5vdCBoYXZlIGEgbWFpbnRhaW5lciBhc3NpZ25lZCB0byB0aGVtLiBQbGVhc2UgYWRkIGFuIGVudHJ5IHRvIG1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgZmlsZS4KKyIiIiArICJcbiIuam9pbihub19tYWludGFpbmVyX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4obm9fbWFpbnRhaW5lcl9saXN0KSA9PSAwLCBtc2cpCisKKyAgICAgICAgd2l0aF9tYWludGFpbmVyX2xpc3QgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBcCisgICAgICAgICAgICBpZiBwa2dfZGF0YVsxNF0gIT0gJycgYW5kIGlzX2luX29lX2NvcmUocGtnX2RhdGFbMF0sIHJlY2lwZXNfbGF5ZXJzKSBhbmQgbm90IGlzX2V4Y2VwdGlvbihwa2dfZGF0YVswXSldCisgICAgICAgIG1zZyA9ICIiIgorVGhlIGxpc3Qgb2Ygb2UtY29yZSBwYWNrYWdlcyB3aXRoIG1haW50YWluZXJzIGlzIGVtcHR5LiBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSB0ZXN0IGhhcyByZWdyZXNzZWQgYW5kIG5lZWRzIGZpeGluZy4KKyIiIgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHdpdGhfbWFpbnRhaW5lcl9saXN0KSA+IDAsIG1zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2VmaWJvb3RwYXJ0aXRpb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjODMyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMgQmFzZWQgb24gcnVucWVtdS5weSB0ZXN0IGZpbGUKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworCitpbXBvcnQgcmUKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyCisKK2NsYXNzIEdlbmVyaWNFRklUZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiRUZJIGJvb3RpbmcgdGVzdCBjbGFzcyIiIgorCisgICAgYnVmZmVyID0gVHJ1ZQorICAgIGNtZF9jb21tb24gPSAicnVucWVtdSBub2dyYXBoaWMgc2VyaWFsIHdpYyBvdm1mIgorICAgIGVmaV9wcm92aWRlciA9ICJzeXN0ZW1kLWJvb3QiCisgICAgaW1hZ2UgPSAiY29yZS1pbWFnZS1taW5pbWFsIgorICAgIG1hY2hpbmUgPSAicWVtdXg4Ni02NCIKKyAgICByZWNpcGVzX2J1aWx0ID0gRmFsc2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICBzdXBlcihHZW5lcmljRUZJVGVzdCwgc2VsZikuc2V0VXBMb2NhbChzZWxmKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKHNlbGYsCisiIiIKK0VGSV9QUk9WSURFUiA9ICIlcyIKK0lNQUdFX0ZTVFlQRVNfcG4tJXNfYXBwZW5kID0gIiB3aWMiCitNQUNISU5FID0gIiVzIgorTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSIKK1dLU19GSUxFID0gImVmaS1ib290ZGlzay53a3MuaW4iCitJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgZ3J1Yi1lZmkgc3lzdGVtZC1ib290IGtlcm5lbC1pbWFnZS1iemltYWdlIgorIiIiCislIChzZWxmLmVmaV9wcm92aWRlciwgc2VsZi5pbWFnZSwgc2VsZi5tYWNoaW5lKSkKKyAgICAgICAgaWYgbm90IHNlbGYucmVjaXBlc19idWlsdDoKKyAgICAgICAgICAgIGJpdGJha2UoIm92bWYiKQorICAgICAgICAgICAgYml0YmFrZShzZWxmLmltYWdlKQorICAgICAgICAgICAgc2VsZi5yZWNpcGVzX2J1aWx0ID0gVHJ1ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RfYm9vdF9lZmkoc2VsZik6CisgICAgICAgICIiIlRlc3QgZ2VuZXJpYyBib290IHBhcnRpdGlvbiB3aXRoIHFlbXUiIiIKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYuaW1hZ2UsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nb3Rvb2xjaGFpbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2dvdG9vbGNoYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMjMyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nb3Rvb2xjaGFpbi5weQpAQCAtMCwwICsxLDY3IEBACitpbXBvcnQgZ2xvYgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFycworCisKK2NsYXNzIG9lR29Ub29sY2hhaW5TZWxmVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgY2FzZXMgZm9yIE9FJ3MgR28gdG9vbGNoYWluCisgICAgIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9zZGtfZW52aXJvbm1lbnQodG1wZGlyX1NES1FBKToKKyAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbih0bXBkaXJfU0RLUUEsICJlbnZpcm9ubWVudC1zZXR1cC0qIikKKyAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXR0ZXJuKVswXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfc2RrX3Rvb2xjaGFpbigpOgorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTREtfREVQTE9ZJywgJ1RPT0xDSEFJTl9PVVRQVVROQU1FJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YS1nby10b29sY2hhaW4iKQorICAgICAgICBzZGtfZGVwbG95ID0gYmJfdmFyc1snU0RLX0RFUExPWSddCisgICAgICAgIHRvb2xjaGFpbl9uYW1lID0gYmJfdmFyc1snVE9PTENIQUlOX09VVFBVVE5BTUUnXQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNka19kZXBsb3ksIHRvb2xjaGFpbl9uYW1lICsgIi5zaCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihvZUdvVG9vbGNoYWluU2VsZlRlc3QsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGNscy50bXBkaXJfU0RLUUEgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nU0RLUUEnKQorICAgICAgICBjbHMuZ29fcGF0aCA9IG9zLnBhdGguam9pbihjbHMudG1wZGlyX1NES1FBLCAiZ28iKQorICAgICAgICAjIEJ1aWxkIHRoZSBTREsgYW5kIGxvY2F0ZSBpdCBpbiBERVBMT1lESVIKKyAgICAgICAgYml0YmFrZSgibWV0YS1nby10b29sY2hhaW4iKQorICAgICAgICBjbHMuc2RrX3BhdGggPSBvZUdvVG9vbGNoYWluU2VsZlRlc3QuZ2V0X3Nka190b29sY2hhaW4oKQorICAgICAgICAjIEluc3RhbGwgdGhlIFNESyBpbnRvIHRoZSB0bXBkaXIKKyAgICAgICAgcnVuQ21kKCJzaCAlcyAteSAtZCBcIiVzXCIiICUgKGNscy5zZGtfcGF0aCwgY2xzLnRtcGRpcl9TREtRQSkpCisgICAgICAgIGNscy5lbnZfU0RLID0gb2VHb1Rvb2xjaGFpblNlbGZUZXN0LmdldF9zZGtfZW52aXJvbm1lbnQoY2xzLnRtcGRpcl9TREtRQSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoY2xzLnRtcGRpcl9TREtRQSwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICBzdXBlcihvZUdvVG9vbGNoYWluU2VsZlRlc3QsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBkZWYgcnVuX3Nka19nb19jb21tYW5kKHNlbGYsIGdvY21kKToKKyAgICAgICAgY21kID0gImNkICVzOyAiICUgc2VsZi50bXBkaXJfU0RLUUEKKyAgICAgICAgY21kID0gY21kICsgIi4gJXM7ICIgJSBzZWxmLmVudl9TREsKKyAgICAgICAgY21kID0gY21kICsgImV4cG9ydCBHT1BBVEg9JXM7ICIgJSBzZWxmLmdvX3BhdGgKKyAgICAgICAgY21kID0gY21kICsgIiR7Q1JPU1NfQ09NUElMRX1nbyAlcyIgJSBnb2NtZAorICAgICAgICByZXR1cm4gcnVuQ21kKGNtZCkuc3RhdHVzCisKKyAgICBkZWYgdGVzdF9nb19kZXBfYnVpbGQoc2VsZik6CisgICAgICAgIHByb2ogPSAiZ2l0aHViLmNvbS9nb2xhbmciCisgICAgICAgIG5hbWUgPSAiZGVwIgorICAgICAgICB2ZXIgPSAidjAuMy4xIgorICAgICAgICBhcmNoaXZlID0gIi50YXIuZ3oiCisgICAgICAgIHVybCA9ICJodHRwczovLyVzLyVzL2FyY2hpdmUvJXMlcyIgJSAocHJvaiwgbmFtZSwgdmVyLCBhcmNoaXZlKQorCisgICAgICAgIHJ1bkNtZCgiY2QgJXM7IHdnZXQgJXMiICUgKHNlbGYudG1wZGlyX1NES1FBLCB1cmwpKQorICAgICAgICBydW5DbWQoImNkICVzOyB0YXIgLXhmICVzIiAlIChzZWxmLnRtcGRpcl9TREtRQSwgdmVyK2FyY2hpdmUpKQorICAgICAgICBydW5DbWQoIm1rZGlyIC1wICVzL3NyYy8lcyIgJSAoc2VsZi5nb19wYXRoLCBwcm9qKSkKKyAgICAgICAgcnVuQ21kKCJtdiAlcy9kZXAtMC4zLjEgJXMvc3JjLyVzLyVzIgorICAgICAgICAgICAgICAgJSAoc2VsZi50bXBkaXJfU0RLUUEsIHNlbGYuZ29fcGF0aCwgcHJvaiwgbmFtZSkpCisgICAgICAgIHJldHYgPSBzZWxmLnJ1bl9zZGtfZ29fY29tbWFuZCgnYnVpbGQgICVzLyVzL2NtZC9kZXAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChwcm9qLCBuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBnbyBidWlsZCBmYWlsZWQgZm9yICVzIiAlIG5hbWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQppbmRleCAwZmZiNjg2Li4wOWUwYjIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKQEAgLTIxMSw3ICsyMTEsNyBAQAogICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKIAogICAgICAgICBpbWdfdHlwZXMgPSBbaXR5cGUgZm9yIGl0eXBlIGluIGdldF9iYl92YXIoIklNQUdFX1RZUEVTIiwgaW1hZ2VfbmFtZSkuc3BsaXQoKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXR5cGUgbm90IGluICgnY29udGFpbmVyJywgJ2VsZicsICdtdWx0aXViaScpXQorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnZjJmcycsICdtdWx0aXViaScpXQogCiAgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICIlcyJcbidcCiAgICAgICAgICAgICAgICAgICdNS1VCSUZTX0FSR1MgPz0gIi1tIDIwNDggLWUgMTI5MDI0IC1jIDIwNDciXG4nXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY5ZDNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKQEAgLTAsMCArMSw0OSBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnNkay51dGlscy5zZGtidWlsZHByb2plY3QgaW1wb3J0IFNES0J1aWxkUHJvamVjdAorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycywgcnVuQ21kCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAorCitjbGFzcyBNZXRhSURFKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihNZXRhSURFLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBiaXRiYWtlKCdtZXRhLWlkZS1zdXBwb3J0JykKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnTVVMVElNQUNIX1RBUkdFVF9TWVMnLCAnVE1QRElSJywgJ0NPUkVCQVNFJ10pCisgICAgICAgIGNscy5lbnZpcm9ubWVudF9zY3JpcHQgPSAnZW52aXJvbm1lbnQtc2V0dXAtJXMnICUgYmJfdmFyc1snTVVMVElNQUNIX1RBUkdFVF9TWVMnXQorICAgICAgICBjbHMudG1wZGlyID0gYmJfdmFyc1snVE1QRElSJ10KKyAgICAgICAgY2xzLmVudmlyb25tZW50X3NjcmlwdF9wYXRoID0gJyVzLyVzJyAlIChjbHMudG1wZGlyLCBjbHMuZW52aXJvbm1lbnRfc2NyaXB0KQorICAgICAgICBjbHMuY29yZWJhc2VkaXIgPSBiYl92YXJzWydDT1JFQkFTRSddCisgICAgICAgIGNscy50bXBkaXJfbWV0YWlkZVFBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J21ldGFpZGUnKQorICAgICAgICAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzaHV0aWwucm10cmVlKGNscy50bXBkaXJfbWV0YWlkZVFBLCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgICAgIHN1cGVyKE1ldGFJREUsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBAT0VUZXN0SUQoMTk4MikKKyAgICBkZWYgdGVzdF9tZXRhX2lkZV9oYWRfaW5zdGFsbGVkX21ldGFfaWRlX3N1cHBvcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHNlbGYuZW52aXJvbm1lbnRfc2NyaXB0X3BhdGgpCisKKyAgICBAT0VUZXN0SUQoMTk4MykKKyAgICBkZWYgdGVzdF9tZXRhX2lkZV9jYW5fY29tcGlsZV9jX3Byb2dyYW0oc2VsZik6CisgICAgICAgIHJ1bkNtZCgnY3AgJXMvdGVzdC5jICVzJyAlIChzZWxmLnRjLmZpbGVzX2Rpciwgc2VsZi50bXBkaXJfbWV0YWlkZVFBKSkKKyAgICAgICAgcnVuQ21kKCJjZCAlczsgLiAlczsgJENDIHRlc3QuYyAtbG0iICUgKHNlbGYudG1wZGlyX21ldGFpZGVRQSwgc2VsZi5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCkpCisgICAgICAgIGNvbXBpbGVkX2ZpbGUgPSAnJXMvYS5vdXQnICUgc2VsZi50bXBkaXJfbWV0YWlkZVFBCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKGNvbXBpbGVkX2ZpbGUpCisKKyAgICBAT0VUZXN0SUQoMTk4NCkKKyAgICBkZWYgdGVzdF9tZXRhX2lkZV9jYW5fYnVpbGRfY3Bpb19wcm9qZWN0KHNlbGYpOgorICAgICAgICBkbF9kaXIgPSBzZWxmLnRkLmdldCgnRExfRElSJywgTm9uZSkKKyAgICAgICAgc2VsZi5wcm9qZWN0ID0gU0RLQnVpbGRQcm9qZWN0KHNlbGYudG1wZGlyX21ldGFpZGVRQSArICIvY3Bpby8iLCBzZWxmLmVudmlyb25tZW50X3NjcmlwdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEyLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRtcGRpcl9tZXRhaWRlUUEsIHNlbGYudGRbJ0RBVEVUSU1FJ10sIGRsX2Rpcj1kbF9kaXIpCisgICAgICAgIHNlbGYucHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJSdW5uaW5nIGNvbmZpZ3VyZSBmYWlsZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvamVjdC5ydW5fbWFrZSgpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJSdW5uaW5nIG1ha2UgZmFpbGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX2luc3RhbGwoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBtYWtlIGluc3RhbGwgZmFpbGVkIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CmluZGV4IDQ3ZDQxZjUuLjVlYmRkNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weQpAQCAtMyw5ICszLDEwIEBACiAjCiAKIGltcG9ydCByZQotCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aW1lCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgcnVucWVtdSwgZ2V0X2JiX3ZhciwgcnVuQ21kCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKIAogY2xhc3MgUnVucWVtdVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CkBAIC0xMzYsMyArMTM3LDcwIEBACiAgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCByb290ZnMpCiAgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworIyBUaGlzIHRlc3Qgd2FzIGRlc2lnbmVkIGFzIGEgc2VwYXJhdGUgY2xhc3MgdG8gdGVzdCB0aGF0IHNodXRkb3duCisjIGNvbW1hbmQgd2lsbCBzaHV0ZG93biBxZW11IGFzIGV4cGVjdGVkIG9uIGVhY2ggcWVtdSBhcmNoaXRlY3R1cmUKKyMgYmFzZWQgb24gdGhlIE1BQ0hJTkUgY29uZmlndXJhdGlvbiBpbnNpZGUgdGhlIGNvbmZpZyBmaWxlCisjIChlZy4gbG9jYWwuY29uZikuCisjCisjIFRoaXMgd2FzIGRpZmZlcmVudCBjb21wYXJlZCB0byBSdW5xZW11VGVzdHMsIHdoZXJlIFJ1bnFlbXVUZXN0cyB3YXMKKyMgZGVkaWNhdGVkIGZvciBNQUNISU5FPXFlbXV4ODYtNjQgd2hlcmUgaXQgdGVzdCB0aGF0IHFlbXV4ODYtNjQgd2lsbAorIyBib290dXAgdmFyaW91cyBmaWxlc3lzdGVtIHR5cGVzLCBpbmNsdWRpbmcgbGl2ZSBpbWFnZShpc28gYW5kIGhkZGltZykKKyMgd2hlcmUgbGl2ZSBpbWFnZSB3YXMgbm90IHN1cHBvcnRlZCBvbiBhbGwgcWVtdSBhcmNoaXRlY3R1cmUuCitjbGFzcyBRZW11VGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoUWVtdVRlc3QsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGNscy5yZWNpcGUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBjbHMubWFjaGluZSA9ICBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgY2xzLmRlcGxveV9kaXJfaW1hZ2UgPSAgZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGNscy5jbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIgorICAgICAgICBjbHMucWVtdWJvb3RfY29uZiA9ICIlcy0lcy5xZW11Ym9vdC5jb25mIiAlIChjbHMucmVjaXBlLCBjbHMubWFjaGluZSkKKyAgICAgICAgY2xzLnFlbXVib290X2NvbmYgPSBvcy5wYXRoLmpvaW4oY2xzLmRlcGxveV9kaXJfaW1hZ2UsIGNscy5xZW11Ym9vdF9jb25mKQorICAgICAgICBiaXRiYWtlKGNscy5yZWNpcGUpCisKKyAgICBkZWYgX3N0YXJ0X3FlbXVfc2h1dGRvd25fY2hlY2tfaWZfc2h1dGRvd25fc3VjY2VlZGVkKHNlbGYsIHFlbXUsIHRpbWVvdXQpOgorICAgICAgICBxZW11LnJ1bl9zZXJpYWwoInNodXRkb3duIC1oIG5vdyIpCisgICAgICAgICMgU3RvcCB0aHJlYWQgd2lsbCBzdG9wIHRoZSBMb2dnaW5nVGhyZWFkIGluc3RhbmNlIHVzZWQgZm9yIGxvZ2dpbmcKKyAgICAgICAgIyBxZW11IHRocm91Z2ggc2VyaWFsIGNvbnNvbGUsIHN0b3AgdGhyZWFkIHdpbGwgcHJldmVudCB0aGlzIGNvZGUKKyAgICAgICAgIyBmcm9tIGZhY2luZyBleGNlcHRpb24gKENvbnNvbGUgY29ubmVjdGlvbiBjbG9zZWQgdW5leHBlY3RlZGx5KQorICAgICAgICAjIHdoZW4gcWVtdSB3YXMgc2h1dGRvd24gYnkgdGhlIGFib3ZlIHNodXRkb3duIGNvbW1hbmQKKyAgICAgICAgcWVtdS5ydW5uZXIuc3RvcF90aHJlYWQoKQorICAgICAgICB0aW1lX3RyYWNrID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaXNfYWxpdmUgPSBxZW11LmNoZWNrKCkKKyAgICAgICAgICAgIGlmIG5vdCBpc19hbGl2ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgdGltZV90cmFjayA+IHRpbWVvdXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICB0aW1lX3RyYWNrICs9IDEKKworICAgIGRlZiB0ZXN0X3FlbXVfY2FuX3NodXRkb3duKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhzZWxmLnFlbXVib290X2NvbmYpCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnFlbXVib290X2NvbmYpCisgICAgICAgIHNodXRkb3duX3RpbWVvdXQgPSAxMjAKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgcWVtdV9zaHV0ZG93bl9zdWNjZWVkZWQgPSBzZWxmLl9zdGFydF9xZW11X3NodXRkb3duX2NoZWNrX2lmX3NodXRkb3duX3N1Y2NlZWRlZChxZW11LCBzaHV0ZG93bl90aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXVfc2h1dGRvd25fc3VjY2VlZGVkLCAnRmFpbGVkOiAlcyBkb2VzIG5vdCBzaHV0ZG93biB3aXRoaW4gdGltZW91dCglcyknICUgKHNlbGYubWFjaGluZSwgc2h1dGRvd25fdGltZW91dCkpCisKKyAgICAjIE5lZWQgdG8gaGF2ZSBwb3J0bWFwL3JwY2JpbmQgcnVubmluZyB0byBhbGxvdyB0aGlzIHRlc3QgdG8gd29yayBhbmQKKyAgICAjIGN1cnJlbnQgYXV0b2J1aWxkZXIgc2V0dXAgZG9lcyBub3QgaGF2ZSB0aGlzLgorICAgIGRlZiBkaXNhYmxlZF90ZXN0X3FlbXVfY2FuX2Jvb3RfbmZzX2FuZF9zaHV0ZG93bihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoc2VsZi5xZW11Ym9vdF9jb25mKQorICAgICAgICBiaXRiYWtlKCdtZXRhLWlkZS1zdXBwb3J0JykKKyAgICAgICAgcm9vdGZzX3RhciA9ICIlcy0lcy50YXIuYnoyIiAlIChzZWxmLnJlY2lwZSwgc2VsZi5tYWNoaW5lKQorICAgICAgICByb290ZnNfdGFyID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSwgcm9vdGZzX3RhcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMocm9vdGZzX3RhcikKKyAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3FlbXVfbmZzJykKKyAgICAgICAgdG1wZGlyX25mcyA9IG9zLnBhdGguam9pbih0bXBkaXIsICduZnMnKQorICAgICAgICBjbWRfZXh0cmFjdF9uZnMgPSAncnVucWVtdS1leHRyYWN0LXNkayAlcyAlcycgJSAocm9vdGZzX3RhciwgdG1wZGlyX25mcykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZF9leHRyYWN0X25mcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAicnVucWVtdS1leHRyYWN0LXNkayBkaWRuJ3QgcnVuIGFzIGV4cGVjdGVkLiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBjbWQgPSAiJXMgbmZzICVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucWVtdWJvb3RfY29uZiwgdG1wZGlyX25mcykKKyAgICAgICAgc2h1dGRvd25fdGltZW91dCA9IDEyMAorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBxZW11X3NodXRkb3duX3N1Y2NlZWRlZCA9IHNlbGYuX3N0YXJ0X3FlbXVfc2h1dGRvd25fY2hlY2tfaWZfc2h1dGRvd25fc3VjY2VlZGVkKHFlbXUsIHNodXRkb3duX3RpbWVvdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdV9zaHV0ZG93bl9zdWNjZWVkZWQsICdGYWlsZWQ6ICVzIGRvZXMgbm90IHNodXRkb3duIHdpdGhpbiB0aW1lb3V0KCVzKScgJSAoc2VsZi5tYWNoaW5lLCBzaHV0ZG93bl90aW1lb3V0KSkKKyAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgdG1wZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CmluZGV4IDI1MjcwYjcuLjljOWI0YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKQEAgLTE2Nyw1NSArMTY3LDYgQEAKIAogY2xhc3MgUG9zdGluc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKICAgICBAT0VUZXN0SUQoMTU0MCkKLSAgICBkZWYgdGVzdF92ZXJpZnlfcG9zdGluc3Qoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMgdG8gdmVyaWZ5IHRoZSBleGVjdXRpb24gb3JkZXIgb2YgcG9zdGluc3QgQnVnemlsbGEgSUQ6IFs1MzE5XQotICAgICAgICBFeHBlY3RlZCA6Ci0gICAgICAgIDEuIENvbXBpbGUgYSBtaW5pbWFsIGltYWdlLgotICAgICAgICAyLiBUaGUgY29tcGlsZWQgaW1hZ2Ugd2lsbCBhZGQgdGhlIGNyZWF0ZWQgbGF5ZXIgd2l0aCB0aGUgcmVjaXBlcyBwb3N0aW5zdFsgYWJkcHRdCi0gICAgICAgIDMuIFJ1biBxZW11eDg2Ci0gICAgICAgIDQuIFZhbGlkYXRlIHRoZSB0YXNrIGV4ZWN1dGlvbiBvcmRlcgotICAgICAgICBBdXRob3I6IEZyYW5jaXNjbyBQZWRyYXphIDxmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAicG9zdGluc3QtYXQtcm9vdGZzIFwKLXBvc3RpbnN0LWRlbGF5ZWQtYSBcCi1wb3N0aW5zdC1kZWxheWVkLWIgXAotcG9zdGluc3QtZGVsYXllZC1kIFwKLXBvc3RpbnN0LWRlbGF5ZWQtcCBcCi1wb3N0aW5zdC1kZWxheWVkLXQgXAotIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgLWYgJykKLQotICAgICAgICBwb3N0aW5zdF9saXN0ID0gWycxMDAtcG9zdGluc3QtYXQtcm9vdGZzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAxLXBvc3RpbnN0LWRlbGF5ZWQtYScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMi1wb3N0aW5zdC1kZWxheWVkLWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDMtcG9zdGluc3QtZGVsYXllZC1kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTA0LXBvc3RpbnN0LWRlbGF5ZWQtcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwNS1wb3N0aW5zdC1kZWxheWVkLXQnXQotICAgICAgICBwYXRoX3dvcmtkaXIgPSBnZXRfYmJfdmFyKCdXT1JLRElSJywnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgd29ya3NwYWNlZGlyID0gJ3Rlc3RpbWFnZS9xZW11X2Jvb3RfbG9nJwotICAgICAgICB3b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4ocGF0aF93b3JrZGlyLCB3b3Jrc3BhY2VkaXIpCi0gICAgICAgIHJleHAgPSByZS5jb21waWxlKCJeUnVubmluZyBwb3N0aW5zdCAuKi8oP1A8cG9zdGluc3Q+LiopXC5cLlwuJCIpCi0gICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3Blbih3b3Jrc3BhY2VkaXIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQotICAgICAgICAgICAgICAgIGlkeCA9IDAKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpLnJlcGxhY2UoIl5NIiwiIikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6ICMgVG8gYXZvaWQgZW1wdHkgbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIG0gPSByZXhwLnNlYXJjaChsaW5lKQotICAgICAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3N0aW5zdF9saXN0W2lkeF0sIG0uZ3JvdXAoJ3Bvc3RpbnN0JyksICJGYWlsIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IGlkeCsxCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWR4LCBsZW4ocG9zdGluc3RfbGlzdCksICJOb3QgZm91bmQgYWxsIHBvc3RpbnN0cyIpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCiAgICAgQE9FVGVzdElEKDE1NDUpCiAgICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTIzNCwxNiArMTg1LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0IGFuZCBzeXN0ZW1kLgogCiAgICAgICAgICIiIgotICAgICAgICBmaWxlX3Jvb3Rmc19uYW1lID0gInRoaXMtd2FzLWNyZWF0ZWQtYXQtcm9vdGZzdGltZSIKLSAgICAgICAgZmlsZWJvb3RfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LWZpcnN0LWJvb3QiCi0gICAgICAgIHJvb3Rmc19wa2cgPSAncG9zdGluc3QtYXQtcm9vdGZzJwotICAgICAgICBib290X3BrZyA9ICdwb3N0aW5zdC1kZWxheWVkLWEnCisKKyAgICAgICAgaW1wb3J0IG9lLnBhdGgKKworICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoKCJJTUFHRV9ST09URlMiLCAic3lzY29uZmRpciIpLCAiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgcm9vdGZzID0gdmFyc1siSU1BR0VfUk9PVEZTIl0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocm9vdGZzKQorICAgICAgICBzeXNjb25mZGlyID0gdmFyc1sic3lzY29uZmRpciJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHN5c2NvbmZkaXIpCisgICAgICAgICMgTmVlZCB0byB1c2Ugb2UucGF0aCBoZXJlIGFzIHN5c2NvbmZkaXIgc3RhcnRzIHdpdGggLworICAgICAgICBob3N0dGVzdGRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKKyAgICAgICAgdGFyZ2V0dGVzdGRpciA9IG9zLnBhdGguam9pbihzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCiAKICAgICAgICAgZm9yIGluaXRfbWFuYWdlciBpbiAoInN5c3Zpbml0IiwgInN5c3RlbWQiKToKICAgICAgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0iLCAicGFja2FnZV9kZWIiLCAicGFja2FnZV9pcGsiKToKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdNQUNISU5FID0gInFlbXV4ODYiXG4nCi0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gIiVzICVzICJcbiclIChyb290ZnNfcGtnLCBib290X3BrZykKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBvc3RpbnN0LWRlbGF5ZWQtYiJcbicKICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQgZW1wdHktcm9vdC1wYXNzd29yZCJcbicKICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCiAgICAgICAgICAgICAgICAgICAgIGlmIGluaXRfbWFuYWdlciA9PSAic3lzdGVtZCI6CkBAIC0yNTUsMTMgKzIxMiw0OSBAQAogCiAgICAgICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfY3JlYXRlZCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCAiY29yZS1pbWFnZS1taW5pbWFsIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShmaWxlX3Jvb3Rmc19jcmVhdGVkKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCByb290ZnMgdGltZSBieSAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9yb290ZnNfbmFtZSwgcm9vdGZzX3BrZykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIHN0YXRlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKIAotICAgICAgICAgICAgICAgICAgICB0ZXN0Y29tbWFuZCA9ICdscyAvZXRjLycgKyBmaWxlYm9vdF9uYW1lCiAgICAgICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKCItZiAvZXRjLyIgKyBmaWxlYm9vdF9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCBmaXJzdCBib290ICglcyknICUgKGZpbGVib290X25hbWUsIG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIHRlc3QgZWNobyBhIHN0cmluZyBhbmQgc2VhcmNoIGZvciB0aGF0IGFzCisgICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bl9zZXJpYWwoKSdzIHN0YXR1cyBjb2RlIGlzIHVzZWxlc3MuJworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluICgicm9vdGZzIiwgImRlbGF5ZWQtYSIsICJkZWxheWVkLWIiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgidGVzdCAtZiAlcyAmJiBlY2hvIGZvdW5kIiAlIG9zLnBhdGguam9pbih0YXJnZXR0ZXN0ZGlyLCBmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJmb3VuZCIsICIlcyB3YXMgbm90IHByZXNlbnQgb24gYm9vdCIgJSBmaWxlbmFtZSkKKworCisKKyAgICBkZWYgdGVzdF9mYWlsaW5nX3Bvc3RpbnN0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSB0aGF0IHBvc3QtaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIHRoYXQgY29udGFpbiBlcnJvcnMgYXJlIHByb3Blcmx5IHJlcG9ydGVkLgorICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIHNjcmlwdGxldCBmYWlsdXJlIGlzIHByb3Blcmx5IHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgdGhhdCBpcyBjcmVhdGVkIGFmdGVyIHRoZSBlcnJvciBpbiB0aGUgc2NyaXB0bGV0IGlzIG5vdCBwcmVzZW50LgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaW1wb3J0IG9lLnBhdGgKKworICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoKCJJTUFHRV9ST09URlMiLCAic3lzY29uZmRpciIpLCAiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgcm9vdGZzID0gdmFyc1siSU1BR0VfUk9PVEZTIl0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocm9vdGZzKQorICAgICAgICBzeXNjb25mZGlyID0gdmFyc1sic3lzY29uZmRpciJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHN5c2NvbmZkaXIpCisgICAgICAgICMgTmVlZCB0byB1c2Ugb2UucGF0aCBoZXJlIGFzIHN5c2NvbmZkaXIgc3RhcnRzIHdpdGggLworICAgICAgICBob3N0dGVzdGRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKKworICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgorICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1yb290ZnMtZmFpbGluZyJcbicKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgICAgICAgICBiYl9yZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGJiX3Jlc3VsdC5vdXRwdXQuZmluZCgiSW50ZW50aW9uYWxseSBmYWlsaW5nIHBvc3RpbnN0YWxsIHNjcmlwdGxldHMgb2YgWydwb3N0aW5zdC1yb290ZnMtZmFpbGluZyddIHRvIGRlZmVyIHRoZW0gdG8gZmlyc3QgYm9vdCBpcyBkZXByZWNhdGVkLiIpLCAwLAorICAgICAgICAgICAgICAgICAgICAiV2FybmluZyBhYm91dCBhIGZhaWxlZCBzY3JpcHRsZXQgbm90IGZvdW5kIGluIGJpdGJha2Ugb3V0cHV0OiAlcyIgJShiYl9yZXN1bHQub3V0cHV0KSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMtYmVmb3JlLWZhaWx1cmUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzLWJlZm9yZS1mYWlsdXJlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihob3N0dGVzdGRpciwgInJvb3Rmcy1hZnRlci1mYWlsdXJlIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3Rmcy1hZnRlci1mYWlsdXJlIGZpbGUgd2FzIGNyZWF0ZWQiKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQppbmRleCBiM2QxYTgyLi5hNzUwY2ZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgcmV0ID0gcnVuQ21kKCclcy9ycG1rZXlzIC0tZGVmaW5lICJfZGJwYXRoICVzIiAtLWNoZWNrc2lnICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAoc3RhZ2luZ19iaW5kaXJfbmF0aXZlLCBycG1kYiwgcGtnX2RlcGxveSkpCiAgICAgICAgICMgdG1wL2RlcGxveS9ycG0vaTU4Ni9lZC0xLjktcjAuaTU4Ni5ycG06IHJzYSBzaGExIG1kNSBPSwotICAgICAgICBzZWxmLmFzc2VydEluKCdyc2Egc2hhMSAobWQ1KSBwZ3AgbWQ1IE9LJywgcmV0Lm91dHB1dCwgJ1BhY2thZ2Ugc2lnbmVkIGluY29ycmVjdGx5LicpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RpZ2VzdHMgc2lnbmF0dXJlcyBPSycsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQogICAgICAgICBzaHV0aWwucm10cmVlKHJwbWRiKQogCiAgICAgICAgICNDaGVjayB0aGF0IGFuIGltYWdlIGNhbiBiZSBidWlsdCBmcm9tIHNpZ25lZCBwYWNrYWdlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQppbmRleCA0NzkwMDg4Li43YjAwOGU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQpAQCAtMiwxNSArMiw1MSBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IGdsb2IKIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGVtcGZpbGUKIAogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIsIGNyZWF0ZV90ZW1wX2xheWVyCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuc3N0YXRlIGltcG9ydCBTU3RhdGVCYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKIAogaW1wb3J0IGJiLnNpZ2dlbgogCiBjbGFzcyBTU3RhdGVUZXN0cyhTU3RhdGVCYXNlKToKKyAgICBkZWYgdGVzdF9hdXRvcmV2X3NzdGF0ZV93b3JrcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBnaXQgcmVwb3NpdG9yeSB3aGljaCBjaGFuZ2VzIGlzIGNvcnJlY3RseSBoYW5kbGVkIGJ5IFNSQ1JFViA9ICR7QVVUT1JFVn0KKyAgICAgICAgIyB3aGVuIFBWIGRvZXMgbm90IGNvbnRhaW4gU1JDUFYKKworICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lcWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIGNyZWF0ZV90ZW1wX2xheWVyKHRlbXBkaXIsICdzZWxmdGVzdHJlY2lwZXRvb2wnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGRpcikKKworICAgICAgICAjIFVzZSBkYnVzLXdhaXQgYXMgYSBsb2NhbCBnaXQgcmVwbyB3ZSBjYW4gYWRkIGEgY29tbWl0IGJldHdlZW4gdHdvIGJ1aWxkcyBpbgorICAgICAgICBwbiA9ICdkYnVzLXdhaXQnCisgICAgICAgIHNyY3JldiA9ICc2Y2M2MDc3YTM2ZmUyNjQ4YTVmOTkzZmU3YzE2Yzk2MzJmOTQ2NTE3JworICAgICAgICB1cmwgPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZGJ1cy13YWl0JworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjbG9uZSAlcyBub25hbWUnICUgdXJsLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdub25hbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCAtLWhhcmQgJXMnICUgc3JjcmV2LCBjd2Q9c3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZS5hYycpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCisKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAicmVjaXBlcy10ZXN0IiwgImRidXMtd2FpdC10ZXN0IiwgJ2RidXMtd2FpdC10ZXN0X2dpdC5iYicpCisgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKKyAgICAgICAgc3JjdXJpID0gJ2dpdDovLycgKyBzcmNkaXIgKyAnO3Byb3RvY29sPWZpbGUnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3JlY2lwZXRvb2wnLCAnY3JlYXRlJywgJy1vJywgcmVjaXBlZmlsZSwgc3JjdXJpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpLCAncmVjaXBldG9vbCBkaWQgbm90IGNyZWF0ZSByZWNpcGUgZmlsZTsgb3V0cHV0OlxuJXMnICUgcmVzdWx0Lm91dHB1dCkKKworICAgICAgICB3aXRoIG9wZW4ocmVjaXBlZmlsZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnU1JDUkVWID0gIiR7QVVUT1JFVn0iXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnUFYgPSAiMS4wIlxuJykKKworICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQtdGVzdCAtYyBmZXRjaCIpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3JjZGlyLCAiYmFyLnR4dCIpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJmb28iKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBhZGQgYmFyLnR4dDsgZ2l0IGNvbW1pdCAtYXNtICJhZGQgYmFyIicsIGN3ZD1zcmNkaXIpCisgICAgICAgIGJpdGJha2UoImRidXMtd2FpdC10ZXN0IC1jIHVucGFjayIpCisKIAogICAgICMgVGVzdCBzc3RhdGUgZmlsZXMgY3JlYXRpb24gYW5kIHRoZWlyIGxvY2F0aW9uCiAgICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihzZWxmLCB0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPVRydWUpOgpAQCAtNDkwLDcgKzUyNiw3IEBACiAgICAgICAgICMgdGhpcyBpcyBhbiBleHBlbnNpdmUgY29tcHV0YXRpb24sIHRodXMganVzdCBjb21wYXJlIHRoZSBmaXJzdCAnbWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmUnIGsgZmlsZXMKICAgICAgICAgbWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmUgPSAyMAogICAgICAgICBmaXJzdCwgcmVzdCA9IGZpbGVzWzptYXhfc2lnZmlsZXNfdG9fY29tcGFyZV0sIGZpbGVzW21heF9zaWdmaWxlc190b19jb21wYXJlOl0KLSAgICAgICAgY29tcGFyZV9zaWdmaWxlcyhmaXJzdCwgZmlsZXMxLmtleXMoKSwgZmlsZXMyLmtleXMoKSwgY29tcGFyZT1UcnVlKQotICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKHJlc3QsIGZpbGVzMS5rZXlzKCksIGZpbGVzMi5rZXlzKCksIGNvbXBhcmU9RmFsc2UpCisgICAgICAgIGNvbXBhcmVfc2lnZmlsZXMoZmlyc3QsIGZpbGVzMSwgZmlsZXMyLCBjb21wYXJlPVRydWUpCisgICAgICAgIGNvbXBhcmVfc2lnZmlsZXMocmVzdCwgZmlsZXMxLCBmaWxlczIsIGNvbXBhcmU9RmFsc2UpCiAKICAgICAgICAgc2VsZi5mYWlsKCJzc3RhdGUgaGFzaGVzIG5vdCBpZGVudGljYWwuIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQppbmRleCA2NTFkNTc1Li5iODQ0NjZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CkBAIC02MjMsNyArNjIzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhwYXRoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLnJlYWxwYXRoKHBhdGgpKSkKIAotICAgIEBPRVRlc3RJRCgxNDIyKQorICAgIEBPRVRlc3RJRCgxNDI0KQogICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQogICAgIGRlZiB0ZXN0X3FlbXUoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljLWltYWdlLW1pbmltYWwgdW5kZXIgcWVtdSIiIgpAQCAtNjM0LDEwICs2MzQsMTMgQEAKICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKIAogICAgICAgICB3aXRoIHJ1bnFlbXUoJ3dpYy1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlKSBhcyBxZW11OgotICAgICAgICAgICAgY21kID0gIm1vdW50IHxncmVwICdeL2Rldi8nIHwgY3V0IC1mMSwzIC1kICcgJyIKKyAgICAgICAgICAgIGNtZCA9ICJtb3VudCB8Z3JlcCAnXi9kZXYvJyB8IGN1dCAtZjEsMyAtZCAnICcgfCBzb3J0IgorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcvZGV2L3Jvb3QgL1xyXG4vZGV2L3NkYTEgL2Jvb3RcclxuL2Rldi9zZGEzIC9tZWRpYVxyXG4vZGV2L3NkYTQgL21udCcpCisgICAgICAgICAgICBjbWQgPSAiZ3JlcCBVVUlEPSAvZXRjL2ZzdGFiIgogICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnL2Rldi9yb290IC9cclxuL2Rldi9zZGExIC9ib290XHJcbi9kZXYvc2RhMyAvbW50JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnVVVJRD0yYzcxZWYwNi1hODFkLTQ3MzUtOWQzYS0zNzliNjljNmJkYmFcdC9tZWRpYVx0ZXh0NFx0ZGVmYXVsdHNcdDBcdDAnKQogCiAgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCiAgICAgQE9FVGVzdElEKDE4NTIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQppbmRleCBmNjM5MzZjLi41OWE5YzM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKQEAgLTkxLDYgKzkxLDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBsb2dnZXIsIGltYWdlX2ZzdHlwZT1Ob25lKToKIAorICAgICAgICBpbXBvcnQgb2UudHlwZXMKKwogICAgICAgICBzdXBlcihRZW11VGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhkLCBsb2dnZXIpCiAKICAgICAgICAgc2VsZi5yb290ZnMgPSAnJwpAQCAtMTA3LDcgKzEwOSw3IEBACiAgICAgICAgIGR1bXBfZGlyID0gZC5nZXRWYXIoIlRFU1RJTUFHRV9EVU1QX0RJUiIpCiAgICAgICAgIHFlbXVfdXNlX2t2bSA9IGQuZ2V0VmFyKCJRRU1VX1VTRV9LVk0iKQogICAgICAgICBpZiBxZW11X3VzZV9rdm0gYW5kIFwKLSAgICAgICAgICAgKHFlbXVfdXNlX2t2bSA9PSAiVHJ1ZSIgYW5kICJ4ODYiIGluIGQuZ2V0VmFyKCJNQUNISU5FIikgb3IgXAorICAgICAgICAgICAob2UudHlwZXMuYm9vbGVhbihxZW11X3VzZV9rdm0pIGFuZCAieDg2IiBpbiBkLmdldFZhcigiTUFDSElORSIpIG9yIFwKICAgICAgICAgICAgIGQuZ2V0VmFyKCJNQUNISU5FIikgaW4gcWVtdV91c2Vfa3ZtLnNwbGl0KCkpOgogICAgICAgICAgICAgdXNlX2t2bSA9IFRydWUKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKaW5kZXggMGJiOTAwMi4uMGQ5Y2YyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgIGJiZW52ID0gZ2V0X2JiX2Vudih0YXJnZXQsIHBvc3Rjb25maWc9cG9zdGNvbmZpZykKIAogICAgIGlmIHZhcmlhYmxlcyBpcyBub3QgTm9uZToKLSAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzLmNvcHkoKQorICAgICAgICB2YXJpYWJsZXMgPSBsaXN0KHZhcmlhYmxlcykKICAgICB2YXJfcmUgPSByZS5jb21waWxlKHInXihleHBvcnQgKT8oP1A8dmFyPlx3KyhfLiopPyk9Iig/UDx2YWx1ZT4uKikiJCcpCiAgICAgdW5zZXRfcmUgPSByZS5jb21waWxlKHInXnVuc2V0ICg/UDx2YXI+XHcrKSQnKQogICAgIGxhc3RsaW5lID0gTm9uZQpAQCAtMjg1LDcgKzI4NSw3IEBACiAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOXyVzID0gIl4ke0xBWUVSRElSfS8iXG4nICUgdGVtcGxheWVybmFtZSkKICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BSSU9SSVRZXyVzID0gIiVkIlxuJyAlICh0ZW1wbGF5ZXJuYW1lLCBwcmlvcml0eSkpCiAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV8lcyA9ICIxIlxuJyAlIHRlbXBsYXllcm5hbWUpCi0KKyAgICAgICAgZi53cml0ZSgnTEFZRVJTRVJJRVNfQ09NUEFUXyVzID0gIiR7TEFZRVJTRVJJRVNfQ09NUEFUX2NvcmV9IlxuJyAlIHRlbXBsYXllcm5hbWUpCiAKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgcnVucWVtdShwbiwgc3NoPVRydWUsIHJ1bnFlbXVwYXJhbXM9JycsIGltYWdlX2ZzdHlwZT1Ob25lLCBsYXVuY2hfY21kPU5vbmUsIHFlbXVwYXJhbXM9Tm9uZSwgb3ZlcnJpZGVzPXt9LCBkaXNjYXJkX3dyaXRlcz1UcnVlKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCA3MjRhZmIyLi5hZmQ1YjhlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5CkBAIC0xNCw3ICsxNCw4IEBACiAgICAgaWYgcGtnX2NsYXNzID09ICJycG0iOgogICAgICAgICBwbSA9IFJwbVBNKGQsCiAgICAgICAgICAgICAgICAgICAgcm9vdF9wYXRoLAotICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJykpCisgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1RBUkdFVF9WRU5ET1InKSwKKyAgICAgICAgICAgICAgICAgICBmaWx0ZXJieWRlcGVuZGVuY2llcz1GYWxzZSkKICAgICAgICAgcG0uY3JlYXRlX2NvbmZpZ3MoKQogCiAgICAgZWxpZiBwa2dfY2xhc3MgPT0gImlwayI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQppbmRleCAwNjMxZDQzLi5jOTYyNjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKQEAgLTE5NCw3ICsxOTQsOCBAQAogICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicnVucWVtdSBzdGFydGVkLCBwaWQgaXMgJXMiICUgc2VsZi5ydW5xZW11LnBpZCkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIndhaXRpbmcgYXQgbW9zdCAlcyBzZWNvbmRzIGZvciBxZW11IHBpZCIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygid2FpdGluZyBhdCBtb3N0ICVzIHNlY29uZHMgZm9yIHFlbXUgcGlkICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYucnVucWVtdXRpbWUsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLnJ1bnFlbXV0aW1lCiAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2FsaXZlKCkgYW5kIHRpbWUudGltZSgpIDwgZW5kdGltZToKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5wb2xsKCk6CkBAIC0yMDgsNyArMjA5LDggQEAKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiUWVtdSBwaWQgZGlkbid0IGFwcGVhciBpbiAlcyBzZWNvbmRzIiAlIHNlbGYucnVucWVtdXRpbWUpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiUWVtdSBwaWQgZGlkbid0IGFwcGVhciBpbiAlcyBzZWNvbmRzICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bnFlbXV0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgICAgICMgRHVtcCBhbGwgcHJvY2Vzc2VzIHRvIGhlbHAgdXMgdG8gZmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9uLi4uCiAgICAgICAgICAgICBwcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydwcycsICdheHd3JywgJy1vJywgJ3BpZCxwcGlkLGNvbW1hbmQgJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KICAgICAgICAgICAgIHByb2Nlc3NlcyA9IHBzLmRlY29kZSgidXRmLTgiKQpAQCAtMjI1LDcgKzIyNyw5IEBACiAgICAgICAgICMgV2UgYXJlIGFsaXZlOiBxZW11IGlzIHJ1bm5pbmcKICAgICAgICAgb3V0ID0gc2VsZi5nZXRPdXRwdXQob3V0cHV0KQogICAgICAgICBuZXRjb25mID0gRmFsc2UgIyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgbm90IHJlcXVpcmVkIGJ5IGRlZmF1bHQKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgc3RhcnRlZCBpbiAlcyBzZWNvbmRzIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyIgJSAodGltZS50aW1lKCkgLSAoZW5kdGltZSAtIHNlbGYucnVucWVtdXRpbWUpLCBzZWxmLnFlbXVwaWQpKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicWVtdSBzdGFydGVkIGluICVzIHNlY29uZHMgLSBxZW11IHByb2NjZXMgcGlkIGlzICVzICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucWVtdXBpZCwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgIGlmIGdldF9pcDoKICAgICAgICAgICAgIGNtZGxpbmUgPSAnJwogICAgICAgICAgICAgd2l0aCBvcGVuKCcvcHJvYy8lcy9jbWRsaW5lJyAlIHNlbGYucWVtdXBpZCkgYXMgcDoKQEAgLTI2OSw3ICsyNzMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIsIG91dCkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldhaXRpbmcgYXQgbW9zdCAlZCBzZWNvbmRzIGZvciBsb2dpbiBiYW5uZXIiICUgc2VsZi5ib290dGltZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldhaXRpbmcgYXQgbW9zdCAlZCBzZWNvbmRzIGZvciBsb2dpbiBiYW5uZXIgKCVzKSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ib290dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYuYm9vdHRpbWUKICAgICAgICAgc29ja2xpc3QgPSBbc2VsZi5zZXJ2ZXJfc29ja2V0XQogICAgICAgICByZWFjaGVkbG9naW4gPSBGYWxzZQpAQCAtMjk4LDE1ICszMDMsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVhY2hlZCBsb2dpbiBiYW5uZXIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZWFjaGVkIGxvZ2luIGJhbm5lciBpbiAlcyBzZWNvbmRzICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZS50aW1lKCkgLSAoZW5kdGltZSAtIHNlbGYuYm9vdHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBuZWVkIHRvIGNoZWNrIGlmIHJlYWNoZWRsb2dpbiB1bmxlc3Mgd2Ugc3VwcG9ydCBtdWx0aXBsZSBjb25uZWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlFFTVUgc29ja2V0IGRpc2Nvbm5lY3RlZCBiZWZvcmUgbG9naW4gYmFubmVyIHJlYWNoZWQuICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5yZW1vdmUoc29jaykKICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCiAKIAogICAgICAgICBpZiBub3QgcmVhY2hlZGxvZ2luOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRhcmdldCBkaWRuJ3QgcmVhY2hlZCBsb2dpbiBib290IGluICVkIHNlY29uZHMiICUgc2VsZi5ib290dGltZSkKKyAgICAgICAgICAgIGlmIHRpbWUudGltZSgpID49IGVuZHRpbWU6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRhcmdldCBkaWRuJ3QgcmVhY2ggbG9naW4gYmFubmVyIGluICVkIHNlY29uZHMgKCVzKSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJvb3R0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgICAgIHRhaWwgPSBsYW1iZGEgbDogIlxuIi5qb2luKGwuc3BsaXRsaW5lcygpWy0yNTpdKQogICAgICAgICAgICAgIyBpbiBjYXNlIGJvb3Rsb2cgaXMgZW1wdHksIHVzZSB0YWlsIHFlbXUgbG9nIHN0b3JlIGF0IHNlbGYubXNnCiAgICAgICAgICAgICBsaW5lcyA9IHRhaWwoYm9vdGxvZyBpZiBib290bG9nIGVsc2Ugc2VsZi5tc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2djYzgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2djYzgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE3MzMxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ2NjOC5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIDU2M2IxZGE2ZTZhZTdhZjQ2Y2M4MzU0Y2FkYjVkYWI0MTY5ODlmMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIENoYW5nIDxtY2hhbmdAc3VzZS5jb20+CitEYXRlOiBNb24sIDI2IE1hciAyMDE4IDE2OjUyOjM0ICswODAwCitTdWJqZWN0OiBGaXggcGFja2VkLW5vdC1hbGlnbmVkIGVycm9yIG9uIEdDQyA4CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1doZW4gYnVpbGRpbmcgd2l0aCBHQ0MgOCwgdGhlcmUgYXJlIHNldmVyYWwgZXJyb3JzIHJlZ2FyZGluZyBwYWNrZWQtbm90LWFsaWduZWQuCisKKy4vaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaDo3OToxOiBlcnJvcjogYWxpZ25tZW50IDEgb2Yg4oCYc3RydWN0IGdydWJfZ3B0X3BhcnRlbnRyeeKAmSBpcyBsZXNzIHRoYW4gOCBbLVdlcnJvcj1wYWNrZWQtbm90LWFsaWduZWRdCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhlIGJ1aWxkIGVycm9yIGJ5IGNsZWFuaW5nIHVwIHRoZSBhbWJpZ3VpdHkgb2YgcGxhY2luZworYWxpZ25lZCBzdHJ1Y3R1cmUgaW4gYSBwYWNrZWQgb25lLiBJbiAic3RydWN0IGdydWJfYnRyZnNfdGltZSIgYW5kICJzdHJ1Y3QKK2dydWJfZ3B0X3BhcnRfdHlwZSIsIHRoZSBhbGlnbmVkIGF0dHJpYnV0ZSBzZWVtcyB0byBiZSBzdXBlcmZsdW91cywgYW5kIGFsc28KK2hhcyB0byBiZSBwYWNrZWQsIHRvIGVuc3VyZSB0aGUgc3RydWN0dXJlIGlzIGJpdC10by1iaXQgbWFwcGVkIHRvIHRoZSBmb3JtYXQKK2xhaWQgb24gZGlzay4gSSB0aGluayB3ZSBjb3VsZCBibGFtZSB0byBjb3B5IGFuZCBwYXN0ZSBlcnJvciBoZXJlIGZvciB0aGUKK21pc3Rha2UuIEluICJzdHJ1Y3QgZWZpX3ZhcmlhYmxlIiwgd2UgaGF2ZSB0byB1c2UgZ3J1Yl9lZmlfcGFja2VkX2d1aWRfdCwgYXMKK3RoZSBuYW1lIHN1Z2dlc3RzLiA6KQorCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIENoYW5nIDxtY2hhbmdAc3VzZS5jb20+CitUZXN0ZWQtYnk6IE1pY2hhZWwgQ2hhbmcgPG1jaGFuZ0BzdXNlLmNvbT4KK1Rlc3RlZC1ieTogUGF1bCBNZW56ZWwgPHBhdWxlcGFudGVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK1Jldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2dydWIuZ2l0L2NvbW1pdC8/aWQ9NTYzYjFkYTZlNmFlN2FmNDZjYzgzNTRjYWRiNWRhYjQxNjk4OWYwYQorLS0tCisgZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgICAgICAgICAgfCAyICstCisgaW5jbHVkZS9ncnViL2VmaWVtdS9ydW50aW1lLmggfCAyICstCisgaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaCAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvYnRyZnMuYyBiL2dydWItY29yZS9mcy9idHJmcy5jCitpbmRleCA0ODQ5YzFjLi5iZTE5NTQ0IDEwMDY0NAorLS0tIGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMKKysrKyBiL2dydWItY29yZS9mcy9idHJmcy5jCitAQCAtMTc1LDcgKzE3NSw3IEBAIHN0cnVjdCBncnViX2J0cmZzX3RpbWUKKyB7CisgICBncnViX2ludDY0X3Qgc2VjOworICAgZ3J1Yl91aW50MzJfdCBuYW5vc2VjOworLX0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDQpKSk7CisrfSBHUlVCX1BBQ0tFRDsKKyAKKyBzdHJ1Y3QgZ3J1Yl9idHJmc19pbm9kZQorIHsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZWZpZW11L3J1bnRpbWUuaCBiL2luY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oCitpbmRleCA5YjZiNzI5Li4zNmQyZGVkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9ncnViL2VmaWVtdS9ydW50aW1lLmgKKysrKyBiL2luY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oCitAQCAtMjksNyArMjksNyBAQCBzdHJ1Y3QgZ3J1Yl9lZmllbXVfcHR2X3JlbAorIAorIHN0cnVjdCBlZmlfdmFyaWFibGUKKyB7CistICBncnViX2VmaV9ndWlkX3QgZ3VpZDsKKysgIGdydWJfZWZpX3BhY2tlZF9ndWlkX3QgZ3VpZDsKKyAgIGdydWJfdWludDMyX3QgbmFtZWxlbjsKKyAgIGdydWJfdWludDMyX3Qgc2l6ZTsKKyAgIGdydWJfZWZpX3VpbnQzMl90IGF0dHJpYnV0ZXM7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaCBiL2luY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmgKK2luZGV4IDFiMzJmNjcuLjk2NjhhNjggMTAwNjQ0CistLS0gYS9pbmNsdWRlL2dydWIvZ3B0X3BhcnRpdGlvbi5oCisrKysgYi9pbmNsdWRlL2dydWIvZ3B0X3BhcnRpdGlvbi5oCitAQCAtMjgsNyArMjgsNyBAQCBzdHJ1Y3QgZ3J1Yl9ncHRfcGFydF90eXBlCisgICBncnViX3VpbnQxNl90IGRhdGEyOworICAgZ3J1Yl91aW50MTZfdCBkYXRhMzsKKyAgIGdydWJfdWludDhfdCBkYXRhNFs4XTsKKy19IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDgpKSk7CisrfSBHUlVCX1BBQ0tFRDsKKyB0eXBlZGVmIHN0cnVjdCBncnViX2dwdF9wYXJ0X3R5cGUgZ3J1Yl9ncHRfcGFydF90eXBlX3Q7CisgCisgI2RlZmluZSBHUlVCX0dQVF9QQVJUSVRJT05fVFlQRV9FTVBUWSBcCistLSAKK2NnaXQgdjEuMC00MS1nYzMzMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2gKaW5kZXggOTM1YzQ3Mi4uZmZjMmQ0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaApAQCAtNDMsMTkgKzQzLDE2IEBACiAgZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2dydWItY29yZS9nZW5tb2Quc2guaW4gYi9ncnViLWNvcmUvZ2VubW9kLnNoLmluCi1pbmRleCA3NmRmMGJiLi4zOWE5Y2ZjIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgotKysrIGIvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgotQEAgLTU5LDcgKzU5LDcgQEAgaWYgdGVzdCB4QFRBUkdFVF9BUFBMRV9DQ0AgIT0geDE7IHRoZW4KK0luZGV4OiBncnViLTIuMDIvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdydWItMi4wMi5vcmlnL2dydWItY29yZS9nZW5tb2Quc2guaW4KKysrKyBncnViLTIuMDIvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgorQEAgLTU2LDcgKzU2LDcgQEAgaWYgdGVzdCB4QFRBUkdFVF9BUFBMRV9MSU5LRVJAICE9IHgxOyB0aAogIAlpZiB0ZXN0IHhAcGxhdGZvcm1AICE9IHhlbXU7IHRoZW4KLSAJICAgIEBTVFJJUEAgLS1zdHJpcC11bm5lZWRlZCBcCisgCSAgICBAVEFSR0VUX1NUUklQQCAtLXN0cmlwLXVubmVlZGVkIFwKICAJCS1LIGdydWJfbW9kX2luaXQgLUsgZ3J1Yl9tb2RfZmluaSBcCiAtCQktSyBfZ3J1Yl9tb2RfaW5pdCAtSyBfZ3J1Yl9tb2RfZmluaSBcCiArCQktSyBfZ3J1Yl9tb2RfaW5pdCAtSyBfZ3J1Yl9tb2RfZmluaSAtSyAubW9kdWxlX2xpY2Vuc2UgXAogIAkJLVIgLm5vdGUuZ251LmdvbGQtdmVyc2lvbiAtUiAubm90ZS5HTlUtc3RhY2sgXAotIAkJLVIgLm5vdGUgLVIgLmNvbW1lbnQgJHRtcGZpbGUgfHwgZXhpdCAxCisgCQktUiAubm90ZSAtUiAuY29tbWVudCAtUiAuQVJNLmV4aWR4ICR0bXBmaWxlIHx8IGV4aXQgMQogIAlmaQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItYm9vdGNvbmZfMS4wMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1ib290Y29uZl8xLjAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGY4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItYm9vdGNvbmZfMS4wMC5iYgpAQCAtMCwwICsxLDI5IEBACitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorU1VNTUFSWSA9ICJCYXNpYyBncnViLmNmZyBmb3IgdXNlIGluIEVGSSBzeXN0ZW1zIgorCitSUFJPVklERVNfJHtQTn0gKz0gInZpcnR1YWwvZ3J1Yi1ib290Y29uZiIKKworaW5oZXJpdCBncnViLWVmaS1jZmcKKworUyA9ICIke1dPUktESVJ9IgorCitHUlVCX0NGRyA9ICIke1N9L2dydWItYm9vdGNvbmYiCitMQUJFTFMgPSAiYm9vdCIKKworUk9PVCA/PSAicm9vdD0vZGV2L3NkYTIiCisKK3B5dGhvbiBkb19jb25maWd1cmUoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdidWlsZF9lZmlfY2ZnJywgZCkKK30KKworZG9fY29uZmlndXJlW3ZhcmRlcHNdICs9ICJBUFBFTkQgUk9PVCIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vYm9vdAorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSQorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSS9CT09UCisJaW5zdGFsbCBncnViLWJvb3Rjb25mICR7RH0vYm9vdC9FRkkvQk9PVC9ncnViLmNmZworfQorCitGSUxFU18ke1BOfSA9ICIvYm9vdC9FRkkvQk9PVC9ncnViLmNmZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgppbmRleCAxMjhkYTE2Li43YmZjOGVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCkBAIC0zLDcgKzMsNyBAQAogR1JVQlBMQVRGT1JNID0gImVmaSIKIAogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBncnViLWVmaS1uYXRpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImRpZmZ1dGlscyBmcmVldHlwZSBncnViLWNvbW1vbiB2aXJ0dWFsL2dydWItYm9vdGNvbmYiCiAKIFNSQ19VUkkgKz0gIiBcCiAgICAgICAgICAgIGZpbGU6Ly9jZmcgXApAQCAtMTUsMTYgKzE1LDIyIEBACiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGltcG9ydCByZQogICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicpID09ICJncnViLWVmaSIgZWxzZSAiZ3J1Yi1lZmktIgogICAgIGlmIHRhcmdldCA9PSAieDg2XzY0IjoKICAgICAgICAgZ3J1YnRhcmdldCA9ICd4ODZfNjQnCi0gICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290eDY0LmVmaSIKKyAgICAgICAgZ3J1YmltYWdlID0gcHJlZml4ICsgImJvb3R4NjQuZWZpIgogICAgIGVsaWYgcmUubWF0Y2goJ2kuODYnLCB0YXJnZXQpOgogICAgICAgICBncnVidGFyZ2V0ID0gJ2kzODYnCi0gICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290aWEzMi5lZmkiCisgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290aWEzMi5lZmkiCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCcsIHRhcmdldCk6CisgICAgICAgIGdydWJ0YXJnZXQgPSAnYXJtNjQnCisgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290YWE2NC5lZmkiCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImdydWItZWZpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJSB0YXJnZXQpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImdydWItZWZpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJSB0YXJnZXQpCiAgICAgZC5zZXRWYXIoIkdSVUJfVEFSR0VUIiwgZ3J1YnRhcmdldCkKICAgICBkLnNldFZhcigiR1JVQl9JTUFHRSIsIGdydWJpbWFnZSkKKyAgICBwcmVmaXggPSAiZ3J1Yi1lZmktIiBpZiBwcmVmaXggPT0gIiIgZWxzZSAiIgorICAgIGQuc2V0VmFyKCJHUlVCX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKIH0KIAogaW5oZXJpdCBkZXBsb3kKQEAgLTM2LDEyICs0MiwzNiBAQAogIyBhbmQgbWFueSBvdGhlciBwbGFjZXMgaW4gdGhlIGdydWIgY29kZSB3aGVuIGNvbXBpbGVkIHdpdGggc29tZSBuYXRpdmUgZ2NjIGNvbXBpbGVycyAoc3BlY2lmaWNhbGx5LCBnZW50b28pCiBDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVduby1lcnJvcj10cmFtcG9saW5lcyIKIAorZG9fbWtpbWFnZSgpIHsKKwljZCAke0J9CisJIyBTZWFyY2ggZm9yIHRoZSBncnViLmNmZyBvbiB0aGUgbG9jYWwgYm9vdCBtZWRpYSBieSB1c2luZyB0aGUKKwkjIGJ1aWx0IGluIGNmZyBmaWxlIHByb3ZpZGVkIHZpYSB0aGlzIHJlY2lwZQorCWdydWItbWtpbWFnZSAtYyAuLi9jZmcgLXAgL0VGSS9CT09UIC1kIC4vZ3J1Yi1jb3JlLyBcCisJICAgICAgICAgICAgICAgLU8gJHtHUlVCX1RBUkdFVH0tZWZpIC1vIC4vJHtHUlVCX0lNQUdFX1BSRUZJWH0ke0dSVUJfSU1BR0V9IFwKKwkgICAgICAgICAgICAgICAke0dSVUJfQlVJTERJTn0KK30KKworYWRkdGFzayBta2ltYWdlIGJlZm9yZSBkb19pbnN0YWxsIGFmdGVyIGRvX2NvbXBpbGUKKworZG9fbWtpbWFnZV9jbGFzcy1uYXRpdmUoKSB7CisJOgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkvQk9PVAorCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFX1BSRUZJWH0ke0dSVUJfSU1BR0V9ICR7RH0vYm9vdC9FRkkvQk9PVC8ke0dSVUJfSU1BR0V9Cit9CisKIGRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQogCWluc3RhbGwgLW0gNzU1IGdydWItbWtpbWFnZSAke0R9JHtiaW5kaXJ9CiB9CiAKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKK2RvX2luc3RhbGxfY2xhc3MtdGFyZ2V0KCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgLUMgZ3J1Yi1jb3JlIGluc3RhbGwKKwogICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgogICAgIGZpbmQgIiR7RH0iIC1uYW1lIG1vZGluZm8uc2ggLXR5cGUgZiAtZXhlYyBcCiAgICAgICAgIHNlZCAtaSBcCkBAIC01MiwxNSArODIsMTAgQEAKIH0KIAogR1JVQl9CVUlMRElOID89ICJib290IGxpbnV4IGV4dDIgZmF0IHNlcmlhbCBwYXJ0X21zZG9zIHBhcnRfZ3B0IG5vcm1hbCBcCi0gICAgICAgICAgICAgICAgIGVmaV9nb3AgaXNvOTY2MCBzZWFyY2ggbG9hZGVudiB0ZXN0IgorICAgICAgICAgICAgICAgICBlZmlfZ29wIGlzbzk2NjAgY29uZmlnZmlsZSBzZWFyY2ggbG9hZGVudiB0ZXN0IgogCiBkb19kZXBsb3koKSB7Ci0JIyBTZWFyY2ggZm9yIHRoZSBncnViLmNmZyBvbiB0aGUgbG9jYWwgYm9vdCBtZWRpYSBieSB1c2luZyB0aGUKLQkjIGJ1aWx0IGluIGNmZyBmaWxlIHByb3ZpZGVkIHZpYSB0aGlzIHJlY2lwZQotCWdydWItbWtpbWFnZSAtYyAuLi9jZmcgLXAgL0VGSS9CT09UIC1kIC4vZ3J1Yi1jb3JlLyBcCi0JICAgICAgICAgICAgICAgLU8gJHtHUlVCX1RBUkdFVH0tZWZpIC1vIC4vJHtHUlVCX0lNQUdFfSBcCi0JICAgICAgICAgICAgICAgJHtHUlVCX0JVSUxESU59Ci0JaW5zdGFsbCAtbSA2NDQgJHtCfS8ke0dSVUJfSU1BR0V9ICR7REVQTE9ZRElSfQorCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFX1BSRUZJWH0ke0dSVUJfSU1BR0V9ICR7REVQTE9ZRElSfQogfQogCiBkb19kZXBsb3lfY2xhc3MtbmF0aXZlKCkgewpAQCAtNjksOSArOTQsMTEgQEAKIAogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9faW5zdGFsbCBiZWZvcmUgZG9fYnVpbGQKIAotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ncnViLyR7R1JVQl9UQVJHRVR9LWVmaSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ncnViIFwKLSAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ3J1Yi8ke0dSVUJfVEFSR0VUfS1lZmkgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ncnViIFwKKyAgICAgICAgICAgICAgIC9ib290L0VGSS9CT09ULyR7R1JVQl9JTUFHRX0gXAorICAgICAgICAgICAgICAgIgorCiAKICMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgdGhlIGJvb3Rsb2FkZXIgd2l0aCBhbiB4MzIgdXNlcmxhbmQKIElOU0FORV9TS0lQXyR7UE59X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCmluZGV4IDI4Zjk2YmIuLmE4ZjMzNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoIFwKIAkgICBmaWxlOi8vZml4LmJ1aWxkLndpdGguZ2NjLTcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2NjOC5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTExNmQxZjYwYzg0MGU2ZGJkNjdhYmJjOTlhY2I0NWQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjYwZWUxMzZmYmNlZTA4ODU4NTE2ZWQ0ZGUyYWQ4NzA2OGJmZTFiNmI4YjM3ODk2Y2UzNTI5ZmYwNTRhNzI2ZCIKQEAgLTQ3LDcgKzQ4LDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbZ3J1Yi1tb3VudF0gPSAiLS1lbmFibGUtZ3J1Yi1tb3VudCwtLWRpc2FibGUtZ3J1Yi1tb3VudCxmdXNlIgotUEFDS0FHRUNPTkZJR1tkZXZpY2UtbWFwcGVyXSA9ICItLWVuYWJsZS1kZXZpY2UtbWFwcGVyLC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyLGx2bTIiCitQQUNLQUdFQ09ORklHW2RldmljZS1tYXBwZXJdID0gIi0tZW5hYmxlLWRldmljZS1tYXBwZXIsLS1kaXNhYmxlLWRldmljZS1tYXBwZXIsbGliZGV2bWFwcGVyIgogCiAjIGdydWIyIGNyZWF0ZXMgaXRzIG93biBzZXQgb2YgLW5vc3RkaW5jIC8gLWlzeXN0ZW0gLyAtZmZyZWVzdGFuZGluZyBDRkxBR1MgYW5kCiAjIE9FJ3MgZGVmYXVsdCBCVUlMRF9DRkxBR1MgKGFzc2lnbmVkIHRvIENGTEFHUyBmb3IgbmF0aXZlIGJ1aWxkcykgZXRjLCBjb25mbGljdApAQCAtNjcsMTIgKzY4LDQgQEAKIAkke1N9L2F1dG9nZW4uc2ggKQogfQogCi0jIGdydWIgYW5kIGdydWItZWZpJ3Mgc3lzcm9vdC8ke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIgYXJlCi0jIGNvbmZsaWN0ZWQsIHJlbW92ZSBpdCBzaW5jZSBubyBvbmUgdXNlcyBpdC4KLVNZU1JPT1RfRElSU19CTEFDS0xJU1QgKz0gIiR7ZGF0YWRpcn0vZ3J1Yi9ncnViLW1rY29uZmlnX2xpYiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWVkaXRlbnYiCi0KLUZJTEVTXyR7UE59LWVkaXRlbnYgPSAiJHtiaW5kaXJ9L2dydWItZWRpdGVudiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1lZGl0ZW52IgogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIKaW5kZXggM2U2MWY2YS4uZTA5NzM3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIKQEAgLTEsNiArMSwxOCBAQAogcmVxdWlyZSBncnViMi5pbmMKIAotUkRFUEVORFNfJHtQTn0gKz0gImRpZmZ1dGlscyBmcmVldHlwZSIKK1JERVBFTkRTXyR7UE59LWNvbW1vbiArPSAiJHtQTn0tZWRpdGVudiIKK1JERVBFTkRTXyR7UE59ICs9ICJkaWZmdXRpbHMgZnJlZXR5cGUgJHtQTn0tY29tbW9uIgorCitSUFJPVklERVNfJHtQTn0tZWRpdGVudiArPSAiJHtQTn0tZWZpLWVkaXRlbnYiCisKK1BBQ0tBR0VTID0rICIke1BOfS1lZGl0ZW52ICR7UE59LWNvbW1vbiIKK0ZJTEVTXyR7UE59LWVkaXRlbnYgPSAiJHtiaW5kaXJ9L2dydWItZWRpdGVudiIKK0ZJTEVTXyR7UE59LWNvbW1vbiA9ICIgXAorICAgICR7YmluZGlyfSBcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtzYmluZGlyfSBcCisgICAgJHtkYXRhZGlyfS9ncnViIFwKKyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZ3J1Yi5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvQ09QWUlORy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9DT1BZSU5HLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWM3MGM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9DT1BZSU5HLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0KLWRpZmYgLXJ1TiBob3N0YXAtY29uZi0xLjAtb3JpZy9DT1BZSU5HIGhvc3RhcC1jb25mLTEuMC9DT1BZSU5HCi0tLS0gaG9zdGFwLWNvbmYtMS4wLW9yaWcvQ09QWUlORwkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAotKysrIGhvc3RhcC1jb25mLTEuMC9DT1BZSU5HCTIwMTAtMTItMDkgMTY6MzY6NDguMDAwMDAwMDAwICswODAwCi1AQCAtMCwwICsxLDM0MCBAQAotKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0rCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKLSsKLSsgQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgICAgICAgICAgICAgICAgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLSsgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0rCi0rCQkJICAgIFByZWFtYmxlCi0rCi0rICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCi0rZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLStMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCi0rc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKLStHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQotK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KLSt1c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5Ci0rdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvCi0reW91ciBwcm9ncmFtcywgdG9vLgotKwotKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAotK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKLStoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCi0rdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0Ci0raWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKLStpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCi0rCi0rICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCi0rYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgotK1RoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91Ci0rZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgotKwotKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgotK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAotK3lvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCi0rc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgotK3JpZ2h0cy4KLSsKLSsgIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKLSsoMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAotK2Rpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCi0rCi0rICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgotK3RoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCi0rc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlCi0rd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KLSt0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAotK2F1dGhvcnMnIHJlcHV0YXRpb25zLgotKwotKyAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKLStwYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCi0rcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQotK3Byb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQotK3BhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCi0rCi0rICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAotK21vZGlmaWNhdGlvbiBmb2xsb3cuCi0rDAotKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0rICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCi0rCi0rICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCi0rYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCi0rcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iCi0rbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKLSt0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAotK2VpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCi0rbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgotK3RoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgotKwotK0FjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Ci0rY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgotK3J1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KLStpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQotK1Byb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCi0rV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCi0rCi0rICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKLStzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKLStjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCi0rY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQotK25vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsKLSthbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KLSsKLStZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKLSt5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgotKwotKyAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgotK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKLStkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKLSthYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgotKwotKyAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKLSsgICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KLSsKLSsgICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCi0rICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQotKyAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAotKyAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCi0rCi0rICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKLSsgICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAotKyAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCi0rICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQotKyAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKLSsgICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgotKyAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwotKyAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAotKyAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCi0rICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQotKwwKLStUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCi0raWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKLSthbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KLSt0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCi0rc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91Ci0rZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCi0rb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCi0rdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKLStlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCi0rCi0rVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Ci0reW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCi0rZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCi0rY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KLSsKLStJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBQcm9ncmFtCi0rd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCi0rYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKLSt0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgotKwotKyAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCi0rdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mCi0rU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotKwotKyAgICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRhYmxlCi0rICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwotKyAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKLSsKLSsgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKLSsgICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKLSsgICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291cmNlIGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQotKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCi0rICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCi0rICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKLSsKLSsgICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKLSsgICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAgKFRoaXMgYWx0ZXJuYXRpdmUgaXMKLSsgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKLSsgICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAotKyAgICBhbiBvZmZlciwgaW4gYWNjb3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikKLSsKLStUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCi0rbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UKLStjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQotK2Fzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwotK2NvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGEKLStzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKLSthbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQotK2Zvcm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlCi0rb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKLStpdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCi0rCi0rSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwotK2FjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKLSthY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMKLStkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKLStjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgotKwwKLSsgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotK2V4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKLStvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKLSt2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCi0rSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKLSt0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaAotK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KLSsKLSsgIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAotK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCi0rZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCi0rcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQotK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQotK1Byb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCi0rYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwotK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgotKwotKyAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQotK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCi0rb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwotK3RoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCi0rcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgotK1lvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCi0rdGhpcyBMaWNlbnNlLgotKwotKyAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAotK2luZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCi0rY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgotK290aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKLStleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAotK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKLStMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Ci0rbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAotK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKLSthbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KLSt0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCi0rcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KLSsKLStJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKLSthbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCi0rYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKLStjaXJjdW1zdGFuY2VzLgotKwotK0l0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKLStwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQotK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKLStpbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKLStpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKLStnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCi0rdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKLStzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCi0rdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90Ci0raW1wb3NlIHRoYXQgY2hvaWNlLgotKwotK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bwotK2JlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgotKwwKLSsgIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCi0rY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCi0rb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQotK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwotK3Rob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcKLStjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKLSt0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KLSsKLSsgIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCi0rb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCi0rYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCi0rYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCi0rCi0rRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQotK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55Ci0rbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwotK2VpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0rU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgotK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLStGb3VuZGF0aW9uLgotKwotKyAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQotK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKLSt0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKLStTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKLSttYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscwotK29mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKLStvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KLSsKLSsJCQkgICAgTk8gV0FSUkFOVFkKLSsKLSsgIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQotK0ZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgotK09USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKLStQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAotK09SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwotK1RPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKLStQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKLStSRVBBSVIgT1IgQ09SUkVDVElPTi4KLSsKLSsgIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKLStXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCi0rUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKLStJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKLStPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECi0rVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCi0rWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKLStQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKLStQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCi0rCi0rCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwotKwwKLSsJICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwotKwotKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAotK3Bvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKLStmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KLSsKLSsgIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0Ci0rdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQotK2NvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0Ci0rdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCi0rCi0rICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+Ci0rICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+Ci0rCi0rICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSsKLSsKLStBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KLSsKLStJZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCi0rd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKLSsKLSsgICAgR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5ZWFyIG5hbWUgb2YgYXV0aG9yCi0rICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KLSsgICAgVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAotKyAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCi0rCi0rVGhlIGh5cG90aGV0aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycgc2hvdWxkIHNob3cgdGhlIGFwcHJvcHJpYXRlCi0rcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQotK2JlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQotK21vdXNlLWNsaWNrcyBvciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3VyIHByb2dyYW0uCi0rCi0rWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKLStzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZgotK25lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKLSsKLSsgIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlIHByb2dyYW0KLSsgIGBHbm9tb3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgotKwotKyAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTg5Ci0rICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQotKwotK1RoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0gaW50bwotK3Byb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UgbWF5Ci0rY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCi0rbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsCi0rUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwLWZ3LWxvYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwLWZ3LWxvYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MGJkYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcC1mdy1sb2FkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5ob2xnZXJzY2h1cmlnLmRlL3BhdGNoZXIuaHRtbAotIwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLS0tLSBob3N0YXAtdXRpbHMtMC4yLjQvaG9zdGFwX2Z3X2xvYWR+aG9zdGFwLWZ3LWxvYWQKLSsrKyBob3N0YXAtdXRpbHMtMC4yLjQvaG9zdGFwX2Z3X2xvYWQKLUBAIC02LDkgKzYsOSBAQAotICMgRmlybXdhcmUgaW1hZ2VzIGZvciB0aGUgY2FyZAotICMgVE9ETzogY291bGQgdHJ5IHRvIHNlbGVjdCBjb3JyZWN0IGZpcm13YXJlIHR5cGUgYXV0b21hdGljYWxseQotIAotLVBSST0vZXRjL3BjbWNpYS9QTTAxMDEwMi5IRVgKLS1TVEE9L2V0Yy9wY21jaWEvUkYwMTA4MDIuSEVYCi0tUFJJU00yX1NSRUM9L3Vzci9sb2NhbC9iaW4vcHJpc20yX3NyZWMKLStQUkk9L2V0Yy9wY21jaWEvcG0wMTAxMDIuaGV4Ci0rU1RBPS9ldGMvcGNtY2lhL3JmMDEwODA0LmhleAotK1BSSVNNMl9TUkVDPS91c3Ivc2Jpbi9wcmlzbTJfc3JlYwotIAotIHNldCAtZQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRhODJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi1tb2R1bGUgImhvc3RhcF9jcyIgb3B0cyAiY2hhbm5lbD0zIGl3X21vZGU9MiBlc3NpZD1hbnkgaWdub3JlX2Npc192Y2M9MSIKLQotY2FyZCAiQWN0aW9udGVjIDgwMkNJMiIKLSAgbWFuZmlkIDB4MTY2OCwgMHgwMTAxCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQWlyV2F5IDgwMi4xMSBBZGFwdGVyIChQQ01DSUEpIgotICAjdmVyc2lvbiAiQWlyV2F5IiwgIjgwMi4xMSBBZGFwdGVyIChQQ01DSUEpIgotICBtYW5maWQgMHgwMjYxLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBc3VzIFNwYWNlTGluayBXTDExMCIKLSAgIG1hbmZpZCAweDAyYWEsMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLSMjIGhhbmRoZWxkcy5vcmcgYnVnIDk2NAotY2FyZCAiQmVsa2luIEY1RDYwNjAgRXRoZXJuZXQiCi0gICAjdmVyc2lvbiAiUENNQ0lBIiwgIjExTSBXTEFOIENhcmQgdjIuNSIsICJJU0wzNzMwMFAiLCAiUmV2QSIKLSAgIG1hbmZpZCAweDAyNzQsIDB4MTYxMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgMTFNYnBzIFdpcmVsZXNzIFBDIENhcmQiCi0gIG1hbmZpZCAweDAyOGEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkNvbXBhcSBXTDEwMCAxMSBNYnBzIFdpcmVsZXNzIEFkYXB0ZXIiCi0gIG1hbmZpZCAweDAxMzgsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkNvbXBhcSBITlctMTAwIDExIE1icHMgV2lyZWxlc3MgQWRhcHRlciIKLSAgbWFuZmlkIDB4MDI4YSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERXTC02NTAiCi0gIHZlcnNpb24gIkQiLCAiTGluayBEV0wtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERSQy02NTAiCi0gIHZlcnNpb24gIkQiLCAiTGluayBEUkMtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERDRjY2MCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDA1Ci0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRmFyYWxsb24gU2t5TElORSIKLSAgdmVyc2lvbiAiSU5URVJTSUwiLCAiSEZBMzg0eC9JRUVFIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkh5cGVyTGluayBXaXJlbGVzcyBQQyBDYXJkIDExTWJwcyIKLSAgdmVyc2lvbiAiSHlwZXJMaW5rIiwgIldpcmVsZXNzIFBDIENhcmQgMTFNYnBzIgotICBiaW5kICJob3N0YXBfY3MiCi0KLSMgY2FyZCAiSW50ZXJzaWwgUFJJU00yIDExIE1icHMgV2lyZWxlc3MgQWRhcHRlciIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSMgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTEE0MTExIFNwZWN0cnVtMjQgV2lyZWxlc3MgTEFOIFBDIENhcmQiCi0gIHZlcnNpb24gIlN5bWJvbCBUZWNobm9sb2dpZXMiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXUEMxMSAxMU1icHMgODAyLjExYiBXTEFOIENhcmQiCi0gIHZlcnNpb24gIkluc3RhbnQgV2lyZWxlc3MgIiwgIiBOZXR3b3JrIFBDIENBUkQiLCAiVmVyc2lvbiAwMS4wMiIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdDRjExIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAyNzQsIDB4MzMwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICBiaW5kICJob3N0YXBfY3MiIAotCi0jIyBoYW5kaGVsZHMub3JnIGJ1ZyAjNzkwCi1jYXJkICJMaW5rc3lzIFdpcmVsZXNzIENvbXBhY3RGbGFzaCBDYXJkIFdDRjEyIgotICBtYW5maWQgMHgwMjhhLCAweDA2NzMKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdMQU4gQ0YgQ2FyZCIKLSAgbWFuZmlkIDB4MDI3NCwgMHgzMzAxCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTkVUR0VBUiBNQTcwMSBXaXJlbGVzcyBDRiBDYXJkIgotICBtYW5maWQgMHhkNjAxLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJOb3J0ZWwgTmV0d29ya3MgZU1vYmlsaXR5IDgwMi4xMSBXaXJlbGVzcyBBZGFwdGVyIgotICBtYW5maWQgMHgwMWViLCAweDA4MGEKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJQTEFORVggR2VvV2F2ZSBHVy1DRjExMCIKLSAgdmVyc2lvbiAiUExBTkVYIiwgIkdlb1dhdmUvR1ctQ0YxMTAiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUFJPWElNIExBTiBQQyBDQVJEIEhBUk1PTlkgODAyMTFCIgotICB2ZXJzaW9uICJQUk9YSU0iLCAiTEFOIFBDIENBUkQgSEFSTU9OWSA4MDIxMUIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUHJveGltIFJhbmdlTEFOL0RTIgotICB2ZXJzaW9uICJQUk9YSU0iLCJSYW5nZUxBTi1EUy9MQU4gUEMgQ0FSRCIKLSAgbWFuZmlkIDB4MDEyNiwgMHg4MDAwCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2FmZXdheSA4MDIuMTFiIFdpcmVsZXNzIEFkYXB0ZXIiCi0gIG1hbmZpZCAweGQ2MDEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNBTVNVTkcgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgdmVyc2lvbiAiU0FNU1VORyIsICIxMU1icHMgV0xBTiBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLSMgbmVlZHMgZmlybXdhcmUgdXBsb2FkIHZpYSBob3N0YXBfZndfbG9hZAotY2FyZCAiU2FuRGlzayBDb25uZWN0UGx1cyBPRU0gKDBNQikiCi0gICBtYW5maWQgMHhkNjAxLCAweDAwMTAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotIyBuZWVkcyBzcGVjaWFsIGFjdGl2YXRpb24gKD49aG9zdGFwIDAuMy4yIG9ubHkpIHBsdXMgZmlybXdhcmUgdXBsb2FkCi1jYXJkICJTYW5EaXNrIENvbm5lY3RQbHVzIHcvIE1lbW9yeSIKLSAgIHZlcnNpb24gIlNhbkRpc2siLCAiQ29ubmVjdFBsdXMiCi0gICBtYW5maWQgMHhkNjAxLCAweDAxMDEKLSAgIGJpbmQgImhvc3RhcF9jcyIgdG8gMAotIyAgIGJpbmQgImlkZS1jcyIgdG8gMQotCi1jYXJkICJTZW5hby9PcmlnbyA4MDIxMWIgV0xBTiBDYXJkIgotICAgbWFuZmlkIDB4MDAwYiwweDcxMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2l0ZWNvbSBXTC0wMDcgV0xBTiBDRiBDYXJkIgotICBtYW5maWQgMHhkNjAxLCAweDAwMDQKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTTUMyNjMyIDgwMi4xMSAocHJpc20yKSBDYXJkIgotICB2ZXJzaW9uICJTTUMiLCAiU01DMjYzMlciLCAiVmVyc2lvbiAwMS4wMiIsICIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU3BlZWRTdHJlYW0gU1MxMDIxIFdpcmVsZXNzIEFkYXB0ZXIiCi0gICN2ZXJzaW9uICJTaWVtZW5zIiwgIlNwZWVkU3RyZWFtIFdpcmVsZXNzIFBDTUNJQSIKLSAgbWFuZmlkIDB4MDJhYywgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWkNPTUFYIEFpclJ1bm5lci9YSS0zMDAiCi0gICN2ZXJzaW9uICJaQ09NQVgiLCAiQWlyUnVubmVyL1hJLTMwMCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWm9uZXQgWkNGMTEwMCIKLSAgbWFuZmlkIDB4MDAwYiwgMHg3MTAwCi0gIGJpbmQgImhvc3RhcF9jcyIKLSAgCi1jYXJkICJXaXJlbGVzcyBMQU4gQWRhcHRlciBWZXJzaW9uIDAxLjAyIgotICAgdmVyc2lvbiAiV2lyZWxlc3MiLCAiTEFOIEFkYXB0ZXIiLCAiVmVyc2lvbiAwMS4wMiIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQW1iaWNvbSBXTDExMDBDIDExTWJzIENhcmQgODAyLjExYiIKLSAgdmVyc2lvbiAiQW1iaUNvbSIsICJXTDExMDBDIDgwMi4xMWIgQ0YtQ2FyZCIsICIyLjIiCi0gIG1hbmZpZCAweGQ2MDEsMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQW1iaWNvbSBXTDExMDBDIDExTWJzIENhcmQgODAyLjExYiIKLSAgbWFuZmlkIDB4ZDYwMSwweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTYW5kaXNrIENvbm5lY3QgU0RXQ0ZCLTAwMCIKLSAgbWFuZmlkIDB4ZDYwMSwweDAwMDUKLSAgYmluZCAiaG9zdGFwX2NzIgotCi0jIENhcmRzIHdpdGggSW50ZXJzaWwgZmlybXdhcmUgKFByaXNtIGNoaXBzZXQpCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkIgotICB2ZXJzaW9uICJUaGUgTGlua3N5cyBHcm91cCwgSW5jLiIsICJJbnN0YW50IFdpcmVsZXNzIE5ldHdvcmsgUEMgQ2FyZCIsICJJU0wzNzMwMFAiLCAiUmV2QSIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIENvbXBhY3RGbGFzaCBXaXJlbGVzcyBDYXJkIgotICB2ZXJzaW9uICJMaW5rc3lzIiwgIldpcmVsZXNzIENvbXBhY3RGbGFzaCBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFDVElPTlRFQyBQUklTTSBXaXJlbGVzcyBMQU4gUEMgQ2FyZCIKLSAgdmVyc2lvbiAiQUNUSU9OVEVDIiwgIlBSSVNNIFdpcmVsZXNzIExBTiBQQyBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgVmVyc2lvbiAzIgotICBtYW5maWQgMHgwMjc0LDB4MTYxMwotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkJFTlEgQVdMMTAwIgotICB2ZXJzaW9uICJCRU5RIiwgIkFXTDEwMCBQQ01DSUEgQURBUFRFUiIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJQcmV0ZWMgV0xBTiIKLSAgdmVyc2lvbiAiUHJldGVjIiwgIkNvbXBhY3RXTEFOIENhcmQgODAyLjExYiIsICIyLjUiCi0gIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlRyZW5kTmV0IFRFVyBQQzE2IgotICBtYW5maWQgMHgwMjc0LCAweDE2MDEKLSAgYmluZCAiaG9zdGFwX2NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5jb25mLXVwc3RyZWFtIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5jb25mLXVwc3RyZWFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjczODVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZi11cHN0cmVhbQorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1kZXZpY2UgImhvc3RhcF9jcyIKLSAgIGNsYXNzICJuZXR3b3JrIiBtb2R1bGUgImhvc3RhcCIsICJob3N0YXBfY3MiCi0KLWNhcmQgIkludGVyc2lsIFBSSVNNMiBSZWZlcmVuY2UgRGVzaWduIDExTWIvcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJJTlRFUlNJTCIsICJIRkEzODR4L0lFRUUiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkNvbXBhcSBXTDEwMCAxMU1iL3MgV0xBTiBDYXJkIgotICAgbWFuZmlkIDB4MDEzOCwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkNvbXBhcSBXTDIwMCIKLSAgIHZlcnNpb24gIkNvbXBhcSIsICJXTDIwMF8xMU1icHNfV2lyZWxlc3NfUENJX0NhcmQiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkVNVEFDIEEyNDI0aSAxMU1icHMgV0xBTiBDYXJkIgotICAgbWFuZmlkIDB4YzI1MCwgMHgwMDAyCi0jICAgY2lzICJjaXMvRW10YWMuZGF0IgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJJbnN0YW50IFdpcmVsZXNzICIsICIgTmV0d29yayBQQyBDQVJEIiwgIlZlcnNpb24gMDEuMDIiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgVmVyIDIuNSAxMU1icHMgV0xBTiBDYXJkIgotICAgbWFuZmlkIDB4MDI3NCwgMHgxNjEyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgVmVyIDMgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAyNzQsIDB4MTYxMwotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdDRjEyIFdpcmVsZXNzIENvbXBhY3RGbGFzaCBDYXJkIgotICAgdmVyc2lvbiAiTGlua3N5cyIsICJXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERXTC02NTAgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIHZlcnNpb24gIkQiLCAiTGluayBEV0wtNjUwIDExTWJwcyBXTEFOIENhcmQiLCAiVmVyc2lvbiAwMS4wMiIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERSQy02NTAgMTFNYnBzIFdMQU4gQ2FyZCIKLSMgIHZlcnNpb24gIkQiLCAiTGluayBEUkMtNjUwIDExTWJwcyBXTEFOIENhcmQiLCAiVmVyc2lvbiAwMS4wMiIKLSAgIG1hbmZpZCAweDAyOGEsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJab29tQWlyIDQxMDAgMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIHZlcnNpb24gIlpvb21BaXIgMTFNYnBzIEhpZ2giLCAiUmF0ZSB3aXJlbGVzcyBOZXR3b3JraW5nIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBZGR0cm9uIEFXUC0xMDAgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIHZlcnNpb24gIkFkZHRyb24iLCAiQVdQLTEwMCBXaXJlbGVzcyBQQ01DSUEiLCAiVmVyc2lvbiAwMS4wMiIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2Ftc3VuZyBTV0wyMDAwLU4gMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAyNTAsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTTUMgMjYzMlcgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIHZlcnNpb24gIlNNQyIsICJTTUMyNjMyVyIsICJWZXJzaW9uIDAxLjAyIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJCcm9NYXggRnJlZXBvcnQgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIHZlcnNpb24gIkludGVyc2lsIiwgIlBSSVNNIDJfNSBQQ01DSUEgQURBUFRFUiIsICJJU0wzNzMwMFAiLCAiRXZhbC1SZXZBIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJaLUNvbSBYSTMwMCAxMU1iL3MgV0xBTiBDYXJkIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlpjb21heCBYSS0zMjVIIDIwMG1XIgotIyAgIHZlcnNpb24gIiAiLCAiSUVFRSA4MDIuMTEgV2lyZWxlc3MgTEFOL1BDIENhcmQiCi0gICBtYW5maWQgMHhkNjAxLCAweDAwMDUKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiM0NvbSBBaXJDb25uZWN0IFBDSSA3NzdBIgotICAgbWFuZmlkIDB4MDEwMSwgMHgwNzc3Ci0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlUuUy4gUm9ib3RpY3MgSUVFRSA4MDIuMTFiIFBDLUNBUkQiCi0gICB2ZXJzaW9uICJVLlMuIFJvYm90aWNzIiwgIklFRUUgODAyLjExYiBQQy1DQVJEIiwgIlZlcnNpb24gMDEuMDIiCi0jICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxvbmdzaGluZSBMQ1ItODUzMSAxMU1icHMgV0xBTiBQQ01DSUEgQ0FSRCIKLSAgIHZlcnNpb24gIk9FTSIsICJQUklTTTIgSUVFRSA4MDIuMTEgUEMtQ2FyZCIsICJWZXJzaW9uIDAxLjAyIgotIyAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJQaGlsaXBzIDgwMi4xMWIgV0xBTiBQQ01DSUEiCi0gICBtYW5maWQgMHgwMDBiLCAweDczMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUHJveGltIFJhbmdlTEFOIgotIyAgIHZlcnNpb24gIlBST1hJTSIsICJSYW5nZUxBTi1EUy9MQU4gUEMgQ0FSRCIKLSAgIG1hbmZpZCAweDAxMjYsIDB4ODAwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJCdWZmYWxvIFdMSS1DRi1TMTFHIgotICAgdmVyc2lvbiAiQlVGRkFMTyIsICJXTEktQ0YtUzExRyIKLSMgIG1hbmZpZCAweDAyNmYsIDB4MDMwYgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMZXZlbC1PbmUgV1BDLTAxMDAiCi0gICB2ZXJzaW9uICJEaWdpdGFsIERhdGEgQ29tbXVuaWNhdGlvbnMiLCAiV1BDLTAxMDAiLCAiVmVyc2lvbiAwMC4wMCIKLSAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJCZWxraW4gODAyLjExYiBXTEFOIFBDTUNJQSIKLSAgIHZlcnNpb24gIkJlbGtpbiIsICIxMU1icHMgV2lyZWxlc3MgTm90ZWJvb2sgTmV0d29yayBBZGFwdGVyIiwgIlZlcnNpb24gMDEuMDIiCi0gICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2VuYW8gU0wtMjAxMUNEL1NMLTIwMTFDRFBMVVMiCi0gICB2ZXJzaW9uICJJTlRFUlNJTCIsICJIRkEzODR4L0lFRUUiLCAiVmVyc2lvbiAwMS4wMiIKLSAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJGdWxib25kIEFpcmJvbmQgWEktMzAwQiIKLSAgIHZlcnNpb24gIiAiLCAiSUVFRSA4MDIuMTEgV2lyZWxlc3MgTEFOL1BDIENhcmQiCi0gICBtYW5maWQgMHhkNjAxLCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTmV0Z2VhciBNQTQwMSIKLSAgIHZlcnNpb24gIk5FVEdFQVIgTUE0MDEgV2lyZWxlc3MgUEMiLCAiQ2FyZCIsICJWZXJzaW9uIDAxLjAwIgotIyAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJELUxpbmsgRFdMLTY1MCBSZXYuIFAxIgotICAgdmVyc2lvbiAiRC1MaW5rIiwgIkRXTC02NTAgV2lyZWxlc3MgUEMgQ2FyZCBSZXZQIiwgIklTTDM3MTAxUC0xMCIsICJBMyIKLSMgICBtYW5maWQgMHgwMDBiLCAweDcxMTAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU29uaWNXQUxMIExvbmcgUmFuZ2UgV2lyZWxlc3MgQ2FyZCIKLSAgIHZlcnNpb24gIlNvbmljV0FMTCIsICJMb25nIFJhbmdlIFdpcmVsZXNzIENhcmQiLCAiSVNMMzcxMDBQIiwgIjEuMCIKLSAgIG1hbmZpZCAweDAwMGIsIDB4NzEwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTZW5hbyBOTC0yMDExQ0QgUExVUyBFeHQyIE1lcmN1cnkiCi0gICB2ZXJzaW9uICJXTEFOIiwgIjExTWJwc19QQy1DYXJkXzMuMCIsICJJU0wzNzEwMFAiLCAiRXZhbC1SZXZBIgotICAgbWFuZmlkIDB4MDAwYiwgMHg3MTAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFpcnZhc3QgV0wxMDAiCi0gICB2ZXJzaW9uICJBSVJWQVNUIiwgIklFRUUgODAyLjExYiBXaXJlbGVzcyBQQ01DSUEgQ2FyZCIsICJIRkEzODYzIgotICAgbWFuZmlkIDB4NTBjMiwgMHgwMDAxCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk1pY3Jvc29mdCBXaXJlbGVzcyBOb3RlYm9vayBBZGFwdGVyIE1OLTUyMCAxLjAuMyIKLSAgIHZlcnNpb24gIk1pY3Jvc29mdCIsICJXaXJlbGVzcyBOb3RlYm9vayBBZGFwdGVyIE1OLTUyMCIsICIiLCAiMS4wLjMiCi0gICBtYW5maWQgMHgwMmQyLCAweDAwMDEKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTkVUR0VBUiBNQTQwMVJBIgotICAgdmVyc2lvbiAiTkVUR0VBUiBNQTQwMVJBIFdpcmVsZXNzIFBDIiwgIkNhcmQiLCAiSVNMMzczMDBQIiwgIkV2YWwtUmV2QSIKLSAgIG1hbmZpZCAweDAwMGIsIDB4NzMwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBbGxpZWQgVGVsZXN5biBBVC1XQ0w0NTIiCi0gICB2ZXJzaW9uICJBbGxpZWQgVGVsZXN5biIsICJBVC1XQ0w0NTIgV2lyZWxlc3MgUENNQ0lBIFJhZGlvIiwgIlZlci4gMS4wMCIKLSAgIG1hbmZpZCAweGMwMGYsIDB4MDAwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJjb3JlZ2EgV0wgUENDTC0xMSIKLSAgIHZlcnNpb24gImNvcmVnYSIsICJXTCBQQ0NMLTExIiwgIklTTDM3MzAwUCIsICJSZXZBIgotICAgbWFuZmlkIDB4YzAwZiwgMHgwMDAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNhbkRpc2sgQ29ubmVjdFBsdXMiCi0gICB2ZXJzaW9uICJTYW5EaXNrIiwgIkNvbm5lY3RQbHVzIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMTAxCi0gICBiaW5kICJob3N0YXBfY3MiIHRvIDAKLSAgIGJpbmQgImlkZS1jcyIgdG8gMQotCi1jYXJkICJBU1VTIFdMLTEwMCA4MDExYiBXTEFOIFBDIENhcmQiCi0gICB2ZXJzaW9uICJBU1VTIiwgIjgwMl8xMWJfUENfQ0FSRF8yNSIsICJWZXJzaW9uIDAxLjAwIgotICAgbWFuZmlkIDB4MDJhYSwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlp5WGVsIFp5YWlyIEItMTAxIDgwMi4xMWIgV0xBTiBjYXJkIgotICAgdmVyc2lvbiAiICIsICJJRUVFIDgwMi4xMSBXaXJlbGVzcyBMQU4vUEMgQ2FyZCIKLSAgIG1hbmZpZCAweGQ2MDEsIDB4MDAxMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJXTEFOIFBSSVNNIFBDTUNJQSBDQVJEIDM3MzAwUCBSZXZCNiIKLSAgIHZlcnNpb24gIldMQU4iLCAiUFJJU00gUENNQ0lBIENBUkQiLCAiMzczMDBQIiwgIlJldmlzaW9uIEI2IgotICAgbWFuZmlkIDB4NTBjMiwgMHg3MzAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLQotIyBPcHRpb25hbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGhvc3RhcF9jcy5vCi0jIG1vZHVsZSAiaG9zdGFwX2NzIiBvcHRzICJjaGFubmVsPTMgaXdfbW9kZT0zIGVzc2lkPXRlc3QgaWdub3JlX2Npc192Y2M9MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MubW9kYWxpYXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLm1vZGFsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODQ4MzUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MubW9kYWxpYXMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIHByb2R1Y3QgaW5mbzogIlByZXRlYyIsICJDb21wYWN0V0xBTiBDYXJkIDgwMi4xMWIiLCAiMi41IgotYWxpYXMgcGNtY2lhOm0wMTU2YzAwMDJmMDZmbjAwcGZuMDBwYTFDQUREM0U1cGJFNjk3NjM2Q3BjN0E1QkZDRjFwZDAwMDAwMDAwIGhvc3RhcF9jcwotCi0jIG1hbnVmYWN0dXJlciBJRCB3aGljaCBleGlzdCBpbiBvcmlub2NvX2NzIEFORCBpbiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDAwQmM3MTAwZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMDBCYzczMDBmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAxMjZjODAwMGYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDEzOGMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMjUwYzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAyNzRjMTYxMmYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDI3NGMxNjEzZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMjhBYzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAyQUFjMDAwMmYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptNTBDMmM3MzAwZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm1ENjAxYzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bUQ2MDFjMDAwNWYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLQotIyBwcm9kdWN0IGluZm86ICJMaW5rc3lzIiwgIldpcmVsZXNzIENvbXBhY3RGbGFzaCBDYXJkIiwgIiIsICIiCi1hbGlhcyBwY21jaWE6bTAyOEFjMDY3M2YwNmZuMDBwZm4wMHBhMDczM0NDODFwYjBDNTJGMzk1cGMwMDAwMDAwMHBkMDAwMDAwMDAgaG9zdGFwX2NzCi0KLSMgcHJvZHVjdCBpbmZvOiJQTEFORVggQ09NTVVOSUNBVElPTiBJTkMiLCJQTEFORVggR1ctQ0YxMVggV2lyZWxlc3MgQ0YgQ2FyZCIsICIiLCAiIgotYWxpYXMgcGNtY2lhOm1ENjAxYzAwMTBmMDZmbjAwcGZuMDBwYTQ3MDNDRjY4cGJGQUQ3MzE4RHBjMDAwMDAwMDBwZDAwMDAwMDAwIGhvc3RhcF9jcwotCi0jIDB4MDE1NiwgMHgwMDAyIGFuZCAiVmVyc2lvbiAwMS4wMiIgb25seSBhcHBlYXIgZm9yIFByaXNtIGJhc2VkIGNhcmRzLgotYWxpYXMgcGNtY2lhOm0wMTU2YzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYzRCNzRCQUEwcGQwMDAwMDAwMCBob3N0YXBfY3MKLQotIyAiQlVGRkFMTyIsICJXTEktQ0YtUzExRyIsICIiLCAiIgotYWxpYXMgcGNtY2lhOm0wMjZGYzAzMEJmMDZmbjAwcGZuMDBwYTJERUNFQ0UzcGI4MjA2N0MxOHBjMDAwMDAwMDBwZDAwMDAwMDAwIGhvc3RhcF9jcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC1jb25mXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtY29uZl8xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZDRjNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC1jb25mXzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQ29uZmlndXJhdGlvbiBmaWxlcyBmb3IgSG9zdEFQICh3aWZpKSBkcml2ZXIiCi1ERVNDUklQVElPTiA9ICJQQ01DSUEtY3MgY29uZmlndXJhdGlvbiBmaWxlcyBmb3Igd2lyZWxlc3MgTEFOIGNhcmRzIGJhc2VkIG9uIEludGVyc2lsJ3MgUHJpc20yLzIuNS8zIGNoaXBzZXQuIgotU0VDVElPTiA9ICJrZXJuZWwvbW9kdWxlcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKLVBSID0gInIxNSIKLQotU1JDX1VSSSA9ICJmaWxlOi8vaG9zdGFwX2NzLm1vZGFsaWFzIFwKLSAgICAgICAgICAgZmlsZTovL0NPUFlJTkcucGF0Y2giCi0KLWluaGVyaXQgYWxsYXJjaAotCi1TID0gIiR7V09SS0RJUn0iCi0KLWRvX2NvbXBpbGUoKSB7Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9tb2Rwcm9iZS5kCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ob3N0YXBfY3MubW9kYWxpYXMgJHtEfSR7c3lzY29uZmRpcn0vbW9kcHJvYmUuZC9ob3N0YXBfY3MuY29uZgotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43LzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMtMC40LjcvMDAwMS1EZWZpbmUtX3UzMi1fX3MzMi1fX3UxNi1fX3MxNi1fX3U4LWluLXRlcm1zLW9mLWM5OS10LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDRkY2EzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMtMC40LjcvMDAwMS1EZWZpbmUtX3UzMi1fX3MzMi1fX3UxNi1fX3MxNi1fX3U4LWluLXRlcm1zLW9mLWM5OS10LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3NDJmYjExMGQ5ODQxYTA0YjNjZWQyNTZiMGJmODBmZjMwNGRjYWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMzEgQXVnIDIwMTUgMDU6NDU6MDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIF91MzIvX19zMzIvX191MTYvX19zMTYvX191OCBpbiB0ZXJtcyBvZiBjOTkgdHlwZXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSB3aXJlbGVzc19jb3B5LmggfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3dpcmVsZXNzX2NvcHkuaCBiL3dpcmVsZXNzX2NvcHkuaAotaW5kZXggODIwODI1OC4uMTE3MWEzNSAxMDA2NDQKLS0tLSBhL3dpcmVsZXNzX2NvcHkuaAotKysrIGIvd2lyZWxlc3NfY29weS5oCi1AQCAtODYsMTEgKzg2LDExIEBACi0gI2Vsc2UKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotLXR5cGVkZWYgX191aW50MzJfdCBfX3UzMjsKLS10eXBlZGVmIF9faW50MzJfdCBfX3MzMjsKLS10eXBlZGVmIF9fdWludDE2X3QgX191MTY7Ci0tdHlwZWRlZiBfX2ludDE2X3QgX19zMTY7Ci0tdHlwZWRlZiBfX3VpbnQ4X3QgX191ODsKLSt0eXBlZGVmIHVfaW50MzJfdCBfX3UzMjsKLSt0eXBlZGVmIGludDMyX3QgX19zMzI7Ci0rdHlwZWRlZiB1X2ludDE2X3QgX191MTY7Ci0rdHlwZWRlZiBpbnQxNl90IF9fczE2OwotK3R5cGVkZWYgdV9pbnQ4X3QgX191ODsKLSAjaWZuZGVmIF9fdXNlcgotICNkZWZpbmUgX191c2VyCi0gI2VuZGlmIC8qIF9fdXNlciAqLwotLS0gCi0yLjUuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43L2xkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43L2xkZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlOTlkMGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy9sZGZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotT2JleSBMREZMQUdTCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGhvc3RhcC11dGlscy0wLjQuNy5vcmlnL01ha2VmaWxlCi0rKysgaG9zdGFwLXV0aWxzLTAuNC43L01ha2VmaWxlCi1AQCAtMTQsMTcgKzE0LDE3IEBAIHByaXNtMl9zcmVjLm86IHByaXNtMl9zcmVjLmMgdXRpbC5oCi0gaG9zdGFwX2NyeXB0X2NvbmY6IGhvc3RhcF9jcnlwdF9jb25mLmMKLQotIGhvc3RhcF9kaWFnOiBob3N0YXBfZGlhZy5vIHV0aWwubwotLQkkKENDKSAtbyBob3N0YXBfZGlhZyAkKENGTEFHUykgaG9zdGFwX2RpYWcubyB1dGlsLm8KLSsJJChDQykgLW8gaG9zdGFwX2RpYWcgJChDRkxBR1MpICQoTERGTEFHUykgaG9zdGFwX2RpYWcubyB1dGlsLm8KLQotIGhvc3RhcF9kaWFnLm86IGhvc3RhcF9kaWFnLmMgdXRpbC5oCi0KLSB1dGlsLm86IHV0aWwuYyB1dGlsLmgKLQotIGhvc3RhcF9pb19kZWJ1ZzogaG9zdGFwX2lvX2RlYnVnLmMKLS0JJChDQykgLW8gaG9zdGFwX2lvX2RlYnVnICQoQ0ZMQUdTKSBob3N0YXBfaW9fZGVidWcuYwotKwkkKENDKSAtbyBob3N0YXBfaW9fZGVidWcgJChDRkxBR1MpICQoTERGTEFHUykgaG9zdGFwX2lvX2RlYnVnLmMKLQotIGhvc3RhcF9yaWQ6IGhvc3RhcF9yaWQubyB1dGlsLm8KLS0JJChDQykgLW8gaG9zdGFwX3JpZCAkKENGTEFHUykgaG9zdGFwX3JpZC5vIHV0aWwubwotKwkkKENDKSAtbyBob3N0YXBfcmlkICQoQ0ZMQUdTKSAkKExERkxBR1MpIGhvc3RhcF9yaWQubyB1dGlsLm8KLQotIGhvc3RhcF9yaWQubzogaG9zdGFwX3JpZC5jIHV0aWwuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ5OGUzYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlciBtb2RlIGhlbHBlcnMgZm9yIHRoZSBob3N0YXAgZHJpdmVyIgotREVTQ1JJUFRJT04gPSAiVGhlIGhvc3RhcCBkcml2ZXIgc3VwcG9ydHMgSG9zdCBBUCBtb2RlLCBpdCBhbGxvd3MgZm9yIElFRUUgODAyLjExIFwKLW1hbmFnZW1lbnQgZnVuY3Rpb25zIG9uIHRoZSBob3N0IGNvbXB1dGVyIGFuZCBhbGxvd3MgdGhlIHN5c3RlbSB0byBhY3QgYXMgYW4gYWNjZXNzIHBvaW50LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vdzEuZmkiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAotCQkJZmlsZTovL3V0aWwuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTk7bWQ1PWQzYjkyODA4NTEzMDJlNWJhMzRlNWZiNzE3NDg5YjZkIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1QUiA9ICJyNCIKLQotU1JDX1VSSSA9ICJodHRwczovL3cxLmZpL3JlbGVhc2VzL2hvc3RhcC11dGlscy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaG9zdGFwLWZ3LWxvYWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX3UzMi1fX3MzMi1fX3UxNi1fX3MxNi1fX3U4LWluLXRlcm1zLW9mLWM5OS10LnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS9ob3N0YXAtdXRpbHMtJHtQVn0iCi0KLUJJTkFSSUVTID0gImhvc3RhcF9jcnlwdF9jb25mIGhvc3RhcF9kaWFnIGhvc3RhcF9md19sb2FkIGhvc3RhcF9pb19kZWJ1ZyBcCi0JICAgIGhvc3RhcF9yaWQgcHJpc20yX3BhcmFtIHByaXNtMl9zcmVjIHNwbGl0X2NvbWJpbmVkX2hleCIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9LwotCWZvciBmIGluICR7QklOQVJJRVN9Ci0JZG8KLQkJaW5zdGFsbCAtbSAwNzU1ICRmICR7RH0ke3NiaW5kaXJ9LwotCWRvbmUKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlsc18wLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHNfMC40LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNTQ4MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlsc18wLjQuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBob3N0YXAtdXRpbHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9sZGZsYWdzLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImFmZTA0MTU4MWI4ZjAxNjY2ZTM1M2JlYzIwOTE3Yzg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2ZjU5OGQ4ZTM1NmMxNjIwZmEwMDllY2EwYTcwMGJmMTEwNWUxNjgxN2VlZmQ3N2Q4OTE5OTQyNjEwMDkzNTUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL2xpYmFjcGlfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL2xpYmFjcGlfZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggODZhMTZjMi4uMDZmMjBlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvbGliYWNwaV9maXhfZm9yX3gzMi5wYXRjaApAQCAtMyw5ICszLDEwIEBACiBGaXggbGliYWNwaSBmb3IgeDMyCiAgICAgCiAgICAgbGliYWNwaSBkb2Vzbid0IHVzZSBiYXNlX2xpYmRpciBmb3IgaW5zdGFsbC4gIFRoaXMgcGF0Y2ggYWRkcwotICAgIGJhc2VfbGliZGlyIHN1cHBvcnQgc28gdGhhdCB4MzIgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgcHJvcGVybHkuCisgICAgbGliZGlyIHN1cHBvcnQgc28gdGhhdCB4MzIgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgcHJvcGVybHkuCiAKIFBhdGNoIFJlY2VpdmVkIGZyb206ICBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgorVXBkYXRlZCBieTogUmljYXJkbyBTYWx2ZXRpIDxyaWNhcmRvQG9wZW5zb3VyY2Vmb3VuZHJpZXMuY29tPiAyMDE4LzAyLzAzCiAKIFNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDUKIApAQCAtMTMsMTggKzE0LDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBsaWJhY3BpLTAuMi5vcmlnL01ha2VmaWxlCiArKysgbGliYWNwaS0wLjIvTWFrZWZpbGUKLUBAIC04LDYgKzgsMTAgQEAgU1JDX3Rlc3QgPSB0ZXN0LWxpYmFjcGkuYyBsaWJhY3BpLmMgbGlzdAotIE9CSiA9ICR7U1JDOi5jPS5vfQotIE9CSl90ZXN0ID0gJHtTUkNfdGVzdDouYz0ub30KLSAKLStpZm5kZWYgYmFzZV9saWJkaXIKLStiYXNlX2xpYmRpcj0vbGliCi0rZW5kaWYKLSsKLSBhbGw6IG9wdGlvbnMgbGliYWNwaS5hIGxpYmFjcGkuc28gdGVzdC1saWJhY3BpCi0gCi0gb3B0aW9uczoKLUBAIC00MiwxMyArNDYsMTMgQEAgaW5zdGFsbDogYWxsCitAQCAtNDIsMTMgKzQyLDEzIEBAIGluc3RhbGw6IGFsbAogIAlAbWtkaXIgLXAgJHtERVNURElSfSR7UFJFRklYfS9pbmNsdWRlCiAgCUBjcCAtZiBsaWJhY3BpLmggJHtERVNURElSfSR7UFJFRklYfS9pbmNsdWRlCiAgCUBjaG1vZCA2NDQgJHtERVNURElSfSR7UFJFRklYfS9pbmNsdWRlL2xpYmFjcGkuaApAQCAtMzUsMTMgKzI1LDEzIEBACiAtCUBjcCAtZiAke1NPTkFNRX0gJHtERVNURElSfSR7UFJFRklYfS9saWIvCiAtCUBjaG1vZCA2NDQgJHtERVNURElSfSR7UFJFRklYfS9saWIvJHtTT05BTUV9CiAtCUBsbiAtcyAke1NPTkFNRX0gJHtERVNURElSfSR7UFJFRklYfS9saWIvbGliYWNwaS5zbwotKwlAZWNobyBpbnN0YWxsaW5nIGxpYnJhcnkgdG8gJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9Ci0rCUBta2RpciAtcCAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0KLSsJQGNwIC1mIGxpYmFjcGkuYSAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0KLSsJQGNobW9kIDY0NCAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0vbGliYWNwaS5hCi0rCUBjcCAtZiAke1NPTkFNRX0gJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9LwotKwlAY2htb2QgNjQ0ICR7REVTVERJUn0ke1BSRUZJWH0ke2Jhc2VfbGliZGlyfS8ke1NPTkFNRX0KLSsJQGxuIC1zICR7U09OQU1FfSAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0vbGliYWNwaS5zbworKwlAZWNobyBpbnN0YWxsaW5nIGxpYnJhcnkgdG8gJHtERVNURElSfSR7TElCRElSfQorKwlAbWtkaXIgLXAgJHtERVNURElSfSR7TElCRElSfQorKwlAY3AgLWYgbGliYWNwaS5hICR7REVTVERJUn0ke0xJQkRJUn0KKysJQGNobW9kIDY0NCAke0RFU1RESVJ9JHtMSUJESVJ9L2xpYmFjcGkuYQorKwlAY3AgLWYgJHtTT05BTUV9ICR7REVTVERJUn0ke0xJQkRJUn0vCisrCUBjaG1vZCA2NDQgJHtERVNURElSfSR7TElCRElSfS8ke1NPTkFNRX0KKysJQGxuIC1zICR7U09OQU1FfSAke0RFU1RESVJ9JHtMSUJESVJ9L2xpYmFjcGkuc28KICAJQGVjaG8gaW5zdGFsbGluZyB0ZXN0LWxpYmFjcGkgdG8gJHtERVNURElSfSR7UFJFRklYfS9iaW4KICAJQG1rZGlyIC1wICR7REVTVERJUn0ke1BSRUZJWH0vYmluCiAgCUBjcCAtZiB0ZXN0LWxpYmFjcGkgJHtERVNURElSfSR7UFJFRklYfS9iaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvbGliYWNwaV8wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2xpYmFjcGlfMC4yLmJiCmluZGV4IDZkYzY2ZWEuLjVlN2Y3ZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvbGliYWNwaV8wLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9saWJhY3BpXzAuMi5iYgpAQCAtMjgsNSArMjgsNSBAQAogVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCiAKIGRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtleGVjX3ByZWZpeH0KKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke2V4ZWNfcHJlZml4fSBMSUJESVI9JHtsaWJkaXJ9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKaW5kZXggNTVlZGZlYS4uYTdlNDQ1NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaApAQCAtMTMsMTEgKzEzLDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLUluZGV4OiBwY2l1dGlscy0zLjUuNC9NYWtlZmlsZQorSW5kZXg6IHBjaXV0aWxzLTMuNS42L01ha2VmaWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGNpdXRpbHMtMy41LjQub3JpZy9NYWtlZmlsZQotKysrIHBjaXV0aWxzLTMuNS40L01ha2VmaWxlCi1AQCAtOTYsNyArOTUsNyBAQCBleGFtcGxlOiBleGFtcGxlLm8gbGliLyQoUENJTElCKQorLS0tIHBjaXV0aWxzLTMuNS42Lm9yaWcvTWFrZWZpbGUKKysrKyBwY2l1dGlscy0zLjUuNi9NYWtlZmlsZQorQEAgLTk2LDcgKzk2LDcgQEAgZXhhbXBsZTogZXhhbXBsZS5vIGxpYi8kKFBDSUxJQikKICBleGFtcGxlLm86IGV4YW1wbGUuYyAkKFBDSUlOQykKICAKICAlOiAlLm8KQEAgLTI2LDEyICsyNiwxMiBAQAogIAogICUuOCAlLjc6ICUubWFuCiAgCU09YGVjaG8gJChEQVRFKSB8IHNlZCAncy8tMDEtLy1KYW51YXJ5LS87cy8tMDItLy1GZWJydWFyeS0vO3MvLTAzLS8tTWFyY2gtLztzLy0wNC0vLUFwcmlsLS87cy8tMDUtLy1NYXktLztzLy0wNi0vLUp1bmUtLztzLy0wNy0vLUp1bHktLztzLy0wOC0vLUF1Z3VzdC0vO3MvLTA5LS8tU2VwdGVtYmVyLS87cy8tMTAtLy1PY3RvYmVyLS87cy8tMTEtLy1Ob3ZlbWJlci0vO3MvLTEyLS8tRGVjZW1iZXItLztzL1woLipcKS1cKC4qXCktXCguKlwpL1wzIFwyIFwxLydgIDsgc2VkIDwkPCA+JEAgInMvQFRPREFZQC8kJE0vO3MvQFZFUlNJT05AL3BjaXV0aWxzLSQoVkVSU0lPTikvO3MjQElEU0RJUkAjJChJRFNESVIpIyIKLUluZGV4OiBwY2l1dGlscy0zLjUuNC9saWIvY29uZmlndXJlCitJbmRleDogcGNpdXRpbHMtMy41LjYvbGliL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBjaXV0aWxzLTMuNS40Lm9yaWcvbGliL2NvbmZpZ3VyZQotKysrIHBjaXV0aWxzLTMuNS40L2xpYi9jb25maWd1cmUKLUBAIC0xNCw2ICsxNCwxMCBAQCBlY2hvX24oKSB7Ci0gCWZpCistLS0gcGNpdXRpbHMtMy41LjYub3JpZy9saWIvY29uZmlndXJlCisrKysgcGNpdXRpbHMtMy41LjYvbGliL2NvbmZpZ3VyZQorQEAgLTksNiArOSwxMCBAQCBlY2hvX24oKSB7CisgCXByaW50ZiAnJXMnICIkKiIKICB9CiAgCiArVkVSU0lPTj0kMQpAQCAtNDEsNyArNDEsNyBAQAogIGlmIFsgLXogIiRWRVJTSU9OIiAtbyAteiAiJElEU0RJUiIgXSA7IHRoZW4KICAJZWNobyA+JjIgIlBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZnJvbSB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIgogIAlleGl0IDEKLUBAIC0yMSw4ICsyNSw4IEBAIGZpCitAQCAtMTYsOCArMjAsOCBAQCBmaQogIAogIGVjaG9fbiAiQ29uZmlndXJpbmcgbGlicGNpIGZvciB5b3VyIHN5c3RlbS4uLiIKICBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KQEAgLTUyLDcgKzUyLDcgQEAKICAJcmVhbHN5cz0iJHN5cyIKICAJaWYgWyAiJHN5cyIgPSAiQUlYIiAtYSAteCAvdXNyL2Jpbi9vc2xldmVsIC1hIC14IC91c3Ivc2Jpbi9sc2F0dHIgXQogIAl0aGVuCi1AQCAtMzAsNyArMzQsNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KK0BAIC0yNSw3ICsyOSw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgogIAkJcHJvYz1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFpbGFibGUgLUYgbmFtZSB8IGhlYWQgLTFgCiAgCQljcHU9YC91c3Ivc2Jpbi9sc2F0dHIgLUYgdmFsdWUgLWwgJHByb2MgLWEgdHlwZSB8IHNlZCAncy9fLiovLydgCiAgCWVsc2UKQEAgLTYxLDcgKzYxLDcgQEAKICAJZmkKICAJaWYgWyAiJHN5cyIgPSAiR05VL2tGcmVlQlNEIiAtbyAiJHN5cyIgPSAiRHJhZ29uRmx5IiBdCiAgCXRoZW4KLUBAIC00MCw3ICs0NCw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgorQEAgLTM1LDcgKzM5LDcgQEAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCiAgCXRoZW4KICAJCXN5cz1jeWd3aW4KICAJZmkKQEAgLTcwLDcgKzcwLDcgQEAKICBmaQogIFsgLW4gIiRSRUxFQVNFIiBdICYmIHJlbD0iJHtSRUxFQVNFfSIKICAjIENBVkVBVDogdHIgb24gU29sYXJpcyBpcyBhIGJpdCB3ZWlyZCBhbmQgdGhlIGV4dHJhIFtdIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KLUBAIC00OSw2ICs1Myw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14KK0BAIC00NCw2ICs0OCw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14KICBzeXM9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAogIGVjaG8gIiAkaG9zdCAkcmVsICRjcHUgJHN5cyIKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTFmZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKLXRvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKLUhPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJ6bGliIGttb2QiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjM4ZDk5NjljYzBkZThiOTEwNWQ5NzIwMDdkOWQ1NDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQ2MmY4ZmExOTJmOTBlNjFjMzVhNmZjMTVmZjNjYjlhN2E3OTJmNzgyNDA3YWNjNDJlZjY3ODE3YzU5MzlmNSIKLQotaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKLQotUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCi0KLSMgc2VlIGNvbmZpZ3VyZS5wYXRjaAotZG9fY29uZmlndXJlICgpIHsKLQkoCi0JICBjZCBsaWIgJiYgXAotCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKLQkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQotCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9Ci0JKQotfQotCi1leHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKLWV4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCi1leHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKLWV4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgotCi0jIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKLUhPU1RbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKLUZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgotRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKLVNVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCi1ERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxOGI3ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKK3RvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKK0hPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJ6bGliIGttb2QiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGU1MjI3ODM5OWI3YjM1ZmNmYzAzMWJjMDVkYTgwYTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjM0NmVlYjkwY2NlMDkxMGMwNWI4NzdmZTQ5ZWFkYzc2MGZhMDg0YzA0NTVmZDMxM2UzOWQ0YjJjMmQ0YmIyMSIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKKworUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCisKKyMgc2VlIGNvbmZpZ3VyZS5wYXRjaAorZG9fY29uZmlndXJlICgpIHsKKwkoCisJICBjZCBsaWIgJiYgXAorCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKKwkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQorCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9CisJKQorfQorCitleHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKK2V4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCitleHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKK2V4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgorCisjIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKK0hPU1RbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKKworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKK0ZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgorRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKK1NVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCitERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9tYWtlZmlsZV9yYWNlLnBhdGNoCmluZGV4IGY1YTUxOGYuLjRjNWViYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9tYWtlZmlsZV9yYWNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9tYWtlZmlsZV9yYWNlLnBhdGNoCkBAIC0xNiwyMCArMTYsNiBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHBjbWNpYXV0aWxzLTAxOC5vcmlnL01ha2VmaWxlCiArKysgcGNtY2lhdXRpbHMtMDE4L01ha2VmaWxlCi1AQCAtMjQ5LDYgKzI0OSw5IEBAICQoUENNQ0lBX1NPQ0tFVF9TVEFSVFVQKTogJChMSUJDKSBzcmMvc3QKLSB5YWNjX2NvbmZpZy5vIGxleF9jb25maWcubzogJS5vOiAlLmMgc3JjL3lhY2NfY29uZmlnLmgKLSAJJChDQykgLWMgLU1EIC1PIC1waXBlICQoQ1BQRkxBR1MpICQ8Ci0gCi0rc3JjL2xleF9jb25maWcubyA6IHNyYy9sZXhfY29uZmlnLmMgc3JjL3lhY2NfY29uZmlnLmgKLSsJJChRVUlFVCkgJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8Ci0rCi0gZGVidWd0b29sczogY2NkdiAkKENCRFVNUCkgJChDSVNEVU1QKQotIAotICQoQ0JEVU1QKTogJChMSUJDKSBkZWJ1Zy9jYmR1bXAubwotSW5kZXg6IHBjbWNpYXV0aWxzLTAxOC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBjbWNpYXV0aWxzLTAxOC5vcmlnL01ha2VmaWxlCi0rKysgcGNtY2lhdXRpbHMtMDE4L01ha2VmaWxlCiBAQCAtMjQ2LDggKzI0Niw4IEBAICQoUENNQ0lBX1NPQ0tFVF9TVEFSVFVQKTogJChMSUJDKSBzcmMvc3QKICAJJChRVUlFVCkgJChMRCkgJChMREZMQUdTKSAtbyAkQCAkKENSVDApIHNyYy9zdGFydHVwLm8gc3JjL3lhY2NfY29uZmlnLm8gc3JjL2xleF9jb25maWcubyAkKExJQl9PQkpTKSAkKEFSQ0hfTElCX09CSlMpCiAgCSQoUVVJRVQpICQoU1RSSVBDTUQpICRACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQxOTUzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTmlvcyBJSSBmb3IgTUFYMTAgMTBtNTAgYm9hcmQgcmVxdWlyZXMgdXBkYXRlIHRvIAotaXRzIGRldmljZSB0cmVlIHRvIGVuYWJsZSBDUFUgZHJpdmVyIGR1cmluZwotdS1ib290IHByZS1yZWxvY2F0aW9uLiBUaGlzIHBhdGNoIHRhZyB0aGUgQ1BVIAotd2l0aCBkbS1wcmUtcmVsb2MgZmxhZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogR2FuLCBZYXUgV2FpIDx5YXUud2FpLmdhbkBpbnRlbC5jb20+Ci0KLS0tLQotIGFyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzIGIvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCi1pbmRleCAwNWVhYzMwLi40NjFhZTY4IDEwMDY0NAotLS0tIGEvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCi0rKysgYi9hcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMKLUBAIC0xOSw2ICsxOSw3IEBACi0gCQkjc2l6ZS1jZWxscyA9IDwwPjsKLSAKLSAJCWNwdTogY3B1QDAgewotKwkJCXUtYm9vdCxkbS1wcmUtcmVsb2M7Ci0gCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKLSAJCQljb21wYXRpYmxlID0gImFsdHIsbmlvczItMS4xIjsKLSAJCQlyZWcgPSA8MHgwMDAwMDAwMD47Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaAppbmRleCBjZWE1MmI3Li5lY2FhMTc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCkBAIC01LDE1ICs1LDE1IEBACiAKIFNpZ25lZC1vZmYtYnk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcgYi9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZwotaW5kZXggNGUyYjcwNS4uYjAyYWIxZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCi0rKysgYi9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZwotQEAgLTksNiArOSw3IEBAIENPTkZJR19IVVNIX1BBUlNFUj15Ci0gQ09ORklHX0NNRF9JMkM9eQorSW5kZXg6IGdpdC9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCisrKysgZ2l0L2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCitAQCAtMTIsNiArMTIsNyBAQCBDT05GSUdfQ01EX1BDST15CisgQ09ORklHX0NNRF9TQVRBPXkKICBDT05GSUdfQ01EX1VTQj15CiAgIyBDT05GSUdfQ01EX1NFVEVYUFIgaXMgbm90IHNldAogK0NPTkZJR19DTURfREhDUD15CiAgQ09ORklHX0NNRF9NSUk9eQogIENPTkZJR19DTURfUElORz15Ci0gQ09ORklHX0NNRF9FWFQyPXkKKyBDT05GSUdfQ01EX0RBVEU9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjA5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJlNTEyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjA5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgotU0VDVElPTiA9ICJib290bG9hZGVycyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PWEyYzY3OGNmZDRhNGQ5NzEzNTU4NWNhZDkwODU0MWM2IgotUEUgPSAiMSIKLQotIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQotIyByZXBvIGR1cmluZyBwYXJzZQotU1JDUkVWID0gImM5OGFjMzQ4N2U0MTNjNzFlNWQzNjMyMmVmMzMyNGIyMWM2ZjYwZjkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCi0gICAgZmlsZTovL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIFwKLSAgICBmaWxlOi8vMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxOC4wMS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIwNzNlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgorU0VDVElPTiA9ICJib290bG9hZGVycyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PWEyYzY3OGNmZDRhNGQ5NzEzNTU4NWNhZDkwODU0MWM2IgorUEUgPSAiMSIKKworIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQorIyByZXBvIGR1cmluZyBwYXJzZQorU1JDUkVWID0gImYzZGQ4N2UwYjk4OTk5YTc4ZTUwMGU4YzZkMmIwNjNlYmFkZjUzNWEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCisgICAgZmlsZTovL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjA5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZmM1NjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKLURFUEVORFMgPSAib3BlbnNzbCIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZwotCi0JIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAotCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKLQkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgotCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKLQotCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCi0JbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMwMDhiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjAxLmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBpbWFnZSBjcmVhdGlvbiB0b29sIgorREVQRU5EUyA9ICJvcGVuc3NsIgorCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIHNhbmRib3hfZGVmY29uZmlnCisKKwkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCisJIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAorCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCisJc2VkIC1pICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgLmNvbmZpZworCisJb2VfcnVubWFrZSBjcm9zc190b29scyBOT19TREw9MQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1raW1hZ2UKKwlsbiAtc2YgdWJvb3QtbWtpbWFnZSAke0R9JHtiaW5kaXJ9L21raW1hZ2UKK30KKworUkRFUEVORFNfJHtQTn0gKz0gImR0YyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE4LjAxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTcuMDkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOC4wMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvRml4LU5VTEwtcG9pbnRlci1jcmFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZmRjNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvRml4LU5VTEwtcG9pbnRlci1jcmFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZpeCBOVUxMIHBvaW50ZXIgY3Jhc2guCi0KLUJlZm9yZSB1c2UgdXNiYnVzbGlzdCwgd2Ugc2hvdWxkIGNoZWNrIGlmIGl0IGlzIHZhbGlkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxzdXNiLXQuYyB8ICAgIDQgKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHN1c2ItdC5jIGIvbHN1c2ItdC5jCi1pbmRleCBmNjA0MTU1Li41ODNhNDZhIDEwMDY0NAotLS0tIGEvbHN1c2ItdC5jCi0rKysgYi9sc3VzYi10LmMKLUBAIC02NDMsNiArNjQzLDEwIEBAIHN0YXRpYyB2b2lkIHNvcnRfYnVzc2VzKHZvaWQpCi0gCS8qIG5lZWQgdG8gcmV2ZXJzZSBzb3J0IGJ1cyBudW1iZXJzICovCi0gCXN0cnVjdCB1c2JidXNub2RlICp0LCAqcCwgKipwcDsKLSAJaW50IHN3YXBwZWQ7Ci0rCi0rCWlmICghdXNiYnVzbGlzdCkKLSsJCXJldHVybjsKLSsKLSAJZG8gewotIAkJcCA9IHVzYmJ1c2xpc3Q7Ci0gCQlwcCA9ICZ1c2JidXNsaXN0OwotLS0gCi0xLjcuNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL2ljb252LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvaWNvbnYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU1NjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvaWNvbnYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIGljb252IHN1cHBvcnQgdXNpbmcgYXV0b3Rvb2xzCi11Y2xpYmMgZG9lcyBub3QgaGF2ZSBpY29udiBpbXBsZW1lbnRhdGlvbiBpbnNpZGUgbGliYyBsaWtlIGdsaWJjLCB0aGVyZWZvcmUKLXRoZSBleGlzdGluZyBjaGVja3Mgd2VyZSBub3Qgc3VmZmljaWVudCwgaXQgd29ya2VkIGZvciBnbGliYyBidXQgbm90IGZvcgotdWNsaWJjLiBUaGUgbmV3IHBhdGNoIHBvcnRhYmx5IGRldGVjdHMgdGhlIGljb252IHN1cHBvcnQgYW5kIGFkZHMgdGhlCi1saWJpY29udiB0byBsaW5rZXIgY21kbGluZQotCi1UaGlzIHBhdGNoIHNob3VsZCBiZSBzdWJtaXR0ZWQgdXBzdHJlYW0gdG9vCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogdXNidXRpbHMtMDA4L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHVzYnV0aWxzLTAwOC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIHVzYnV0aWxzLTAwOC9jb25maWd1cmUuYWMKLUBAIC0xMCw3ICsxMCw5IEBAIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwotIEFDX1NZU19MQVJHRUZJTEUKLSAKLSBBQ19DSEVDS19IRUFERVJTKFtieXRlc3dhcC5oXSkKLS1BQ19DSEVDS19GVU5DUyhbbmxfbGFuZ2luZm8gaWNvbnZdKQotKwotK0FNX0dOVV9HRVRURVhUCi0rQU1fSUNPTlYKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJVU0IsIGxpYnVzYi0xLjAgPj0gMS4wLjApCi0gCi1JbmRleDogdXNidXRpbHMtMDA4L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdXNidXRpbHMtMDA4Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyB1c2J1dGlscy0wMDgvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw4IEBAIGxzdXNiX0NQUEZMQUdTID0gXAotIAotIGxzdXNiX0xEQUREID0gXAotIAkkKExJQlVTQl9MSUJTKSBcCi0tCSQoVURFVl9MSUJTKQotKwkkKFVERVZfTElCUykgXAotKwkkKExJQklDT05WKQotIAotIG1hbl9NQU5TID0gXAotIAlsc3VzYi44CVwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNjNWJkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkhvc3Qgc2lkZSBVU0IgY29uc29sZSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbHN1c2IgdXRpbGl0eSBmb3IgaW5zcGVjdGluZyB0aGUgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFVTQiBidXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC11c2Iub3JnIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1ERVBFTkRTID0gImxpYnVzYiB6bGliIHZpcnR1YWwvbGliaWNvbnYgdWRldiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL3VzYi91c2J1dGlscy91c2J1dGlscy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNiMjAxNDhjMmU3ODQ1NzdlOTI0YTdiNGM1NjBjOGZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkNWYxNmMyOTYxZGYzN2UyMmU0OTJjNzM2YTNlMTYyYThmZGUyNDQ4MGYyM2E0MGQ4NWY3OWFmODBkM2ZlOTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ1ZGV2LWh3ZGIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJsaWJib29zdC1zeXN0ZW0gbGliYm9vc3QtdGhyZWFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZmMwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDkuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJIb3N0IHNpZGUgVVNCIGNvbnNvbGUgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIGxzdXNiIHV0aWxpdHkgZm9yIGluc3BlY3RpbmcgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBVU0IgYnVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtdXNiLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICJsaWJ1c2IgemxpYiB2aXJ0dWFsL2xpYmljb252IHVkZXYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy91c2IvdXNidXRpbHMvdXNidXRpbHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjVkYmM0OThiMmViNTA1OGY3YTU3ZmM2NTMyZDBhYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTczNTQzMjkzYTE3Yzc4MDM5OTRlYWM5N2E0OWU1OGIzNzdlMDhlNjI5OWJhMTFhYWQwOTc5NGI5MTM0MGU4YiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxzdXNiIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJ1ZGV2LWh3ZGIiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJsaWJib29zdC1zeXN0ZW0gbGliYm9vc3QtdGhyZWFkIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke2JpbmRpcn0vbHN1c2IucHkiCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uMy1jb3JlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBzZWQgLWkgLUUgJzFzLCMhLitweXRob24sIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHN1c2IucHkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCmluZGV4IGU1ZjZmZmYuLmY5N2I4MGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkXzAuMS4xMC5iYgpAQCAtOSw3ICs5LDcgQEAKIFJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtdXZlc2FmYiIKIFBSID0gInIyIgogCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi92LyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDExMDQyN1QwMzU1MDZaL3Bvb2wvbWFpbi92LyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vVXBkYXRlLXg4NmVtdS1mcm9tLVgub3JnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2FyLWZyb20tZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2FhcmNoNjQtaG9zdC5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjYuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjYuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMzY0NjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29tbW9uL2FkZHJlc3MuaDtlbmRsaW5lPTI1O21kNT1iMWQxZDJjZGExYzA3ZWI4NDhlYTdkNjIxNTcxMmQ5ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb3JlL2Rucy5oO2VuZGxpbmU9MjM7bWQ1PTZmZTgyNTkwYjgxYWEwZGRlYTUwOTViNTQ4ZTJmZGNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWRhZW1vbi9tYWluLmM7ZW5kbGluZT0yMTttZDU9OWVlNzczNjhjNTQwN2FmNzdjYWFlZjFiMDcyODU5NjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY2xpZW50L2NsaWVudC5oO2VuZGxpbmU9MjM7bWQ1PWY0YWM3NDFhMjVjNGY0MzQwMzliYTNlMThjODY3NGNmIgotCi1yZXF1aXJlIGF2YWhpLmluYwotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMjJiNWU3MDVkM2VhYmIzMWQyNmYyZTFlN2IwNzQwMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDU0OTkxMTg1ZDUxNGEwYWJhNTRlYmViNDA4ZDc1NzViNjBmNTgxOGE3NzJlMjhmYTBlMThiOThiYzFkYjQ1NCIKLQotREVQRU5EUyArPSAiYXZhaGkiCi0KLUFWQUhJX0dUSyA9ICJndGszIgotCi1TID0gIiR7V09SS0RJUn0vYXZhaGktJHtQVn0iCi0KLVBBQ0tBR0VTID0gIiR7UE59ICR7UE59LXV0aWxzICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyBhdmFoaS1kaXNjb3ZlciIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkke1NPTElCU0RFVn0iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJhdmFoaS11aS5hIgotCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vYiogJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvYioiCi0KLUZJTEVTX2F2YWhpLWRpc2NvdmVyID0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2F2YWhpLWRpc2NvdmVyLmRlc2t0b3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hdmFoaS9pbnRlcmZhY2VzL2F2YWhpLWRpc2NvdmVyLnVpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hdmFoaS1kaXNjb3Zlci1zdGFuZGFsb25lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXJtICR7RH0ke3N5c2NvbmZkaXJ9IC1yZgotCXJtICR7RH0ke2Jhc2VfbGliZGlyfSAtcmYKLQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9IC1yZgotCSMgVGhlICR7c3lzdGVtZF91bml0ZGlyfSBpcyAvbGliL3N5c3RlbWQsIHNvIHdlIG5lZWQgcm1kaXIgL2xpYiwKLQkjIGJ1dCBub3QgJHtiYXNlX2xpYmRpcn0gaGVyZS4gQW5kIHRoZSAvbGliIG1heSBub3QgZXhpc3QKLQkjIHdoaXRob3V0IHN5c3RlbWQuCi0JWyAhIC1kICR7RH0vbGliIF0gfHwgcm1kaXIgJHtEfS9saWIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkKLQlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLWIqCi0Jcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1wKgotCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcioKLQlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXMqCi0Jcm0gJHtEfSR7aW5jbHVkZWRpcn0vYXZhaGktYyogLXJmCi0Jcm0gJHtEfSR7aW5jbHVkZWRpcn0vYXZhaGktZyogLXJmCi0Jcm0gJHtEfSR7bGliZGlyfS9saWJhdmFoaS1jKgotCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktZyoKLQlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1jKgotCXJtICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2F2YWhpLWcqCi0Jcm0gJHtEfSR7c2JpbmRpcn0gLXJmCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vYXZhaGkvYSoKLQlybSAke0R9JHtkYXRhZGlyfS9hdmFoaS9zKgotCXJtICR7RH0ke2RhdGFkaXJ9L2xvY2FsZS8gLXJmCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZGJ1cyogLXJmCi0Jcm0gJHtEfSR7bWFuZGlyfS9tYW4xL2EqCi0Jcm0gJHtEfSR7bWFuZGlyfS9tYW41IC1yZgotCXJtICR7RH0ke21hbmRpcn0vbWFuOCAtcmYKLSAgICAgICAgcm0gJHtEfSR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyAtcmYKLSAgICAgICAgcm0gJHtEfSR7ZGF0YWRpcn0vZ2lyLTEuMC8gLXJmCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjQ4ZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiCkBAIC0wLDAgKzEsNjIgQEAKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKKworcmVxdWlyZSBhdmFoaS5pbmMKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDc2YzU5ZDA4ODJhYzZjMjU2ZDcwYTJhNTg1MzYyYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdhOTliNWRmZTdmZGFlNzk0ZTNkMWVlN2E2Mjk3M2EzNjhlOTFlNDE0YmQwZGZhNWQ4NDQzNGRlNWIxNDgwNCIKKworREVQRU5EUyArPSAiYXZhaGkiCisKK0FWQUhJX0dUSyA9ICJndGszIgorCitTID0gIiR7V09SS0RJUn0vYXZhaGktJHtQVn0iCisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LXV0aWxzICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyBhdmFoaS1kaXNjb3ZlciIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpKi5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJhdmFoaS11aS5hIgorCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vYiogJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvYioiCisKK0ZJTEVTX2F2YWhpLWRpc2NvdmVyID0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2F2YWhpLWRpc2NvdmVyLmRlc2t0b3AgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hdmFoaS9pbnRlcmZhY2VzL2F2YWhpLWRpc2NvdmVyLnVpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hdmFoaS1kaXNjb3Zlci1zdGFuZGFsb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXJtICR7RH0ke3N5c2NvbmZkaXJ9IC1yZgorCXJtICR7RH0ke2Jhc2VfbGliZGlyfSAtcmYKKwlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9IC1yZgorCSMgVGhlICR7c3lzdGVtZF91bml0ZGlyfSBpcyAvbGliL3N5c3RlbWQsIHNvIHdlIG5lZWQgcm1kaXIgL2xpYiwKKwkjIGJ1dCBub3QgJHtiYXNlX2xpYmRpcn0gaGVyZS4gQW5kIHRoZSAvbGliIG1heSBub3QgZXhpc3QKKwkjIHdoaXRob3V0IHN5c3RlbWQuCisJWyAhIC1kICR7RH0vbGliIF0gfHwgcm1kaXIgJHtEfS9saWIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkKKwlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLWIqCisJcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1wKgorCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcioKKwlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXMqCisJcm0gJHtEfSR7aW5jbHVkZWRpcn0vYXZhaGktYyogLXJmCisJcm0gJHtEfSR7aW5jbHVkZWRpcn0vYXZhaGktZyogLXJmCisJcm0gJHtEfSR7bGliZGlyfS9saWJhdmFoaS1jKgorCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktZyoKKwlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1jKgorCXJtICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2F2YWhpLWcqCisJcm0gJHtEfSR7c2JpbmRpcn0gLXJmCisJcm0gJHtEfSR7ZGF0YWRpcn0vYXZhaGkvYSoKKwlybSAke0R9JHtkYXRhZGlyfS9sb2NhbGUvIC1yZgorCXJtICR7RH0ke2RhdGFkaXJ9L2RidXMqIC1yZgorCXJtICR7RH0ke21hbmRpcn0vbWFuMS9hKgorCXJtICR7RH0ke21hbmRpcn0vbWFuNSAtcmYKKwlybSAke0R9JHttYW5kaXJ9L21hbjggLXJmCisgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8gLXJmCisgICAgICAgIHJtICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvIC1yZgorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKaW5kZXggNzgxNDQ2NC4uZWMzNjhkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwpAQCAtMjMsMjEgKzIzLDIwIEBACiAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3JlbGVhc2VzLyIKIAotIyBGb3IgZ3RrIHJlbGF0ZWQgUEFDS0FHRUNPTkZJR3M6IGd0aywgZ3RrMyBhbmQgcHlndGsKKyMgRm9yIGd0ayByZWxhdGVkIFBBQ0tBR0VDT05GSUdzOiBndGssIGd0azMKIEFWQUhJX0dUSyA/PSAiIgogCiBQQUNLQUdFQ09ORklHID8/PSAiZGJ1cyAke0FWQUhJX0dUS30iCiBQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKIFBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrIgogUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgotUEFDS0FHRUNPTkZJR1tweWd0a10gPSAiLS1lbmFibGUtcHlndGssLS1kaXNhYmxlLXB5Z3RrLCIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktYXV0b2lwZCIKLVVTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvdmFyL3J1bi9hdmFoaS1kYWVtb24gXAorVVNFUkFERF9QQVJBTV9hdmFoaS1kYWVtb24gPSAiLS1zeXN0ZW0gLS1ob21lIC9ydW4vYXZhaGktZGFlbW9uIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBhdmFoaSIKIAotVVNFUkFERF9QQVJBTV9hdmFoaS1hdXRvaXBkID0gIi0tc3lzdGVtIC0taG9tZSAvdmFyL3J1bi9hdmFoaS1hdXRvaXBkIFwKK1VTRVJBRERfUEFSQU1fYXZhaGktYXV0b2lwZCA9ICItLXN5c3RlbSAtLWhvbWUgL3J1bi9hdmFoaS1hdXRvaXBkIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtYyBcIkF2YWhpIGF1dG9pcCBkYWVtb25cIiBcCkBAIC0xMTAsMTEgKzEwOSw2IEBACiBSUkVDT01NRU5EU19hdmFoaS1kYWVtb25fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYm5zcy1tZG5zIgogUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYm5zcy1tZG5zIgogCi1SUkVDT01NRU5EU19hdmFoaS1kZXYgPSAiZXhwYXQtZGV2IGxpYmNhcC1kZXYgbGliZGFlbW9uLWRldiBkYnVzLWRldiBnbGliLTIuMC1kZXYgdXBkYXRlLXJjLmQtZGV2IgotUlJFQ09NTUVORFNfYXZhaGktZGV2X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnZXR0ZXh0LWRldiIKLQotUlJFQ09NTUVORFNfYXZhaGktZGV2W25vZGVwcnJlY3NdID0gIjEiCi0KIENPTkZGSUxFU19hdmFoaS1kYWVtb24gPSAiJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1kYWVtb24uY29uZiIKIAogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktZG5zY29uZmQiCkBAIC0xMjUsMTIgKzExOSw3IEBACiAKIGRvX2luc3RhbGwoKSB7CiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZG9uJ3QgaW5zdGFsbCAvdmFyL3J1biB3aGVuIHBvcHVsYXRpbmcgcm9vdGZzLiBEbyBpdCB0aHJvdWdoIHZvbGF0aWxlCi0JIyAvdmFyL3J1biBvZiBjdXJyZW50IHZlcnNpb24gaXMgZW1wdHksIHNvIGp1c3QgcmVtb3ZlIGl0LgotCSMgaWYgL3Zhci9ydW4gYmVjb21lIG5vbi1lbXB0eSBpbiB0aGUgZnV0dXJlLCBuZWVkIHRvIGluc3RhbGwgaXQgdmlhIHZvbGF0aWxlCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJcm0gLXJmICR7RH0vcnVuCiAJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzCiAJdGVzdCAtZCAke0R9JHtkYXRhZGlyfS9kYnVzLTEgJiYgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7ZGF0YWRpcn0vZGJ1cy0xCiAJcm0gLXJmICR7RH0ke2xpYmRpcn0vYXZhaGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNi4zMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNi4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhNjMwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIGF2YWhpLmluYwotCi1pbmhlcml0IHN5c3RlbWQKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1kYWVtb24gJHtQTn0tZG5zY29uZmQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tZGFlbW9uID0gImF2YWhpLWRhZW1vbi5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRuc2NvbmZkID0gImF2YWhpLWRuc2NvbmZkLnNlcnZpY2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKLQotU1JDX1VSSSArPSAiZmlsZTovL2F2YWhpLWZpeC1yZXNvdXJjZS11bmF2YWlhYmxlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjJiNWU3MDVkM2VhYmIzMWQyNmYyZTFlN2IwNzQwMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDU0OTkxMTg1ZDUxNGEwYWJhNTRlYmViNDA4ZDc1NzViNjBmNTgxOGE3NzJlMjhmYTBlMThiOThiYzFkYjQ1NCIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIgotCi1QQUNLQUdFUyA9KyAibGliYXZhaGktZ29iamVjdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzkxZjEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgYXZhaGkuaW5jCisKK2luaGVyaXQgc3lzdGVtZAorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWRhZW1vbiAke1BOfS1kbnNjb25mZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1kYWVtb24gPSAiYXZhaGktZGFlbW9uLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tZG5zY29uZmQgPSAiYXZhaGktZG5zY29uZmQuc2VydmljZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29tbW9uL2FkZHJlc3MuaDtlbmRsaW5lPTI1O21kNT1iMWQxZDJjZGExYzA3ZWI4NDhlYTdkNjIxNTcxMmQ5ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb3JlL2Rucy5oO2VuZGxpbmU9MjM7bWQ1PTZmZTgyNTkwYjgxYWEwZGRlYTUwOTViNTQ4ZTJmZGNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWRhZW1vbi9tYWluLmM7ZW5kbGluZT0yMTttZDU9OWVlNzczNjhjNTQwN2FmNzdjYWFlZjFiMDcyODU5NjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY2xpZW50L2NsaWVudC5oO2VuZGxpbmU9MjM7bWQ1PWY0YWM3NDFhMjVjNGY0MzQwMzliYTNlMThjODY3NGNmIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDc2YzU5ZDA4ODJhYzZjMjU2ZDcwYTJhNTg1MzYyYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdhOTliNWRmZTdmZGFlNzk0ZTNkMWVlN2E2Mjk3M2EzNjhlOTFlNDE0YmQwZGZhNWQ4NDQzNGRlNWIxNDgwNCIKKworREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIgorCitQQUNLQUdFUyA9KyAibGliYXZhaGktZ29iamVjdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQyNjA3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDZmZjI1NWVmZjRmZWE2MzUwYjVlMDQ2MmZlZTE3NmZhZGMyNmZjMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAxODozMjo0OSArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGluc3RhbGwgR3RrQnVpbGRlciBpbnRlcmZhY2UgZmlsZXMgZm9yIEdUSyszCi0gdG9vCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9wdWxsLzEzMF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4N2E5YTE3Li45ODYwZGNjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05NjUsNyArOTY1LDcgQEAgQUNfU1VCU1QoYXZhaGlfc29ja2V0KQotICMKLSAjIEF2YWhpIGludGVyZmFjZXMgZGlyCi0gIwotLWlmIHRlc3QgIngkSEFWRV9QWVRIT05fREJVUyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEsiID0gInh5ZXMiOyB0aGVuCi0raWYgdGVzdCAieCRIQVZFX1BZVEhPTl9EQlVTIiA9ICJ4eWVzIiAtbyAieCRIQVZFX0dUSyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEszIiA9ICJ4eWVzIjsgdGhlbgotIAlpbnRlcmZhY2VzZGlyPSIke2RhdGFkaXJ9LyR7UEFDS0FHRX0vaW50ZXJmYWNlcy8iCi0gCUFDX1NVQlNUKGludGVyZmFjZXNkaXIpCi0gZmkKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyZmQ3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQmFja3BvcnQgZnJvbToKLWh0dHBzOi8vZ2l0aHViLmNvbS9leHBlcmltZW50YWwtcGxhdGZvcm0vcGxhdGZvcm0taG9zdG5hbWUtYXZhaGkvcHVsbC85Ci0KLUl0IHNvbWV0aW1lcyBmYWlscyB0byBydW4gYXZhaGkgd2l0aCBlcnJvcjogIkNvdWxkIG5vdCByZWNlaXZlIHJldHVybiB2YWx1ZQotZnJvbSBkYWVtb24gcHJvY2VzcyIuIEl0IGhhcyBzYW1lIHJvb3QgY2F1c2Ugd2l0aAotaHR0cHM6Ly9naXRodWIuY29tL2x4Yy9seGMvaXNzdWVzLzI1LgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSA1MTUwOTgzMTAyYWQ1YWQ0M2YwZGFlMjAzY2IzMzJjMTY4ZWI1YTcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGlubmVyayBIYWFyZHQgPGhhYXJkdEBpbmZvcm1hdGlvbi1jb250cm9sLmRlPgotRGF0ZTogVGh1LCAxNyBEZWMgMjAxNSAxMTo1MjoxOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYGNocm9vdC5jOiBmb3JrKCkgZmFpbGVkOiBSZXNvdXJjZSB0ZW1wb3JhcmlseQotIHVuYXZhaWxhYmxlYCBhcyBwZXIgaHR0cHM6Ly9naXRodWIuY29tL2x4Yy9seGMvaXNzdWVzLzI1LgotCi0tLS0KLSBhdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLmNvbmYgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mIGIvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mCi1pbmRleCA5NTE2NmY4Li4zZDViN2E2IDEwMDY0NAotLS0tIGEvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mCi0rKysgYi9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLmNvbmYKLUBAIC02NSw0ICs2NSwzIEBAIHJsaW1pdC1kYXRhPTQxOTQzMDQKLSBybGltaXQtZnNpemU9MAotIHJsaW1pdC1ub2ZpbGU9NzY4Ci0gcmxpbWl0LXN0YWNrPTQxOTQzMDQKLS1ybGltaXQtbnByb2M9MwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvaW5pdHNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2luaXRzY3JpcHQucGF0Y2gKaW5kZXggMTkzODg5ZS4uYzg1NmMzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvaW5pdHNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9pbml0c2NyaXB0LnBhdGNoCkBAIC0xLDEwICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotZGlmZiAtLWdpdCBhL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbiBiL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgotaW5kZXggMzBhMmMyZi4uYjU4NDhhOCAxMDA3NTUKLS0tLSBhL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgotKysrIGIvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZGFlbW9uLmluCi1AQCAtMSwyICsxLDE0IEBACitJbmRleDogYXZhaGktMC43L2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF2YWhpLTAuNy5vcmlnL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgorKysrIGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KK0BAIC0xLDUgKzEsMTcgQEAKICAjIS9iaW4vc2gKIC0KICsjIyMgQkVHSU4gSU5JVCBJTkZPCkBAIC0yMCwxMSArMjAsMTQgQEAKICsjICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5CiArIyMjIEVORCBJTklUIElORk8KICsjCi1kaWZmIC0tZ2l0IGEvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4gYi9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgotaW5kZXggYWMzNDgwNC4uZjk1YzM0MCAxMDA3NTUKLS0tLSBhL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRuc2NvbmZkLmluCi0rKysgYi9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgotQEAgLTEsMSArMSwxNCBAQAorICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYXZhaGkuCisgIworICMgYXZhaGkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorSW5kZXg6IGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF2YWhpLTAuNy5vcmlnL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRuc2NvbmZkLmluCisrKysgYXZhaGktMC43L2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRuc2NvbmZkLmluCitAQCAtMSw0ICsxLDE3IEBACiAgIyEvYmluL3NoCiArIyMjIEJFR0lOIElOSVQgSU5GTwogKyMgUHJvdmlkZXM6ICAgICAgICAgIGF2YWhpLWRuc2NvbmZkCkBAIC0zOSwzICs0Miw2IEBACiArIyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseQogKyMjIyBFTkQgSU5JVCBJTkZPCiArIworIAorICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYXZhaGkuCisgIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNS1QMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNzI0YTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNS1QMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1TVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJJU0MgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWRiYTQ2NTA3NDQ2MTk4MTE5YmNkZTMyYTRmZWFhYjQzIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LXRlc3Qtb24taG9zdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKLSAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45KFwuXGQrKSsoLVBcZCspKikvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDc5Y2FmYmQ5YWM3NjIzOWVlNTMyZGQ4OWQwNWNjODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ3ZTk2YjViMGJiYWM3YjkwMGQ0YzRiYmI4MmUwOTU2YjRlNTA5NDMzYzVmYTM5MmJiNzJhOTI5Yjk2NjA2YSIKLQotRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgotRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgXAotICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIHB5dGhvbjMtZGlyCi0KLWV4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgotCi0jIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKLVBBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKLQotSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgotRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAotCSMgYnkgIm1ha2UgaW5zdGFsbCI6Ci0JIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCi0Jc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKLQlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCi0Jcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0JaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgotCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKLQlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKLQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKLQotCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCi0JZmkKLQotICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9pc2MvKi5weWMKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKLQkiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiODgzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJJU0MgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWRiYTQ2NTA3NDQ2MTk4MTE5YmNkZTMyYTRmZWFhYjQzIgorCitERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LXRlc3Qtb24taG9zdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKKyAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NGU2NjMyODRiMTdhZWUwZGYxY2U2ZjI0OGIxMzdkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxN2JiY2QyYmQ3YjFkMzJmNWJhNGIzMGQ1ZGJlOGEzOWJjZTIwMDA3OTA0ODA3M2QxZTBkMDUwZmRmNDdlNjlkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OShcLlxkKykrKC1QXGQrKSopLyIKKworCitFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCitFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgcHl0aG9uMy1kaXIKKworZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCisKKyMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgorUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgorCitJTklUU0NSSVBUX05BTUUgPSAiYmluZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCitGSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCisJIyBieSAibWFrZSBpbnN0YWxsIjoKKwkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKKwlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICIke0R9JHtiaW5kaXJ9L25zbG9va3VwIgorCXJtICIke0R9JHttYW5kaXJ9L21hbjEvbnNsb29rdXAuMSIKKwlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKwlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgorCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgorCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcworCisJIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKKwlmaQorCisgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2lzYy8qLnB5YworfQorCitDT05GRklMRVNfJHtQTn0gPSAiIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAorCSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwppbmRleCAxODA3YWE3Li5hZTJhODMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwpAQCAtNiw3ICs2LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTliYzU0YjkzY2Q3ZTE3YmYwM2Y1MjUxM2YzOWY5MjZlIgotREVQRU5EUyA9ICJ1ZGV2IGRidXMtZ2xpYiBnbGliLTIuMCBsaWJjaGVjayIKK0RFUEVORFMgPSAidWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAiCiBQUk9WSURFUyArPSAiYmx1ZXotaGNpZHVtcCIKIFJQUk9WSURFU18ke1BOfSArPSAiYmx1ZXotaGNpZHVtcCIKIApAQCAtNDEsNiArNDEsNyBAQAogUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzIgogUEFDS0FHRUNPTkZJR1t0aHJlYWRzXSA9ICItLWVuYWJsZS10aHJlYWRzLC0tZGlzYWJsZS10aHJlYWRzIgogUEFDS0FHRUNPTkZJR1tkZXByZWNhdGVkXSA9ICItLWVuYWJsZS1kZXByZWNhdGVkLC0tZGlzYWJsZS1kZXByZWNhdGVkIgorUEFDS0FHRUNPTkZJR1ttZXNoXSA9ICItLWVuYWJsZS1tZXNoLC0tZGlzYWJsZS1tZXNoLCBqc29uLWMiCiAKIFNSQ19VUkkgPSAiXAogICAgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCkBAIC00OSwxNCArNTAsMTIgQEAKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gnLCBkKX0gXAogICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2ggXAotICAgIGZpbGU6Ly9jdmUtMjAxNy0xMDAwMjUwLnBhdGNoIFwKICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKIAogQ1ZFX1BST0RVQ1QgPSAiYmx1ZXoiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwdGVzdAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHB0ZXN0IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhCiAKIEVYVFJBX09FQ09ORiA9ICJcCiAgIC0tZW5hYmxlLXRlc3QgXApAQCAtMTMwLDE0ICsxMjksMTMgQEAKIAogRklMRVNfJHtQTn0tbm9pbnN0LXRvb2xzID0gIiR7QGdldF9ub2luc3RfdG9vbHNfcGF0aHMoZCwgYmIsIGQuZ2V0VmFyKCdOT0lOU1RfVE9PTFMnKSl9IgogCi1SREVQRU5EU18ke1BOfS10ZXN0dG9vbHMgKz0gInB5dGhvbjMgcHl0aG9uMy1kYnVzIHB5dGhvbjMtcHlnb2JqZWN0IgorUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24zIHB5dGhvbjMtZGJ1cyIKK1JERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJ3B5dGhvbjMtcHlnb2JqZWN0JywgJycsIGQpfSIKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3RlbWQnLCAnYmx1ZXRvb3RoLnNlcnZpY2UnLCAnJywgZCl9IgogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJibHVldG9vdGgiCiAKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCiBkb19jb21waWxlX3B0ZXN0KCkgewogCW9lX3J1bm1ha2UgYnVpbGR0ZXN0cwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3OTQzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2IzNDFmYjQyMWVmNjFkYjc3ODJiZjEzMTRlYzY5MzgyODQ2N2RlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHkgRHVhbiA8ZnVnYW5nLmR1YW5AbnhwLmNvbT4KLURhdGU6IFdlZCwgMjMgTm92IDIwMTYgMTc6MTI6MTIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gaGNpYXR0YWNoOiBiY200M3h4OiBmaXggdGhlIGRlbGF5IHRpbWVyIGZvciBmaXJtd2FyZSBkb3dubG9hZAotCi1Gcm9tIHRoZSBsb2cgaW4gLmJjbTQzeHhfbG9hZF9maXJtd2FyZSgpOgotICAgICAgICAvKiBXYWl0IDUwbXMgdG8gbGV0IHRoZSBmaXJtd2FyZSBwbGFjZWQgaW4gZG93bmxvYWQgbW9kZSAqLwotICAgICAgICBuYW5vc2xlZXAoJnRtX21vZGUsIE5VTEwpOwotCi1CdXQgdGltZXNwZWMgdG1fbW9kZSBpcyByZWFsIGlzIDUwdXMuIENvcnJlY3QgdGhlIGRlbGF5ZWQgdGltZXIgY291bnQuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9ibHVldG9vdGgvYmx1ZXouZ2l0L2NvbW1pdC8/aWQ9NzYyNTVmNzMyZDY4YWVmMmI5MGQzNmQ5YzdiZTUxYTllMTczOWNlN10KLQotU2lnbmVkLW9mZi1ieTogRnVnYW5nIER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+Ci0tLS0KLSB0b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMgYi90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jCi1pbmRleCA4MWYzOGNiLi5hYzFiM2MxIDEwMDY0NAotLS0tIGEvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYwotKysrIGIvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYwotQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgaW50IGJjbTQzeHhfc2V0X3NwZWVkKGludCBmZCwgc3RydWN0IHRlcm1pb3MgKnRpLCB1aW50MzJfdCBzcGVlZCkKLSBzdGF0aWMgaW50IGJjbTQzeHhfbG9hZF9maXJtd2FyZShpbnQgZmQsIGNvbnN0IGNoYXIgKmZ3KQotIHsKLSAJdW5zaWduZWQgY2hhciBjbWRbXSA9IHsgSENJX0NPTU1BTkRfUEtULCAweDJlLCAweGZjLCAweDAwIH07Ci0tCXN0cnVjdCB0aW1lc3BlYyB0bV9tb2RlID0geyAwLCA1MDAwMCB9OwotLQlzdHJ1Y3QgdGltZXNwZWMgdG1fcmVhZHkgPSB7IDAsIDIwMDAwMDAgfTsKLSsJc3RydWN0IHRpbWVzcGVjIHRtX21vZGUgPSB7IDAsIDUwMDAwMDAwIH07Ci0rCXN0cnVjdCB0aW1lc3BlYyB0bV9yZWFkeSA9IHsgMCwgMjAwMDAwMDAwIH07Ci0gCXVuc2lnbmVkIGNoYXIgcmVzcFtDQ19NSU5fU0laRV07Ci0gCXVuc2lnbmVkIGNoYXIgdHhfYnVmWzEwMjRdOwotIAlpbnQgbGVuLCBmZF9mdywgbjsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9jdmUtMjAxNy0xMDAwMjUwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9jdmUtMjAxNy0xMDAwMjUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmFjOTYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvY3ZlLTIwMTctMTAwMDI1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUFsbCB2ZXJzaW9ucyBvZiB0aGUgU0RQIHNlcnZlciBpbiBCbHVlWiA1LjQ2IGFuZCBlYXJsaWVyIGFyZSB2dWxuZXJhYmxlIHRvIGFuCi1pbmZvcm1hdGlvbiBkaXNjbG9zdXJlIHZ1bG5lcmFiaWxpdHkgd2hpY2ggYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gb2J0YWluCi1zZW5zaXRpdmUgaW5mb3JtYXRpb24gZnJvbSB0aGUgYmx1ZXRvb3RoZCBwcm9jZXNzIG1lbW9yeS4gVGhpcyB2dWxuZXJhYmlsaXR5Ci1saWVzIGluIHRoZSBwcm9jZXNzaW5nIG9mIFNEUCBzZWFyY2ggYXR0cmlidXRlIHJlcXVlc3RzLgotCi1DVkU6IENWRS0yMDE3LTEwMDAyNTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gOWUwMDk2NDdiMTRlODEwZTA2NjI2ZGRlN2YxYmI5ZWEzYzM3NWQwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMTA6MDE6NDAgKzAzMDAKLVN1YmplY3Q6IHNkcDogRml4IE91dC1vZi1ib3VuZHMgaGVhcCByZWFkIGluIHNlcnZpY2Vfc2VhcmNoX2F0dHJfcmVxIGZ1bmN0aW9uCi0KLUNoZWNrIGlmIHRoZXJlIGlzIGVub3VnaCBkYXRhIHRvIGNvbnRpbnVlIG90aGVyd2lzZSByZXR1cm4gYW4gZXJyb3IuCi0tLS0KLSBzcmMvc2RwZC1yZXF1ZXN0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc2RwZC1yZXF1ZXN0LmMgYi9zcmMvc2RwZC1yZXF1ZXN0LmMKLWluZGV4IDFlZWZkY2UuLjMxOGQwNDQgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwZC1yZXF1ZXN0LmMKLSsrKyBiL3NyYy9zZHBkLXJlcXVlc3QuYwotQEAgLTkxNyw3ICs5MTcsNyBAQCBzdGF0aWMgaW50IHNlcnZpY2Vfc2VhcmNoX2F0dHJfcmVxKHNkcF9yZXFfdCAqcmVxLCBzZHBfYnVmX3QgKmJ1ZikKLSAJfSBlbHNlIHsKLSAJCS8qIGNvbnRpbnVhdGlvbiBTdGF0ZSBleGlzdHMgLT4gZ2V0IGZyb20gY2FjaGUgKi8KLSAJCXNkcF9idWZfdCAqcENhY2hlID0gc2RwX2dldF9jYWNoZWRfcnNwKGNzdGF0ZSk7Ci0tCQlpZiAocENhY2hlKSB7Ci0rCQlpZiAocENhY2hlICYmIGNzdGF0ZS0+Y1N0YXRlVmFsdWUubWF4Qnl0ZXNTZW50IDwgcENhY2hlLT5kYXRhX3NpemUpIHsKLSAJCQl1aW50MTZfdCBzZW50ID0gTUlOKG1heCwgcENhY2hlLT5kYXRhX3NpemUgLSBjc3RhdGUtPmNTdGF0ZVZhbHVlLm1heEJ5dGVzU2VudCk7Ci0gCQkJcFJlc3BvbnNlID0gcENhY2hlLT5kYXRhOwotIAkJCW1lbWNweShidWYtPmRhdGEsIHBSZXNwb25zZSArIGNzdGF0ZS0+Y1N0YXRlVmFsdWUubWF4Qnl0ZXNTZW50LCBzZW50KTsKLS0tIAotY2dpdCB2MS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZjg1ODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotcmVxdWlyZSBibHVlejUuaW5jCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJibHVlejUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MTNmMzVkNmZhNGNhNTc3MmM1M2FkYjkzNmJmMTk0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGFiM2QzODM3YzFhZmI4YWUyMjhhOTRiYTE3NzA5YTQ2NTBiZDRkYjI0MjExYjY3NzFhYjczNWM4OTA4ZTI4IgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKLSAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKLSAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKLSAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKLSAgICB0b29scy9vYmV4Y3RsIFwKLSAgICB0b29scy9idG1nbXQgXAotIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAotICAgIGVtdWxhdG9yL2J0dmlydCBcCi0gICAgZW11bGF0b3IvYjFlZSBcCi0gICAgZW11bGF0b3IvaGZwIFwKLSAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKLSAgICB0b29scy8zZHNwIFwKLSAgICB0b29scy9tZ210LXRlc3RlciBcCi0gICAgdG9vbHMvZ2FwLXRlc3RlciBcCi0gICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKLSAgICB0b29scy9zY28tdGVzdGVyIFwKLSAgICB0b29scy9zbXAtdGVzdGVyIFwKLSAgICB0b29scy9oY2ktdGVzdGVyIFwKLSAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKLSAgICB0b29scy9ibmVwLXRlc3RlciBcCi0gICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX0JUID89ICIgXAotICAgIHRvb2xzL2JkYWRkciBcCi0gICAgdG9vbHMvYXZpbmZvIFwKLSAgICB0b29scy9hdnRlc3QgXAotICAgIHRvb2xzL3Njb3Rlc3QgXAotICAgIHRvb2xzL2FtcHRlc3QgXAotICAgIHRvb2xzL2h3ZGIgXAotICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCi0gICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKLSAgICB0b29scy9idGluZm8gXAotICAgIHRvb2xzL2J0c25vb3AgXAotICAgIHRvb2xzL2J0cHJveHkgXAotICAgIHRvb2xzL2J0aW90ZXN0IFwKLSAgICB0b29scy9ibmVwdGVzdCBcCi0gICAgdG9vbHMvbWNhcHRlc3QgXAotICAgIHRvb2xzL2NsdGVzdCBcCi0gICAgdG9vbHMvb29idGVzdCBcCi0gICAgdG9vbHMvYWR2dGVzdCBcCi0gICAgdG9vbHMvc2VxMmJzZXEgXAotICAgIHRvb2xzL25va2Z3IFwKLSAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAotICAgIHRvb2xzL2VkZHlzdG9uZSBcCi0gICAgdG9vbHMvaWJlYWNvbiBcCi0gICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCi0gICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCi0gICAgdG9vbHMvdGVzdC1ydW5uZXIgXAotICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKLSAgICB0b29scy9nYXR0LXNlcnZpY2UgXAotICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGE2Y2QyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ4LmJiCkBAIC0wLDAgKzEsNjkgQEAKK3JlcXVpcmUgYmx1ZXo1LmluYworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzljODUzZjNjOTA1NjRjYWJlYzc1YWIzNTEwNmMzNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjlhODcyMzA3MmVmNjZiYWU3ZWMzMDFjNzc0OTAyZWJjYjQ0NGM5YzViMTQ5YjVhMTk5ZTYwYTFiYTk3MGU5MCIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCisgICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCisgICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCisgICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCisgICAgdG9vbHMvb2JleGN0bCBcCisgICAgdG9vbHMvYnRtZ210IFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKKyAgICBlbXVsYXRvci9idHZpcnQgXAorICAgIGVtdWxhdG9yL2IxZWUgXAorICAgIGVtdWxhdG9yL2hmcCBcCisgICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCisgICAgdG9vbHMvM2RzcCBcCisgICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAorICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAorICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCisgICAgdG9vbHMvc2NvLXRlc3RlciBcCisgICAgdG9vbHMvc21wLXRlc3RlciBcCisgICAgdG9vbHMvaGNpLXRlc3RlciBcCisgICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCisgICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAorICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19CVCA/PSAiIFwKKyAgICB0b29scy9iZGFkZHIgXAorICAgIHRvb2xzL2F2aW5mbyBcCisgICAgdG9vbHMvYXZ0ZXN0IFwKKyAgICB0b29scy9zY290ZXN0IFwKKyAgICB0b29scy9hbXB0ZXN0IFwKKyAgICB0b29scy9od2RiIFwKKyAgICB0b29scy9oY2lldmVudG1hc2sgXAorICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCisgICAgdG9vbHMvYnRpbmZvIFwKKyAgICB0b29scy9idHNub29wIFwKKyAgICB0b29scy9idHByb3h5IFwKKyAgICB0b29scy9idGlvdGVzdCBcCisgICAgdG9vbHMvYm5lcHRlc3QgXAorICAgIHRvb2xzL21jYXB0ZXN0IFwKKyAgICB0b29scy9jbHRlc3QgXAorICAgIHRvb2xzL29vYnRlc3QgXAorICAgIHRvb2xzL2FkdnRlc3QgXAorICAgIHRvb2xzL3NlcTJic2VxIFwKKyAgICB0b29scy9ub2tmdyBcCisgICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKKyAgICB0b29scy9lZGR5c3RvbmUgXAorICAgIHRvb2xzL2liZWFjb24gXAorICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAorICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAorICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKKyAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCisgICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKKyAgICBwcm9maWxlcy9pYXAvaWFwZCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWZpcmV3YWxsLW5mdGFibGVzLWZpeC1idWlsZC13aXRoLWxpYm5mdG5sLTEuMC43LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmFmYmQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWZpcmV3YWxsLW5mdGFibGVzLWZpeC1idWlsZC13aXRoLWxpYm5mdG5sLTEuMC43LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSA0MDU4Y2UzMTg2YTk5ZmQ1ZjAzMzUwZmMxMWE3ZmM4ZDM4YjZhMzgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IE1vbiwgOCBNYXkgMjAxNyAxMDo1MzoxOCArMDMwMAotU3ViamVjdDogW1BBVENIXSBmaXJld2FsbC1uZnRhYmxlczogZml4IGJ1aWxkIHdpdGggbGlibmZ0bmwtMS4wLjcKLQotV2UgbmVlZCB0aGVzZSB1cGRhdGVzIHRvIGFjY29tbW9kYXRlIHRoZSBjaGFuZ2VzIGNhdXNlZCBieSB0aGUgZm9sbG93aW5nCi1jb21taXQgaW4gbGlibmZ0bmwtMS4wLjcKLQotY29tbWl0IDkwN2E5ZjhlNWE5M2Y1YmNkNDQ5NjQzZWIzOTE2YTY1NmQ2MzQ3NTgKLUF1dGhvcjogUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5ldGZpbHRlci5vcmc+Ci1EYXRlOiAgIFR1ZSBEZWMgMjAgMTM6NDc6MTEgMjAxNiArMDEwMAotCi1zcmM6IGdldCByaWQgb2YgYWxpYXNlcyBhbmQgY29tcGF0Ci0KLVRoaXMgbWFjaGluZXJ5IHdhcyBpbnRyb2R1Y2VkIHRvIGF2b2lkIHN1ZGRlbiBjb21waWxhdGlvbiBicmVha2FnZSBvZgotb2xkIG5mdGFibGVzIHJlbGVhc2VzLiBXaXRoIHRoZSB1cGNvbWluZyByZWxlYXNlIG9mIDAuNyAoYW5kIDAuNiB3aGljaAotaXMgbm93IDYgbW9udGhzIG9sZCkgdGhpcyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZS4KLQotTW9yZW92ZXIsIHVzZXJzIGdhaW4gbm90aGluZyBmcm9tIG9sZGVyIHJlbGVhc2VzIHNpbmNlIHRoZXkgYXJlCi1oYWxmLWJvaWxlZCBhbmQgYnVnZ3kuCi0KLVNvIGxldCdzIGdldCByaWQgb2YgYWxpYXNlcyBub3cuIEJ1bXAgTElCVkVSU0lPTiBhbmQgdXBkYXRlIG1hcCBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHNyYy9maXJld2FsbC1uZnRhYmxlcy5jIHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMgYi9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYwotaW5kZXggNTgzZDFjNC4uODNiMTM3YiAxMDA2NDQKLS0tLSBhL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCi0rKysgYi9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYwotQEAgLTM4Nyw5ICszODcsOSBAQCBzdGF0aWMgaW50IGFkZF9jbXAoc3RydWN0IG5mdG5sX3J1bGUgKnJ1bGUsIHVpbnQzMl90IHNyZWcsIHVpbnQzMl90IG9wLAotICAgICAgICAgaWYgKCFleHByKQotICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAKLS0gICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9DTVBfU1JFRywgc3JlZyk7Ci0tICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfQ01QX09QLCBvcCk7Ci0tICAgICAgICBuZnRubF9leHByX3NldChleHByLCBORlRfRVhQUl9DTVBfREFUQSwgZGF0YSwgZGF0YV9sZW4pOwotKyAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfQ01QX1NSRUcsIHNyZWcpOwotKyAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfQ01QX09QLCBvcCk7Ci0rICAgICAgICBuZnRubF9leHByX3NldChleHByLCBORlROTF9FWFBSX0NNUF9EQVRBLCBkYXRhLCBkYXRhX2xlbik7Ci0gCi0gICAgICAgICBuZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOwotIAotQEAgLTU3NSw4ICs1NzUsOCBAQCBzdGF0aWMgaW50IGJ1aWxkX3J1bGVfbmF0KGNvbnN0IGNoYXIgKmFkZHJlc3MsIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuLAotIAlleHByID0gbmZ0bmxfZXhwcl9hbGxvYygibWV0YSIpOwotIAlpZiAoIWV4cHIpCi0gCQlnb3RvIGVycjsKLS0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUZOQU1FKTsKLS0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRk5BTUUpOwotKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7Ci0gCW5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7Ci0gCWVyciA9IGFkZF9jbXAocnVsZSwgTkZUX1JFR18xLCBORlRfQ01QX0VRLCBpbnRlcmZhY2UsCi0gCQkJc3RybGVuKGludGVyZmFjZSkgKyAxKTsKLUBAIC02NzcsOCArNjc3LDggQEAgc3RhdGljIGludCBidWlsZF9ydWxlX3NuYXQoaW50IGluZGV4LCBjb25zdCBjaGFyICphZGRyZXNzLAotIAlleHByID0gbmZ0bmxfZXhwcl9hbGxvYygibWV0YSIpOwotIAlpZiAoIWV4cHIpCi0gCQlnb3RvIGVycjsKLS0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUYpOwotLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOwotKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOwotIAluZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOwotIAllcnIgPSBhZGRfY21wKHJ1bGUsIE5GVF9SRUdfMSwgTkZUX0NNUF9FUSwgJmluZGV4LCBzaXplb2YoaW5kZXgpKTsKLSAJaWYgKGVyciA8IDApCi0tLSAKLTIuNC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWdpb2dudXRscy1GaXgtYS1jcmFzaC11c2luZy13aXNwci1vdmVyLVRMUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWdpb2dudXRscy1GaXgtYS1jcmFzaC11c2luZy13aXNwci1vdmVyLVRMUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA4MGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtZ2lvZ251dGxzLUZpeC1hLWNyYXNoLXVzaW5nLXdpc3ByLW92ZXItVExTLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gOTI5ZmM5YjcwNjgxMDA0NDRlMGZmY2NjZDI1ODQxZjc4NzkxZTYxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMDY6NDA6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3dlYjogRml4IGEgY3Jhc2ggdXNpbmcgd2lzcHIgb3ZlciBUTFMKK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK1doZW4gZ251dGxzX2NoYW5uZWwgaXMgaW5zdGFudGlhdGVkLCB0aGUgZ251dGxzX2NoYW5uZWwtPmVzdGFibGlzaGVkCitoYXMgdG8gYmUgaW5pdGlhdGVkIGFzIEZBTFNFLiBPdGhlcndpc2UsIGNoZWNrX2hhbmRzaGFrZSBmdW5jdGlvbgord29uJ3Qgd29yay4gQSByYW5kb20gaW5pdGlhbCB2YWx1ZSAxIG9mIGdudXRsc19jaGFubmVsLT5lc3RhYmxpc2hlZAord2lsbCBtYWtlIGNoZWNrX2hhbmRzaGFrZSByZXR1cm4gR19JT19TVEFUVVNfTk9STUFMLCB3aGVuIHRoZSBjaGFubmVsCitpcyBhY3R1YWxseSBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGhlIG9ic2VydmVkIGJlaGF2aW91cnMgYXJlLAorCistIHdpc3ByIGlzIGdldHRpbmcgcmFuZG9tIGVycm9ycyBpbiB3aXNwcl9wb3J0YWxfd2ViX3Jlc3VsdAorLSBDb25uTWFuIGNyYXNoZXMgb24gZXhpdCBhZnRlciB0aG9zZSByYW5kb20gZXJyb3JzCistIHdoZW4gd2lzcHIgaXMgbHVja2x5IHdvcmtpbmcsIENvbm5NYW4gZG9lc24ndCBjcmFzaCBvbiBleGl0CisKK1NpZ25lZC1vZmYtYnk6IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L2NvbW1pdC8/aWQ9NzNlNTNmM2JkOWU3ZGViYWU4NjM0MWYxZWVlN2I5Nzg2MmE1NmE1ZV0KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CisgZ3dlYi9naW9nbnV0bHMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2d3ZWIvZ2lvZ251dGxzLmMgYi9nd2ViL2dpb2dudXRscy5jCitpbmRleCAwOWRjOWU3Li5jMDI5YThiIDEwMDY0NAorLS0tIGEvZ3dlYi9naW9nbnV0bHMuYworKysrIGIvZ3dlYi9naW9nbnV0bHMuYworQEAgLTQyMSw3ICs0MjEsNyBAQCBHSU9DaGFubmVsICpnX2lvX2NoYW5uZWxfZ251dGxzX25ldyhpbnQgZmQpCisgCisgCURCRygiIik7CisgCistCWdudXRsc19jaGFubmVsID0gZ19uZXcoR0lPR251VExTQ2hhbm5lbCwgMSk7CisrCWdudXRsc19jaGFubmVsID0gZ19uZXcwKEdJT0dudVRMU0NoYW5uZWwsIDEpOworIAorIAljaGFubmVsID0gKEdJT0NoYW5uZWwgKikgZ251dGxzX2NoYW5uZWw7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWluZXQtQWRkLXByZWZpeGxlbi10by1pcHJvdXRlX2RlZmF1bHRfZnVuY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1pbmV0LUFkZC1wcmVmaXhsZW4tdG8taXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkN2IzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1pbmV0LUFkZC1wcmVmaXhsZW4tdG8taXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gNTA4ZGM2MGExZjA3NThlYmM1ODZiNmIwODY0NzhhMTc2ZDQ5MzA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KK0RhdGU6IFRodSwgNSBPY3QgMjAxNyAwOTozNDo0MSArMDEwMAorU3ViamVjdDogW1BBVENIIDEvNF0gaW5ldDogQWRkIHByZWZpeGxlbiB0byBpcHJvdXRlX2RlZmF1bHRfZnVuY3Rpb24KK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK0FkZCBwcmVmaXhsZW4gcGFyYW1ldGVyIHRvIHRoaXMgZnVuY3Rpb24gaW4gcHJlcGFyYXRpb24gZm9yIHVzaW5nCitpdCBhbHNvIGluIGNyZWF0aW5nIHN1Ym5ldCByb3V0ZSBsYXRlciwgZS5nLgorCitkZWZhdWx0IHZpYSAxOTIuMTY4LjEwMC4xIGRldiBldGgwCisxOTIuMTY4LjEwMC4wLzI0IGRldiBldGgwCisKK1NpZ25lZC1vZmYtYnk6IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L2NvbW1pdC8/aWQ9ZWRkYTViNjk1ZGUyZWU3OWYwMjMxNGFiYzliNDZmZGQ0NmIzODhlMV0KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Cisgc3JjL2luZXQuYyB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW5ldC5jIGIvc3JjL2luZXQuYworaW5kZXggYjg4N2FhMC4uYWI4YWVjOCAxMDA2NDQKKy0tLSBhL3NyYy9pbmV0LmMKKysrKyBiL3NyYy9pbmV0LmMKK0BAIC0yNzk2LDcgKzI3OTYsNyBAQCBpbnQgX19jb25ubWFuX2luZXRfZGVsX2Z3bWFya19ydWxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgZmFtaWx5LCB1aW50MzJfdCBmd21hcgorIH0KKyAKKyBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorLQkJCWNvbnN0IGNoYXIgKmdhdGV3YXkpCisrCQkJY29uc3QgY2hhciAqZ2F0ZXdheSwgdW5zaWduZWQgY2hhciBwcmVmaXhsZW4pCisgeworIAlzdHJ1Y3QgX19jb25ubWFuX2luZXRfcnRubF9oYW5kbGUgcnRoOworIAl1bnNpZ25lZCBjaGFyIGJ1ZltzaXplb2Yoc3RydWN0IGluNl9hZGRyKV07CitAQCAtMjgyOSw2ICsyODI5LDcgQEAgc3RhdGljIGludCBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KGludCBjbWQsIHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJcnRoLnJlcS51LnIucnQucnRtX3Byb3RvY29sID0gUlRQUk9UX0JPT1Q7CisgCXJ0aC5yZXEudS5yLnJ0LnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOworIAlydGgucmVxLnUuci5ydC5ydG1fdHlwZSA9IFJUTl9VTklDQVNUOworKwlydGgucmVxLnUuci5ydC5ydG1fZHN0X2xlbiA9IHByZWZpeGxlbjsKKyAKKyAJX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyX2woJnJ0aC5yZXEubiwgc2l6ZW9mKHJ0aC5yZXEpLCBSVEFfR0FURVdBWSwKKyAJCQkJCQkJCWJ1ZiwgbGVuKTsKK0BAIC0yODYwLDcgKzI4NjEsNyBAQCBpbnQgX19jb25ubWFuX2luZXRfYWRkX2RlZmF1bHRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIHsKKyAJLyogaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhIDEuMi4zLjQgZGV2IHdsYW4wIHRhYmxlIDEyMzQgKi8KKyAKKy0JcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX05FV1JPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSk7CisrCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ORVdST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXksIDApOworIH0KKyAKKyBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCitAQCAtMjg2OCw3ICsyODY5LDcgQEAgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIHsKKyAJLyogaXAgcm91dGUgZGVsIGRlZmF1bHQgdmlhIDEuMi4zLjQgZGV2IHdsYW4wIHRhYmxlIDEyMzQgKi8KKyAKKy0JcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX0RFTFJPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSk7CisrCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ERUxST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXksIDApOworIH0KKyAKKyBpbnQgX19jb25ubWFuX2luZXRfZ2V0X2ludGVyZmFjZV9sbF9hZGRyZXNzKGludCBpbmRleCwgaW50IGZhbWlseSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtc2Vzc2lvbi1LZWVwLXRyYWNrLW9mLWFkZHItaW4tZndfc25hdC1zZXNzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtc2Vzc2lvbi1LZWVwLXRyYWNrLW9mLWFkZHItaW4tZndfc25hdC1zZXNzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjRkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1zZXNzaW9uLUtlZXAtdHJhY2stb2YtYWRkci1pbi1md19zbmF0LXNlc3Npb24ucGF0Y2gKQEAgLTAsMCArMSwxMTIgQEAKK0Zyb20gYjVmZDU5NDU4ODZmYTE4NDVkYjVjOTY5NDI0YjYzZDg5NGZlMDM3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KK0RhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTA6MDI6MTYgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHNlc3Npb246IEtlZXAgdHJhY2sgb2YgYWRkciBpbiBmd19zbmF0ICYgc2Vzc2lvbgorVG86IGNvbm5tYW5AbGlzdHMuMDEub3JnCitDYzogd2FnaUBtb25vbS5vcmcKKworV2hlbiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNlc3Npb24gaW4gZndfc25hdCdzIGxpc3Qgb2Ygc2Vzc2lvbnMsCitmd19zbmF0IGZhaWxlZCB0byBiZSByZS1jcmVhdGVkIHdoZW4gdXBkYXRlLXNlc3Npb24tc3RhdGUgaXMgdHJpZ2dlcmVkCit3aXRoIG5ldyBJUCBhZGRyZXNzLiBUaGlzIGlzIGJlY2F1c2UgaW5kZXggYWxvbmUgaXMgbm90IHN1ZmZpY2llbnQgdG8KK2RlY2lkZSBpZiBmd19zbmF0IG5lZWRzIHRvIGJlIHJlLWNyZWF0ZWQuIFRoZSBzb2x1dGlvbiBoZXJlIGlzIHRvIGtlZXAKK2EgdHJhY2sgb2YgSVAgYWRkciBhbmQgdXNlIGl0IHRvIGF2b2lkIGZhbHNlIGxvb2t1cCBvZiBmd19zbmF0LgorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPWY5ZTI3ZDRhYmZjYWI1YzgwYTM4ZTA4NTBiNWRkYjI2Mjc3Zjk3YzFdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIHNyYy9zZXNzaW9uLmMgfCAxOSArKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbi5jIGIvc3JjL3Nlc3Npb24uYworaW5kZXggOWUzYzU1OS4uOTY1YWMwNiAxMDA2NDQKKy0tLSBhL3NyYy9zZXNzaW9uLmMKKysrKyBiL3NyYy9zZXNzaW9uLmMKK0BAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBjb25ubWFuX3Nlc3Npb24geworIAlzdHJ1Y3QgZmlyZXdhbGxfY29udGV4dCAqZnc7CisgCXVpbnQzMl90IG1hcms7CisgCWludCBpbmRleDsKKysJY2hhciAqYWRkcjsKKyAJY2hhciAqZ2F0ZXdheTsKKyAJYm9vbCBwb2xpY3lfcm91dGluZzsKKyAJYm9vbCBzbmF0X2VuYWJsZWQ7CitAQCAtNzksNiArODAsNyBAQCBzdHJ1Y3QgZndfc25hdCB7CisgCUdTTGlzdCAqc2Vzc2lvbnM7CisgCWludCBpZDsKKyAJaW50IGluZGV4OworKwljaGFyICphZGRyOworIAlzdHJ1Y3QgZmlyZXdhbGxfY29udGV4dCAqZnc7CisgfTsKKyAKK0BAIC0yMDAsNyArMjAyLDcgQEAgc3RhdGljIGNoYXIgKnNlcnZpY2UyYmVhcmVyKGVudW0gY29ubm1hbl9zZXJ2aWNlX3R5cGUgdHlwZSkKKyAJcmV0dXJuICIiOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IGZ3X3NuYXQgKmZ3X3NuYXRfbG9va3VwKGludCBpbmRleCkKKytzdGF0aWMgc3RydWN0IGZ3X3NuYXQgKmZ3X3NuYXRfbG9va3VwKGludCBpbmRleCwgY29uc3QgY2hhciAqYWRkcikKKyB7CisgCXN0cnVjdCBmd19zbmF0ICpmd19zbmF0OworIAlHU0xpc3QgKmxpc3Q7CitAQCAtMjA4LDggKzIxMCwxMSBAQCBzdGF0aWMgc3RydWN0IGZ3X3NuYXQgKmZ3X3NuYXRfbG9va3VwKGludCBpbmRleCkKKyAJZm9yIChsaXN0ID0gZndfc25hdF9saXN0OyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgeworIAkJZndfc25hdCA9IGxpc3QtPmRhdGE7CisgCistCQlpZiAoZndfc25hdC0+aW5kZXggPT0gaW5kZXgpCisrCQlpZiAoZndfc25hdC0+aW5kZXggPT0gaW5kZXgpIHsKKysJCQlpZiAoZ19zdHJjbXAwKGFkZHIsIGZ3X3NuYXQtPmFkZHIpICE9IDApCisrCQkJCWNvbnRpbnVlOworIAkJCXJldHVybiBmd19zbmF0OworKwkJfQorIAl9CisgCXJldHVybiBOVUxMOworIH0KK0BAIC0yMjQsNiArMjI5LDcgQEAgc3RhdGljIGludCBmd19zbmF0X2NyZWF0ZShzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uLAorIAorIAlmd19zbmF0LT5mdyA9IF9fY29ubm1hbl9maXJld2FsbF9jcmVhdGUoKTsKKyAJZndfc25hdC0+aW5kZXggPSBpbmRleDsKKysJZndfc25hdC0+YWRkciA9IGdfc3RyZHVwKGFkZHIpOworIAorIAlmd19zbmF0LT5pZCA9IF9fY29ubm1hbl9maXJld2FsbF9lbmFibGVfc25hdChmd19zbmF0LT5mdywKKyAJCQkJCQlpbmRleCwgaWZuYW1lLCBhZGRyKTsKK0BAIC0yMzgsNiArMjQ0LDcgQEAgc3RhdGljIGludCBmd19zbmF0X2NyZWF0ZShzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uLAorIAlyZXR1cm4gMDsKKyBlcnI6CisgCV9fY29ubm1hbl9maXJld2FsbF9kZXN0cm95KGZ3X3NuYXQtPmZ3KTsKKysJZ19mcmVlKGZ3X3NuYXQtPmFkZHIpOworIAlnX2ZyZWUoZndfc25hdCk7CisgCXJldHVybiBlcnI7CisgfQorQEAgLTM5Myw3ICs0MDAsNyBAQCBzdGF0aWMgdm9pZCBkZWxfbmF0X3J1bGVzKHN0cnVjdCBjb25ubWFuX3Nlc3Npb24gKnNlc3Npb24pCisgCQlyZXR1cm47CisgCisgCXNlc3Npb24tPnNuYXRfZW5hYmxlZCA9IGZhbHNlOworLQlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoc2Vzc2lvbi0+aW5kZXgpOworKwlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmFkZHIpOworIAorIAlpZiAoIWZ3X3NuYXQpCisgCQlyZXR1cm47CitAQCAtNDIwLDggKzQyNywxMSBAQCBzdGF0aWMgdm9pZCBhZGRfbmF0X3J1bGVzKHN0cnVjdCBjb25ubWFuX3Nlc3Npb24gKnNlc3Npb24pCisgCWlmICghYWRkcikKKyAJCXJldHVybjsKKyAKKysJZ19mcmVlKHNlc3Npb24tPmFkZHIpOworKwlzZXNzaW9uLT5hZGRyID0gZ19zdHJkdXAoYWRkcik7CisrCisgCXNlc3Npb24tPnNuYXRfZW5hYmxlZCA9IHRydWU7CistCWZ3X3NuYXQgPSBmd19zbmF0X2xvb2t1cChpbmRleCk7CisrCWZ3X3NuYXQgPSBmd19zbmF0X2xvb2t1cChpbmRleCwgc2Vzc2lvbi0+YWRkcik7CisgCWlmIChmd19zbmF0KSB7CisgCQlmd19zbmF0X3JlZihzZXNzaW9uLCBmd19zbmF0KTsKKyAJCXJldHVybjsKK0BAIC01MDIsNiArNTEyLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9zZXNzaW9uKHN0cnVjdCBjb25ubWFuX3Nlc3Npb24gKnNlc3Npb24pCisgCWdfZnJlZShzZXNzaW9uLT5pbmZvKTsKKyAJZ19mcmVlKHNlc3Npb24tPmluZm9fbGFzdCk7CisgCWdfZnJlZShzZXNzaW9uLT5nYXRld2F5KTsKKysJZ19mcmVlKHNlc3Npb24tPmFkZHIpOworIAorIAlnX2ZyZWUoc2Vzc2lvbik7CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMi1pbmV0LUltcGxlbWVudC1zdWJuZXQtcm91dGUtY3JlYXRpb24tZGVsZXRpb24taW4taXByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItaW5ldC1JbXBsZW1lbnQtc3VibmV0LXJvdXRlLWNyZWF0aW9uLWRlbGV0aW9uLWluLWlwci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzk1M2U1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItaW5ldC1JbXBsZW1lbnQtc3VibmV0LXJvdXRlLWNyZWF0aW9uLWRlbGV0aW9uLWluLWlwci5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDA4Y2RhNDAwNDQ5MWQzOTcxYThiOWRmOTM3NDI2YzQzODAwZDE1YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBUaHUsIDUgT2N0IDIwMTcgMDk6Mzc6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGluZXQ6IEltcGxlbWVudCBzdWJuZXQgcm91dGUgY3JlYXRpb24vZGVsZXRpb24gaW4KKyBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5CitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCistIENhbGN1bGF0ZSBzdWJuZXQgYWRkcmVzcyBiYXNlIG9uIGdhdGV3YXkgYWRkcmVzcyBhbmQgcHJlZml4bGVuCistIERpZmZlcmVudGlhdGUgY3JlYXRpb24gb2Ygcm91dGVzIHRvIGdhdGV3YXkgYW5kIHN1Ym5ldAorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPWZmN2RjZjkxZjEyYTJhMjM3ZmVlYmM2ZTYwNmQwYThlOTI5NzU1MjhdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIHNyYy9pbmV0LmMgfCAyMiArKysrKysrKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW5ldC5jIGIvc3JjL2luZXQuYworaW5kZXggYWI4YWVjOC4uMGRkYjAzMCAxMDA2NDQKKy0tLSBhL3NyYy9pbmV0LmMKKysrKyBiL3NyYy9pbmV0LmMKK0BAIC0yODAyLDYgKzI4MDIsOSBAQCBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAl1bnNpZ25lZCBjaGFyIGJ1ZltzaXplb2Yoc3RydWN0IGluNl9hZGRyKV07CisgCWludCByZXQsIGxlbjsKKyAJaW50IGZhbWlseSA9IGNvbm5tYW5faW5ldF9jaGVja19pcGFkZHJlc3MoZ2F0ZXdheSk7CisrCWNoYXIgKmRzdCA9IE5VTEw7CisrCisrCURCRygiZ2F0ZXdheSAlcy8ldSB0YWJsZSAldSIsIGdhdGV3YXksIHByZWZpeGxlbiwgdGFibGVfaWQpOworIAorIAlzd2l0Y2ggKGZhbWlseSkgeworIAljYXNlIEFGX0lORVQ6CitAQCAtMjgxNCw3ICsyODE3LDE5IEBAIHN0YXRpYyBpbnQgaXByb3V0ZV9kZWZhdWx0X21vZGlmeShpbnQgY21kLCB1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCQlyZXR1cm4gLUVJTlZBTDsKKyAJfQorIAorLQlyZXQgPSBpbmV0X3B0b24oZmFtaWx5LCBnYXRld2F5LCBidWYpOworKwlpZiAocHJlZml4bGVuKSB7CisrCQlzdHJ1Y3QgaW5fYWRkciBpcHY0X3N1Ym5ldF9hZGRyLCBpcHY0X21hc2s7CisrCisrCQltZW1zZXQoJmlwdjRfc3VibmV0X2FkZHIsIDAsIHNpemVvZihpcHY0X3N1Ym5ldF9hZGRyKSk7CisrCQlpcHY0X21hc2suc19hZGRyID0gaHRvbmwoKDB4ZmZmZmZmZmYgPDwgKDMyIC0gcHJlZml4bGVuKSkgJiAweGZmZmZmZmZmKTsKKysJCWlwdjRfc3VibmV0X2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGdhdGV3YXkpOworKwkJaXB2NF9zdWJuZXRfYWRkci5zX2FkZHIgJj0gaXB2NF9tYXNrLnNfYWRkcjsKKysKKysJCWRzdCA9IGdfc3RyZHVwKGluZXRfbnRvYShpcHY0X3N1Ym5ldF9hZGRyKSk7CisrCX0KKysKKysJcmV0ID0gaW5ldF9wdG9uKGZhbWlseSwgZHN0ID8gZHN0IDogZ2F0ZXdheSwgYnVmKTsKKysJZ19mcmVlKGRzdCk7CisgCWlmIChyZXQgPD0gMCkKKyAJCXJldHVybiAtRUlOVkFMOworIAorQEAgLTI4MzEsOCArMjg0Niw5IEBAIHN0YXRpYyBpbnQgaXByb3V0ZV9kZWZhdWx0X21vZGlmeShpbnQgY21kLCB1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCXJ0aC5yZXEudS5yLnJ0LnJ0bV90eXBlID0gUlROX1VOSUNBU1Q7CisgCXJ0aC5yZXEudS5yLnJ0LnJ0bV9kc3RfbGVuID0gcHJlZml4bGVuOworIAorLQlfX2Nvbm5tYW5faW5ldF9ydG5sX2FkZGF0dHJfbCgmcnRoLnJlcS5uLCBzaXplb2YocnRoLnJlcSksIFJUQV9HQVRFV0FZLAorLQkJCQkJCQkJYnVmLCBsZW4pOworKwlfX2Nvbm5tYW5faW5ldF9ydG5sX2FkZGF0dHJfbCgmcnRoLnJlcS5uLCBzaXplb2YocnRoLnJlcSksCisrCQlwcmVmaXhsZW4gPiAwID8gUlRBX0RTVCA6IFJUQV9HQVRFV0FZLCBidWYsIGxlbik7CisrCisgCWlmICh0YWJsZV9pZCA8IDI1NikgeworIAkJcnRoLnJlcS51LnIucnQucnRtX3RhYmxlID0gdGFibGVfaWQ7CisgCX0gZWxzZSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAzLWluZXQtSW1wbGVtZW50LUFQSXMtZm9yLWNyZWF0aW5nLWFuZC1kZWxldGluZy1zdWJuZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1pbmV0LUltcGxlbWVudC1BUElzLWZvci1jcmVhdGluZy1hbmQtZGVsZXRpbmctc3VibmV0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YmE1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1pbmV0LUltcGxlbWVudC1BUElzLWZvci1jcmVhdGluZy1hbmQtZGVsZXRpbmctc3VibmV0LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gYTkyNDNmMTNkNmUxYWFkZDY5YmZjYzI3Zjc1ZjY5YzM4YmU1MTY3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNzozMDoxNyArMDEwMAorU3ViamVjdDogW1BBVENIIDMvNF0gaW5ldDogSW1wbGVtZW50IEFQSXMgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBzdWJuZXQKKyByb3V0ZQorVG86IGNvbm5tYW5AbGlzdHMuMDEub3JnCitDYzogd2FnaUBtb25vbS5vcmcKKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD0zYTE1YjBiN2ZjY2QwNTNhZmY5MWRhMmNjNjg1ODU1MDlkMGM1MDliXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvY29ubm1hbi5oIHwgIDQgKysrKworIHNyYy9pbmV0LmMgICAgfCAxNCArKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Nvbm5tYW4uaCBiL3NyYy9jb25ubWFuLmgKK2luZGV4IDIxYjcwODAuLmRhNDQ0NmEgMTAwNjQ0CistLS0gYS9zcmMvY29ubm1hbi5oCisrKysgYi9zcmMvY29ubm1hbi5oCitAQCAtMjQwLDcgKzI0MCwxMSBAQCBpbnQgX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyMzIoc3RydWN0IG5sbXNnaGRyICpuLCBzaXplX3QgbWF4bGVuLAorIGludCBfX2Nvbm5tYW5faW5ldF9hZGRfZndtYXJrX3J1bGUodWludDMyX3QgdGFibGVfaWQsIGludCBmYW1pbHksIHVpbnQzMl90IGZ3bWFyayk7CisgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9md21hcmtfcnVsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGZhbWlseSwgdWludDMyX3QgZndtYXJrKTsKKyBpbnQgX19jb25ubWFuX2luZXRfYWRkX2RlZmF1bHRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LCBjb25zdCBjaGFyICpnYXRld2F5KTsKKytpbnQgX19jb25ubWFuX2luZXRfYWRkX3N1Ym5ldF90b190YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisrCQkJY29uc3QgY2hhciAqZ2F0ZXdheSwgdW5zaWduZWQgY2hhciBwcmVmaXhsZW4pOworIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwgY29uc3QgY2hhciAqZ2F0ZXdheSk7CisraW50IF9fY29ubm1hbl9pbmV0X2RlbF9zdWJuZXRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisrCQkJY29uc3QgY2hhciAqZ2F0ZXdheSwgdW5zaWduZWQgY2hhciBwcmVmaXhsZW4pOworIGludCBfX2Nvbm5tYW5faW5ldF9nZXRfYWRkcmVzc19uZXRtYXNrKGludCBpZmluZGV4LAorIAkJc3RydWN0IHNvY2thZGRyX2luICphZGRyZXNzLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKm5ldG1hc2spOworIAorZGlmZiAtLWdpdCBhL3NyYy9pbmV0LmMgYi9zcmMvaW5ldC5jCitpbmRleCAwZGRiMDMwLi5kY2QxYWIyIDEwMDY0NAorLS0tIGEvc3JjL2luZXQuYworKysrIGIvc3JjL2luZXQuYworQEAgLTI4ODAsNiArMjg4MCwxMyBAQCBpbnQgX19jb25ubWFuX2luZXRfYWRkX2RlZmF1bHRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fTkVXUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCAwKTsKKyB9CisgCisraW50IF9fY29ubm1hbl9pbmV0X2FkZF9zdWJuZXRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCQkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKQorK3sKKysJLyogaXAgcm91dGUgYWRkIDEuMi4zLjQvMjQgZGV2IGV0aDAgdGFibGUgMTIzNCAqLworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fTkVXUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCBwcmVmaXhsZW4pOworK30KKysKKyBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCQkJCQkJY29uc3QgY2hhciAqZ2F0ZXdheSkKKyB7CitAQCAtMjg4OCw2ICsyODk1LDEzIEBAIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX0RFTFJPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgMCk7CisgfQorIAorK2ludCBfX2Nvbm5tYW5faW5ldF9kZWxfc3VibmV0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCQkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKQorK3sKKysJLyogaXAgcm91dGUgZGVsIDEuMi4zLjQvMjQgZGV2IGV0aDAgdGFibGUgMTIzNCAqLworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fREVMUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCBwcmVmaXhsZW4pOworK30KKysKKyBpbnQgX19jb25ubWFuX2luZXRfZ2V0X2ludGVyZmFjZV9sbF9hZGRyZXNzKGludCBpbmRleCwgaW50IGZhbWlseSwKKyAJCQkJCQkJCXZvaWQgKmFkZHJlc3MpCisgeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwNC1zZXNzaW9uLVVzZS1zdWJuZXQtcm91dGUtY3JlYXRpb24tYW5kLWRlbGV0aW9uLUFQSXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwNC1zZXNzaW9uLVVzZS1zdWJuZXQtcm91dGUtY3JlYXRpb24tYW5kLWRlbGV0aW9uLUFQSXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyMTNlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDA0LXNlc3Npb24tVXNlLXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1hbmQtZGVsZXRpb24tQVBJcy5wYXRjaApAQCAtMCwwICsxLDc3IEBACitGcm9tIGRlYjkzNzJkYjgzOTZkYTRmN2NkMjA1NTVjZTdjOWE4YjNhZDk2YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBGcmksIDYgT2N0IDIwMTcgMTE6NDA6MTYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIHNlc3Npb246IFVzZSBzdWJuZXQgcm91dGUgY3JlYXRpb24gYW5kIGRlbGV0aW9uIEFQSXMKK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK0FzIHN1Ym5ldCByb3V0ZSBpcyBhZGRyZXNzIGFuZCBzZXNzaW9uIHNwZWNpZmljIGluIHRoaXMgY2FzZSwgc28gYWRkCitwcmVmaXhsZW4gaW50byBzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uLCBhbmQgdXBkYXRlIGl0IGFsb25nIHdpdGggaXBjb25maWcuCitUaGVuIHVzZSBpdCBpbiBzdWJuZXQgcm91dGUgcmVsYXRlZCBBUElzLgorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPTI4NWYyNWVmNmNjOWU0YTQzZGFiODM1MjNmM2UyZWFiNDM2NWFjMjZdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIHNyYy9zZXNzaW9uLmMgfCAyMCArKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb24uYyBiL3NyYy9zZXNzaW9uLmMKK2luZGV4IDk2NWFjMDYuLjdiN2ExNGIgMTAwNjQ0CistLS0gYS9zcmMvc2Vzc2lvbi5jCisrKysgYi9zcmMvc2Vzc2lvbi5jCitAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uIHsKKyAJaW50IGluZGV4OworIAljaGFyICphZGRyOworIAljaGFyICpnYXRld2F5OworKwl1bnNpZ25lZCBjaGFyIHByZWZpeGxlbjsKKyAJYm9vbCBwb2xpY3lfcm91dGluZzsKKyAJYm9vbCBzbmF0X2VuYWJsZWQ7CisgfTsKK0BAIC0zNTcsMTMgKzM1OCwxNyBAQCBzdGF0aWMgdm9pZCBkZWxfZGVmYXVsdF9yb3V0ZShzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAlpZiAoIXNlc3Npb24tPmdhdGV3YXkpCisgCQlyZXR1cm47CisgCistCURCRygiaW5kZXggJWQgcm91dGluZyB0YWJsZSAlZCBkZWZhdWx0IGdhdGV3YXkgJXMiLAorLQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPm1hcmssIHNlc3Npb24tPmdhdGV3YXkpOworKwlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzLyV1IiwKKysJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5LCBzZXNzaW9uLT5wcmVmaXhsZW4pOworKworKwkJX19jb25ubWFuX2luZXRfZGVsX3N1Ym5ldF9mcm9tX3RhYmxlKHNlc3Npb24tPm1hcmssCisrCQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmdhdGV3YXksIHNlc3Npb24tPnByZWZpeGxlbik7CisgCisgCV9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUoc2Vzc2lvbi0+bWFyaywKKyAJCQkJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5nYXRld2F5KTsKKyAJZ19mcmVlKHNlc3Npb24tPmdhdGV3YXkpOworIAlzZXNzaW9uLT5nYXRld2F5ID0gTlVMTDsKKysJc2Vzc2lvbi0+cHJlZml4bGVuID0gMDsKKyAJc2Vzc2lvbi0+aW5kZXggPSAtMTsKKyB9CisgCitAQCAtMzgzLDEzICszODgsMjAgQEAgc3RhdGljIHZvaWQgYWRkX2RlZmF1bHRfcm91dGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbikKKyAJaWYgKCFzZXNzaW9uLT5nYXRld2F5KQorIAkJc2Vzc2lvbi0+Z2F0ZXdheSA9IGdfc3RyZHVwKGluZXRfbnRvYShhZGRyKSk7CisgCistCURCRygiaW5kZXggJWQgcm91dGluZyB0YWJsZSAlZCBkZWZhdWx0IGdhdGV3YXkgJXMiLAorLQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPm1hcmssIHNlc3Npb24tPmdhdGV3YXkpOworKwlzZXNzaW9uLT5wcmVmaXhsZW4gPSBfX2Nvbm5tYW5faXBjb25maWdfZ2V0X3ByZWZpeGxlbihpcGNvbmZpZyk7CisrCisrCURCRygiaW5kZXggJWQgcm91dGluZyB0YWJsZSAlZCBkZWZhdWx0IGdhdGV3YXkgJXMvJXUiLAorKwkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPm1hcmssIHNlc3Npb24tPmdhdGV3YXksIHNlc3Npb24tPnByZWZpeGxlbik7CisgCisgCWVyciA9IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHNlc3Npb24tPm1hcmssCisgCQkJCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+Z2F0ZXdheSk7CisgCWlmIChlcnIgPCAwKQorIAkJREJHKCJzZXNzaW9uICVwICVzIiwgc2Vzc2lvbiwgc3RyZXJyb3IoLWVycikpOworKworKwllcnIgPSBfX2Nvbm5tYW5faW5ldF9hZGRfc3VibmV0X3RvX3RhYmxlKHNlc3Npb24tPm1hcmssCisrCQkJCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+Z2F0ZXdheSwgc2Vzc2lvbi0+cHJlZml4bGVuKTsKKysJaWYgKGVyciA8IDApCisrCQlEQkcoInNlc3Npb24gYWRkIHN1Ym5ldCByb3V0ZSAlcCAlcyIsIHNlc3Npb24sIHN0cmVycm9yKC1lcnIpKTsKKyB9CisgCisgc3RhdGljIHZvaWQgZGVsX25hdF9ydWxlcyhzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vQ1ZFLTIwMTctMTI4NjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vQ1ZFLTIwMTctMTI4NjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Zjc4ZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL0NWRS0yMDE3LTEyODY1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA1YzI4MWQxODJlY2RkMGE0MjRiNjRmNzY5OGYzMjQ2N2Y4ZjY3YjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVra2EgUmlzc2FuZW4gPGp1a2thLnJpc3NhbmVuQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFdlZCwgOSBBdWcgMjAxNyAxMDoxNjo0NiArMDMwMAotU3ViamVjdDogZG5zcHJveHk6IEZpeCBjcmFzaCBvbiBtYWxmb3JtZWQgRE5TIHJlc3BvbnNlCi0KLUlmIHRoZSByZXNwb25zZSBxdWVyeSBzdHJpbmcgaXMgbWFsZm9ybWVkLCB3ZSBtaWdodCBhY2Nlc3MgbWVtb3J5Ci1wYXNzIHRoZSBlbmQgb2YgIm5hbWUiIHZhcmlhYmxlIGluIHBhcnNlX3Jlc3BvbnNlKCkuCi0KLUNWRTogQ1ZFLTIwMTctMTI4NjUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvcGF0Y2gvP2lkPTVjMjgxZDE4MmVjZGQwYTQyNGI2NGY3Njk4ZjMyNDY3ZjhmNjdiNzFdCi0KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gc3JjL2Ruc3Byb3h5LmMgfCAxNiArKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZG5zcHJveHkuYyBiL3NyYy9kbnNwcm94eS5jCi1pbmRleCAzOGFjNWJmLi40MGI0ZjE1IDEwMDY0NAotLS0tIGEvc3JjL2Ruc3Byb3h5LmMKLSsrKyBiL3NyYy9kbnNwcm94eS5jCi1AQCAtODM4LDcgKzgzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNhY2hlX2NoZWNrKGdwb2ludGVyIHJlcXVlc3QsIGludCAqcXR5cGUsIGludCBwcm90bykKLSBzdGF0aWMgaW50IGdldF9uYW1lKGludCBjb3VudGVyLAotIAkJdW5zaWduZWQgY2hhciAqcGt0LCB1bnNpZ25lZCBjaGFyICpzdGFydCwgdW5zaWduZWQgY2hhciAqbWF4LAotIAkJdW5zaWduZWQgY2hhciAqb3V0cHV0LCBpbnQgb3V0cHV0X21heCwgaW50ICpvdXRwdXRfbGVuLAotLQkJdW5zaWduZWQgY2hhciAqKmVuZCwgY2hhciAqbmFtZSwgaW50ICpuYW1lX2xlbikKLSsJCXVuc2lnbmVkIGNoYXIgKiplbmQsIGNoYXIgKm5hbWUsIHNpemVfdCBtYXhfbmFtZSwgaW50ICpuYW1lX2xlbikKLSB7Ci0gCXVuc2lnbmVkIGNoYXIgKnA7Ci0gCi1AQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBpbnQgZ2V0X25hbWUoaW50IGNvdW50ZXIsCi0gCi0gCQkJcmV0dXJuIGdldF9uYW1lKGNvdW50ZXIgKyAxLCBwa3QsIHBrdCArIG9mZnNldCwgbWF4LAotIAkJCQkJb3V0cHV0LCBvdXRwdXRfbWF4LCBvdXRwdXRfbGVuLCBlbmQsCi0tCQkJCQluYW1lLCBuYW1lX2xlbik7Ci0rCQkJCQluYW1lLCBtYXhfbmFtZSwgbmFtZV9sZW4pOwotIAkJfSBlbHNlIHsKLSAJCQl1bnNpZ25lZCBsYWJlbF9sZW4gPSAqcDsKLSAKLUBAIC04NjksNiArODY5LDkgQEAgc3RhdGljIGludCBnZXRfbmFtZShpbnQgY291bnRlciwKLSAJCQlpZiAoKm91dHB1dF9sZW4gPiBvdXRwdXRfbWF4KQotIAkJCQlyZXR1cm4gLUVOT0JVRlM7Ci0gCi0rCQkJaWYgKCgqbmFtZV9sZW4gKyAxICsgbGFiZWxfbGVuICsgMSkgPiBtYXhfbmFtZSkKLSsJCQkJcmV0dXJuIC1FTk9CVUZTOwotKwotIAkJCS8qCi0gCQkJICogV2UgbmVlZCB0aGUgb3JpZ2luYWwgbmFtZSBpbiBvcmRlciB0byBjaGVjawotIAkJCSAqIGlmIHRoaXMgYW5zd2VyIGlzIHRoZSBjb3JyZWN0IG9uZS4KLUBAIC05MDAsMTQgKzkwMywxNCBAQCBzdGF0aWMgaW50IHBhcnNlX3JyKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgY2hhciAqc3RhcnQsCi0gCQkJdW5zaWduZWQgY2hhciAqcmVzcG9uc2UsIHVuc2lnbmVkIGludCAqcmVzcG9uc2Vfc2l6ZSwKLSAJCQl1aW50MTZfdCAqdHlwZSwgdWludDE2X3QgKmNsYXNzLCBpbnQgKnR0bCwgaW50ICpyZGxlbiwKLSAJCQl1bnNpZ25lZCBjaGFyICoqZW5kLAotLQkJCWNoYXIgKm5hbWUpCi0rCQkJY2hhciAqbmFtZSwgc2l6ZV90IG1heF9uYW1lKQotIHsKLSAJc3RydWN0IGRvbWFpbl9yciAqcnI7Ci0gCWludCBlcnIsIG9mZnNldDsKLSAJaW50IG5hbWVfbGVuID0gMCwgb3V0cHV0X2xlbiA9IDAsIG1heF9yc3AgPSAqcmVzcG9uc2Vfc2l6ZTsKLSAKLSAJZXJyID0gZ2V0X25hbWUoMCwgYnVmLCBzdGFydCwgbWF4LCByZXNwb25zZSwgbWF4X3JzcCwKLS0JCSZvdXRwdXRfbGVuLCBlbmQsIG5hbWUsICZuYW1lX2xlbik7Ci0rCQkJJm91dHB1dF9sZW4sIGVuZCwgbmFtZSwgbWF4X25hbWUsICZuYW1lX2xlbik7Ci0gCWlmIChlcnIgPCAwKQotIAkJcmV0dXJuIGVycjsKLSAKLUBAIC0xMDMzLDcgKzEwMzYsOCBAQCBzdGF0aWMgaW50IHBhcnNlX3Jlc3BvbnNlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbiwKLSAJCW1lbXNldChyc3AsIDAsIHNpemVvZihyc3ApKTsKLSAKLSAJCXJldCA9IHBhcnNlX3JyKGJ1ZiwgcHRyLCBidWYgKyBidWZsZW4sIHJzcCwgJnJzcF9sZW4sCi0tCQkJdHlwZSwgY2xhc3MsIHR0bCwgJnJkbGVuLCAmbmV4dCwgbmFtZSk7Ci0rCQkJdHlwZSwgY2xhc3MsIHR0bCwgJnJkbGVuLCAmbmV4dCwgbmFtZSwKLSsJCQlzaXplb2YobmFtZSkgLSAxKTsKLSAJCWlmIChyZXQgIT0gMCkgewotIAkJCWVyciA9IHJldDsKLSAJCQlnb3RvIG91dDsKLUBAIC0xMDk5LDcgKzExMDMsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3Jlc3BvbnNlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbiwKLSAJCQkgKi8KLSAJCQlyZXQgPSBnZXRfbmFtZSgwLCBidWYsIG5leHQgLSByZGxlbiwgYnVmICsgYnVmbGVuLAotIAkJCQkJcnNwLCByc3BfbGVuLCAmb3V0cHV0X2xlbiwgJmVuZCwKLS0JCQkJCW5hbWUsICZuYW1lX2xlbik7Ci0rCQkJCQluYW1lLCBzaXplb2YobmFtZSkgLSAxLCAmbmFtZV9sZW4pOwotIAkJCWlmIChyZXQgIT0gMCkgewotIAkJCQkvKiBqdXN0IGlnbm9yZSB0aGUgZXJyb3IgYXQgdGhpcyBwb2ludCAqLwotIAkJCQlwdHIgPSBuZXh0OwotLS0gCi1jZ2l0IHYxLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyYzY4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgY29ubm1hbi5pbmMKLQotU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg2NS5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTIwMDAyODcwMmM4MzFkNWY1MzVkMjBkNjFlNjA4ZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTlhMDgwOGM3MjljMWYzNDhmYzM2ZDhjZWNiNTJkMTliNzJiYzM0Y2I0MTFjNTAyNjA4Y2IwZTAxOTBmYzcxZSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiY29ubm1hbi1jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjIxMTgxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzUuYmIKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSBjb25ubWFuLmluYworCitTUkNfVVJJICA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1wbHVnaW4uaC1DaGFuZ2UtdmlzaWJpbGl0eS10by1kZWZhdWx0LWZvci1kZWJ1Zy1zeW1iLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5tYW4uc2VydmljZS1zdG9wLXN5c3RlbWQtcmVzb2x2ZWQtd2hlbi13ZS11c2UtY28ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Nvbm5tYW4gXAorICAgICAgICAgICAgZmlsZTovL25vLXZlcnNpb24tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtc2Vzc2lvbi1LZWVwLXRyYWNrLW9mLWFkZHItaW4tZndfc25hdC1zZXNzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpb2dudXRscy1GaXgtYS1jcmFzaC11c2luZy13aXNwci1vdmVyLVRMUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmV0LUFkZC1wcmVmaXhsZW4tdG8taXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWluZXQtSW1wbGVtZW50LXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1kZWxldGlvbi1pbi1pcHIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtaW5ldC1JbXBsZW1lbnQtQVBJcy1mb3ItY3JlYXRpbmctYW5kLWRlbGV0aW5nLXN1Ym5ldC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1zZXNzaW9uLVVzZS1zdWJuZXQtcm91dGUtY3JlYXRpb24tYW5kLWRlbGV0aW9uLUFQSXMucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJhZTM3YjQ1ZWU5YjNkYjVlYzgxMTUxODhmOGE3NjUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2ZDdkZWI5ODM3MTU0NWM2ZTQxNzIzOWE5YjNiM2UzMjAxYzE1MjlkMDhlZWRmNDBhZmJjODU5ODQyY2YyYWEiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCmluZGV4IDY0NTlkYzAuLjEwMWMzM2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTQ6NTY6NTYgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAwMi8xMV0gZGhjbGllbnQgZGJ1cwogCi11cHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQogCiBSZWJhc2UgdG8gNC4zLjYKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNy0zMTQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL0NWRS0yMDE3LTMxNDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIyNjg4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNy0zMTQ0LnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gOGNmZGVkZWUzNjljMjZkMjg2OWI2ZWM0YTY0NDYwYjVmNWEzMDkzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBNYXJrd2FsZGVyIDx0bWFya0Bpc2Mub3JnPgorRGF0ZTogVGh1LCA3IERlYyAyMDE3IDExOjM5OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFt2NF8zXSBQbHVncyBhIHNvY2tldCBkZXNjcmlwdG9yIGxlYWsgaW4gT01BUEkKKworICAgICAgICBNZXJnZXMgaW4gcnQ0Njc2Ny4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9ZGhjcC5naXQ7YT1jb21taXRkaWZmO2g9NTA5N2JjMDU1OWY1OTI2ODNmYWFjMWY2N2JmMzUwZTFiZGRmNmVkNF0KKworQ1ZFOiBDVkUtMjAxNy0zMTQ0CisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBSRUxOT1RFUyAgICAgICAgIHwgNyArKysrKysrCisgb21hcGlwL2J1ZmZlci5jICB8IDkgKysrKysrKysrCisgb21hcGlwL21lc3NhZ2UuYyB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL1JFTE5PVEVTIGIvUkVMTk9URVMKK2luZGV4IGRkNDBhYWYuLjM3NDFiODAgMTAwNjQ0CistLS0gYS9SRUxOT1RFUworKysrIGIvUkVMTk9URVMKK0BAIC02Niw2ICs2NiwxMyBAQCBXZSB3ZWxjb21lIGNvbW1lbnRzIGZyb20gREhDUCB1c2VycywgYWJvdXQgdGhpcyBvciBhbnl0aGluZyBlbHNlIHdlIGRvLgorIEVtYWlsIFZpY2t5IFJpc2ssIFByb2R1Y3QgTWFuYWdlciBhdCB2aWNreUBpc2Mub3JnIG9yIGRpc2N1c3Mgb24gCisgZGhjcC11c2Vyc0BsaXN0cy5pc2Mub3JnLgorIAorKy0gUGx1Z2dlZCBhIHNvY2tldCBkZXNjcmlwdG9yIGxlYWsgaW4gT01BUEksIHRoYXQgY2FuIG9jY3VyIHdoZW4gdGhlcmUgaXMKKysgIGRhdGEgcGVuZGluZyB0byBiZSB3cml0dGVuIHRvIGFuIE9NQVBJIGNvbm5lY3Rpb24sIHdoZW4gdGhlIGNvbm5lY3Rpb24KKysgIGlzIGNsb3NlZCBieSB0aGUgcmVhZGVyLiAgVGhhbmtzIHRvIFBhdmVsIFpodWtvdiBhdCBSZWRIYXQgZm9yIGJyaW5naW5nCisrICB0aGlzIGlzc3VlIHRvIG91ciBhdHRlbnRpb24gYW5kIHdob3NlIHBhdGNoIGhlbHBlZCBndWlkZSB1cyBpbiB0aGUgcmlnaHQKKysgIGRpcmVjdGlvbi4KKysgIFtJU2MtQnVncyAjNDY3NjddCisrCisgCQkJQ2hhbmdlcyBzaW5jZSA0LjMuNmIxCisgCisgLSBOb25lCitkaWZmIC0tZ2l0IGEvb21hcGlwL2J1ZmZlci5jIGIvb21hcGlwL2J1ZmZlci5jCitpbmRleCBmN2ZkYzMyLi44MDkwMzRkIDEwMDY0NAorLS0tIGEvb21hcGlwL2J1ZmZlci5jCisrKysgYi9vbWFwaXAvYnVmZmVyLmMKK0BAIC01NjYsNiArNTY2LDE1IEBAIGlzY19yZXN1bHRfdCBvbWFwaV9jb25uZWN0aW9uX3dyaXRlciAob21hcGlfb2JqZWN0X3QgKmgpCisgCQkJb21hcGlfYnVmZmVyX2RlcmVmZXJlbmNlICgmYnVmZmVyLCBNREwpOworIAkJfQorIAl9CisrCisrCS8qIElmIHdlIGhhZCBkYXRhIGxlZnQgdG8gd3JpdGUgd2hlbiB3ZSdyZSB0b2xkIHRvIGRpc2Nvbm5lY3QsCisrCSogd2UgbmVlZCByZWNhbGwgZGlzY29ubmVjdCwgbm93IHRoYXQgd2UncmUgZG9uZSB3cml0aW5nLgorKwkqIFNlZSBydDQ2NzY3LiAqLworKwlpZiAoYy0+b3V0X2J5dGVzID09IDAgJiYgYy0+c3RhdGUgPT0gb21hcGlfY29ubmVjdGlvbl9kaXNjb25uZWN0aW5nKSB7CisrCQlvbWFwaV9kaXNjb25uZWN0IChoLCAxKTsKKysJCXJldHVybiBJU0NfUl9TSFVUVElOR0RPV047CisrCX0KKysKKyAJcmV0dXJuIElTQ19SX1NVQ0NFU1M7CisgfQorIAorZGlmZiAtLWdpdCBhL29tYXBpcC9tZXNzYWdlLmMgYi9vbWFwaXAvbWVzc2FnZS5jCitpbmRleCA1OWNjZGMyLi4yMWJjZmMzIDEwMDY0NAorLS0tIGEvb21hcGlwL21lc3NhZ2UuYworKysrIGIvb21hcGlwL21lc3NhZ2UuYworQEAgLTMzOSw3ICszMzksNyBAQCBpc2NfcmVzdWx0X3Qgb21hcGlfbWVzc2FnZV91bnJlZ2lzdGVyIChvbWFwaV9vYmplY3RfdCAqbW8pCisgfQorIAorICNpZmRlZiBERUJVR19QUk9UT0NPTAorLXN0YXRpYyBjb25zdCBjaGFyICpvbWFwaV9tZXNzYWdlX29wX25hbWUoaW50IG9wKSB7CisrY29uc3QgY2hhciAqb21hcGlfbWVzc2FnZV9vcF9uYW1lKGludCBvcCkgeworIAlzd2l0Y2ggKG9wKSB7CisgCWNhc2UgT01BUElfT1BfT1BFTjogICAgcmV0dXJuICJPTUFQSV9PUF9PUEVOIjsKKyAJY2FzZSBPTUFQSV9PUF9SRUZSRVNIOiByZXR1cm4gIk9NQVBJX09QX1JFRlJFU0giOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKaW5kZXggNjYxNWFlMi4uY2MxMzU0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICAgICAgZmlsZTovLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0zMTQ0LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYWZhNmU5YjNlYjc1MzllYTA0ODQyMWE4MmM2NjhhZGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKaW5kZXggYTU3OGViMy4uNGZiZmVjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwpAQCAtMTMsNiArMTMsOCBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZwogCitDTEVBTkJST0tFTiA9ICIxIgorCiBQQUNLQUdFQ09ORklHID8/PSAidGlwYyIKIFBBQ0tBR0VDT05GSUdbdGlwY10gPSAiLCxsaWJtbmwsIgogCkBAIC0yMSw3ICsyMyw3IEBACiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKICAgICBzaCBjb25maWd1cmUgJHtTVEFHSU5HX0lOQ0RJUn0KICAgICAjIEV4cGxpY2l0bHkgZGlzYWJsZSBBVE0gc3VwcG9ydAotICAgIHNlZCAtaSAtZSAnL1RDX0NPTkZJR19BVE0vZCcgQ29uZmlnCisgICAgc2VkIC1pIC1lICcvVENfQ09ORklHX0FUTS9kJyBjb25maWcubWsKIH0KIAogZG9faW5zdGFsbCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1leHBsaWNpdGx5LWZvci1VSU5UMTZfTUFYLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjBjMGFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1leHBsaWNpdGx5LWZvci1VSU5UMTZfTUFYLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAzYzg4NWQ4N2JlZmM3MDZiYjkyMzkzM2I5ODE5ZGU2ZmUyZGU4OTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTQ6MDM6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBleHBsaWNpdGx5IGZvciBVSU5UMTZfTUFYKQotCi1GaXhlcwotfCB0Y19jb3JlLmM6MTkwOjI5OiBlcnJvcjogJ1VJTlQxNl9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdfX0lOVDE2X01BWF9fJz8KLXwgICAgaWYgKChzeiA+PiBzLT5zaXplX2xvZykgPiBVSU5UMTZfTUFYKSB7Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHRjL3RjX2NvcmUuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGMvdGNfY29yZS5jIGIvdGMvdGNfY29yZS5jCi1pbmRleCA3YmJlMGQ3Li44MjFiNzQxIDEwMDY0NAotLS0tIGEvdGMvdGNfY29yZS5jCi0rKysgYi90Yy90Y19jb3JlLmMKLUBAIC0xMiw2ICsxMiw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5c2xvZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKaW5kZXggYTlmOGRiNi4uYTkwMjdjNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSBmNThmYzk5Yzg4YTU0MTM1ZTU1YTZlMDk1NmNlOGFlNzEwNzhkMWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMmVkMTBmYzUyMTVjNGEzMmU2NzQwYjBhMGMyNDM5NjU5YmU2ODAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMDQ6Mjk6MDcgKzAwMDAKK0RhdGU6IE1vbiwgMTMgTm92IDIwMTcgMTU6NTk6MzUgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gaXA6IFJlbW92ZSB1bm5lZWQgaGVhZGVyCiAKIEZpeCByZWRlZmluaXRpb24gb2Ygc3RydWN0IGV0aGhkciB3aXRoIGEgc3VpdGFibHkgcGF0Y2hlZCBtdXNsIGxpYmMKQEAgLTgsMjMgKzgsMjMgQEAKIAogU2lnbmVkLW9mZi1ieTogQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4KIAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW25ldGRldkB2Z2VyLmtlcm5lbC5vcmddCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW25ldGRldkB2Z2VyLmtlcm5lbC5vcmddCiAtLS0KICBpcC9pcGxpbmtfYnJpZGdlLmMgfCAxIC0KICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaXAvaXBsaW5rX2JyaWRnZS5jIGIvaXAvaXBsaW5rX2JyaWRnZS5jCi1pbmRleCA4MThiNDNjLi5mMDY1YjIyIDEwMDY0NAoraW5kZXggY2NjZGVjMS4uZjA2NWIyMiAxMDA2NDQKIC0tLSBhL2lwL2lwbGlua19icmlkZ2UuYwogKysrIGIvaXAvaXBsaW5rX2JyaWRnZS5jCi1AQCAtMTUsNyArMTUsNiBAQAorQEAgLTEzLDcgKzEzLDYgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CistI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfbGluay5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4KLS0jaW5jbHVkZSA8bmV0aW5ldC9ldGhlci5oPgogICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAKLSAjaW5jbHVkZSAicnRfbmFtZXMuaCIKIC0tIAogMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaAppbmRleCAzOWM3ZDQwLi5jM2QzZmVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaApAQCAtNSwxNCArNSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLQogLS0tCi0gaXAvaWZjZmcgfCAgIDE1ICsrKysrKysrLS0tLS0tLQotIGlwL3J0cHIgIHwgICAgMiArLQorIGlwL2lmY2ZnIHwgMTUgKysrKysrKystLS0tLS0tCisgaXAvcnRwciAgfCAgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaXAvaWZjZmcgYi9pcC9pZmNmZwotaW5kZXggMDgzZDlkZi4uNjBiY2YxZiAxMDA2NDQKK2luZGV4IDMwYTJkYzQuLjg2NzdiMmUgMTAwNjQ0CiAtLS0gYS9pcC9pZmNmZwogKysrIGIvaXAvaWZjZmcKIEBAIC0xLDEyICsxLDEzIEBACkBAIC00Myw3ICs0Miw3IEBACiAtaXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDI1NS4yNTUuMjU1LjI1NSA+JiAvZGV2L251bGwKICtpcCByb3V0ZSBhZGQgdW5yZWFjaGFibGUgMjI0LjAuMC4wLzI0ID4gL2Rldi9udWxsIDI+JjEKICtpcCByb3V0ZSBhZGQgdW5yZWFjaGFibGUgMjU1LjI1NS4yNTUuMjU1ID4gL2Rldi9udWxsIDI+JjEKLSBpZiBbIGBpcCBsaW5rIGxzICRkZXYgfCBncmVwIC1jIE1VTFRJQ0FTVGAgLWdlIDEgXTsgdGhlbgorIGlmIFsgImBpcCBsaW5rIGxzICRkZXYgfCBncmVwIC1jIE1VTFRJQ0FTVGAiIC1nZSAxIF07IHRoZW4KIC0gIGlwIHJvdXRlIGFkZCAyMjQuMC4wLjAvNCBkZXYgJGRldiBzY29wZSBnbG9iYWwgPiYgL2Rldi9udWxsCiArICBpcCByb3V0ZSBhZGQgMjI0LjAuMC4wLzQgZGV2ICRkZXYgc2NvcGUgZ2xvYmFsID4gL2Rldi9udWxsIDI+JjEKICBmaQpAQCAtNjAsNSArNTksNSBAQAogIGV4ZWMgdHIgIltcXFxcXSIgIlsKICBdIgogLS0gCi0xLjcuOS41CisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoCmluZGV4IDNkMzI0YzkuLjUwYzRiZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoCkBAIC0xNSwxMyArMTUsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEJhcnVjaCBTaWFjaCA8YmFydWNoQHRrb3MuY28uaWw+CiBTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KIC0tLQotIGluY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaCB8IDQgKysrLQorIGluY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oIHwgNCArKystCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWJjLWNvbXBhdC5oIGIvaW5jbHVkZS9saW51eC9saWJjLWNvbXBhdC5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggYi9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogaW5kZXggZjM4NTcxZC4uMzBmMGI2NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaAotKysrIGIvaW5jbHVkZS9saW51eC9saWJjLWNvbXBhdC5oCistLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAorKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKIEBAIC00OSwxMCArNDksMTIgQEAKICAjZGVmaW5lIF9MSUJDX0NPTVBBVF9ICiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9jb25maWd1cmUtY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9jb25maWd1cmUtY3Jvc3MucGF0Y2gKaW5kZXggODY2NjA5Yy4uOGI3NWEyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvY29uZmlndXJlLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaApAQCAtOSwxOSArOSwxOSBAQAogU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KIFNpZ25lZC1vZmYtYnk6IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgogCi1JbmRleDogaXByb3V0ZTItMy43LjAvY29uZmlndXJlCitJbmRleDogaXByb3V0ZTItNC4xNC4xL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwcm91dGUyLTMuNy4wLm9yaWcvY29uZmlndXJlCi0rKysgaXByb3V0ZTItMy43LjAvY29uZmlndXJlCistLS0gaXByb3V0ZTItNC4xNC4xLm9yaWcvY29uZmlndXJlCisrKysgaXByb3V0ZTItNC4xNC4xL2NvbmZpZ3VyZQogQEAgLTIsNiArMiw3IEBACi0gIyBUaGlzIGlzIG5vdCBhbiBhdXRjb25mIGdlbmVyYXRlZCBjb25maWd1cmUKKyAjIFRoaXMgaXMgbm90IGFuIGF1dG9jb25mIGdlbmVyYXRlZCBjb25maWd1cmUKICAjCiAgSU5DTFVERT0kezE6LSIkUFdEL2luY2x1ZGUifQogK1NZU1JPT1Q9JDEKICAKLSAjIE1ha2UgYSB0ZW1wIGRpcmVjdG9yeSBpbiBidWlsZCB0cmVlLgotIFRNUERJUj0kKG1rdGVtcCAtZCBjb25maWcuWFhYWFhYKQotQEAgLTE1OCw3ICsxNTksNyBAQCBjaGVja19pcHRfbGliX2RpcigpCisgIyBPdXRwdXQgZmlsZSB3aGljaCBpcyBpbnB1dCB0byBNYWtlZmlsZQorIENPTkZJRz1jb25maWcubWsKK0BAIC0xOTUsNyArMTk2LDcgQEAgY2hlY2tfaXB0X2xpYl9kaXIoKQogIAkJcmV0dXJuCiAgCWZpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiZDA1NDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBpcHJvdXRlMi5pbmMKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YTk0OThkZTg4YmNjYTk1YzMwNWRmNjEwOGFlMTk3ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjY3MTAyOGJkYTY5NmQwY2I4ZjQ4ZWM4ZTcwMjU4MWMzYTUwMWNhZWVkMzNlZWMzYTgxZDcwNDFjYmM4MDI2IgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWUyZTRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xNC4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTA3NTQyM2Q3MDI5ZTAyYThmMjNlZDRmNDJiN2UzNzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQzYWMwNjhhZmNjMzUwYTQ0OGY0NTgxYjZlMjkyMzMxZWY3ZTRlN2FhNzQ2ZTM0OTgxNTgyZDVmZGIxMDA2NyIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcmRhLXV0aWxzL2lyZGEtdXRpbHMtMC45LjE4L2xkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcmRhLXV0aWxzL2lyZGEtdXRpbHMtMC45LjE4L2xkZmxhZ3MucGF0Y2gKaW5kZXggZTk1ZmUzNS4uYjI0NmRlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJkYS11dGlscy9pcmRhLXV0aWxzLTAuOS4xOC9sZGZsYWdzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyZGEtdXRpbHMvaXJkYS11dGlscy0wLjkuMTgvbGRmbGFncy5wYXRjaApAQCAtMyw3MiArMyw4NCBAQAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvZmluZGNoaXAvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2ZpbmRjaGlwL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvZmluZGNoaXAvTWFrZWZpbGUKIEBAIC02NSw1ICs2NSw1IEBAIGluc3RhbGw6IGZpbmRjaGlwCi0KLSBnZmluZGNoaXA6IGdmaW5kY2hpcC5jCi0JJChwcm5fY2MpCisgCisgZ2ZpbmRjaGlwOiBnZmluZGNoaXAuYyAKKyAJJChwcm5fY2MpCiAtCSQoRUNNRCkpJChDQykgJChDRkxBR1MpIGBndGstY29uZmlnIC0tY2ZsYWdzYCAgJDwgLW8gJEAgYGd0ay1jb25maWcgLS1saWJzYAogKwkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgYGd0ay1jb25maWcgLS1jZmxhZ3NgICAkPCAtbyAkQCBgZ3RrLWNvbmZpZyAtLWxpYnNgCi0KKyAKK0luZGV4OiBpcmRhLXV0aWxzLTAuOS4xOC9pcmF0dGFjaC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGlyZGEtdXRpbHMtMC45LjE4Lm9yaWcvaXJhdHRhY2gvTWFrZWZpbGUKICsrKyBpcmRhLXV0aWxzLTAuOS4xOC9pcmF0dGFjaC9NYWtlZmlsZQogQEAgLTQ5LDEzICs0OSwxMyBAQCBhbGw6ICQoVEFSR0VUUykKLQorIAogIGlyYXR0YWNoOiBpcmF0dGFjaC5vIHV0aWwubwotCSQocHJuX2NjX28pCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgaXJhdHRhY2gubyB1dGlsLm8gLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIGlyYXR0YWNoLm8gdXRpbC5vIC1vICRACi0KLQotCisgCisgCisgCiAgZG9uZ2xlX2F0dGFjaDogZG9uZ2xlX2F0dGFjaC5vCi0JJChwcm5fY2NfbykKKyAJJChwcm5fY2NfbykKIC0JJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSBkb25nbGVfYXR0YWNoLm8gLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIGRvbmdsZV9hdHRhY2gubyAtbyAkQAotCi0KKyAKKyAKICBpbnN0YWxsOiAkKFRBUkdFVFMpCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvaXJkYWR1bXAvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lyZGFkdW1wL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJkYWR1bXAvTWFrZWZpbGUKIEBAIC00MCw3ICs0MCw3IEBAIGxpYl9pcmRhZHVtcC5hOiAkKExJQklSREFEVU1QX09CSlMpCi0KKyAKICBpcmRhZHVtcDogJChJUkRBRFVNUF9PQkpTKSAkKExJQklSREFEVU1QX1RBUkdFVCkKLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgLW8gICQoSVJEQURVTVBfVEFSR0VUKSAkPCAkKExJQklSREFEVU1QX1RBUkdFVCkKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgLW8gICQoSVJEQURVTVBfVEFSR0VUKSAkPCAkKExJQklSREFEVU1QX1RBUkdFVCkKLQotCisgCisgCiAgLmMubzoKK0luZGV4OiBpcmRhLXV0aWxzLTAuOS4xOC9pcmRhcGluZy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGlyZGEtdXRpbHMtMC45LjE4Lm9yaWcvaXJkYXBpbmcvTWFrZWZpbGUKICsrKyBpcmRhLXV0aWxzLTAuOS4xOC9pcmRhcGluZy9NYWtlZmlsZQogQEAgLTU2LDcgKzU2LDcgQEAgYWxsOiAkKFRBUkdFVFMpCi0KKyAKICBpcmRhcGluZzogJChPQkpTKQotCSQocHJuX2NjX28pCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChPQkpTKSAtbyAkQAogKwkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChPQkpTKSAtbyAkQAotCi0KKyAKKyAKICAuYy5vOgorSW5kZXg6IGlyZGEtdXRpbHMtMC45LjE4L2lybmV0ZC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGlyZGEtdXRpbHMtMC45LjE4Lm9yaWcvaXJuZXRkL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJuZXRkL01ha2VmaWxlCiBAQCAtNTAsNyArNTAsNyBAQCBhbGw6ICQoVEFSR0VUUykKLQorIAogIGlybmV0ZDogJChPQkpTKQotCSQocHJuX2NjX28pCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChPQkpTKSAtbyAkQAogKwkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChPQkpTKSAtbyAkQAotCi0KKyAKKyAKICBpbnN0YWxsOiBpcm5ldGQKK0luZGV4OiBpcmRhLXV0aWxzLTAuOS4xOC9wc2lvbi9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGlyZGEtdXRpbHMtMC45LjE4Lm9yaWcvcHNpb24vTWFrZWZpbGUKICsrKyBpcmRhLXV0aWxzLTAuOS4xOC9wc2lvbi9NYWtlZmlsZQogQEAgLTI1LDQgKzI1LDQgQEAgaW5zdGFsbDogJChQU0lPTl9UQVJHRVRTKQogIENGTEFHUyArPSAtZyAtSS4uL2luY2x1ZGUgLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAkKFJQTV9PUFRfRkxBR1MpCi0gaXJwc2lvbjU6Ci0JJChwcm5fY2NfbykKKyBpcnBzaW9uNTogCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChQU0lPTl9TUkMpIC1vICRACiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoUFNJT05fU1JDKSAtbyAkQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiMTdkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuMTQuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIHdpcmVsZXNzIGRldmljZXMiCitERVNDUklQVElPTiA9ICJpdyBpcyBhIG5ldyBubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIFwKK3dpcmVsZXNzIGRldmljZXMuIEl0IHN1cHBvcnRzIGFsbW9zdCBhbGwgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgXAordG8gdGhlIGtlcm5lbCByZWNlbnRseS4gIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc4NjE4YTVjNGFmMjVlOWI5M2VmMGJlMWE5M2Y3NzQiCisKK0RFUEVORFMgPSAibGlibmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2l3LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWl3LXZlcnNpb24uc2gtZG9uLXQtdXNlLWdpdC1kZXNjcmliZS1mb3ItdmVyc2lvbmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjA2NzUxNmNhOTk0MGZkYjhjMDkxZWUzMjUwZGEzNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTBjM2FhZDZmZjUyMjM0ZDAzYTI1MjJiYTJlYmE1NzBlMzZhYmIzZTYwZGMyOWJmMGIxY2U4OGRkNzI1ZDZkNCIKKworaW5oZXJpdCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAtZiAnJHtTfS9NYWtlZmlsZScgXAorICAgIFwKKyAgICAnUFJFRklYPSR7cHJlZml4fScgXAorICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKKyAgICAnTUFORElSPSR7bWFuZGlyfScgXAorIgorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGFlYjA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAibmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciB3aXJlbGVzcyBkZXZpY2VzIgotREVTQ1JJUFRJT04gPSAiaXcgaXMgYSBuZXcgbmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciBcCi13aXJlbGVzcyBkZXZpY2VzLiBJdCBzdXBwb3J0cyBhbG1vc3QgYWxsIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIFwKLXRvIHRoZSBrZXJuZWwgcmVjZW50bHkuICIKLUhPTUVQQUdFID0gImh0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL3VzZXJzL0RvY3VtZW50YXRpb24vaXciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3ODYxOGE1YzRhZjI1ZTliOTNlZjBiZTFhOTNmNzc0IgotCi1ERVBFTkRTID0gImxpYm5sIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9pdy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGUtb2JqZGlyLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA2ZTk2YWI3YTVjNjUyZjhlYWVkNmY3MTUzM2E5ZTBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyZjkyMWYzZGJlMGYzM2MzMDlmNWYyODkxY2NjZjUzMjVjOTRiZDQ4ZGNlZWIxMDJkZTE4M2Y1ZjA0OGE5ZTIiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgLWYgJyR7U30vTWFrZWZpbGUnIFwKLSAgICBcCi0gICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0gICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKLSIKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25lYXJkL25lYXJkL01ha2VmaWxlLmFtLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25lYXJkL25lYXJkL01ha2VmaWxlLmFtLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAppbmRleCA0NjYwNjc2Li42ZTg2NDA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZC9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQvTWFrZWZpbGUuYW0tZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoCkBAIC0xNiwxOCArMTYsMTUgQEAKICBNYWtlZmlsZS5hbSB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMzI0MTMxMS4uYTQzZWFhMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTE2NCw2ICsxNjQsNyBAQCBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlLmluIFwKK0luZGV4OiBuZWFyZC0wLjE2L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmVhcmQtMC4xNi5vcmlnL01ha2VmaWxlLmFtCisrKysgbmVhcmQtMC4xNi9NYWtlZmlsZS5hbQorQEAgLTI0NCw2ICsyNDQsNyBAQCBTRURfUFJPQ0VTUyA9ICQoQU1fVl9HRU4pJChNS0RJUl9QKSAkKGRpCiAgc3JjL3BsdWdpbi4kKE9CSkVYVCk6IHNyYy9idWlsdGluLmgKICAKICBzcmMvYnVpbHRpbi5oOiBzcmMvZ2VuYnVpbHRpbiAkKGJ1aWx0aW5fc291cmNlcykKICsJJChBTV9WX2F0KSQoTUtESVJfUCkgc3JjCiAgCSQoQU1fVl9HRU4pJChzcmNkaXIpL3NyYy9nZW5idWlsdGluICQoYnVpbHRpbl9tb2R1bGVzKSA+ICRACiAgCi0gJChzcmNfbmVhcmRfT0JKRUNUUykgXAotLS0gCi0xLjcuOS41Ci0KKyBzZS9wbHVnaW4uJChPQkpFWFQpOiBzZS9idWlsdGluLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9maWxlcy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9maWxlcy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaAppbmRleCAxNGJkNDAzLi44MjI5MzlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCkBAIC0xNiwxMSArMTYsMTEgQEAKICB1dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkIGIvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKLWluZGV4IDgyMTFhOTAuLjNjMmFhNmYgMTAwNzU1Ci0tLS0gYS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAotKysrIGIvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKLUBAIC0xNiw3ICsxNiw3IEBAIGZpCitJbmRleDogbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmZzLXV0aWxzLTIuMS4xLm9yaWcvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKKysrKyBuZnMtdXRpbHMtMi4xLjEvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKK0BAIC0yOCw3ICsyOCw3IEBAIGZpCiAgIyBGaXJzdCB0cnkgc3lzdGVtZCBpZiBpdCdzIGluc3RhbGxlZC4KICBpZiBbIC1kIC9ydW4vc3lzdGVtZC9zeXN0ZW0gXTsgdGhlbgogICAgICAjIFF1aXQgb25seSBpZiB0aGUgY2FsbCB3b3JrZWQuCkBAIC0yOCw3ICsyOCw0IEBACiArICAgIHN5c3RlbWN0bCBzdGFydCBuZnMtc3RhdGQuc2VydmljZSAmJiBleGl0CiAgZmkKICAKLSAjIEZhbGwgYmFjayB0byBsYXVuY2hpbmcgaXQgb3Vyc2VsdmVzLgotLS0gCi0yLjEuNAotCisgY2QgLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaAppbmRleCA3MDI1ZmI1Li4yNmI1NThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYmY0MzNkNi4uMjhhOGY2MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjksNiArNjksMTIgQEAgQUNfQVJHX0VOQUJMRShuZnN2NCwKK0luZGV4OiBuZnMtdXRpbHMtMi4xLjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmZzLXV0aWxzLTIuMS4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgbmZzLXV0aWxzLTIuMS4xL2NvbmZpZ3VyZS5hYworQEAgLTkyLDYgKzkyLDEyIEBAIEFDX0FSR19FTkFCTEUobmZzdjQsCiAgCUFDX1NVQlNUKGVuYWJsZV9uZnN2NCkKICAJQU1fQ09ORElUSU9OQUwoQ09ORklHX05GU1Y0LCBbdGVzdCAiJGVuYWJsZV9uZnN2NCIgPSAieWVzIl0pCiAgCkBAIC0yNyw5ICsyNyw5IEBACiArICAgICAgICBlbmFibGVfbmZzaWRtYXA9eWVzKQogKwogIEFDX0FSR19FTkFCTEUobmZzdjQxLAotIAlbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW5mc3Y0MV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBORlN2NDEgQDw6QGRlZmF1bHQ9eWVzQDo+QF0pXSwKLUBAIC0yOTYsNyArMzAyLDcgQEAgZmkKKyAJW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbmZzdjQxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZSBzdXBwb3J0IGZvciBORlN2NDEgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAorQEAgLTMzOSw3ICszNDUsNyBAQCBmaQogIAogIGRubCBlbmFibGUgbmZzaWRtYXAgd2hlbiBpdHMgc3VwcG9ydCBieSBsaWJuZnNpZG1hcAogIEFNX0NPTkRJVElPTkFMKENPTkZJR19ORlNEQ0xUUkFDSywgW3Rlc3QgIiRlbmFibGVfbmZzZGNsdHJhY2siID0gInllcyIgXSkKQEAgLTM4LDYgKzM4LDMgQEAKICAKICAKICBpZiB0ZXN0ICIka25mc2RfY3ZfZ2xpYmMyIiA9IG5vOyB0aGVuCi0tLSAKLTEuOC40LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoCmluZGV4IGQ4ZjgxODEuLjg5YThhNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2gKQEAgLTEzLDkgKzEzLDEwIEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCiAKLWRpZmYgLXVwIG5mcy11dGlscy0xLjIuMy91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYy5vcmlnIG5mcy11dGlscy0xLjIuMy91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYwotLS0tIG5mcy11dGlscy0xLjIuMy91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYy5vcmlnCTIwMTAtMDktMjggMDg6MjQ6MTYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbmZzLXV0aWxzLTEuMi4zL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCTIwMTAtMTAtMTUgMTY6NDQ6NDMuNDg3MTE5NjAxIC0wNDAwCitJbmRleDogbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmZzLXV0aWxzLTIuMS4xLm9yaWcvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKKysrKyBuZnMtdXRpbHMtMi4xLjEvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKIEBAIC0yOCw2ICsyOCw5IEBACiAgI2luY2x1ZGUgPG5ldGRiLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0yNCw5ICsyNSw5IEBACiArI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgogKyNpbmNsdWRlIDxyZXNvbHYuaD4KICAKKyAjaW5jbHVkZSAiY29uZmZpbGUuaCIKICAjaW5jbHVkZSAic29ja2FkZHIuaCIKLSAjaW5jbHVkZSAieGxvZy5oIgotQEAgLTg0LDYgKzg3LDcgQEAgc21uX2xvb2t1cChjb25zdCBjaGFyICpuYW1lKQorQEAgLTg5LDYgKzkyLDcgQEAgc21uX2xvb2t1cChjb25zdCBjaGFyICpuYW1lKQogIAl9OwogIAlpbnQgZXJyb3I7CiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgppbmRleCBkOTE3YzRkLi43OTQ1M2FkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIKQEAgLTU2LDcgKzU2LDYgQEAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc3Y0MSBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKQEAgLTcwLDYgKzY5LDggQEAKIFBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgogUEFDS0FHRUNPTkZJR1tuZnNpZG1hcF0gPSAiLS1lbmFibGUtbmZzaWRtYXAsLS1kaXNhYmxlLW5mc2lkbWFwLGtleXV0aWxzIgogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKyMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCitQQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMKaW5kZXggNjc2YTBjMC4uMDQ3MjQxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vLmluYwpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vZm9uby5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTNjZTE3ZDU5NzhlZjM0NDVkZWYyNjViOTg4OTljMmVlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCBibHVldG9vdGgKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBzeXN0ZW1kIGJsdWV0b290aCBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YQogCiBERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHVkZXYgbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIgogCkBAIC0yNiwxMCArMjYsNiBAQAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vZm9ubyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb2Zvbm8KLQotICAjIE9mb25vIHN0aWxsIGhhcyBvbmUgdGVzdCB0b29sIHRoYXQgcmVmZXJzIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCi0gIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtsaWJkaXJ9L29mb25vL3Rlc3Qvc2V0LWRkcgotCiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKQEAgLTM5LDQgKzM1LDUgQEAKIAogRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKIEZJTEVTXyR7UE59LXRlc3RzID0gIiR7bGliZGlyfS8ke0JQTn0vdGVzdCIKLVJERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbjMgcHl0aG9uMy1weWdvYmplY3QgcHl0aG9uMy1kYnVzIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAicHl0aG9uMyBweXRob24zLWRidXMiCitSREVQRU5EU18ke1BOfS10ZXN0cyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJ3B5dGhvbjMtcHlnb2JqZWN0JywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vL3VzZS1weXRob24zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8vdXNlLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4NDA3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vL3VzZS1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK3NldC1kZHIgc2hvdWxkIHVzZSBQeXRob24zIGxpa2UgYWxsIHRoZSBvdGhlciB0ZXN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gMTdiNjljZDFkYTRjNWM1ZjczMmFjYjM4Y2ExNjAyNDQ2YzU2N2VlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI5IEphbiAyMDE4IDExOjMxOjI1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Qvc2V0ZGRyOiB1c2UgUHl0aG9uIDMKKworQWxsIHRoZSBvdGhlciB0ZXN0cyB1c2UgUHl0aG9uIDMsIHNvIHRoaXMgc2hvdWxkIHRvLgorLS0tCisgdGVzdC9zZXQtZGRyIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9zZXQtZGRyIGIvdGVzdC9zZXQtZGRyCitpbmRleCA1ZDA2MWI5NS4uMzM2MzFmMzEgMTAwNzU1CistLS0gYS90ZXN0L3NldC1kZHIKKysrKyBiL3Rlc3Qvc2V0LWRkcgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL3B5dGhvbjMKKyAKKyBpbXBvcnQgc3lzCisgaW1wb3J0IGRidXMKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThmOTgzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TUkNfVVJJICA9ICJcCi0gICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgZmlsZTovL29mb25vIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYWQwNjMwZmNlNmE5YWVjZGI3ZGIzN2JjMWYxZGI3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDdiYThmNDgxYTc3MTVkMDEzYTc5ZjhkNjQ3N2ViODlkOGFhYWUzOTkzOTVkNWQwMDhhMTMxN2MzNGEzMWQ1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU3ZWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIKQEAgLTAsMCArMSw5IEBACityZXF1aXJlIG9mb25vLmluYworCitTUkNfVVJJICA9ICJcCisgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgZmlsZTovL29mb25vIFwKKyAgZmlsZTovL3VzZS1weXRob24zLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYTY4M2FiOGU5ODQ0OGFkOGJjNWRjOTg2OGQyODkzZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTM0YTY2OTZjMzAwYzk4NDFiNTVlOGRmZjY0MGJkMzA5NmU0OWY1ZGJlNTViYmViYWE2OWE3MTY3NmY2ODdlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlOWUyMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYTdlMzU5ZDRiYTM0NWFhMmExM2MwN2YxMDU3MTg0ZTliNGU1OThhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAxMToxOTo0OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBvcGVuc3NoOiBGaXggc3ludGF4IGVycm9yIG9uIHgzMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1UaGlzIGJ1ZyBoYXMgYmVlbiBmaXhlZCBpbiB2XzcuNSBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvCi1vcGVuc3NoLXBvcnRhYmxlL3RyZWUvVl83XzUgYW5kIG1hc3RlciBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tLwotb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3RyZWUvbWFzdGVyLgotCi1GaXggY29tcGlsYXRpb24gZXJyb3IgZHVyaW5nIG9wZW5zc2ggeDMyIGJ1aWxkIGR1ZSB0byBzeW50YXggZXJyb3IuCi0KLVNpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgotLS0tCi0gc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCi1pbmRleCAzYTFhZWRjLi5hOGQ0NzJhIDEwMDY0NAotLS0tIGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCi0rKysgYi9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMKLUBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NrX2ZpbHRlciBwcmVhdXRoX2luc25zW10gPSB7Ci0gCSAqIHg4Ni02NCBzeXNjYWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgZS5nLgotIAkgKiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84NDk5MjMKLSAJICovCi0tCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCk7Ci0rCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCksCi0gI2VuZGlmCi0gCi0gCS8qIERlZmF1bHQgZGVueSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoCmluZGV4IGFkYzI1YzYuLmI4NDAyYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoCkBAIC02LDY0ICs2LDQyIEBACiBTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCitJbmRleDogb3BlbnNzaC03LjZwMS9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2gtNi44cDEub3JpZy9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKKy0tLSBvcGVuc3NoLTcuNnAxLm9yaWcvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKKysrKyBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCiBAQCAtMTcsNyArMTcsNyBAQCBmb3IgYyBpbiBgJHtTU0h9IC1RIGNpcGhlcmA7IGRvIG49MDsgZm9yCiAgCQlwcmludGYgIiUtNjBzIiAiJGMvJG06IgogIAkJKCAke1NTSH0gLW8gJ2NvbXByZXNzaW9uIG5vJyBcCi0gCQkJLUYgJE9CSi9zc2hfcHJveHkgLTIgLW0gJG0gLWMgJGMgc29tZWhvc3QgXAorIAkJCS1GICRPQkovc3NoX3Byb3h5IC1tICRtIC1jICRjIHNvbWVob3N0IFwKIC0JCQlleGVjIHNoIC1jIFwnImRkIG9mPS9kZXYvbnVsbCBvYnM9MzJrIlwnIFwKICsJCQlleGVjIHNoIC1jIFwnImRkIG9mPS9kZXYvbnVsbCBicz0zMmsiXCcgXAogIAkJPCAke0RBVEF9ICkgMj4mMSB8IGdldGJ5dGVzCiAgCiAgCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLUBAIC00Miw3ICs0Miw3IEBAIGZvciBjIGluICRjaXBoZXJzOyBkbwotIAkJcHJpbnRmICIlLTYwcyIgIiRjOiIKLSAJCSggJHtTU0h9IC1vICdjb21wcmVzc2lvbiBubycgXAotIAkJCS1GICRPQkovc3NoX3Byb3h5IC0xIC1jICRjIHNvbWVob3N0IFwKLS0JCQlleGVjIHNoIC1jIFwnImRkIG9mPS9kZXYvbnVsbCBvYnM9MzJrIlwnIFwKLSsJCQlleGVjIHNoIC1jIFwnImRkIG9mPS9kZXYvbnVsbCBicz0zMmsiXCcgXAotIAkJPCAke0RBVEF9ICkgMj4mMSB8IGdldGJ5dGVzCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCQlmYWlsICJzc2ggLTEgZmFpbGVkIHdpdGggY2lwaGVyICRjIgotSW5kZXg6IG9wZW5zc2gtNi44cDEvcmVncmVzcy90cmFuc2Zlci5zaAorSW5kZXg6IG9wZW5zc2gtNy42cDEvcmVncmVzcy90cmFuc2Zlci5zaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2gtNi44cDEub3JpZy9yZWdyZXNzL3RyYW5zZmVyLnNoCi0rKysgb3BlbnNzaC02LjhwMS9yZWdyZXNzL3RyYW5zZmVyLnNoCi1AQCAtMTUsNyArMTUsNyBAQCBmb3IgcCBpbiAke1NTSF9QUk9UT0NPTFN9OyBkbwotIAlmb3IgcyBpbiAxMCAxMDAgMWsgMzJrIDY0ayAxMjhrIDI1Nms7IGRvCi0gCQl0cmFjZSAicHJvdG8gJHAgZGQtc2l6ZSAke3N9IgotIAkJcm0gLWYgJHtDT1BZfQotLQkJZGQgaWY9JERBVEEgb2JzPSR7c30gMj4gL2Rldi9udWxsIHwgXAotKwkJZGQgaWY9JERBVEEgYnM9JHtzfSAyPiAvZGV2L251bGwgfCBcCi0gCQkJJHtTU0h9IC1xIC0kcCAtRiAkT0JKL3NzaF9wcm94eSBzb21laG9zdCAiY2F0ID4gJHtDT1BZfSIKLSAJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotIAkJCWZhaWwgInNzaCBjYXQgJERBVEEgZmFpbGVkIgotSW5kZXg6IG9wZW5zc2gtNi44cDEvcmVncmVzcy95ZXMtaGVhZC5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2gtNi44cDEub3JpZy9yZWdyZXNzL3llcy1oZWFkLnNoCi0rKysgb3BlbnNzaC02LjhwMS9yZWdyZXNzL3llcy1oZWFkLnNoCi1AQCAtNCw3ICs0LDcgQEAKLSB0aWQ9InllcyBwaXBlIGhlYWQiCi0gCi0gZm9yIHAgaW4gJHtTU0hfUFJPVE9DT0xTfTsgZG8KLS0JbGluZXM9YCR7U1NIfSAtJHAgLUYgJE9CSi9zc2hfcHJveHkgdGhpc2hvc3QgJ3NoIC1jICJ3aGlsZSB0cnVlO2RvIGVjaG8geWVzO2RvbmUgfCBfUE9TSVgyX1ZFUlNJT049MTk5MjA5IGhlYWQgLTIwMDAiJyB8IChzbGVlcCAzIDsgd2MgLWwpYAotKwlsaW5lcz1gJHtTU0h9IC0kcCAtRiAkT0JKL3NzaF9wcm94eSB0aGlzaG9zdCAnc2ggLWMgIndoaWxlIHRydWU7ZG8gZWNobyB5ZXM7ZG9uZSB8IF9QT1NJWDJfVkVSU0lPTj0xOTkyMDkgaGVhZCAtbiAyMDAwIicgfCAoc2xlZXAgMyA7IHdjIC1sKWAKKy0tLSBvcGVuc3NoLTcuNnAxLm9yaWcvcmVncmVzcy90cmFuc2Zlci5zaAorKysrIG9wZW5zc2gtNy42cDEvcmVncmVzcy90cmFuc2Zlci5zaAorQEAgLTEzLDcgKzEzLDcgQEAgY21wICR7REFUQX0gJHtDT1BZfQkJfHwgZmFpbCAiY29ycnVwdGVkCisgZm9yIHMgaW4gMTAgMTAwIDFrIDMyayA2NGsgMTI4ayAyNTZrOyBkbworIAl0cmFjZSAiZGQtc2l6ZSAke3N9IgorIAlybSAtZiAke0NPUFl9CistCWRkIGlmPSREQVRBIG9icz0ke3N9IDI+IC9kZXYvbnVsbCB8IFwKKysJZGQgaWY9JERBVEEgYnM9JHtzfSAyPiAvZGV2L251bGwgfCBcCisgCQkke1NTSH0gLXEgLUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgImNhdCA+ICR7Q09QWX0iCiAgCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotIAkJZmFpbCAieWVzfGhlYWQgdGVzdCBmYWlsZWQiCi0gCQlsaW5lcyA9IDA7Ci1JbmRleDogb3BlbnNzaC02LjhwMS9yZWdyZXNzL2tleS1vcHRpb25zLnNoCisgCQlmYWlsICJzc2ggY2F0ICREQVRBIGZhaWxlZCIKK0luZGV4OiBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy9rZXktb3B0aW9ucy5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy9rZXktb3B0aW9ucy5zaAotQEAgLTU0LDcgKzU0LDcgQEAgZm9yIHAgaW4gJHtTU0hfUFJPVE9DT0xTfTsgZG8KKy0tLSBvcGVuc3NoLTcuNnAxLm9yaWcvcmVncmVzcy9rZXktb3B0aW9ucy5zaAorKysrIG9wZW5zc2gtNy42cDEvcmVncmVzcy9rZXktb3B0aW9ucy5zaAorQEAgLTQ3LDcgKzQ3LDcgQEAgZm9yIGYgaW4gMTI3LjAuMC4xICcxMjcuMC4wLjBcLzgnOyBkbwogIAlmaQogIAogIAlzZWQgJ3MvLiovZnJvbT0iJyIkZiInIiAmLycgJG9yaWdrZXlzID4kYXV0aGtleXMKIC0JZnJvbT1gaGVhZCAtMSAkYXV0aGtleXMgfCBjdXQgLWYxIC1kICcgJ2AKICsJZnJvbT1gaGVhZCAtbiAxICRhdXRoa2V5cyB8IGN1dCAtZjEgLWQgJyAnYAotIAl2ZXJib3NlICJrZXkgb3B0aW9uIHByb3RvICRwICRmcm9tIgotIAlyPWAke1NTSH0gLSRwIC1xIC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0ICdlY2hvIHRydWUnYAorIAl2ZXJib3NlICJrZXkgb3B0aW9uICRmcm9tIgorIAlyPWAke1NTSH0gLXEgLUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgJ2VjaG8gdHJ1ZSdgCiAgCWlmIFsgIiRyIiA9ICJ0cnVlIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEyZDFhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9kaXNhYmxlLWNpcGhlcnMtbm90LXN1cHBvcnRlZC1ieS1PcGVuU1NMLURFUy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDI2NWVhYWI4YjM5ZDhkODcyMTIyNGE0OGVlZmVkNWJmMTY5NmQzNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE4IEFwciAyMDE4IDIxOjU4OjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgY2lwaGVycyBub3Qgc3VwcG9ydGVkIGJ5IE9wZW5TU0wgREVTCisKK1doaWxlIGNvbXBpbGluZyBvcGVuc3NsIHdpdGggb3B0aW9uIGBuby1kZXMnLCBpdCBjYXVzZWQgdGhlIG9wZW5zc2gKK2J1aWxkIGZhaWx1cmUKKy4uLgorY2lwaGVyLmM6ODU6NDE6IGVycm9yOiAnRVZQX2Rlc19lZGUzX2NiYycgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbik7CisuLi4KKworT3BlblNTTCBjb25maWd1cmVkIHRoYXQgd2F5IGRlZmluZXMgT1BFTlNTTF9OT19ERVMgdG8gZGlzYWJsZSBkZXMKKworU3VnZ2VzdGVkIGJ5IGR0dWNrZXJACisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtvcGVuc3NoLXVuaXgtZGV2QG1pbmRyb3Qub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjaXBoZXIuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jaXBoZXIuYyBiL2NpcGhlci5jCitpbmRleCBjM2NkNWRjLi44NjU1OGUxIDEwMDY0NAorLS0tIGEvY2lwaGVyLmMKKysrKyBiL2NpcGhlci5jCitAQCAtODIsNyArODIsOSBAQCBzdHJ1Y3Qgc3NoY2lwaGVyIHsKKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IHNzaGNpcGhlciBjaXBoZXJzW10gPSB7CisgI2lmZGVmIFdJVEhfT1BFTlNTTAorKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAJeyAiM2Rlcy1jYmMiLAkJOCwgMjQsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Rlc19lZGUzX2NiYyB9LAorKyNlbmRpZgorIAl7ICJhZXMxMjgtY2JjIiwJCTE2LCAxNiwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfYWVzXzEyOF9jYmMgfSwKKyAJeyAiYWVzMTkyLWNiYyIsCQkxNiwgMjQsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Flc18xOTJfY2JjIH0sCisgCXsgImFlczI1Ni1jYmMiLAkJMTYsIDMyLCAwLCAwLCBDRkxBR19DQkMsIEVWUF9hZXNfMjU2X2NiYyB9LAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOThiOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gMjc3NDBjOTE4ZmU1ZDc4NDQxYmNmNjllN2QyZWVmYjIzZGRlY2E0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE5IEphbiAyMDE3IDAzOjAwOjA4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZW1vdmUgZGVzIGluIGNpcGhlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjaXBoZXIuYyB8IDE4ICsrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIuYyBiL2NpcGhlci5jCi1pbmRleCAyZGVmMzMzLi41OWY2NzkyIDEwMDY0NAotLS0tIGEvY2lwaGVyLmMKLSsrKyBiL2NpcGhlci5jCi1AQCAtNTMsOCArNTMsMTAgQEAKLSAKLSAjaWZkZWYgV0lUSF9TU0gxCi0gZXh0ZXJuIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9zc2gxX2JmKHZvaWQpOwotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSBleHRlcm4gY29uc3QgRVZQX0NJUEhFUiAqZXZwX3NzaDFfM2Rlcyh2b2lkKTsKLSBleHRlcm4gaW50IHNzaDFfM2Rlc19pdihFVlBfQ0lQSEVSX0NUWCAqLCBpbnQsIHVfY2hhciAqLCBpbnQpOwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNlbmRpZgotIAotIHN0cnVjdCBzc2hjaXBoZXJfY3R4IHsKLUBAIC04OCwxNSArOTAsMTkgQEAgc3RydWN0IHNzaGNpcGhlciB7Ci0gCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgY2lwaGVyc1tdID0gewotICNpZmRlZiBXSVRIX1NTSDEKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCXsgImRlcyIsCVNTSF9DSVBIRVJfREVTLCA4LCA4LCAwLCAwLCAwLCAxLCBFVlBfZGVzX2NiYyB9LAotIAl7ICIzZGVzIiwJU1NIX0NJUEhFUl8zREVTLCA4LCAxNiwgMCwgMCwgMCwgMSwgZXZwX3NzaDFfM2RlcyB9LAotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICMgaWZuZGVmIE9QRU5TU0xfTk9fQkYKLSAJeyAiYmxvd2Zpc2giLAlTU0hfQ0lQSEVSX0JMT1dGSVNILCA4LCAzMiwgMCwgMCwgMCwgMSwgZXZwX3NzaDFfYmYgfSwKLSAjIGVuZGlmIC8qIE9QRU5TU0xfTk9fQkYgKi8KLSAjZW5kaWYgLyogV0lUSF9TU0gxICovCi0gI2lmZGVmIFdJVEhfT1BFTlNTTAotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJeyAibm9uZSIsCVNTSF9DSVBIRVJfTk9ORSwgOCwgMCwgMCwgMCwgMCwgMCwgRVZQX2VuY19udWxsIH0sCi0gCXsgIjNkZXMtY2JjIiwJU1NIX0NJUEhFUl9TU0gyLCA4LCAyNCwgMCwgMCwgMCwgMSwgRVZQX2Rlc19lZGUzX2NiYyB9LAotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICMgaWZuZGVmIE9QRU5TU0xfTk9fQkYKLSAJeyAiYmxvd2Zpc2gtY2JjIiwKLSAJCQlTU0hfQ0lQSEVSX1NTSDIsIDgsIDE2LCAwLCAwLCAwLCAxLCBFVlBfYmZfY2JjIH0sCi1AQCAtMTgwLDggKzE4NiwxMCBAQCBjaXBoZXJfa2V5bGVuKGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgKmMpCi0gdV9pbnQKLSBjaXBoZXJfc2VjbGVuKGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgKmMpCi0gewotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJaWYgKHN0cmNtcCgiM2Rlcy1jYmMiLCBjLT5uYW1lKSA9PSAwKQotIAkJcmV0dXJuIDE0OwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotIAlyZXR1cm4gY2lwaGVyX2tleWxlbihjKTsKLSB9Ci0gCi1AQCAtMjMwLDExICsyMzgsMTMgQEAgdV9pbnQKLSBjaXBoZXJfbWFza19zc2gxKGludCBjbGllbnQpCi0gewotIAl1X2ludCBtYXNrID0gMDsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCW1hc2sgfD0gMSA8PCBTU0hfQ0lQSEVSXzNERVM7CQkvKiBNYW5kYXRvcnkgKi8KLSAJbWFzayB8PSAxIDw8IFNTSF9DSVBIRVJfQkxPV0ZJU0g7Ci0gCWlmIChjbGllbnQpIHsKLSAJCW1hc2sgfD0gMSA8PCBTU0hfQ0lQSEVSX0RFUzsKLSAJfQotKyNlbmRpZiAvKk9QRU5TU0xfTk9fREVTKi8KLSAJcmV0dXJuIG1hc2s7Ci0gfQotIAotQEAgLTYwNiw3ICs2MTYsOSBAQCBjaXBoZXJfZ2V0X2tleWl2KHN0cnVjdCBzc2hjaXBoZXJfY3R4ICpjYywgdV9jaGFyICppdiwgdV9pbnQgbGVuKQotIAlzd2l0Y2ggKGMtPm51bWJlcikgewotICNpZmRlZiBXSVRIX09QRU5TU0wKLSAJY2FzZSBTU0hfQ0lQSEVSX1NTSDI6Ci0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAljYXNlIFNTSF9DSVBIRVJfREVTOgotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotIAljYXNlIFNTSF9DSVBIRVJfQkxPV0ZJU0g6Ci0gCQlldnBsZW4gPSBFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGgoY2MtPmV2cCk7Ci0gCQlpZiAoZXZwbGVuID09IDApCi1AQCAtNjI5LDggKzY0MSwxMCBAQCBjaXBoZXJfZ2V0X2tleWl2KHN0cnVjdCBzc2hjaXBoZXJfY3R4ICpjYywgdV9jaGFyICppdiwgdV9pbnQgbGVuKQotIAkJYnJlYWs7Ci0gI2VuZGlmCi0gI2lmZGVmIFdJVEhfU1NIMQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSXzNERVM6Ci0gCQlyZXR1cm4gc3NoMV8zZGVzX2l2KGNjLT5ldnAsIDAsIGl2LCAyNCk7Ci0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gI2VuZGlmCi0gCWRlZmF1bHQ6Ci0gCQlyZXR1cm4gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotQEAgLTY1NCw3ICs2NjgsOSBAQCBjaXBoZXJfc2V0X2tleWl2KHN0cnVjdCBzc2hjaXBoZXJfY3R4ICpjYywgY29uc3QgdV9jaGFyICppdikKLSAJc3dpdGNoIChjLT5udW1iZXIpIHsKLSAjaWZkZWYgV0lUSF9PUEVOU1NMCi0gCWNhc2UgU1NIX0NJUEhFUl9TU0gyOgotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSX0RFUzoKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAJY2FzZSBTU0hfQ0lQSEVSX0JMT1dGSVNIOgotIAkJZXZwbGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGNjLT5ldnApOwotIAkJaWYgKGV2cGxlbiA8PSAwKQotQEAgLTY3NSw4ICs2OTEsMTAgQEAgY2lwaGVyX3NldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIGNvbnN0IHVfY2hhciAqaXYpCi0gCQlicmVhazsKLSAjZW5kaWYKLSAjaWZkZWYgV0lUSF9TU0gxCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAljYXNlIFNTSF9DSVBIRVJfM0RFUzoKLSAJCXJldHVybiBzc2gxXzNkZXNfaXYoY2MtPmV2cCwgMSwgKHVfY2hhciAqKWl2LCAyNCk7Ci0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gI2VuZGlmCi0gCWRlZmF1bHQ6Ci0gCQlyZXR1cm4gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZGM3M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSBlODE2ZmMwNmU0ZjgwNzBiMDllNjc3ZWFkNGQyMTc2ODc4NGU0Yzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTkgSmFuIDIwMTcgMDM6MjE6NDAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIHJlbW92ZSBkZXMgaW4gcGtjczExLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcGtjczExLmggfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGtjczExLmggYi9wa2NzMTEuaAotaW5kZXggYjAxZDU4Zi4uOThiMzZlNiAxMDA2NDQKLS0tLSBhL3BrY3MxMS5oCi0rKysgYi9wa2NzMTEuaAotQEAgLTM0Miw5ICszNDIsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX2tleV90eXBlX3Q7Ci0gI2RlZmluZSBDS0tfR0VORVJJQ19TRUNSRVQJKDB4MTApCi0gI2RlZmluZSBDS0tfUkMyCQkJKDB4MTEpCi0gI2RlZmluZSBDS0tfUkM0CQkJKDB4MTIpCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotICNkZWZpbmUgQ0tLX0RFUwkJCSgweDEzKQotICNkZWZpbmUgQ0tLX0RFUzIJCSgweDE0KQotICNkZWZpbmUgQ0tLX0RFUzMJCSgweDE1KQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tLX0NBU1QJCSgweDE2KQotICNkZWZpbmUgQ0tLX0NBU1QzCQkoMHgxNykKLSAjZGVmaW5lIENLS19DQVNUMTI4CQkoMHgxOCkKLUBAIC01MTIsNiArNTE0LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fUkMyX0NCQ19QQUQJCQkoMHgxMDUpCi0gI2RlZmluZSBDS01fUkM0X0tFWV9HRU4JCQkoMHgxMTApCi0gI2RlZmluZSBDS01fUkM0CQkJCSgweDExMSkKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gI2RlZmluZSBDS01fREVTX0tFWV9HRU4JCQkoMHgxMjApCi0gI2RlZmluZSBDS01fREVTX0VDQgkJCSgweDEyMSkKLSAjZGVmaW5lIENLTV9ERVNfQ0JDCQkJKDB4MTIyKQotQEAgLTUyNSw2ICs1MjgsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKLSAjZGVmaW5lIENLTV9ERVMzX01BQwkJCSgweDEzNCkKLSAjZGVmaW5lIENLTV9ERVMzX01BQ19HRU5FUkFMCQkoMHgxMzUpCi0gI2RlZmluZSBDS01fREVTM19DQkNfUEFECQkoMHgxMzYpCi0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gI2RlZmluZSBDS01fQ0RNRl9LRVlfR0VOCQkoMHgxNDApCi0gI2RlZmluZSBDS01fQ0RNRl9FQ0IJCQkoMHgxNDEpCi0gI2RlZmluZSBDS01fQ0RNRl9DQkMJCQkoMHgxNDIpCi1AQCAtNjEwLDggKzYxNCwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKLSAjZGVmaW5lIENLTV9NRDVfS0VZX0RFUklWQVRJT04JCSgweDM5MCkKLSAjZGVmaW5lIENLTV9NRDJfS0VZX0RFUklWQVRJT04JCSgweDM5MSkKLSAjZGVmaW5lIENLTV9TSEExX0tFWV9ERVJJVkFUSU9OCQkoMHgzOTIpCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotICNkZWZpbmUgQ0tNX1BCRV9NRDJfREVTX0NCQwkJKDB4M2EwKQotICNkZWZpbmUgQ0tNX1BCRV9NRDVfREVTX0NCQwkJKDB4M2ExKQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tNX1BCRV9NRDVfQ0FTVF9DQkMJCSgweDNhMikKLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1QzX0NCQwkJKDB4M2EzKQotICNkZWZpbmUgQ0tNX1BCRV9NRDVfQ0FTVDVfQ0JDCQkoMHgzYTQpCi1AQCAtNjIwLDggKzYyNiwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9DQVNUMTI4X0NCQwkoMHgzYTUpCi0gI2RlZmluZSBDS01fUEJFX1NIQTFfUkM0XzEyOAkJKDB4M2E2KQotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDNF80MAkJKDB4M2E3KQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9ERVMzX0VERV9DQkMJKDB4M2E4KQotICNkZWZpbmUgQ0tNX1BCRV9TSEExX0RFUzJfRURFX0NCQwkoMHgzYTkpCi0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gI2RlZmluZSBDS01fUEJFX1NIQTFfUkMyXzEyOF9DQkMJKDB4M2FhKQotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDMl80MF9DQkMJCSgweDNhYikKLSAjZGVmaW5lIENLTV9QS0NTNV9QQktEMgkJCSgweDNiMCkKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmNhNmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi1TVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCi10aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWUzMjYwNDU2NTdlODQyNTQxZDNmMzVhYWRhNDQyNTA3IgotCi0jIG9wZW5zc2wgMS4xIHBhdGNoZXMgYXJlIHByb3Bvc2VkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvcHVsbC80OAotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wxMCIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAotICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAotICAgICAgICAgICAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjUyZmRjN2Q4MzkyZjExMmJlZjExY2FjZjdlNjllMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTg0NmUzYzVmYWI5ZjA1NDc0MDBiNGQyYzAxNzk5MmY5MTQyMjJiM2ZkMWY4ZWVlNmM3ZGM2YmM1ZTU5ZjlmMCIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi0jIExGUyBzdXBwb3J0OgotQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKLQotIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1FWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCi0gICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCi0gICAgICAgICAgICAgICAgIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi0JaWYgWyAhIC1lIGFjaW5jbHVkZS5tNCAtYSAtZSBhY2xvY2FsLm00IF07IHRoZW4KLQkJY3AgYWNsb2NhbC5tNCBhY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAotICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgotICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCi0JCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCi0Jcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAotCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0KLQlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQotCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAotCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgotRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi1GSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKLUZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCi1GSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCi1GSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgotUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKLQotUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCi1SUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1rZXlnZW4gPSAic3NoLWtleWdlbiIKLQotQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCi1DT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgotQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKLUFMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjZwMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjZwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTFlOGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNnAxLmJiCkBAIC0wLDAgKzEsMTY3IEBACitTVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCit0aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCitTc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCithbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTQyOTY1OGM2NjEyZjNhOWIxMjkzNzgyMzY2YWIyOWQ4IgorCisjIG9wZW5zc2wgMS4xIHBhdGNoZXMgYXJlIHByb3Bvc2VkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvcHVsbC80OAorREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wxMCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNpcGhlcnMtbm90LXN1cHBvcnRlZC1ieS1PcGVuU1NMLURFUy5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNmE4ODY5OTAxOGU1ZmVmMTNkNDY1NWFiZmVkMWY2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzIzY2FlZWRkZmUxNDViYWFhMGRiMTZlOThkNzg0YjFmYmM3ZGQ0MzZhNmJmMWY0NzlkZmQ1Y2QxZDIxNzIzIgorCitpbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKKyMgTEZTIHN1cHBvcnQ6CitDRkxBR1MgKz0gIi1EX19GSUxFX09GRlNFVF9CSVRTPTY0IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCisgICAgICAgICAgICAgICAgIgorCisjIG11c2wgZG9lc24ndCBpbXBsZW1lbnQgd3RtcC91dG1wCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLXd0bXAiCisKKyMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKKyMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAorIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKKworIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgorCisjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJZXhwb3J0IExEPSIke0NDfSIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgIyBza2lwIHJlZ3Jlc3MvdW5pdHRlc3RzLyBiaW5hcmllczogdGhpcyB3aWxsIHNpbGVudGx5IHNraXAKKyAgICAgICAgIyB1bml0dGVzdHMgaW4gcnVuLXB0ZXN0cyB3aGljaCBpcyBnb29kIGJlY2F1c2UgdGhleSBhcmUgc28gc2xvdy4KKyAgICAgICAgb2VfcnVubWFrZSByZWdyZXNzL21vZHBpcGUgcmVncmVzcy9zZXR1aWQtYWxsb3dlZCByZWdyZXNzL25ldGNhdAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZAorCQlzZWQgLWkgLWUgJ3M6I1VzZVBBTSBubzpVc2VQQU0geWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3M6I1gxMUZvcndhcmRpbmcgbm86WDExRm9yd2FyZGluZyB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCisJcm0gLWYgJHtEfSR7YmluZGlyfS9zbG9naW4gJHtEfSR7ZGF0YWRpcn0vU3NoLmJpbgorCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfQorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfc3NoZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZAorCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvc3NoLWNvcHktaWQgJHtEfSR7YmluZGlyfQorCisJIyBDcmVhdGUgY29uZmlnIGZpbGVzIGZvciByZWFkLW9ubHkgcm9vdGZzCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2gKKwlpbnN0YWxsIC1tIDY0NCAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJc2VkIC1pICcvSG9zdEtleS9kJyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9yc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9kc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lY2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VkMjU1MTlfa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkZ2Vua2V5cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQktZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCS1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCisJc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCisJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCisKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9zc2hkX2NoZWNrX2tleXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwlzZWQgLWkgLWUgInN8XlNGVFBTRVJWRVI9Lip8U0ZUUFNFUlZFUj0ke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyfCIgcmVncmVzcy90ZXN0LWV4ZWMuc2gKKwljcCAtciByZWdyZXNzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1rZXlnZW4gJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciIKK0ZJTEVTXyR7UE59LXNjcCA9ICIke2JpbmRpcn0vc2NwLiR7QlBOfSIKK0ZJTEVTXyR7UE59LXNzaCA9ICIke2JpbmRpcn0vc3NoLiR7QlBOfSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorRklMRVNfJHtQTn0tc3NoZCA9ICIke3NiaW5kaXJ9L3NzaGQgJHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtzeXNjb25mZGlyfS9zc2gvbW9kdWxpICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZCAke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQiCitGSUxFU18ke1BOfS1zc2hkICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMiCitGSUxFU18ke1BOfS1zZnRwID0gIiR7YmluZGlyfS9zZnRwIgorRklMRVNfJHtQTn0tc2Z0cC1zZXJ2ZXIgPSAiJHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlciIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L3NzaCogJHtsaWJleGVjZGlyfS9zc2gqIgorRklMRVNfJHtQTn0ta2V5Z2VuID0gIiR7YmluZGlyfS9zc2gta2V5Z2VuIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LWtleWdlbiIKK1JERVBFTkRTXyR7UE59LXNzaGQgKz0gIiR7UE59LWtleWdlbiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWtleWluaXQgcGFtLXBsdWdpbi1sb2dpbnVpZCcsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2UiCisKK1JQUk9WSURFU18ke1BOfS1zc2ggPSAic3NoIgorUlBST1ZJREVTXyR7UE59LXNzaGQgPSAic3NoZCIKKworUkNPTkZMSUNUU18ke1BOfSA9ICJkcm9wYmVhciIKK1JDT05GTElDVFNfJHtQTn0tc3NoZCA9ICJkcm9wYmVhciIKK1JDT05GTElDVFNfJHtQTn0ta2V5Z2VuID0gInNzaC1rZXlnZW4iCisKK0NPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgorQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCitBTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGU1NGQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLUZyb20gODNmMzE4ZDY4YmJkYWIxY2E4OThjOTQ1NzZhODM4Y2M5N2RmNDcwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1ZHdpZyBOdXNzZWwgPGx1ZHdpZy5udXNzZWxAc3VzZS5kZT4KLURhdGU6IFdlZCwgMjEgQXByIDIwMTAgMTU6NTI6MTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWxzbyBjcmVhdGUgb2xkIGhhc2ggZm9yIGNvbXBhdGliaWxpdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvY19yZWhhc2guaW4gYi90b29scy9jX3JlaGFzaC5pbgotaW5kZXggYjA4NmZmOS4uYjc3N2Q3OSAxMDA2NDQKLS0tLSBhL3Rvb2xzL2NfcmVoYXNoLmluCi0rKysgYi90b29scy9jX3JlaGFzaC5pbgotQEAgLTgsOCArOCw2IEBAIG15ICRwcmVmaXg7Ci0gCi0gbXkgJG9wZW5zc2wgPSAkRU5We09QRU5TU0x9IHx8ICJvcGVuc3NsIjsKLSBteSAkcHdkOwotLW15ICR4NTA5aGFzaCA9ICItc3ViamVjdF9oYXNoIjsKLS1teSAkY3JsaGFzaCA9ICItaGFzaCI7Ci0gbXkgJHZlcmJvc2UgPSAwOwotIG15ICRzeW1saW5rX2V4aXN0cz1ldmFsIHtzeW1saW5rKCIiLCIiKTsgMX07Ci0gbXkgJHJlbW92ZWxpbmtzID0gMTsKLUBAIC0xOCwxMCArMTYsNyBAQCBteSAkcmVtb3ZlbGlua3MgPSAxOwotIHdoaWxlICggJEFSR1ZbMF0gPX4gL14tLyApIHsKLSAgICAgbXkgJGZsYWcgPSBzaGlmdCBAQVJHVjsKLSAgICAgbGFzdCBpZiAoICRmbGFnIGVxICctLScpOwotLSAgICBpZiAoICRmbGFnIGVxICctb2xkJykgewotLQkgICAgJHg1MDloYXNoID0gIi1zdWJqZWN0X2hhc2hfb2xkIjsKLS0JICAgICRjcmxoYXNoID0gIi1oYXNoX29sZCI7Ci0tICAgIH0gZWxzaWYgKCAkZmxhZyBlcSAnLWgnKSB7Ci0rICAgIGlmICggJGZsYWcgZXEgJy1oJykgewotIAkgICAgaGVscCgpOwotICAgICB9IGVsc2lmICggJGZsYWcgZXEgJy1uJyApIHsKLSAJICAgICRyZW1vdmVsaW5rcyA9IDA7Ci1AQCAtMTEzLDcgKzEwOCw5IEBAIHN1YiBoYXNoX2RpciB7Ci0gCQkJbmV4dDsKLSAJCX0KLSAJCWxpbmtfaGFzaF9jZXJ0KCRmbmFtZSkgaWYoJGNlcnQpOwotKwkJbGlua19oYXNoX2NlcnRfb2xkKCRmbmFtZSkgaWYoJGNlcnQpOwotIAkJbGlua19oYXNoX2NybCgkZm5hbWUpIGlmKCRjcmwpOwotKwkJbGlua19oYXNoX2NybF9vbGQoJGZuYW1lKSBpZigkY3JsKTsKLSAJfQotIH0KLSAKLUBAIC0xNDYsNiArMTQzLDcgQEAgc3ViIGNoZWNrX2ZpbGUgewotIAotIHN1YiBsaW5rX2hhc2hfY2VydCB7Ci0gCQlteSAkZm5hbWUgPSAkX1swXTsKLSsJCW15ICR4NTA5aGFzaCA9ICRfWzFdIHx8ICctc3ViamVjdF9oYXNoJzsKLSAJCSRmbmFtZSA9fiBzLycvJ1xcJycvZzsKLSAJCW15ICgkaGFzaCwgJGZwcmludCkgPSBgIiRvcGVuc3NsIiB4NTA5ICR4NTA5aGFzaCAtZmluZ2VycHJpbnQgLW5vb3V0IC1pbiAiJGZuYW1lImA7Ci0gCQljaG9tcCAkaGFzaDsKLUBAIC0xNzYsMTEgKzE3NCwyMSBAQCBzdWIgbGlua19oYXNoX2NlcnQgewotIAkJJGhhc2hsaXN0eyRoYXNofSA9ICRmcHJpbnQ7Ci0gfQotIAotK3N1YiBsaW5rX2hhc2hfY2VydF9vbGQgewotKwkJbGlua19oYXNoX2NlcnQoJF9bMF0sICctc3ViamVjdF9oYXNoX29sZCcpOwotK30KLSsKLStzdWIgbGlua19oYXNoX2NybF9vbGQgewotKwkJbGlua19oYXNoX2NybCgkX1swXSwgJy1oYXNoX29sZCcpOwotK30KLSsKLSsKLSAjIFNhbWUgYXMgYWJvdmUgZXhjZXB0IGZvciBhIENSTC4gQ1JMIGxpbmtzIGFyZSBvZiB0aGUgZm9ybSA8aGFzaD4ucjxuPgotIAotIHN1YiBsaW5rX2hhc2hfY3JsIHsKLSAJCW15ICRmbmFtZSA9ICRfWzBdOwotKwkJbXkgJGNybGhhc2ggPSAkX1sxXSB8fCAiLWhhc2giOwotIAkJJGZuYW1lID1+IHMvJy8nXFwnJy9nOwotIAkJbXkgKCRoYXNoLCAkZnByaW50KSA9IGAiJG9wZW5zc2wiIGNybCAkY3JsaGFzaCAtZmluZ2VycHJpbnQgLW5vb3V0IC1pbiAnJGZuYW1lJ2A7Ci0gCQljaG9tcCAkaGFzaDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZDQzMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCi0KLUluZGV4OiBvcGVuc3NsLTEuMC4yL0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjIub3JpZy9Db25maWd1cmUKLSsrKyBvcGVuc3NsLTEuMC4yL0NvbmZpZ3VyZQotQEAgLTEwNyw2ICsxMDcsMTAgQEAgbXkgJGdjY19kZXZ0ZWFtX3dhcm4gPSAiLVdhbGwgLXBlZGFudGljCi0gCi0gbXkgJGNsYW5nX2Rpc2FibGVkX3dhcm5pbmdzID0gIi1Xbm8tbGFuZ3VhZ2UtZXh0ZW5zaW9uLXRva2VuIC1Xbm8tZXh0ZW5kZWQtb2Zmc2V0b2YgLVduby1wYWRkZWQgLVduby1zaG9ydGVuLTY0LXRvLTMyIC1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwgLVduby1taXNzaW5nLW5vcmV0dXJuIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLXNpZ24tY29udmVyc2lvbiAtV25vLXVucmVhY2hhYmxlLWNvZGUgLVduby1jb252ZXJzaW9uIC1Xbm8tZG9jdW1lbnRhdGlvbiAtV25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zIC1Xbm8tY2FzdC1hbGlnbiAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWRpc2NhcmRzLXF1YWxpZmllcnMgLVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xhcmF0aW9ucyAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLWRpc2FibGVkLW1hY3JvLWV4cGFuc2lvbiAtV25vLWNvbmRpdGlvbmFsLXVuaW5pdGlhbGl6ZWQgLVduby1zd2l0Y2gtZW51bSI7Ci0gCi0rIyBUaGVyZSBhcmUgbm8gc2VwYXJhdGUgQ0ZMQUdTL0NQUEZMQUdTL0xERkxBR1MsIHNldCBldmVyeXRoaW5nIGluIENGTEFHUwotK215ICRkZWJpYW5fY2ZsYWdzID0gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1NgIC4gIi1XYSwtLW5vZXhlY3N0YWNrIC1XYWxsIjsKLSskZGViaWFuX2NmbGFncyA9fiBzL1xuLyAvZzsKLSsKLSBteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKLSAKLSBteSAkeDg2X2djY19kZXM9IkRFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwiOwotQEAgLTM0Myw2ICszNDcsNTUgQEAgbXkgJXRhYmxlPSgKLSAib3NmMS1hbHBoYS1jYyIsICAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtTzQgLXJlYWRvbmx5X3N0cmluZ3M6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCi0gInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAotIAotKyMgRGViaWFuIEdOVS8qICh2YXJpb3VzIGFyY2hpdGVjdHVyZXMpCi0rImRlYmlhbi1hbHBoYSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYWxwaGEtZXY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYWxwaGEtZXY1IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY1OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtNjQiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hcm1lbCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hcm1oZiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hbWQ2NCIsICJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCi0rImRlYmlhbi1hdnIzMiIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1mb21pdC1mcmFtZS1wb2ludGVyOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkdfQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWtmcmVlYnNkLWFtZDY0IiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWtmcmVlYnNkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWhwcGEiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWh1cmQtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhLC0tbm9leGVjc3RhY2sgLWcgLW10dW5lPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pYTY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYtaTQ4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2LWk1ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNTg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4Ni1pNjg2L2Ntb3YiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNjg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbTY4ayIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwcyIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzZWwiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwc24zMiIsICAgIm1pcHM2NC1saW51eC1nbnVhYmluMzItZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHNuMzJlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMi1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwczY0IiwgICAibWlwczY0LWxpbnV4LWdudWFiaTY0LWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzNjRlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaTY0LWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1uZXRic2QtaTM4NiIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLW02OGsiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLXNwYXJjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tdjg6Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3BlbmJzZC1hbHBoYSIsImdjYzotRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3BlbmJzZC1pMzg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtbWlwcyIsImdjYzotRExfRU5ESUFOICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3IxayIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBvd2VycGMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcG93ZXJwY3NwZSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wcGM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBwYzY0ZWwiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXMzOTAiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsIAotKyJkZWJpYW4tczM5MHgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoMyIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDQiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2gzZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2g0ZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbTMyciIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYy12OCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djggLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNwYXJjLXY5IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OSAtV2EsLUF2OHBsdXMgLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4teDMyIiwiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAotKwotICMjIyMKLSAjIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKLSAjIyMjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNWJmYTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotaHR0cHM6Ly9ydC5vcGVuc3NsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTM3NTkmdXNlcj1ndWVzdCZwYXNzPWd1ZXN0Ci0KLUZyb20gNjI1N2Q1OWIzYTY4ZDJmZWI5ZDY0MzE3YTFjNTU2ZGMzODEzZWU2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6IFNhdCwgMjEgTWFyIDIwMTUgMDY6MDE6MjUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3J5cHRvOiB1c2UgYmlnaW50IGluIHg4Ni02NCBwZXJsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLQotV2hlbiBidWlsZGluZyBvbiB4MzIgc3lzdGVtcyB3aGVyZSB0aGUgZGVmYXVsdCB0eXBlIGlzIDMyYml0LCBtYWtlIHN1cmUKLXdlIGNhbiB0cmFuc3BhcmVudGx5IHJlcHJlc2VudCA2NGJpdCBpbnRlZ2Vycy4gIE90aGVyd2lzZSB3ZSBlbmQgdXAgd2l0aAotYnVpbGQgZXJyb3JzIGxpa2U6Ci0vdXNyL2Jpbi9wZXJsIGFzbS9naGFzaC14ODZfNjQucGwgZWxmID4gZ2hhc2gteDg2XzY0LnMKLUludGVnZXIgb3ZlcmZsb3cgaW4gaGV4YWRlY2ltYWwgbnVtYmVyIGF0IGFzbS8uLi8uLi9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCBsaW5lIDIwMSwgPD4gbGluZSA4OTAuCi0uLi4KLWdoYXNoLXg4Nl82NC5zOiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci1naGFzaC14ODZfNjQuczo4OTA6IEVycm9yOiBqdW5rICcuMTU0NzMzNTU0Nzk5OTVlKzE5JyBhZnRlciBleHByZXNzaW9uCi0KLVdlIGRvbid0IGVuYWJsZSB0aGlzIGdsb2JhbGx5IGFzIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlIHdlJ2QgZ2V0Ci0zMmJpdCB2YWx1ZXMgaW50ZXJwcmV0ZWQgYXMgdW5zaWduZWQgd2hlbiB3ZSBuZWVkIHRoZW0gYXMgc2lnbmVkLgotCi1SZXBvcnRlZC1ieTogQmVydHJhbmQgSmFjcXVpbiA8YmVydHJhbmRAamFjcXVpbi5iemg+Ci1VUkw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnLzU0MjYxOAotLS0tCi0gY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIGIvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi1pbmRleCBhYWU4Mjg4Li4wYmY5Nzc0IDEwMDc1NQotLS0tIGEvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi0rKysgYi9jcnlwdG8vcGVybGFzbS94ODZfNjQteGxhdGUucGwKLUBAIC0xOTUsNiArMTk1LDEwIEBAIG15ICVnbG9iYWxzOwotICAgICBzdWIgb3V0IHsKLSAgICAgCW15ICRzZWxmID0gc2hpZnQ7Ci0gCi0rCSMgV2hlbiBidWlsZGluZyBvbiB4MzIgQUJJcywgdGhlIGV4cGFuZGVkIGhleCB2YWx1ZSBtaWdodCBiZSB0b28KLSsJIyBiaWcgdG8gZml0IGludG8gMzJiaXRzLiAgRW5hYmxlIHRyYW5zcGFyZW50IDY0Yml0IHN1cHBvcnQgaGVyZQotKwkjIHNvIHdlIGNhbiBzYWZlbHkgcHJpbnQgaXQgb3V0LgotKwl1c2UgYmlnaW50OwotIAlpZiAoJGdhcykgewotIAkgICAgIyBTb2xhcmlzIC91c3IvY2NzL2Jpbi9hcyBjYW4ndCBoYW5kbGUgbXVsdGlwbGljYXRpb25zCi0gCSAgICAjIGluICRzZWxmLT57dmFsdWV9Ci0tLSAKLTIuMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL01ha2VmaWxlcy1wdGVzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vY29uZmlndXJlLXRhcmdldHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLXRhcmdldHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vY29uZmlndXJlLXRhcmdldHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODIwZTNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gODNmMzE4ZDY4YmJkYWIxY2E4OThjOTQ1NzZhODM4Y2M5N2RmNDcwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEx1ZHdpZyBOdXNzZWwgPGx1ZHdpZy5udXNzZWxAc3VzZS5kZT4KK0RhdGU6IFdlZCwgMjEgQXByIDIwMTAgMTU6NTI6MTAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWxzbyBjcmVhdGUgb2xkIGhhc2ggZm9yIGNvbXBhdGliaWxpdHkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQorCitJbmRleDogb3BlbnNzbC0xLjAuMm4vdG9vbHMvY19yZWhhc2guaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4ybi5vcmlnL3Rvb2xzL2NfcmVoYXNoLmluCisrKysgb3BlbnNzbC0xLjAuMm4vdG9vbHMvY19yZWhhc2guaW4KK0BAIC04LDggKzgsNiBAQCBteSAkcHJlZml4OworIAorIG15ICRvcGVuc3NsID0gJEVOVntPUEVOU1NMfSB8fCAib3BlbnNzbCI7CisgbXkgJHB3ZDsKKy1teSAkeDUwOWhhc2ggPSAiLXN1YmplY3RfaGFzaCI7CistbXkgJGNybGhhc2ggPSAiLWhhc2giOworIG15ICR2ZXJib3NlID0gMDsKKyBteSAkc3ltbGlua19leGlzdHM9ZXZhbCB7c3ltbGluaygiIiwiIik7IDF9OworIG15ICRyZW1vdmVsaW5rcyA9IDE7CitAQCAtMTgsMTAgKzE2LDcgQEAgbXkgJHJlbW92ZWxpbmtzID0gMTsKKyB3aGlsZSAoICRBUkdWWzBdID1+IC9eLS8gKSB7CisgICAgIG15ICRmbGFnID0gc2hpZnQgQEFSR1Y7CisgICAgIGxhc3QgaWYgKCAkZmxhZyBlcSAnLS0nKTsKKy0gICAgaWYgKCAkZmxhZyBlcSAnLW9sZCcpIHsKKy0JICAgICR4NTA5aGFzaCA9ICItc3ViamVjdF9oYXNoX29sZCI7CistCSAgICAkY3JsaGFzaCA9ICItaGFzaF9vbGQiOworLSAgICB9IGVsc2lmICggJGZsYWcgZXEgJy1oJykgeworKyAgICBpZiAoICRmbGFnIGVxICctaCcpIHsKKyAJICAgIGhlbHAoKTsKKyAgICAgfSBlbHNpZiAoICRmbGFnIGVxICctbicgKSB7CisgCSAgICAkcmVtb3ZlbGlua3MgPSAwOworQEAgLTExMyw3ICsxMDgsOSBAQCBzdWIgaGFzaF9kaXIgeworIAkJCW5leHQ7CisgCQl9CisgCQlsaW5rX2hhc2hfY2VydCgkZm5hbWUpIGlmKCRjZXJ0KTsKKysJCWxpbmtfaGFzaF9jZXJ0X29sZCgkZm5hbWUpIGlmKCRjZXJ0KTsKKyAJCWxpbmtfaGFzaF9jcmwoJGZuYW1lKSBpZigkY3JsKTsKKysJCWxpbmtfaGFzaF9jcmxfb2xkKCRmbmFtZSkgaWYoJGNybCk7CisgCX0KKyB9CisgCitAQCAtMTQ2LDYgKzE0Myw3IEBAIHN1YiBjaGVja19maWxlIHsKKyAKKyBzdWIgbGlua19oYXNoX2NlcnQgeworIAkJbXkgJGZuYW1lID0gJF9bMF07CisrCQlteSAkeDUwOWhhc2ggPSAkX1sxXSB8fCAnLXN1YmplY3RfaGFzaCc7CisgCQkkZm5hbWUgPX4gcy8nLydcXCcnL2c7CisgCQlteSAoJGhhc2gsICRmcHJpbnQpID0gYCIkb3BlbnNzbCIgeDUwOSAkeDUwOWhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gIiRmbmFtZSJgOworIAkJY2hvbXAgJGhhc2g7CitAQCAtMTc3LDEwICsxNzUsMjAgQEAgc3ViIGxpbmtfaGFzaF9jZXJ0IHsKKyAJCSRoYXNobGlzdHskaGFzaH0gPSAkZnByaW50OworIH0KKyAKKytzdWIgbGlua19oYXNoX2NlcnRfb2xkIHsKKysJCWxpbmtfaGFzaF9jZXJ0KCRfWzBdLCAnLXN1YmplY3RfaGFzaF9vbGQnKTsKKyt9CisrCisrc3ViIGxpbmtfaGFzaF9jcmxfb2xkIHsKKysJCWxpbmtfaGFzaF9jcmwoJF9bMF0sICctaGFzaF9vbGQnKTsKKyt9CisrCisrCisgIyBTYW1lIGFzIGFib3ZlIGV4Y2VwdCBmb3IgYSBDUkwuIENSTCBsaW5rcyBhcmUgb2YgdGhlIGZvcm0gPGhhc2g+LnI8bj4KKyAKKyBzdWIgbGlua19oYXNoX2NybCB7CisgCQlteSAkZm5hbWUgPSAkX1swXTsKKysJCW15ICRjcmxoYXNoID0gJF9bMV0gfHwgIi1oYXNoIjsKKyAJCSRmbmFtZSA9fiBzLycvJ1xcJycvZzsKKyAJCW15ICgkaGFzaCwgJGZwcmludCkgPSBgIiRvcGVuc3NsIiBjcmwgJGNybGhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gJyRmbmFtZSdgOworIAkJY2hvbXAgJGhhc2g7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9jYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9jYS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vY2EucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkOTJiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KKworSW5kZXg6IG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJuLm9yaWcvQ29uZmlndXJlCisrKysgb3BlbnNzbC0xLjAuMm4vQ29uZmlndXJlCitAQCAtMTMzLDYgKzEzMywxMCBAQCBteSAkY2xhbmdfZGV2dGVhbV93YXJuID0gIi1Xbm8tdW51c2VkLXBhCisgIyBXYXJuIHRoYXQgIm1ha2UgZGVwZW5kIiBzaG91bGQgYmUgcnVuPworIG15ICR3YXJuX21ha2VfZGVwZW5kID0gMDsKKyAKKysjIFRoZXJlIGFyZSBubyBzZXBhcmF0ZSBDRkxBR1MvQ1BQRkxBR1MvTERGTEFHUywgc2V0IGV2ZXJ5dGhpbmcgaW4gQ0ZMQUdTCisrbXkgJGRlYmlhbl9jZmxhZ3MgPSBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENQUEZMQUdTYCAuIGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgTERGTEFHU2AgLiAiLVdhLC0tbm9leGVjc3RhY2sgLVdhbGwiOworKyRkZWJpYW5fY2ZsYWdzID1+IHMvXG4vIC9nOworKworIG15ICRzdHJpY3Rfd2FybmluZ3MgPSAwOworIAorIG15ICR4ODZfZ2NjX2Rlcz0iREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCI7CitAQCAtMzY5LDYgKzM3Myw1NSBAQCBteSAldGFibGU9KAorICJvc2YxLWFscGhhLWNjIiwgICJjYzotc3RkMSAtdHVuZSBob3N0IC1PNCAtcmVhZG9ubHlfc3RyaW5nczo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjo6LnNvIiwKKyAidHJ1NjQtYWxwaGEtY2MiLCAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtZmFzdCAtcmVhZG9ubHlfc3RyaW5nczo6LXB0aHJlYWQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Oi1tc3ltOi5zbyIsCisgCisrIyBEZWJpYW4gR05VLyogKHZhcmlvdXMgYXJjaGl0ZWN0dXJlcykKKysiZGViaWFuLWFscGhhIiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbHBoYS1ldjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbHBoYS1ldjUiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjU6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm02NCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFybWVsIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFybWhmIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFtZDY0IiwgImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6IiwKKysiZGViaWFuLWF2cjMyIiwgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9OR19CRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4ta2ZyZWVic2QtYW1kNjQiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4ta2ZyZWVic2QtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNDg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taHBwYSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taHVyZC1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtV2EsLS1ub2V4ZWNzdGFjayAtZyAtbXR1bmU9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWlhNjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taTM4Ni1pNDg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYtaTU4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk1ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2LWk2ODYvY21vdiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk2ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1tNjhrIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHNlbCIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzbjMyIiwgICAibWlwczY0LWxpbnV4LWdudWFiaW4zMi1nY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwc24zMmVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpbjMyLWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzNjQiLCAgICJtaXBzNjQtbGludXgtZ251YWJpNjQtZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHM2NGVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpNjQtZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW5ldGJzZC1pMzg2IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tNDg2OjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1uZXRic2QtbTY4ayIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1uZXRic2Qtc3BhcmMiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW12ODo6KHVua25vd24pOjo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1vcGVuYnNkLWFscGhhIiwiZ2NjOi1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OjpTSVhUWV9GT1VSX0JJVF9MT05HIERFU19JTlQgREVTX1BUUiBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1vcGVuYnNkLWkzODYiLCAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tNDg2OjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTphLm91dDpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1taXBzIiwiZ2NjOi1ETF9FTkRJQU4gJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgREVTX1VOUk9MTCBERVNfUklTQzIgREVTX1BUUiBCRl9QVFI6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1vcjFrIiwgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcG93ZXJwYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wb3dlcnBjc3BlIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBwYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcHBjNjRlbCIsImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0bGU6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tczM5MCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwgCisrImRlYmlhbi1zMzkweCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2gzIiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoNCIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDNlYiIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDRlYiIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1tMzJyIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjLXY4IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OCAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc3BhcmMtdjkiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PXY5IC1XYSwtQXY4cGx1cyAtRFVMVFJBU1BBUkMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjNjQiLCJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi14MzIiLCJnY2M6LW14MzIgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbXgzMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OngzMiIsCisrCisgIyMjIworICMjIyMgVmFyaWV0eSBvZiBMSU5VWDotKQorICMjIyMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL21hbi1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9tYW4tZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXJwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXJwYXRoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9uby1ycGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9waWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9waWMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL3BpYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vcGljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9maW5kLnBsCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2ZpbmQucGwKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZmluZC5wbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vZS1sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9vZS1sZGZsYWdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29lLWxkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb2UtbGRmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWNfcmVoYXNoLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9vcGVuc3NsLWNfcmVoYXNoLnNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtY19yZWhhc2guc2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1jX3JlaGFzaC5zaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wYXJhbGxlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcGFyYWxsZWwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcGFyYWxsZWwucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcGFyYWxsZWwucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcHRlc3QtZGVwcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wdGVzdC1kZXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0LWRlcHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3J1bi1wdGVzdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vc2hhcmVkLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3NoYXJlZC1saWJzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3NoYXJlZC1saWJzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3NoYXJlZC1saWJzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNmJiMzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSAzZmRiMWUyYTE2ZWE0MDVjNjczMTQ0N2E4OTk0ZjIyMjgwOGVmN2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDcgQXByIDIwMTcgMTg6MDE6NTIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHRlc3QgdGhhdCByZXF1aXJlcyBydW5uaW5nIGFzIG5vbi1yb290Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgfCAxNyArLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudCBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50Ci1pbmRleCBmOTAyYzIzLi5jNzU2N2MxIDEwMDY0NAotLS0tIGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQKLSsrKyBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50Ci1AQCAtMjMsNyArMjMsNyBAQCBzZXR1cCgidGVzdF9yZWhhc2giKTsKLSBwbGFuIHNraXBfYWxsID0+ICJ0ZXN0X3JlaGFzaCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCi0gICAgIHVubGVzcyBydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCAiLWhlbHAiXSkpOwotIAotLXBsYW4gdGVzdHMgPT4gNTsKLStwbGFuIHRlc3RzID0+IDM7Ci0gCi0gaW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKLSAgICAgcHJlcGFyZSgpOwotQEAgLTQyLDIxICs0Miw2IEBAIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7Ci0gICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIGVtcHR5IGRpcmVjdG9yeScpOwotIH0sIGNyZWF0ZSA9PiAxLCBjbGVhbnVwID0+IDE7Ci0gCi0taW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKLS0gICAgcHJlcGFyZSgpOwotLSAgICBjaG1vZCAwNTAwLCBjdXJkaXIoKTsKLS0gIFNLSVA6IHsKLS0gICAgICBpZiAoIW9rKCFvcGVuKEZPTywgIj51bndyaXRhYmxlLnR4dCIpLAotLSAgICAgICAgICAgICAgIlRlc3RpbmcgdGhhdCB3ZSBhcmVuJ3QgcnVubmluZyBhcyBhIHByaXZpbGVnZWQgdXNlciwgc3VjaCBhcyByb290IikpIHsKLS0gICAgICAgICAgY2xvc2UgRk9POwotLSAgICAgICAgICBza2lwICJJdCdzIHBvaW50bGVzcyB0byBydW4gdGhlIG5leHQgdGVzdCBhcyByb290IiwgMTsKLS0gICAgICB9Ci0tICAgICAgaXNudChydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCBjdXJkaXIoKV0pKSwgMSwKLS0gICAgICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIHJlYWRvbmx5IGRpcmVjdG9yeScpOwotLSAgICB9Ci0tICAgIGNobW9kIDA3MDAsIGN1cmRpcigpOyAgICAgICAjIG1ha2UgaXQgd3JpdGFibGUgYWdhaW4sIHNvIGNsZWFudXAgd29ya3MKLS19LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOwotLQotIHN1YiBwcmVwYXJlIHsKLSAgICAgbXkgQHBlbXNvdXJjZWZpbGVzID0gc29ydCBnbG9iKHNyY3RvcF9maWxlKCd0ZXN0JywgIioucGVtIikpOwotICAgICBteSBAZGVzdGZpbGVzID0gKCk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIwYTE2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotRnJvbSBiY2MwOTZhNTA4MTFiZjBmMGM0ZmQzNGIyOTkzZmVkN2E3MDE1OTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+Ci1EYXRlOiBGcmksIDMgTm92IDIwMTcgMjM6MzA6MDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWVzL2FzbS97YWVzLWFybXY0fGJzYWVzLWFybXY3fS5wbDogbWFrZSBpdCB3b3JrIHdpdGgKLSBiaW51dGlscy0yLjI5LgotCi1JdCdzIG5vdCBjbGVhciBpZiBpdCdzIGEgZmVhdHVyZSBvciBidWcsIGJ1dCBiaW51dGlscy0yLjI5Wy4xXQotaW50ZXJwcmV0cyAnYWRyJyBpbnN0cnVjdGlvbiB3aXRoIFRodW1iMiBjb2RlIHJlZmVyZW5jZSBkaWZmZXJlbnRseSwKLWluIGEgd2F5IHRoYXQgYWZmZWN0cyBjYWxjdWxhdGlvbiBvZiBhZGRyZXNzZXMgb2YgY29uc3RhbnRzJyB0YWJsZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotUmV2aWV3ZWQtYnk6IFRpbSBIdWRzb24gPHRqaEBvcGVuc3NsLm9yZz4KLVJldmlld2VkLWJ5OiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgotKE1lcmdlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvcHVsbC80NjY5KQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBiODJhY2MzYzFhN2YzMDRjOWRmMzE4NDE3NTNhMGZhNzZiNWIzY2RhKQotLS0tCi0gY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsICAgfCA2ICsrKy0tLQotIGNyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIHwgNiArKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAotaW5kZXggMTZkNzlhYWU1My4uYzY0NzRiOGFhZCAxMDA2NDQKLS0tLSBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAotKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCi1AQCAtMjAwLDcgKzIwMCw3IEBAIEFFU19lbmNyeXB0OgotICNpZm5kZWYJX190aHVtYjJfXwotIAlzdWIJcjMscGMsIzgJCUAgQUVTX2VuY3J5cHQKLSAjZWxzZQotLQlhZHIJcjMsQUVTX2VuY3J5cHQKLSsJYWRyCXIzLC4KLSAjZW5kaWYKLSAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KLSAjaWZkZWYJX19BUFBMRV9fCi1AQCAtNDUwLDcgKzQ1MCw3IEBAIF9hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5OgotICNpZm5kZWYJX190aHVtYjJfXwotIAlzdWIJcjMscGMsIzgJCUAgQUVTX3NldF9lbmNyeXB0X2tleQotICNlbHNlCi0tCWFkcglyMyxBRVNfc2V0X2VuY3J5cHRfa2V5Ci0rCWFkcglyMywuCi0gI2VuZGlmCi0gCXRlcQlyMCwjMAotICNpZmRlZglfX3RodW1iMl9fCi1AQCAtOTc2LDcgKzk3Niw3IEBAIEFFU19kZWNyeXB0OgotICNpZm5kZWYJX190aHVtYjJfXwotIAlzdWIJcjMscGMsIzgJCUAgQUVTX2RlY3J5cHQKLSAjZWxzZQotLQlhZHIJcjMsQUVTX2RlY3J5cHQKLSsJYWRyCXIzLC4KLSAjZW5kaWYKLSAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KLSAjaWZkZWYJX19BUFBMRV9fCi1kaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAotaW5kZXggOWYyODg2NjBlZi4uYTI3YmI0YTE3OSAxMDA2NDQKLS0tLSBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsCi0rKysgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAotQEAgLTc0NCw3ICs3NDQsNyBAQCAkY29kZS49PDxfX187Ci0gLnR5cGUJX2JzYWVzX2RlY3J5cHQ4LCVmdW5jdGlvbgotIC5hbGlnbgk0Ci0gX2JzYWVzX2RlY3J5cHQ4OgotLQlhZHIJJGNvbnN0LF9ic2Flc19kZWNyeXB0OAotKwlhZHIJJGNvbnN0LC4KLSAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKLSAjaWZkZWYJX19BUFBMRV9fCi0gCWFkcgkkY29uc3QsLkxNMElTUgotQEAgLTg0Myw3ICs4NDMsNyBAQCBfYnNhZXNfY29uc3Q6Ci0gLnR5cGUJX2JzYWVzX2VuY3J5cHQ4LCVmdW5jdGlvbgotIC5hbGlnbgk0Ci0gX2JzYWVzX2VuY3J5cHQ4OgotLQlhZHIJJGNvbnN0LF9ic2Flc19lbmNyeXB0OAotKwlhZHIJJGNvbnN0LC4KLSAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKLSAjaWZkZWYJX19BUFBMRV9fCi0gCWFkcgkkY29uc3QsLkxNMFNSCi1AQCAtOTUxLDcgKzk1MSw3IEBAICRjb2RlLj08PF9fXzsKLSAudHlwZQlfYnNhZXNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCi0gLmFsaWduCTQKLSBfYnNhZXNfa2V5X2NvbnZlcnQ6Ci0tCWFkcgkkY29uc3QsX2JzYWVzX2tleV9jb252ZXJ0Ci0rCWFkcgkkY29uc3QsLgotIAl2bGQxLjgJe0BYTU1bN119LCAgWyRpbnBdIQkJQCBsb2FkIHJvdW5kIDAga2V5Ci0gI2lmZGVmCV9fQVBQTEVfXwotIAlhZHIJJGNvbnN0LC5MTTAKLS0tIAotMi4xNS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYwppbmRleCA5MzM1YjBiLi42NDVkNjRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCkBAIC0yNSw3ICsyNSw3IEBACiBURVJNSU8gPz0gIi1EVEVSTUlPIgogIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgaXQgCiAjIGRvZXNuJ3Qod2hpY2ggY2F1c2VzIGFuZCB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4Ci1DRkxBRyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCitDRkxBRyA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAogCSAke1RFUk1JT30gJHtDRkxBR1N9IC1XYWxsIC1XYSwtLW5vZXhlY3N0YWNrIgogCiBleHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMiCkBAIC0xMzUsNiArMTM1LDEyIEBACiAJbGludXgtcG93ZXJwYzY0KQogCQl0YXJnZXQ9bGludXgtcHBjNjQKIAkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtcmlzY3YzMikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OwogCWxpbnV4LXN1cGVyc3BhcmMpCiAJCXRhcmdldD1saW51eC1zcGFyY3Y4CiAJCTs7CkBAIC0xNTEsNyArMTU3LDggQEAKICAgICAgICAgaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KICAgICAgICAgICAgICAgICB1c2VwcmVmaXg9LwogICAgICAgICBmaSAgICAgICAgCi0JcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gc2hhcmVkIC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wgLS1saWJkaXI9YGJhc2VuYW1lICR7bGliZGlyfWAgJHRhcmdldAorCWxpYmRpcmxlYWY9IiQoZWNobyAke2xpYmRpcn0gfCBzZWQgczokdXNlcHJlZml4OjopIgorCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPSR7bGliZGlybGVhZn0gJHRhcmdldAogfQogCiBkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDcyODlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1yZXF1aXJlIG9wZW5zc2wxMC5pbmMKLQotIyBGb3IgdGFyZ2V0IHNpZGUgdmVyc2lvbnMgb2Ygb3BlbnNzbCBlbmFibGUgc3VwcG9ydCBmb3IgT0NGIExpbnV4IGRyaXZlcgotIyBpZiB0aGV5IGFyZSBhdmFpbGFibGUuCi0KLUNGTEFHICs9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTIgotQ0ZMQUdfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLWZQSUMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA1N2Q5MjE4YzYxODBlMWQ5ZWU0MDc1NzJiMmRkMjI1IgotCi1leHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKLWV4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9b3BlbnNzbC0ke1BWfS91dGlsLyBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY2EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3BpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjEzYmRjMWIxZDFmZjM5YjZmZDQyYTI1NWU3NDY3NmE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3MGJhYmI3NWYyNzhjMzllMGM1MGU4YzRlNzQ5M2JjMGYxOGRiNjg2NzQ3ODM0MWE4MzJhOTgyZmQxNWE4ZmUiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lbmdpbmVzIgotRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMvKi5zbyAke2xpYmRpcn0vZW5naW5lcyIKLQotIyBUaGUgY3J5cHRvX3VzZV9iaWdpbnQgcGF0Y2ggbWVhbnMgdGhhdCBwZXJsJ3MgYmlnbnVtIG1vZHVsZSBuZWVkcyB0byBiZQotIyBpbnN0YWxsZWQsIGJ1dCBzb21lIGRpc3RyaWJ1dGlvbnMgKGZvciBleGFtcGxlIEZlZG9yYSAyMykgZG9uJ3Qgc2hpcCBpdCBieQotIyBkZWZhdWx0LiAgQXMgdGhlIHJlc3VsdGluZyBlcnJvciBpcyB2ZXJ5IG1pc2xlYWRpbmcgY2hlY2sgZm9yIGJpZ251bSBiZWZvcmUKLSMgYnVpbGRpbmcuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlpZiAhIHBlcmwgLU1iaWdpbnQgLWUgdHJ1ZTsgdGhlbgotCQliYmZhdGFsICJUaGUgcGVybCBtb2R1bGUgJ2JpZ251bScgd2FzIG5vdCBmb3VuZCBidXQgdGhpcyBpcyByZXF1aXJlZCB0byBidWlsZCBvcGVuc3NsLiAgUGxlYXNlIGluc3RhbGwgdGhpcyBtb2R1bGUgKG9mdGVuIHBhY2thZ2VkIGFzIHBlcmwtYmlnbnVtKSBhbmQgcmUtcnVuIGJpdGJha2UuIgotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yby5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTNlYmYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yby5iYgpAQCAtMCwwICsxLDY0IEBACityZXF1aXJlIG9wZW5zc2wxMC5pbmMKKworIyBGb3IgdGFyZ2V0IHNpZGUgdmVyc2lvbnMgb2Ygb3BlbnNzbCBlbmFibGUgc3VwcG9ydCBmb3IgT0NGIExpbnV4IGRyaXZlcgorIyBpZiB0aGV5IGFyZSBhdmFpbGFibGUuCisKK0NGTEFHICs9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTIgorQ0ZMQUdfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLWZQSUMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY0NzUzNjg5MjQ4MjdkMDZkNGI0MTYxMTFjOGJkYjc3IgorCitleHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKK2V4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgorCitTUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9b3BlbnNzbC0ke1BWfS91dGlsLyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY2EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL3BpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NDI3OWI4NTU3YzMyNDdjYmUzMjRlMjMyMmVjZDExNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYzNmNWM5NzE0YmEwZmQ0NWNiNGUwODczMDFlYjEzMzZjMzE3ZTBkMjBiNTc1YTEyNTA1MDQ3MGU4MDg5ZTRkIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCisKKyMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKKyMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKKyMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCisjIGJ1aWxkaW5nLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KKwkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4wZy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NDliZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4wZy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYWU2ZGExMGY0ZmZkOTcwMzIxNDc3NmQyYWFiY2UzMiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmE1ZjFiOGI4MzViODhjYWRiY2U5YjM1ZWQ5NTMxYTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU0ZDUwMTI2N2RhMzkzMTA5MDVjYjZkYzhjNjEyMWY3YTJjYWQ0NWE3NzA3Zjc2ZGY4MjhmZTFiODUwNzNhZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L29wZW5zc2wtJHtQVn0iCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtdWNsaWJjIHxcCi0JbGludXgtdWNsaWJjZWFiaSB8XAotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC11Y2xpYmNzcGUgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsKikKLQkJb3M9bGludXgKLQkJOzsKLQkJKikKLQkJOzsKLQllc2FjCi0JdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgotCWNhc2UgJHRhcmdldCBpbgotCWxpbnV4LWFybSkKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYXJtZWIpCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFhcmNoNjQqKQotCQl0YXJnZXQ9bGludXgtYWFyY2g2NAotCQk7OwotCWxpbnV4LXNoMykKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXNoNCkKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LWk0ODYpCi0JCXRhcmdldD1saW51eC1lbGYKLQkJOzsKLQlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCi0JCXRhcmdldD1saW51eC1lbGYKLQkJOzsKLQlsaW51eC1pNjg2KQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtZ251eDMyLXg4Nl82NCkKLQkJdGFyZ2V0PWxpbnV4LXgzMgotCQk7OwotCWxpbnV4LWdudTY0LXg4Nl82NCkKLQkJdGFyZ2V0PWxpbnV4LXg4Nl82NAotCQk7OwotCWxpbnV4LW1pcHMpCi0gICAgICAgICAgICAgICAgIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotCWxpbnV4LW1pcHNlbCkKLQkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCi0JCTs7Ci0gICAgICAgIGxpbnV4LWdudW4zMi1taXBzKikKLSAgICAgICAgICAgICAgIHRhcmdldD1saW51eC1taXBzNjQKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCkKLSAgICAgICAgICAgICAgIHRhcmdldD1saW51eDY0LW1pcHM2NAotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKLSAgICAgICAgICAgICAgIHRhcmdldD1saW51eDY0LW1pcHM2NAotICAgICAgICAgICAgICAgIDs7Ci0JbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtc3VwZXJzcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKLQkJOzsKLQlsaW51eC1zcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKLQkJOzsKLQlkYXJ3aW4taTM4NikKLQkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCi0JCTs7Ci0JZXNhYwotICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9Ci0gICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KLSAgICAgICAgZmkKLQlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj1gYmFzZW5hbWUgJHtsaWJkaXJ9YCAkdGFyZ2V0Ci19Ci0KLSN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOiBJbiBmdW5jdGlvbiAnZXZlbnRmZCc6Ci0jfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzoxMTA6MjA6IGVycm9yOiAnX19OUl9ldmVudGZkJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSN8ICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9ldmVudGZkLCBuKTsKLSN8ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+Ci1FWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAibm8tYWZhbGdlbmciCi0KLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCi1FWFRSQV9PRUNPTkZfbGliYy1tdXNsICs9ICItRE9QRU5TU0xfTk9fQVNZTkMiCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKLSAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgICAgICAjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCi0gICAgICAgICMgVGhpcyB2ZXJzaW9uIGlzIHVzZWQgZm9yIGV4YW1wbGUgd2hlbiBpbnN0YWxsaW5nIGNhLWNlcnRpZmljYXRlcyBkdXJpbmcKLSAgICAgICAgIyBpbWFnZSBjcmVhdGlvbi4KLSAgICAgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAotICAgICAgICBzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAgICAgY3AgLXIgKiAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgICAgICMgUHV0dGluZyAuc28gZmlsZXMgaW4gcHRlc3QgcGFja2FnZSB3aWxsIG1lc3MgdXAgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWFpbiBvcGVuc3NsIHBhY2thZ2UKLSAgICAgICAgIyBzbyB3ZSByZW5hbWUgdGhlbSB0byAuc28ucHRlc3QgYW5kIHBhdGNoIHRoZSB0ZXN0IGFjY29yZGluZ2x5Ci0gICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28ucHRlc3QKLSAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zby5wdGVzdAotICAgICAgICBzZWQgLWkgJ3MvJHRhcmdldHtzaGFyZWRfZXh0ZW5zaW9uX3NpbXBsZX0vIi5zby5wdGVzdCIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlY2lwZXMvOTAtdGVzdF9zaGxpYmxvYWQudAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBiYXNoIHB5dGhvbiIKLQotRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLTEuMS8qIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBoLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGI3NWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waC5iYgpAQCAtMCwwICsxLDE2MSBAQAorU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKKyMgIm9wZW5zc2wgfCBTU0xlYXkiIGR1YWwgbGljZW5zZQorTElDRU5TRSA9ICJvcGVuc3NsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDU3ZDUxMTAzMGM5ZDY2ZWY1ZjU5NjZiZWU1YTdlZmYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSVttZDVzdW1dID0gIjUyNzE0NzdlNGQ5M2Y0ZWEwMzJiNjY1ZWYwOTVmZjI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4MzU2MjZjZGU5ZTk5NjU2NTg1ZmM3YWFhMjMwMmE3M2E3ZTEzNDBiZjhjMTRmZDYzNWE2MmM2NjgwMmE1MTciCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgorCitpbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBwdGVzdAorCitkb19jb25maWd1cmUgKCkgeworCW9zPSR7SE9TVF9PU30KKwljYXNlICRvcyBpbgorCWxpbnV4LXVjbGliYyB8XAorCWxpbnV4LXVjbGliY2VhYmkgfFwKKwlsaW51eC1nbnVlYWJpIHxcCisJbGludXgtdWNsaWJjc3BlIHxcCisJbGludXgtZ251c3BlIHxcCisJbGludXgtbXVzbCopCisJCW9zPWxpbnV4CisJCTs7CisJCSopCisJCTs7CisJZXNhYworCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKKwljYXNlICR0YXJnZXQgaW4KKwlsaW51eC1hcm0pCisJCXRhcmdldD1saW51eC1hcm12NAorCQk7OworCWxpbnV4LWFybWViKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hYXJjaDY0KikKKwkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKKwkJOzsKKwlsaW51eC1zaDMpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1zaDQpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1pNDg2KQorCQl0YXJnZXQ9bGludXgtZWxmCisJCTs7CisJbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQorCQl0YXJnZXQ9bGludXgtZWxmCisJCTs7CisJbGludXgtaTY4NikKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQpCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1taXBzKQorICAgICAgICAgICAgICAgICMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncworCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKwlsaW51eC1taXBzZWwpCisJCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgorCQk7OworICAgICAgICBsaW51eC1nbnVuMzItbWlwcyopCisgICAgICAgICAgICAgICB0YXJnZXQ9bGludXgtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQpCisgICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCisgICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKKyAgICAgICAgICAgICAgICA7OworCWxpbnV4LW1pY3JvYmxhemUqfGxpbnV4LW5pb3MyKikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXBvd2VycGMpCisJCXRhcmdldD1saW51eC1wcGMKKwkJOzsKKwlsaW51eC1wb3dlcnBjNjQpCisJCXRhcmdldD1saW51eC1wcGM2NAorCQk7OworCWxpbnV4LXJpc2N2NjQpCisJCXRhcmdldD1saW51eC1nZW5lcmljNjQKKwkJOzsKKwlsaW51eC1yaXNjdjMyKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwlsaW51eC1zcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwlkYXJ3aW4taTM4NikKKwkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCisJCTs7CisJZXNhYworICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9CisgICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KKyAgICAgICAgZmkKKwlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIHM6JHVzZXByZWZpeDo6KSIKKwlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj0ke2xpYmRpcmxlYWZ9ICR0YXJnZXQKK30KKworI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6IEluIGZ1bmN0aW9uICdldmVudGZkJzoKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOjExMDoyMDogZXJyb3I6ICdfX05SX2V2ZW50ZmQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorI3wgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2V2ZW50ZmQsIG4pOworI3wgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KK0VYVFJBX09FQ09ORl9hYXJjaDY0ICs9ICJuby1hZmFsZ2VuZyIKKworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKK0VYVFJBX09FQ09ORl9saWJjLW11c2wgKz0gIi1ET1BFTlNTTF9OT19BU1lOQyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAorICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgICAgICMgSW5zdGFsbCBhIGN1c3RvbSB2ZXJzaW9uIG9mIGNfcmVoYXNoIHRoYXQgY2FuIGhhbmRsZSBzeXNyb290cyBwcm9wZXJseS4KKyAgICAgICAgIyBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgZXhhbXBsZSB3aGVuIGluc3RhbGxpbmcgY2EtY2VydGlmaWNhdGVzIGR1cmluZworICAgICAgICAjIGltYWdlIGNyZWF0aW9uLgorICAgICAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisgICAgICAgIHNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBjcCAtciAqICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgIyBQdXR0aW5nIC5zbyBmaWxlcyBpbiBwdGVzdCBwYWNrYWdlIHdpbGwgbWVzcyB1cCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBtYWluIG9wZW5zc2wgcGFja2FnZQorICAgICAgICAjIHNvIHdlIHJlbmFtZSB0aGVtIHRvIC5zby5wdGVzdCBhbmQgcGF0Y2ggdGhlIHRlc3QgYWNjb3JkaW5nbHkKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zby5wdGVzdAorICAgICAgICBtdiAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28gJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvLnB0ZXN0CisgICAgICAgIHNlZCAtaSAncy8kdGFyZ2V0e3NoYXJlZF9leHRlbnNpb25fc2ltcGxlfS8iLnNvLnB0ZXN0Ii8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvcmVjaXBlcy85MC10ZXN0X3NobGlibG9hZC50Cit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIGJhc2ggcHl0aG9uIgorCitGSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wtMS4xLyoiCisKK1BBQ0tBR0VTID0rICIke1BOfS1lbmdpbmVzIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzYyZDEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcG9lLWluY2x1ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNTBhMjk5N2IyNTZlMGUwZWY3YTQ2ZmFlMTMzZjU2ZjYwZmNlNTM5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEx1Ym9taXIgUmludGVsIDxsa3VuZHJha0B2My5zaz4KK0RhdGU6IE1vbiwgOSBKYW4gMjAxNyAxMzozNDoyMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBwcHBvZTogaW5jbHVkZSBuZXRpbmV0L2luLmggYmVmb3JlIGxpbnV4L2luLmgKKworVGhpcyBmaXhlcyBidWlsZHMgd2l0aCBuZXdlciBrZXJuZWxzLiBCYXNpY2FsbHksIDxuZXRpbmV0L2luLmg+IG5lZWRzIHRvIGJlCitpbmNsdWRlZCBiZWZvcmUgPGxpbnV4L2luLmg+IG90aGVyd2lzZSB0aGUgZWFybGllciwgdW5hd2FyZSBvZiB0aGUgbGF0dGVyLAordHJpZXMgdG8gcmVkZWZpbmUgc3ltYm9scyBhbmQgc3RydWN0dXJlcy4gQWxzbywgPGxpbnV4L2lmX3BwcG94Lmg+IGRvZXNuJ3Qgd29yaworYWxvbmUgYW55bW9yZSwgc2luY2UgaXQgcHVsbHMgdGhlIGhlYWRlcnMgaW4gdGhlIHdyb25nIG9yZGVyLCBzbyB3ZSBiZXR0ZXIKK2luY2x1ZGUgPG5ldGluZXQvaW4uaD4gZWFybHkuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcGF1bHVzbWFjay9wcHAvY29tbWl0LzUwYTI5OTdiMjU2ZTBlMGVmN2E0NmZhZTEzM2Y1NmY2MGZjZTUzOWNdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKK2luZGV4IDlhYjJlZWUuLmM0YWFhNmUgMTAwNjQ0CistLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAorKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKK0BAIC00Nyw2ICs0NywxMCBAQAorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2VuZGlmCisgCisrLyogVGhpcyBoYXMgdG8gYmUgaW5jbHVkZWQgYmVmb3JlIExpbnV4IDQuOCdzIGxpbnV4L2luLmgKKysgKiBnZXRzIGRyYWdnZWQgaW4uICovCisrI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysKKyAvKiBVZ2x5IGhlYWRlciBmaWxlcyBvbiBzb21lIExpbnV4IGJveGVzLi4uICovCisgI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9JRl9IKQorICNpbmNsdWRlIDxsaW51eC9pZi5oPgorQEAgLTg0LDggKzg4LDYgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIFVJTlQzMl90OworICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CistCisgI2lmZGVmIEhBVkVfTkVUSU5FVF9JRl9FVEhFUl9ICisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorQEAgLTk4LDcgKzEwMCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5UMzJfdDsKKyAjZW5kaWYKKyAKKyAKKy0KKyAvKiBFdGhlcm5ldCBmcmFtZSB0eXBlcyBhY2NvcmRpbmcgdG8gUkZDIDI1MTYgKi8KKyAjZGVmaW5lIEVUSF9QUFBPRV9ESVNDT1ZFUlkgMHg4ODYzCisgI2RlZmluZSBFVEhfUFBQT0VfU0VTU0lPTiAgIDB4ODg2NAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL2NpZmRlZnJvdXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9jaWZkZWZyb3V0ZS5wYXRjaAppbmRleCBkYjRkYmMyLi43ZGQ2OWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL2NpZmRlZnJvdXRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvY2lmZGVmcm91dGUucGF0Y2gKQEAgLTQsMTAgKzQsMTEgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkZWJpYW4vc3VzZSBwYXRjaGVzXQogCi1kaWZmIC11ck4gcHBwLTIuNC41LW9yaWcvcHBwZC9pcGNwLmMgcHBwLTIuNC41L3BwcGQvaXBjcC5jCi0tLS0gcHBwLTIuNC41LW9yaWcvcHBwZC9pcGNwLmMJMjAxMC0wNi0zMCAxNTo1MToxMi4wNTAxNjYzOTggKzA4MDAKLSsrKyBwcHAtMi40LjUvcHBwZC9pcGNwLmMJMjAxMC0wNi0zMCAxNjo0MDowMC40Nzg3MTY4NTUgKzA4MDAKLUBAIC0xOTgsNiArMTk4LDE2IEBACitJbmRleDogcHBwLTIuNC43L3BwcGQvaXBjcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHBwLTIuNC43Lm9yaWcvcHBwZC9pcGNwLmMKKysrKyBwcHAtMi40LjcvcHBwZC9pcGNwLmMKK0BAIC0xOTgsNiArMTk4LDE2IEBAIHN0YXRpYyBvcHRpb25fdCBpcGNwX29wdGlvbl9saXN0W10gPSB7CiAgICAgICAgImRpc2FibGUgZGVmYXVsdHJvdXRlIG9wdGlvbiIsIE9QVF9BTElBUyB8IE9QVF9BMkNMUiwKICAgICAgICAmaXBjcF93YW50b3B0aW9uc1swXS5kZWZhdWx0X3JvdXRlIH0sCiAgCkBAIC0yNCw3ICsyNSw3IEBACiAgICAgIHsgInByb3h5YXJwIiwgb19ib29sLCAmaXBjcF93YW50b3B0aW9uc1swXS5wcm94eV9hcnAsCiAgICAgICAgIkFkZCBwcm94eSBBUlAgZW50cnkiLCBPUFRfRU5BQkxFfDEsICZpcGNwX2FsbG93b3B0aW9uc1swXS5wcm94eV9hcnAgfSwKICAgICAgeyAibm9wcm94eWFycCIsIG9fYm9vbCwgJmlwY3BfYWxsb3dvcHRpb25zWzBdLnByb3h5X2FycCwKLUBAIC0yNzEsNyArMjgxLDcgQEAKK0BAIC0yNzEsNyArMjgxLDcgQEAgc3RydWN0IHByb3RlbnQgaXBjcF9wcm90ZW50ID0gewogICAgICBpcF9hY3RpdmVfcGt0CiAgfTsKICAKQEAgLTMzLDcgKzM0LDcgQEAKICBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdCBfX1AoKGNoYXIgKiwgaW50KSk7CS8qIFJ1biBhbiB1cC9kb3duIHNjcmlwdCAqLwogIHN0YXRpYyB2b2lkIGlwY3Bfc2NyaXB0X2RvbmUgX19QKCh2b2lkICopKTsKICAKLUBAIC0xNzQyLDcgKzE3NTIsMTIgQEAKK0BAIC0xNzYxLDcgKzE3NzEsMTIgQEAgaXBfZGVtYW5kX2NvbmYodSkKICAgICAgaWYgKCFzaWZucG1vZGUodSwgUFBQX0lQLCBOUE1PREVfUVVFVUUpKQogIAlyZXR1cm4gMDsKICAgICAgaWYgKHdvLT5kZWZhdWx0X3JvdXRlKQpAQCAtNDYsNyArNDcsNyBAQAogIAkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbdV0gPSAxOwogICAgICBpZiAod28tPnByb3h5X2FycCkKICAJaWYgKHNpZnByb3h5YXJwKHUsIHdvLT5oaXNhZGRyKSkKLUBAIC0xODMwLDcgKzE4NDUsOCBAQAorQEAgLTE4NDksNyArMTg2NCw4IEBAIGlwY3BfdXAoZikKICAgICAgICovCiAgICAgIGlmIChkZW1hbmQpIHsKICAJaWYgKGdvLT5vdXJhZGRyICE9IHdvLT5vdXJhZGRyIHx8IGhvLT5oaXNhZGRyICE9IHdvLT5oaXNhZGRyKSB7CkBAIC01Niw3ICs1Nyw3IEBACiAgCSAgICBpZiAoZ28tPm91cmFkZHIgIT0gd28tPm91cmFkZHIpIHsKICAJCXdhcm4oIkxvY2FsIElQIGFkZHJlc3MgY2hhbmdlZCB0byAlSSIsIGdvLT5vdXJhZGRyKTsKICAJCXNjcmlwdF9zZXRlbnYoIk9MRElQTE9DQUwiLCBpcF9udG9hKHdvLT5vdXJhZGRyKSwgMCk7Ci1AQCAtMTg1NSw3ICsxODcxLDEyIEBACitAQCAtMTg3NCw3ICsxODkwLDEyIEBAIGlwY3BfdXAoZikKICAKICAJICAgIC8qIGFzc2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgaW50ZXJmYWNlIGlmIHJlcXVpcmVkICovCiAgCSAgICBpZiAoaXBjcF93YW50b3B0aW9uc1tmLT51bml0XS5kZWZhdWx0X3JvdXRlKSAKQEAgLTY5LDcgKzcwLDcgQEAKICAJCSAgICBkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7CiAgCiAgCSAgICAvKiBNYWtlIGEgcHJveHkgQVJQIGVudHJ5IGlmIHJlcXVlc3RlZC4gKi8KLUBAIC0xOTA1LDcgKzE5MjYsMTIgQEAKK0BAIC0xOTI0LDcgKzE5NDUsMTIgQEAgaXBjcF91cChmKQogIAogIAkvKiBhc3NpZ24gYSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggdGhlIGludGVyZmFjZSBpZiByZXF1aXJlZCAqLwogIAlpZiAoaXBjcF93YW50b3B0aW9uc1tmLT51bml0XS5kZWZhdWx0X3JvdXRlKSAKQEAgLTgyLDcgKzgzLDcgQEAKICAJCWRlZmF1bHRfcm91dGVfc2V0W2YtPnVuaXRdID0gMTsKICAKICAJLyogTWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCi1AQCAtMTk4Myw3ICsyMDA5LDcgQEAKK0BAIC0yMDAyLDcgKzIwMjgsNyBAQCBpcGNwX2Rvd24oZikKICAJc2lmbnBtb2RlKGYtPnVuaXQsIFBQUF9JUCwgTlBNT0RFX0RST1ApOwogIAlzaWZkb3duKGYtPnVuaXQpOwogIAlpcGNwX2NsZWFyX2FkZHJzKGYtPnVuaXQsIGlwY3BfZ290b3B0aW9uc1tmLT51bml0XS5vdXJhZGRyLApAQCAtOTEsNyArOTIsNyBAQAogICAgICB9CiAgCiAgICAgIC8qIEV4ZWN1dGUgdGhlIGlwLWRvd24gc2NyaXB0ICovCi1AQCAtMTk5OSwxMiArMjAyNSwyMSBAQAorQEAgLTIwMTgsMTIgKzIwNDQsMjEgQEAgaXBjcF9kb3duKGYpCiAgICogcHJveHkgYXJwIGVudHJpZXMsIGV0Yy4KICAgKi8KICBzdGF0aWMgdm9pZApAQCAtMTE1LDEwICsxMTYsMTEgQEAKICAJY2lmcHJveHlhcnAodW5pdCwgaGlzYWRkcik7CiAgCXByb3h5X2FycF9zZXRbdW5pdF0gPSAwOwogICAgICB9Ci1kaWZmIC11ck4gcHBwLTIuNC41LW9yaWcvcHBwZC9pcGNwLmggcHBwLTIuNC41L3BwcGQvaXBjcC5oCi0tLS0gcHBwLTIuNC41LW9yaWcvcHBwZC9pcGNwLmgJMjAxMC0wNi0zMCAxNTo1MToxMi4wNDM2ODIwNjMgKzA4MDAKLSsrKyBwcHAtMi40LjUvcHBwZC9pcGNwLmgJMjAxMC0wNi0zMCAxNjo0MDo0OS41ODYyMDMxMjkgKzA4MDAKLUBAIC03MCw2ICs3MCw3IEBACitJbmRleDogcHBwLTIuNC43L3BwcGQvaXBjcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHBwLTIuNC43Lm9yaWcvcHBwZC9pcGNwLmgKKysrKyBwcHAtMi40LjcvcHBwZC9pcGNwLmgKK0BAIC03MCw2ICs3MCw3IEBAIHR5cGVkZWYgc3RydWN0IGlwY3Bfb3B0aW9ucyB7CiAgICAgIGJvb2wgb2xkX2FkZHJzOwkJLyogVXNlIG9sZCAoSVAtQWRkcmVzc2VzKSBvcHRpb24/ICovCiAgICAgIGJvb2wgcmVxX2FkZHI7CQkvKiBBc2sgcGVlciB0byBzZW5kIElQIGFkZHJlc3M/ICovCiAgICAgIGJvb2wgZGVmYXVsdF9yb3V0ZTsJCS8qIEFzc2lnbiBkZWZhdWx0IHJvdXRlIHRocm91Z2ggaW50ZXJmYWNlPyAqLwpAQCAtMTI2LDEwICsxMjgsMTEgQEAKICAgICAgYm9vbCBwcm94eV9hcnA7CQkvKiBNYWtlIHByb3h5IEFSUCBlbnRyeSBmb3IgcGVlcj8gKi8KICAgICAgYm9vbCBuZWdfdmo7CQkvKiBWYW4gSmFjb2Jzb24gQ29tcHJlc3Npb24/ICovCiAgICAgIGJvb2wgb2xkX3ZqOwkJLyogdXNlIG9sZCAoc2hvcnQpIGZvcm0gb2YgVkogb3B0aW9uPyAqLwotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvcHBwZC44IHBwcC0yLjQuNS9wcHBkL3BwcGQuOAotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvcHBwZC44CTIwMTAtMDYtMzAgMTU6NTE6MTIuMDQzNjgyMDYzICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvcHBwZC44CTIwMTAtMDYtMzAgMTY6NDI6NDcuMTAyNDEzODU5ICswODAwCi1AQCAtMTIxLDYgKzEyMSwxMyBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL3BwcGQuOAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvcHBwZC44CisrKysgcHBwLTIuNC43L3BwcGQvcHBwZC44CitAQCAtMTIxLDYgKzEyMSwxMyBAQCB0aGUgZ2F0ZXdheSwgd2hlbiBJUENQIG5lZ290aWF0aW9uIGlzIHN1CiAgVGhpcyBlbnRyeSBpcyByZW1vdmVkIHdoZW4gdGhlIFBQUCBjb25uZWN0aW9uIGlzIGJyb2tlbi4gIFRoaXMgb3B0aW9uCiAgaXMgcHJpdmlsZWdlZCBpZiB0aGUgXGZJbm9kZWZhdWx0cm91dGVcZlIgb3B0aW9uIGhhcyBiZWVuIHNwZWNpZmllZC4KICAuVFAKQEAgLTE0Myw3ICsxNDYsNyBAQAogIC5CIGRpc2Nvbm5lY3QgXGZJc2NyaXB0CiAgRXhlY3V0ZSB0aGUgY29tbWFuZCBzcGVjaWZpZWQgYnkgXGZJc2NyaXB0XGZSLCBieSBwYXNzaW5nIGl0IHRvIGEKICBzaGVsbCwgYWZ0ZXIKLUBAIC03MTcsNyArNzI0LDEyIEBACitAQCAtNzM0LDcgKzc0MSwxMiBAQCBkaXNhYmxlIGJvdGggZm9ybXMgb2YgaGFyZHdhcmUgZmxvdyBjb250CiAgLlRQCiAgLkIgbm9kZWZhdWx0cm91dGUKICBEaXNhYmxlIHRoZSBcZklkZWZhdWx0cm91dGVcZlIgb3B0aW9uLiAgVGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHdobwpAQCAtMTU3LDEwICsxNjAsMTEgQEAKICBjYW4gZG8gc28gYnkgcGxhY2luZyB0aGlzIG9wdGlvbiBpbiB0aGUgL2V0Yy9wcHAvb3B0aW9ucyBmaWxlLgogIC5UUAogIC5CIG5vZGVmbGF0ZQotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvcHBwZC5oIHBwcC0yLjQuNS9wcHBkL3BwcGQuaAotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvcHBwZC5oCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDUwMTY2Mzk4ICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvcHBwZC5oCTIwMTAtMDYtMzAgMTY6NDM6MzYuNTE0MTQ4MzI3ICswODAwCi1AQCAtNjQzLDcgKzY0MywxMSBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL3BwcGQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvcHBwZC5oCisrKysgcHBwLTIuNC43L3BwcGQvcHBwZC5oCitAQCAtNjY1LDcgKzY2NSwxMSBAQCBpbnQgIHNpZjZhZGRyIF9fUCgoaW50LCBldWk2NF90LCBldWk2NF90CiAgaW50ICBjaWY2YWRkciBfX1AoKGludCwgZXVpNjRfdCwgZXVpNjRfdCkpOwogIAkJCQkvKiBSZW1vdmUgYW4gSVB2NiBhZGRyZXNzIGZyb20gaS9mICovCiAgI2VuZGlmCkBAIC0xNzIsMTkgKzE3NiwyMCBAQAogIAkJCQkvKiBDcmVhdGUgZGVmYXVsdCByb3V0ZSB0aHJvdWdoIGkvZiAqLwogIGludCAgY2lmZGVmYXVsdHJvdXRlIF9fUCgoaW50LCB1X2ludDMyX3QsIHVfaW50MzJfdCkpOwogIAkJCQkvKiBEZWxldGUgZGVmYXVsdCByb3V0ZSB0aHJvdWdoIGkvZiAqLwotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvc3lzLWxpbnV4LmMgcHBwLTIuNC41L3BwcGQvc3lzLWxpbnV4LmMKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL3N5cy1saW51eC5jCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDUwMTY2Mzk4ICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvc3lzLWxpbnV4LmMJMjAxMC0wNi0zMCAxNjo1NDowMC4zNjI3MTYyMzEgKzA4MDAKLUBAIC0yMDYsNiArMjA2LDggQEAKLSAKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9zeXMtbGludXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvc3lzLWxpbnV4LmMKKysrKyBwcHAtMi40LjcvcHBwZC9zeXMtbGludXguYworQEAgLTIwNyw2ICsyMDcsOCBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciBpbmJ1Zls1MTJdOyAvKiBidWZmCiAgc3RhdGljIGludAlpZl9pc191cDsJLyogSW50ZXJmYWNlIGhhcyBiZWVuIG1hcmtlZCB1cCAqLworIHN0YXRpYyBpbnQJaWY2X2lzX3VwOwkvKiBJbnRlcmZhY2UgaGFzIGJlZW4gbWFya2VkIHVwIGZvciBJUHY2LCB0byBoZWxwIGRpZmZlcmVudGlhdGUgKi8KICBzdGF0aWMgaW50CWhhdmVfZGVmYXVsdF9yb3V0ZTsJLyogR2F0ZXdheSBmb3IgZGVmYXVsdCByb3V0ZSBhZGRlZCAqLwogK3N0YXRpYyBzdHJ1Y3QgcnRlbnRyeSBvbGRfZGVmX3J0OyAgICAgICAvKiBPbGQgZGVmYXVsdCByb3V0ZSAqLwogK3N0YXRpYyBpbnQgICAgICAgZGVmYXVsdF9ydF9yZXBsX3Jlc3Q7ICAvKiByZXBsYWNlIGFuZCByZXN0b3JlIG9sZCBkZWZhdWx0IHJ0ICovCiAgc3RhdGljIHVfaW50MzJfdCBwcm94eV9hcnBfYWRkcjsJLyogQWRkciBmb3IgcHJveHkgYXJwIGVudHJ5IGFkZGVkICovCiAgc3RhdGljIGNoYXIgcHJveHlfYXJwX2RldlsxNl07CQkvKiBEZXZpY2UgZm9yIHByb3h5IGFycCBlbnRyeSAqLwogIHN0YXRpYyB1X2ludDMyX3Qgb3VyX29sZF9hZGRyOwkJLyogZm9yIGRldGVjdGluZyBhZGRyZXNzIGNoYW5nZXMgKi8KLUBAIC0xNTM3LDYgKzE1MzksOSBAQAorQEAgLTE1NDUsNiArMTU0Nyw5IEBAIHN0YXRpYyBpbnQgcmVhZF9yb3V0ZV90YWJsZShzdHJ1Y3QgcnRlbnQKICAJcCA9IE5VTEw7CiAgICAgIH0KICAKQEAgLTE5NCw3ICsxOTksNyBAQAogICAgICBTSU5fQUREUihydC0+cnRfZHN0KSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9kZXN0X2NvbF0sIE5VTEwsIDE2KTsKICAgICAgU0lOX0FERFIocnQtPnJ0X2dhdGV3YXkpID0gc3RydG91bChjb2xzW3JvdXRlX2d3X2NvbF0sIE5VTEwsIDE2KTsKICAgICAgU0lOX0FERFIocnQtPnJ0X2dlbm1hc2spID0gc3RydG91bChjb2xzW3JvdXRlX21hc2tfY29sXSwgTlVMTCwgMTYpOwotQEAgLTE2MDYsMjAgKzE2MTEsNTEgQEAKK0BAIC0xNjE0LDIwICsxNjE5LDUxIEBAIGludCBoYXZlX3JvdXRlX3RvKHVfaW50MzJfdCBhZGRyKQogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqCiAgICogc2lmZGVmYXVsdHJvdXRlIC0gYXNzaWduIGEgZGVmYXVsdCByb3V0ZSB0aHJvdWdoIHRoZSBhZGRyZXNzIGdpdmVuLgpAQCAtMjYwLDcgKzI2NSw3IEBACiAgICAgIH0KICAKICAgICAgbWVtc2V0ICgmcnQsIDAsIHNpemVvZiAocnQpKTsKLUBAIC0xNjM4LDYgKzE2NzQsMTIgQEAKK0BAIC0xNjQ2LDYgKzE2ODIsMTIgQEAgaW50IHNpZmRlZmF1bHRyb3V0ZSAoaW50IHVuaXQsIHVfaW50MzJfdAogIAkgICAgZXJyb3IoImRlZmF1bHQgcm91dGUgaW9jdGwoU0lPQ0FERFJUKTogJW0iKTsKICAJcmV0dXJuIDA7CiAgICAgIH0KQEAgLTI3Myw3ICsyNzgsNyBAQAogIAogICAgICBoYXZlX2RlZmF1bHRfcm91dGUgPSAxOwogICAgICByZXR1cm4gMTsKLUBAIC0xNjczLDYgKzE3MTUsMTYgQEAKK0BAIC0xNjgxLDYgKzE3MjMsMTYgQEAgaW50IGNpZmRlZmF1bHRyb3V0ZSAoaW50IHVuaXQsIHVfaW50MzJfdAogIAkgICAgcmV0dXJuIDA7CiAgCX0KICAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9tYWtlZmlsZS1yZW1vdmUtaGFyZC11c3ItcmVmZXJlbmNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9tYWtlZmlsZS1yZW1vdmUtaGFyZC11c3ItcmVmZXJlbmNlLnBhdGNoCmluZGV4IGQ1OTcxN2UuLjhhNjkzOTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvbWFrZWZpbGUtcmVtb3ZlLWhhcmQtdXNyLXJlZmVyZW5jZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL21ha2VmaWxlLXJlbW92ZS1oYXJkLXVzci1yZWZlcmVuY2UucGF0Y2gKQEAgLTYsMTAgKzYsMTEgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1kaWZmIC11ck4gcHBwLTIuNC41LW9yaWcvcHBwZC9NYWtlZmlsZS5saW51eCBwcHAtMi40LjUvcHBwZC9NYWtlZmlsZS5saW51eAotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvTWFrZWZpbGUubGludXgJMjAxMC0wNi0zMCAxNTo1MToxMi4wNDM2ODIwNjMgKzA4MDAKLSsrKyBwcHAtMi40LjUvcHBwZC9NYWtlZmlsZS5saW51eAkyMDEwLTA2LTMwIDE3OjA4OjIxLjgwNjM2MzA0MiArMDgwMAotQEAgLTExNywxMCArMTE3LDEwIEBACitJbmRleDogcHBwLTIuNC43L3BwcGQvTWFrZWZpbGUubGludXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL01ha2VmaWxlLmxpbnV4CisrKysgcHBwLTIuNC43L3BwcGQvTWFrZWZpbGUubGludXgKK0BAIC0xMjAsMTAgKzEyMCwxMCBAQCBDRkxBR1MgICArPSAtREhBU19TSEFET1cKICAjTElCUyAgICAgKz0gLWxzaGFkb3cgJChMSUJTKQogIGVuZGlmCiAgCkBAIC0yMCw5ICsyMSw5IEBACiAtZW5kaWYKICsjZW5kaWYKICAKLSBpZmRlZiBORUVEREVTCi0gaWZuZGVmIFVTRV9DUllQVAotQEAgLTE2OSwxMCArMTY5LDEwIEBACisgaWZkZWYgVVNFX0xJQlVUSUwKKyBDRkxBR1MJKz0gLURIQVZFX0xPR1dUTVA9MQorQEAgLTE3NywxMCArMTc3LDEwIEBAIExJQlMJKz0gLWxkbAogIGVuZGlmCiAgCiAgaWZkZWYgRklMVEVSCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL3BwcC1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL3BwcC1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3N2IwZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSAzZGExOWFmNTNlMmVlZTJlNzdiNDU2Y2ZiYjlkNjMzYjA2NjU2ZDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTMgT2N0IDIwMTYgMTM6NDE6NDMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHBwOiBmaXggYnVpbGRpbmcgd2l0aCBsaW51eC00LjgKLQotRml4IGEgYnVpbGQgZXJyb3Igd2hlbiB1c2luZyB0aGUgbGludXgtNC44IGhlYWRlcnMgdGhhdCByZXN1bHRzIGluOgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gcHBwb2UuaDo4NzowLAotICAgICAgICAgICAgICAgICBmcm9tIHBsdWdpbi5jOjI5OgotLi4vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oOjIxMTo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQotIHN0cnVjdCBpbjZfYWRkcgotICAgICAgICBefn5+fn5+fgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Vzci9pbmNsdWRlL2xpbnV4L2lmX3BwcG9sMnRwLmg6MjA6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi91c3IvaW5jbHVkZS9saW51eC9pZl9wcHBveC5oOjI2LAotICAgICAgICAgICAgICAgICBmcm9tIHBsdWdpbi5jOjUyOgotLi4vdXNyL2luY2x1ZGUvbGludXgvaW42Lmg6NDk6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IHNvY2thZGRyX2luNicKLSBzdHJ1Y3Qgc29ja2FkZHJfaW42IHsKLSAgICAgICAgXn5+fn5+fn5+fn5+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQotCi1bMV0gaHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21hY2svcHBwL3B1bGwvNjkKLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmggYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotaW5kZXggOWFiMmVlZS4uOTZkMjc5NCAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi0rKysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIFVJTlQzMl90OwotICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L2luLmg+Ci0gCi0gI2lmZGVmIEhBVkVfTkVUSU5FVF9JRl9FVEhFUl9ICi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgppbmRleCBiMmM0ZDRjLi5hNWY3NjRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwLUZpeC1jb21waWxhdGlvbi1lcnJvcnMtaW4tTWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHBwQC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNS0zMzEwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BwcC1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1SZW1vdmUtdW5uZWVkZWQtaW5jbHVkZS5wYXRjaCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtMS4yNC4xL2lmdXBkb3duLXBhc3MtaW50ZXJmYWNlLWRldmljZS1uYW1lLWZvci1pcHY2LXJvdXRlLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LTEuMjQuMS9pZnVwZG93bi1wYXNzLWludGVyZmFjZS1kZXZpY2UtbmFtZS1mb3ItaXB2Ni1yb3V0ZS1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzE1Mzc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtMS4yNC4xL2lmdXBkb3duLXBhc3MtaW50ZXJmYWNlLWRldmljZS1uYW1lLWZvci1pcHY2LXJvdXRlLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDA2ZmNmOThmNmNhNDBkYzZiODIzZDdkNjIzMWEyNDBhMTc5NGVmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjggRmViIDIwMTcgMTA6NDA6MzcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gaWZ1cGRvd246IHBhc3MgaW50ZXJmYWNlIGRldmljZSBuYW1lIGZvciBpcHY2IHJvdXRlIGNvbW1hbmRzCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWNvbW1pdCAwMjg1MjQzMTdkOGQwMDExZWQzOGU4NmU1MDdhMDY3MzhhNWI1YTk3IGZyb20gdXBzdHJlYW0KLQotSVB2NiByb3V0ZXMgbmVlZCB0aGUgZGV2aWNlIGFyZ3VtZW50IGZvciBsaW5rLWxvY2FsIHJvdXRlcywgb3IgdGhleQotY2Fubm90IGJlIHVzZWQgYXQgYWxsLiBFLmcuICJnYXRld2F5IGZlODA6OmRlZiIgc2VlbXMgdG8gYmUgdXNlZCBpbgotc29tZSBwbGFjZXMsIGJ1dCBrZXJuZWwgcmVmdXNlcyB0byBpbnNlcnQgdGhlIHJvdXRlIHVubGVzcyBkZXZpY2UKLW5hbWUgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIHJvdXRlIGFkZGl0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBUaW1vIFRlcsOkcyA8dGltby50ZXJhc0Bpa2kuZmk+Ci1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KLS0tLQotIG5ldHdvcmtpbmcvaWZ1cGRvd24uYyB8IDcgKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2lmdXBkb3duLmMgYi9uZXR3b3JraW5nL2lmdXBkb3duLmMKLWluZGV4IDE3YmM0ZTkuLmEwMGY2OGQgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2lmdXBkb3duLmMKLSsrKyBiL25ldHdvcmtpbmcvaWZ1cGRvd24uYwotQEAgLTM5NCw4ICszOTQsOCBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBzdGF0aWNfdXA2KHN0cnVjdCBpbnRlcmZhY2VfZGVmbl90ICppZmQsIGV4ZWNmbiAqZXhlYykKLSAjIGlmIEVOQUJMRV9GRUFUVVJFX0lGVVBET1dOX0lQCi0gCXJlc3VsdCA9IGV4ZWN1dGUoImlwIGFkZHIgYWRkICVhZGRyZXNzJS8lbmV0bWFzayUgZGV2ICVpZmFjZSVbWyBsYWJlbCAlbGFiZWwlXV0iLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaXAgbGluayBzZXRbWyBtdHUgJW10dSVdXVtbIGFkZHIgJWh3YWRkcmVzcyVdXSAlaWZhY2UlIHVwIiwgaWZkLCBleGVjKTsKLS0JLyogV2FzOiAiW1sgaXAgLi4uLiVnYXRld2F5JSBdXSIuIFJlbW92ZWQgZXh0cmEgc3BhY2VzIHcvbyBjaGVja2luZyAqLwotLQlyZXN1bHQgKz0gZXhlY3V0ZSgiW1tpcCByb3V0ZSBhZGQgOjovMCB2aWEgJWdhdGV3YXklXV1bWyBtZXRyaWMgJW1ldHJpYyVdXSIsIGlmZCwgZXhlYyk7Ci0rCS8qIFJlcG9ydGVkbHksIElQdjYgbmVlZHMgImRldiAlaWZhY2UlIiwgYnV0IElQdjQgZG9lcyBub3Q6ICovCi0rCXJlc3VsdCArPSBleGVjdXRlKCJbW2lwIHJvdXRlIGFkZCA6Oi8wIHZpYSAlZ2F0ZXdheSUgZGV2ICVpZmFjZSVdXVtbIG1ldHJpYyAlbWV0cmljJV1dIiwgaWZkLCBleGVjKTsKLSAjIGVsc2UKLSAJcmVzdWx0ID0gZXhlY3V0ZSgiaWZjb25maWcgJWlmYWNlJVtbIG1lZGlhICVtZWRpYSVdXVtbIGh3ICVod2FkZHJlc3MlXV1bWyBtdHUgJW10dSVdXSB1cCIsIGlmZCwgZXhlYyk7Ci0gCXJlc3VsdCArPSBleGVjdXRlKCJpZmNvbmZpZyAlaWZhY2UlIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIiwgaWZkLCBleGVjKTsKLUBAIC00MjEsNyArNDIxLDggQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgdjR0dW5uZWxfdXAoc3RydWN0IGludGVyZmFjZV9kZWZuX3QgKmlmZCwgZXhlY2ZuICpleGVjKQotIAkJCSIlZW5kcG9pbnQlW1sgbG9jYWwgJWxvY2FsJV1dW1sgdHRsICV0dGwlXV0iLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaXAgbGluayBzZXQgJWlmYWNlJSB1cCIsIGlmZCwgZXhlYyk7Ci0gCXJlc3VsdCArPSBleGVjdXRlKCJpcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlIiwgaWZkLCBleGVjKTsKLS0JcmVzdWx0ICs9IGV4ZWN1dGUoIltbaXAgcm91dGUgYWRkIDo6LzAgdmlhICVnYXRld2F5JV1dIiwgaWZkLCBleGVjKTsKLSsJLyogUmVwb3J0ZWRseSwgSVB2NiBuZWVkcyAiZGV2ICVpZmFjZSUiLCBidXQgSVB2NCBkb2VzIG5vdDogKi8KLSsJcmVzdWx0ICs9IGV4ZWN1dGUoIltbaXAgcm91dGUgYWRkIDo6LzAgdmlhICVnYXRld2F5JSBkZXYgJWlmYWNlJV1dIiwgaWZkLCBleGVjKTsKLSAJcmV0dXJuICgocmVzdWx0ID09IDQpID8gNCA6IDApOwotIH0KLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC1pbml0dGFiXzEuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI3LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI0LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI3LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKaW5kZXggYTZiZmQ0Ni4uZDE2NzVjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogfQogCiBkb19wcmVwYXJlX2NvbmZpZyAoKSB7Ci0JaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQlleHBvcnQgS0NPTkZJR19OT1RJTUVTVEFNUD0xCiAJZmkKIAlzZWQgLWUgJy9DT05GSUdfU1RBVElDL2QnIFwKQEAgLTE0Niw3ICsxNDYsNyBAQAogCiBkb19jb21waWxlKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTCi0JaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQlleHBvcnQgS0NPTkZJR19OT1RJTUVTVEFNUD0xCiAJZmkKIAlpZiBbICIke0JVU1lCT1hfU1BMSVRfU1VJRH0iID0gIjEiIC1hIHhgZ3JlcCAiQ09ORklHX0ZFQVRVUkVfSU5ESVZJRFVBTD15IiAuY29uZmlnYCA9IHggXTsgdGhlbgpAQCAtMTU4LDYgKzE1OCwxMiBAQAogCQljcCAuY29uZmlnIC5jb25maWcub3JpZwogCQlvZV9ydW5tYWtlIGJ1c3lib3guY2ZnLnN1aWQKIAkJb2VfcnVubWFrZSBidXN5Ym94LmNmZy5ub3N1aWQKKworCQkjIHdvcmthcm91bmQgZm9yIHN1aWQgYnVnIDEwMzQ2CisJCWlmICEgZ3JlcCAtcSAiQ09ORklHX1NIX0lTX05PTkUiIGJ1c3lib3guY2ZnLm5vc3VpZDsgdGhlbgorCQkJZWNobyAiQ09ORklHX1NIX0lTX05PTkUiID4+IGJ1c3lib3guY2ZnLnN1aWQKKwkJZmkKKwogCQlmb3IgaSBpbiBgY2F0IGJ1c3lib3guY2ZnLnN1aWQgYnVzeWJveC5jZmcubm9zdWlkYDsgZG8KIAkJCWVjaG8gIiMgJGkgaXMgbm90IHNldCIgPj4gLmNvbmZpZy5kaXNhYmxlLmFwcHMKIAkJZG9uZQpAQCAtMTY3LDEyICsxNzMsMjQgQEAKIAkJCWNhdCBidXN5Ym94LmNmZy4kcyB8IHdoaWxlIHJlYWQgaXRlbTsgZG8KIAkJCQlncmVwIC13ICIkaXRlbSIgLmNvbmZpZy5vcmlnCiAJCQlkb25lID4gLmNvbmZpZy5hcHAuJHMKKworCQkJIyB3b3JrYXJvdW5kIGZvciBzdWlkIGJ1ZyAxMDM0NgorCQkJaWYgWyAiJHMiID0gInN1aWQiIF0gOyB0aGVuCisJCQkJc2VkICJzLy4qQ09ORklHX1NIX0lTX05PTkUuKiQvQ09ORklHX1NIX0lTX05PTkU9eS8iIC1pIC5jb25maWcuYXBwLnN1aWQKKwkJCWZpCisKIAkJCW1lcmdlX2NvbmZpZy5zaCAtbSAuY29uZmlnLm5vbmFwcHMgLmNvbmZpZy5hcHAuJHMKIAkJCW9lX3J1bm1ha2UgYnVzeWJveF91bnN0cmlwcGVkCiAJCQltdiBidXN5Ym94X3Vuc3RyaXBwZWQgYnVzeWJveC4kcwogCQkJb2VfcnVubWFrZSBidXN5Ym94LmxpbmtzCiAJCQltdiBidXN5Ym94LmxpbmtzIGJ1c3lib3gubGlua3MuJHMKIAkJZG9uZQorCisJCSMgaGFyZCBmYWlsIGlmIHNoIGlzIGJlaW5nIGxpbmtlZCB0byB0aGUgc3VpZCBidXN5Ym94IChkZXRlY3RzIGJ1ZyAxMDM0NikKKwkJaWYgZ3JlcCAtcSAteCAiL2Jpbi9zaCIgYnVzeWJveC5saW5rcy5zdWlkOyB0aGVuCisJCQliYmZhdGFsICJidXN5Ym94IHN1aWQgYmluYXJ5IGluY29ycmVjdGx5IHByb3ZpZGVzIC9iaW4vc2giCisJCWZpCisKIAkJIyBjb3B5IC5jb25maWcub3JpZyBiYWNrIHRvIC5jb25maWcsIGJlY2F1c2UgdGhlIGluc3RhbGwgcHJvY2VzcyBtYXkgY2hlY2sgdGhpcyBmaWxlCiAJCWNwIC5jb25maWcub3JpZyAuY29uZmlnCiAJCSMgY2xlYW51cApAQCAtMjA2LDcgKzIyNCw3IEBACiAJCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9idXN5Ym94Lm5vc3VpZCAke0R9JHtiYXNlX2JpbmRpcn0KIAkJCWluc3RhbGwgLW0gMDY0NCAke1N9L2J1c3lib3gubGlua3Muc3VpZCAke0R9JHtzeXNjb25mZGlyfQogCQkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vYnVzeWJveC5saW5rcy5ub3N1aWQgJHtEfSR7c3lzY29uZmRpcn0KLQkJCWlmIGdyZXAgLXEgIkNPTkZJR19GRUFUVVJFX1NIX0lTX0FTSD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwkJCWlmIGdyZXAgLXEgIkNPTkZJR19TSF9JU19BU0g9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCQkJbG4gLXNmIGJ1c3lib3gubm9zdWlkICR7RH0ke2Jhc2VfYmluZGlyfS9zaAogCQkJZmkKIAkJCSMgS2VlcCBhIGRlZmF1bHQgYnVzeWJveCBmb3IgcGVvcGxlIHdobyB3YW50IHRvIGludm9rZSBidXN5Ym94IGRpcmVjdGx5LgpAQCAtMjIwLDcgKzIzOCw3IEBACiAJCQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYnVzeWJveCAke0R9JHtiYXNlX2JpbmRpcn0KIAkJCWZpCiAJCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9idXN5Ym94LmxpbmtzICR7RH0ke3N5c2NvbmZkaXJ9Ci0JCQlpZiBncmVwIC1xICJDT05GSUdfRkVBVFVSRV9TSF9JU19BU0g9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCQlpZiBncmVwIC1xICJDT05GSUdfU0hfSVNfQVNIPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQkJCWxuIC1zZiBidXN5Ym94ICR7RH0ke2Jhc2VfYmluZGlyfS9zaAogCQkJZmkKIAkJCSMgV2UgbWFrZSB0aGlzIHN5bWxpbmsgaGVyZSB0byBlbGltaW5hdGUgdGhlIGVycm9yIHdoZW4gdXBncmFkaW5nIHRvZ2V0aGVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1mbG9jay11cGRhdGUtdGhlLWJlaGF2aW91ci1vZi1jLXBhcmFtZXRlci10by1tYXRjaC11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODUyMGYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1mbG9jay11cGRhdGUtdGhlLWJlaGF2aW91ci1vZi1jLXBhcmFtZXRlci10by1tYXRjaC11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSBlMWQ0MjZmZDY1YzAwYTZkMDFhMTBkODVlZGY4YTI5NGFlOGEyZDJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFN1biwgMjQgQXByIDIwMTYgMTg6MTk6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmxvY2s6IGZpeCAtYzsgaW1wcm92ZSBlcnJvciBoYW5kbGluZyBvZiBmb3JrK2V4ZWMKLQotZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCi1mbG9ja19tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NCAgICAgMzM0ICAgICArODAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSB1dGlsLWxpbnV4L2Zsb2NrLmMgfCAxOSArKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91dGlsLWxpbnV4L2Zsb2NrLmMgYi91dGlsLWxpbnV4L2Zsb2NrLmMKLWluZGV4IDA1YTc0N2YuLjUzOWE4MzUgMTAwNjQ0Ci0tLS0gYS91dGlsLWxpbnV4L2Zsb2NrLmMKLSsrKyBiL3V0aWwtbGludXgvZmxvY2suYwotQEAgLTU3LDcgKzU3LDYgQEAgaW50IGZsb2NrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKLSAJLyogSWYgaXQgaXMgImZsb2NrIEZJTEUgLWMgUFJPRyIsIHRoZW4gLWMgaXNuJ3QgY2F1Z2h0IGJ5IGdldG9wdDMyOgotIAkgKiB3ZSB1c2UgIisiIGluIG9yZGVyIHRvIHN1cHBvcnQgImZsb2NrIC1vcHQgRklMRSBQUk9HIC13aXRoLW9wdHMiLAotIAkgKiB3ZSBuZWVkIHRvIHJlbW92ZSAtYyBieSBoYW5kLgotLQkgKiBUT0RPOiBpbiB1cHN0cmVhbSwgLWMgJ1BST0cgQVJHUycgbWVhbnMgInJ1biBzaCAtYyAnUFJPRyBBUkdTJyIKLSAJICovCi0gCWlmIChhcmd2WzBdCi0gCSAmJiBhcmd2WzBdWzBdID09ICctJwotQEAgLTY2LDYgKzY1LDkgQEAgaW50IGZsb2NrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKLSAJICAgICkKLSAJKSB7Ci0gCQlhcmd2Kys7Ci0rCQlpZiAoYXJndlsxXSkKLSsJCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiLWMgdGFrZXMgb25seSBvbmUgYXJndW1lbnQiKTsKLSsJCW9wdCB8PSBPUFRfYzsKLSAJfQotIAotIAlpZiAoT1BUX3MgPT0gTE9DS19TSCAmJiBPUFRfeCA9PSBMT0NLX0VYICYmIE9QVF9uID09IExPQ0tfTkIgJiYgT1BUX3UgPT0gTE9DS19VTikgewotQEAgLTkwLDggKzkyLDIxIEBAIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCQliYl9wZXJyb3Jfbm9tc2dfYW5kX2RpZSgpOwotIAl9Ci0gCi0tCWlmIChhcmd2WzBdKQotKwlpZiAoYXJndlswXSkgewotKwkJaWYgKCEob3B0ICYgT1BUX2MpKSB7Ci0rCQkJaW50IHJjID0gc3Bhd25fYW5kX3dhaXQoYXJndik7Ci0rCQkJaWYgKHJjIDwgMCkKLSsJCQkJYmJfc2ltcGxlX3BlcnJvcl9tc2coYXJndlswXSk7Ci0rCQkJcmV0dXJuIHJjOwotKwkJfQotKwkJLyogLWMgJ1BST0cgQVJHUycgbWVhbnMgInJ1biBzaCAtYyAnUFJPRyBBUkdTJyIgKi8KLSsJCWFyZ3YgLT0gMjsKLSsJCWFyZ3ZbMF0gPSAoY2hhciopZ2V0X3NoZWxsX25hbWUoKTsKLSsJCWFyZ3ZbMV0gPSAoY2hhciopIi1jIjsKLSsJCS8qIGFyZ3ZbMl0gPSAiUFJPRyBBUkdTIjsgKi8KLSsJCS8qIGFyZ3ZbM10gPSBOVUxMOyAqLwotIAkJcmV0dXJuIHNwYXduX2FuZF93YWl0KGFyZ3YpOwotKwl9Ci0gCi0gCXJldHVybiBFWElUX1NVQ0NFU1M7Ci0gfQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcC1maXgtYW4taW1wcm9wZXItb3B0aW1pemF0aW9uLXJlcS5yLnJ0bV9zY29wZS1tYXktLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTJhNTA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcC1maXgtYW4taW1wcm9wZXItb3B0aW1pemF0aW9uLXJlcS5yLnJ0bV9zY29wZS1tYXktLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAzNGVjYzNiN2FlZmRkNmMzMWU4NjkxYmQ1NDg1MDM3YmJhYmVkYmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgQXVnIDIwMTYgMDE6MzA6MzQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gaXA6IGZpeCBhbiBpbXByb3BlciBvcHRpbWl6YXRpb246IHJlcS5yLnJ0bV9zY29wZSBtYXkgYmUKLSBub256ZXJvIGhlcmUKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotCi0gbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLWluZGV4IGU2NzRlOWEwZC4uNDhkYzZlM2Q5IDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotKysrIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotQEAgLTM2MiwxMCArMzYyLDkgQEAgSUZfRkVBVFVSRV9JUF9SVUxFKEFSR190YWJsZSwpCi0gCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9OT1dIRVJFOwotIAotIAlpZiAoY21kICE9IFJUTV9ERUxST1VURSkgewotKwkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfVU5JVkVSU0U7Ci0gCQlpZiAoUlRQUk9UX0JPT1QgIT0gMCkKLSAJCQlyZXEuci5ydG1fcHJvdG9jb2wgPSBSVFBST1RfQk9PVDsKLS0JCWlmIChSVF9TQ09QRV9VTklWRVJTRSAhPSAwKQotLQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotIAkJaWYgKFJUTl9VTklDQVNUICE9IDApCi0gCQkJcmVxLnIucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKLSAJfQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWlwcm91dGUtc3VwcG9ydC1zY29wZS0uLUNsb3Nlcy04NTYxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWlwcm91dGUtc3VwcG9ydC1zY29wZS0uLUNsb3Nlcy04NTYxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmJjNzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi1Gcm9tIGNlNGJjMWVkMDQ4MjMzZTg5ZWU0Y2I5NTgzMGJmNmYwMWQ1MjNkMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogV2VkLCAzMCBEZWMgMjAxNSAxNzozMjo1MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBpcHJvdXRlOiBzdXBwb3J0ICJzY29wZSIuIENsb3NlcyA4NTYxCi0KLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQotaXByb3V0ZV9tb2RpZnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNTEgICAgMTEyMCAgICAgKzY5Ci0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLU1vZGlmaWVkIHBhdGNoIHRvIGJ1aWxkIGFnYWluc3QgYnVzeWJveCAxLjI0LjE6Ci0tIHMvaW52YXJnXzFfdG9fMi9pbnZhcmcKLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLS0tLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1pbmRleCBkMjMyZWU2ZmQuLjgyODI3NDg4ZiAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLUBAIC0zMTMsMTIgKzMxMywxMyBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gc3RhdGljIGludCBpcHJvdXRlX21vZGlmeShpbnQgY21kLCB1bnNpZ25lZCBmbGFncywgY2hhciAqKmFyZ3YpCi0gewotIAlzdGF0aWMgY29uc3QgY2hhciBrZXl3b3Jkc1tdIEFMSUdOMSA9Ci0tCQkic3JjXDAiInZpYVwwIiJtdHVcMCIibG9ja1wwIiJwcm90b2NvbFwwIklGX0ZFQVRVUkVfSVBfUlVMRSgidGFibGVcMCIpCi0rCQkic3JjXDAiInZpYVwwIiJtdHVcMCIibG9ja1wwIiJzY29wZVwwIiJwcm90b2NvbFwwIklGX0ZFQVRVUkVfSVBfUlVMRSgidGFibGVcMCIpCi0gCQkiZGV2XDAiIm9pZlwwIiJ0b1wwIiJtZXRyaWNcMCIib25saW5rXDAiOwotIAllbnVtIHsKLSAJCUFSR19zcmMsCi0gCQlBUkdfdmlhLAotIAkJQVJHX210dSwgUEFSTV9sb2NrLAotKwkJQVJHX3Njb3BlLAotIAkJQVJHX3Byb3RvY29sLAotIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJQVJHX2RldiwKLUBAIC0zNDQsNiArMzQ1LDcgQEAgSUZfRkVBVFVSRV9JUF9SVUxFKEFSR190YWJsZSwpCi0gCXVuc2lnbmVkIG14bG9jayA9IDA7Ci0gCWNoYXIgKmQgPSBOVUxMOwotIAlzbWFsbHVpbnQgb2sgPSAwOwotKwlzbWFsbHVpbnQgc2NvcGVfb2sgPSAwOwotIAlpbnQgYXJnOwotIAotIAltZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOwotQEAgLTM1MiwxNSArMzU0LDE4IEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAlyZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBmbGFnczsKLSAJcmVxLm4ubmxtc2dfdHlwZSA9IGNtZDsKLSAJcmVxLnIucnRtX2ZhbWlseSA9IHByZWZlcnJlZF9mYW1pbHk7Ci0tCWlmIChSVF9UQUJMRV9NQUlOKSAvKiBpZiBpdCBpcyB6ZXJvLCBtZW1zZXQgYWxyZWFkeSBkaWQgaXQgKi8KLSsJaWYgKFJUX1RBQkxFX01BSU4gIT0gMCkgLyogaWYgaXQgaXMgemVybywgbWVtc2V0IGFscmVhZHkgZGlkIGl0ICovCi0gCQlyZXEuci5ydG1fdGFibGUgPSBSVF9UQUJMRV9NQUlOOwotLQlpZiAoUlRfU0NPUEVfTk9XSEVSRSkKLSsJaWYgKFJUX1NDT1BFX05PV0hFUkUgIT0gMCkKLSAJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX05PV0hFUkU7Ci0gCi0gCWlmIChjbWQgIT0gUlRNX0RFTFJPVVRFKSB7Ci0tCQlyZXEuci5ydG1fcHJvdG9jb2wgPSBSVFBST1RfQk9PVDsKLS0JCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotLQkJcmVxLnIucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKLSsJCWlmIChSVFBST1RfQk9PVCAhPSAwKQotKwkJCXJlcS5yLnJ0bV9wcm90b2NvbCA9IFJUUFJPVF9CT09UOwotKwkJaWYgKFJUX1NDT1BFX1VOSVZFUlNFICE9IDApCi0rCQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfVU5JVkVSU0U7Ci0rCQlpZiAoUlROX1VOSUNBU1QgIT0gMCkKLSsJCQlyZXEuci5ydG1fdHlwZSA9IFJUTl9VTklDQVNUOwotIAl9Ci0gCi0gCW14cnRhLT5ydGFfdHlwZSA9IFJUQV9NRVRSSUNTOwotQEAgLTM5Myw2ICszOTgsMTMgQEAgSUZfRkVBVFVSRV9JUF9SVUxFKEFSR190YWJsZSwpCi0gCQkJfQotIAkJCW10dSA9IGdldF91bnNpZ25lZCgqYXJndiwgIm10dSIpOwotIAkJCXJ0YV9hZGRhdHRyMzIobXhydGEsIHNpemVvZihteGJ1ZiksIFJUQVhfTVRVLCBtdHUpOwotKwkJfSBlbHNlIGlmIChhcmcgPT0gQVJHX3Njb3BlKSB7Ci0rCQkJdWludDMyX3Qgc2NvcGU7Ci0rCQkJTkVYVF9BUkcoKTsKLSsJCQlpZiAocnRubF9ydHNjb3BlX2Eybigmc2NvcGUsICphcmd2KSkKLSsJCQkJaW52YXJnKCphcmd2LCAic2NvcGUiKTsKLSsJCQlyZXEuci5ydG1fc2NvcGUgPSBzY29wZTsKLSsJCQlzY29wZV9vayA9IDE7Ci0gCQl9IGVsc2UgaWYgKGFyZyA9PSBBUkdfcHJvdG9jb2wpIHsKLSAJCQl1aW50MzJfdCBwcm90OwotIAkJCU5FWFRfQVJHKCk7Ci1AQCAtNDY5LDIwICs0ODEsMjIgQEAgSUZfRkVBVFVSRV9JUF9SVUxFKEFSR190YWJsZSwpCi0gCQlhZGRhdHRyX2woJnJlcS5uLCBzaXplb2YocmVxKSwgUlRBX01FVFJJQ1MsIFJUQV9EQVRBKG14cnRhKSwgUlRBX1BBWUxPQUQobXhydGEpKTsKLSAJfQotIAotLQlpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9OQVQpCi0tCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9IT1NUOwotLQllbHNlCi0tCWlmIChyZXEuci5ydG1fdHlwZSA9PSBSVE5fQlJPQURDQVNUCi0tCSB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fTVVMVElDQVNUCi0tCSB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fQU5ZQ0FTVAotLQkpIHsKLS0JCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX0xJTks7Ci0tCX0KLS0JZWxzZSBpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX1VOSUNBU1QgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX1VOU1BFQykgewotLQkJaWYgKGNtZCA9PSBSVE1fREVMUk9VVEUpCi0tCQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfTk9XSEVSRTsKLS0JCWVsc2UgaWYgKCEob2sgJiBnd19vaykpCi0rCWlmICghc2NvcGVfb2spIHsKLSsJCWlmIChyZXEuci5ydG1fdHlwZSA9PSBSVE5fTE9DQUwgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX05BVCkKLSsJCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9IT1NUOwotKwkJZWxzZQotKwkJaWYgKHJlcS5yLnJ0bV90eXBlID09IFJUTl9CUk9BRENBU1QKLSsJCSB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fTVVMVElDQVNUCi0rCQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX0FOWUNBU1QKLSsJCSkgewotIAkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX0xJTks7Ci0rCQl9Ci0rCQllbHNlIGlmIChyZXEuci5ydG1fdHlwZSA9PSBSVE5fVU5JQ0FTVCB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fVU5TUEVDKSB7Ci0rCQkJaWYgKGNtZCA9PSBSVE1fREVMUk9VVEUpCi0rCQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX05PV0hFUkU7Ci0rCQkJZWxzZSBpZiAoIShvayAmIGd3X29rKSkKLSsJCQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfTElOSzsKLSsJCX0KLSAJfQotIAotIAlpZiAocmVxLnIucnRtX2ZhbWlseSA9PSBBRl9VTlNQRUMpIHsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWxpYmlwcm91dGUtaGFuZGxlLXRhYmxlLWlkcy1sYXJnZXItdGhhbi0yNTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYzViNDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWxpYmlwcm91dGUtaGFuZGxlLXRhYmxlLWlkcy1sYXJnZXItdGhhbi0yNTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSBiNWE5MjM0MjcyZTYwODQ1NTcyMjRjNzNhYjc3MzdlZDQ3ZjA5ODQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVrYXN6IE5vd2FrIDxsbm93YWtAdHljb2ludC5jb20+Ci1EYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDEyOjQ4OjIxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggdjJdIGxpYmlwcm91dGU6IGhhbmRsZSB0YWJsZSBpZHMgbGFyZ2VyIHRoYW4gMjU1Ci0KLUxpbnV4IGtlcm5lbCwgc3RhcnRpbmcgZnJvbSAyLjYuMTkgYWxsb3dzIGlwIHRhYmxlIGlkcyB0byBoYXZlIDMyLWJpdCB2YWx1ZXMuCi1JbiBvcmRlciB0byBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5LCB0aGUgb2xkIDgtYml0IGZpZWxkOiBydG1fdGFibGUgaXMgc3RpbGwKLWluIHVzZSB3aGVuIHRhYmxlIGlkIGlzIGxvd2VyIHRoYW4gMjU2LgotCi1BZGQgc3VwcG9ydCBmb3IgdGhlIDMyLWJpdCB0YWJsZSBpZCAoUlRBX1RBQkxFIGF0dHJpYnV0ZSkgaW46Ci0tIGlwIHJvdXRlIHByaW50Ci0tIGlwIHJvdXRlIG1vZGlmeQotLSBpcCBydWxlIHByaW50Ci0tIGlwIHJ1bGUgbW9kaWZ5Ci0KLUFkZCBwcmludGluZyBvZiB0YWJsZSBpZHMgdG8gaXAgcm91dGUuCi0KLUNoYW5nZXMgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFpbmxpbmUgaXByb3V0ZTIgdXRpbGl0aWVzLgotCi1UaGVzZSBjaGFuZ2VzIGFyZSByZXF1aXJlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENvbm5NYW4sIHdoaWNoIGJ5IGRlZmF1bHQKLXVzZXMgdGFibGUgaWRzIGdyZWF0ZXIgdGhhbiAyNTUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMuYnVzeWJveC5uZXQvcGlwZXJtYWlsL2J1c3lib3gvMjAxNi1EZWNlbWJlci8wODQ5ODkuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogTHVrYXN6IE5vd2FrIDxsbm93YWtAdHljb2ludC5jb20+Ci0tLS0KLSBuZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCi0gbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcnVsZS5jICB8IDExICsrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLWluZGV4IDZlY2Q1ZjcuLmQ1YWY0OTggMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi0rKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1AQCAtODcsNiArODcsNyBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCWluZXRfcHJlZml4IGRzdDsKLSAJaW5ldF9wcmVmaXggc3JjOwotIAlpbnQgaG9zdF9sZW4gPSAtMTsKLSsJdWludDMyX3QgdGlkOwotIAotIAlpZiAobi0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXUk9VVEUgJiYgbi0+bmxtc2dfdHlwZSAhPSBSVE1fREVMUk9VVEUpIHsKLSAJCWZwcmludGYoc3RkZXJyLCAiTm90IGEgcm91dGU6ICUwOHggJTA4eCAlMDh4XG4iLAotQEAgLTk5LDYgKzEwMCwxNCBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCWlmIChsZW4gPCAwKQotIAkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoIndyb25nIG5sbXNnIGxlbiAlZCIsIGxlbik7Ci0gCi0rCW1lbXNldCh0YiwgMCwgc2l6ZW9mKHRiKSk7Ci0rCXBhcnNlX3J0YXR0cih0YiwgUlRBX01BWCwgUlRNX1JUQShyKSwgbGVuKTsKLSsKLSsJaWYgKHRiW1JUQV9UQUJMRV0pCi0rCQl0aWQgPSAqKHVpbnQzMl90ICopUlRBX0RBVEEodGJbUlRBX1RBQkxFXSk7Ci0rCWVsc2UKLSsJCXRpZCA9IHItPnJ0bV90YWJsZTsKLSsKLSAJaWYgKHItPnJ0bV9mYW1pbHkgPT0gQUZfSU5FVDYpCi0gCQlob3N0X2xlbiA9IDEyODsKLSAJZWxzZSBpZiAoci0+cnRtX2ZhbWlseSA9PSBBRl9JTkVUKQotQEAgLTEyOCw3ICsxMzcsNyBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotLQkJaWYgKEdfZmlsdGVyLnRiID4gMCAmJiBHX2ZpbHRlci50YiAhPSByLT5ydG1fdGFibGUpIHsKLSsJCWlmIChHX2ZpbHRlci50YiA+IDAgJiYgR19maWx0ZXIudGIgIT0gdGlkKSB7Ci0gCQkJcmV0dXJuIDA7Ci0gCQl9Ci0gCX0KLUBAIC0xNTcsMTAgKzE2Niw4IEBAIHN0YXRpYyBpbnQgRkFTVF9GVU5DIHByaW50X3JvdXRlKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9ubCAqd2hvIFVOVVNFRF9QQVJBTSwKLSAJCXJldHVybiAwOwotIAl9Ci0gCi0tCW1lbXNldCh0YiwgMCwgc2l6ZW9mKHRiKSk7Ci0gCW1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7Ci0gCW1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0tCXBhcnNlX3J0YXR0cih0YiwgUlRBX01BWCwgUlRNX1JUQShyKSwgbGVuKTsKLSAKLSAJaWYgKHRiW1JUQV9TUkNdKSB7Ci0gCQlzcmMuYml0bGVuID0gci0+cnRtX3NyY19sZW47Ci1AQCAtMjgzLDYgKzI5MCwxMCBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCWlmICh0YltSVEFfT0lGXSkgewotIAkJcHJpbnRmKCJkZXYgJXMgIiwgbGxfaW5kZXhfdG9fbmFtZSgqKGludCopUlRBX0RBVEEodGJbUlRBX09JRl0pKSk7Ci0gCX0KLSsjaWYgRU5BQkxFX0ZFQVRVUkVfSVBfUlVMRQotKwlpZiAodGlkICYmIHRpZCAhPSBSVF9UQUJMRV9NQUlOICYmICFHX2ZpbHRlci50YikKLSsJCXByaW50ZigidGFibGUgJXMgIiwgcnRubF9ydHRhYmxlX24yYSh0aWQpKTsKLSsjZW5kaWYKLSAKLSAJLyogVG9kbzogcGFyc2UgJiBzaG93ICJwcm90byBrZXJuZWwiLCAic2NvcGUgbGluayIgaGVyZSAqLwotIAotQEAgLTQzNCw3ICs0NDUsMTIgQEAgSUZfRkVBVFVSRV9JUF9SVUxFKEFSR190YWJsZSwpCi0gCQkJTkVYVF9BUkcoKTsKLSAJCQlpZiAocnRubF9ydHRhYmxlX2EybigmdGlkLCAqYXJndikpCi0gCQkJCWludmFyZygqYXJndiwgInRhYmxlIik7Ci0tCQkJcmVxLnIucnRtX3RhYmxlID0gdGlkOwotKwkJCWlmICh0aWQgPCAyNTYpCi0rCQkJCXJlcS5yLnJ0bV90YWJsZSA9IHRpZDsKLSsJCQllbHNlIHsKLSsJCQkJcmVxLnIucnRtX3RhYmxlID0gUlRfVEFCTEVfVU5TUEVDOwotKwkJCQlhZGRhdHRyMzIoJnJlcS5uLCBzaXplb2YocmVxKSwgUlRBX1RBQkxFLCB0aWQpOwotKwkJCX0KLSAjZW5kaWYKLSAJCX0gZWxzZSBpZiAoYXJnID09IEFSR19kZXYgfHwgYXJnID09IEFSR19vaWYpIHsKLSAJCQlORVhUX0FSRygpOwotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYwotaW5kZXggNzc0YTNlMi4uM2ZhYzdjNSAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYwotKysrIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcnVsZS5jCi1AQCAtMTE5LDcgKzExOSw5IEBAIHN0YXRpYyBpbnQgRkFTVF9GVU5DIHByaW50X3J1bGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAkJcHJpbnRmKCJpaWYgJXMgIiwgKGNoYXIqKVJUQV9EQVRBKHRiW1JUQV9JSUZdKSk7Ci0gCX0KLSAKLS0JaWYgKHItPnJ0bV90YWJsZSkKLSsJaWYgKHRiW1JUQV9UQUJMRV0pCi0rCQlwcmludGYoImxvb2t1cCAlcyAiLCBydG5sX3J0dGFibGVfbjJhKCoodWludDMyX3QqKVJUQV9EQVRBKHRiW1JUQV9UQUJMRV0pKSk7Ci0rCWVsc2UgaWYgKHItPnJ0bV90YWJsZSkKLSAJCXByaW50ZigibG9va3VwICVzICIsIHJ0bmxfcnR0YWJsZV9uMmEoci0+cnRtX3RhYmxlKSk7Ci0gCi0gCWlmICh0YltSVEFfRkxPV10pIHsKLUBAIC0yNTksNyArMjYxLDEyIEBAIHN0YXRpYyBpbnQgaXBydWxlX21vZGlmeShpbnQgY21kLCBjaGFyICoqYXJndikKLSAJCQlORVhUX0FSRygpOwotIAkJCWlmIChydG5sX3J0dGFibGVfYTJuKCZ0aWQsICphcmd2KSkKLSAJCQkJaW52YXJnKCphcmd2LCAidGFibGUgSUQiKTsKLS0JCQlyZXEuci5ydG1fdGFibGUgPSB0aWQ7Ci0rCQkJaWYgKHRpZCA8IDI1NikKLSsJCQkJcmVxLnIucnRtX3RhYmxlID0gdGlkOwotKwkJCWVsc2UgewotKwkJCQlyZXEuci5ydG1fdGFibGUgPSBSVF9UQUJMRV9VTlNQRUM7Ci0rCQkJCWFkZGF0dHIzMigmcmVxLm4sIHNpemVvZihyZXEpLCBSVEFfVEFCTEUsIHRpZCk7Ci0rCQkJfQotIAkJCXRhYmxlX29rID0gMTsKLSAJCX0gZWxzZSBpZiAoa2V5ID09IEFSR19kZXYgfHwKLSAJCQkgICBrZXkgPT0gQVJHX2lpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zZWQtZml4LXNlZC1uLWZsdXNoZXMtcGF0dGVybi1zcGFjZS10ZXJtaW5hdGVzLWVhcmx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjUzOTg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zZWQtZml4LXNlZC1uLWZsdXNoZXMtcGF0dGVybi1zcGFjZS10ZXJtaW5hdGVzLWVhcmx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSA5MDM1NDJmNzMzMWM1ODAwN2EzZWY5MzhkNDFlMWM1NWZjMzI5NjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMjM6NDA6NDMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2VkOiBmaXggInNlZCBuIChmbHVzaGVzIHBhdHRlcm4gc3BhY2UsIHRlcm1pbmF0ZXMgZWFybHkpIgotIHRlc3RjYXNlIGZhaWx1cmUKLQotVGhpcyBwYXRjaCBmaXggInNlZCBuIChmbHVzaGVzIHBhdHRlcm4gc3BhY2UsIHRlcm1pbmF0ZXMgZWFybHkpIgotdGVzdGNhc2UgZmFpbHVyZS4gV2UgY2FuIHNlZSBpdCBhdDoKLQotCWh0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD03NmQ3MjM3NmUwMjQ0YTVjYWZkNDg4MGNkYzYyM2UzN2Q4NmE3NWU0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGVkaXRvcnMvc2VkLmMgICAgICAgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCi0gdGVzdHN1aXRlL3NlZC50ZXN0cyB8ICA2ICstLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lZGl0b3JzL3NlZC5jIGIvZWRpdG9ycy9zZWQuYwotaW5kZXggN2JiZjgyMC4uMjU5YzM5YyAxMDA2NDQKLS0tLSBhL2VkaXRvcnMvc2VkLmMKLSsrKyBiL2VkaXRvcnMvc2VkLmMKLUBAIC0xMjc0LDE2ICsxMjc0LDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmlsZXModm9pZCkKLSAJCWNhc2UgJ24nOgotIAkJCWlmICghRy5iZV9xdWlldCkKLSAJCQkJc2VkX3B1dHMocGF0dGVybl9zcGFjZSwgbGFzdF9nZXRzX2NoYXIpOwotLQkJCWlmIChuZXh0X2xpbmUpIHsKLS0JCQkJZnJlZShwYXR0ZXJuX3NwYWNlKTsKLS0JCQkJcGF0dGVybl9zcGFjZSA9IG5leHRfbGluZTsKLS0JCQkJbGFzdF9nZXRzX2NoYXIgPSBuZXh0X2dldHNfY2hhcjsKLS0JCQkJbmV4dF9saW5lID0gZ2V0X25leHRfbGluZSgmbmV4dF9nZXRzX2NoYXIsICZsYXN0X3B1dHNfY2hhciwgbGFzdF9nZXRzX2NoYXIpOwotLQkJCQlzdWJzdGl0dXRlZCA9IDA7Ci0tCQkJCWxpbmVudW0rKzsKLS0JCQkJYnJlYWs7Ci0rCQkJaWYgKG5leHRfbGluZSA9PSBOVUxMKSB7Ci0rCQkJCS8qIElmIG5vIG5leHQgbGluZSwganVtcCB0byBlbmQgb2Ygc2NyaXB0IGFuZCBleGl0LiAqLwotKwkJCQlnb3RvIGRpc2NhcmRfbGluZTsKLSAJCQl9Ci0tCQkJLyogZmFsbCB0aHJvdWdoICovCi0rCQkJZnJlZShwYXR0ZXJuX3NwYWNlKTsKLSsJCQlwYXR0ZXJuX3NwYWNlID0gbmV4dF9saW5lOwotKwkJCWxhc3RfZ2V0c19jaGFyID0gbmV4dF9nZXRzX2NoYXI7Ci0rCQkJbmV4dF9saW5lID0gZ2V0X25leHRfbGluZSgmbmV4dF9nZXRzX2NoYXIsICZsYXN0X3B1dHNfY2hhciwgbGFzdF9nZXRzX2NoYXIpOwotKwkJCXN1YnN0aXR1dGVkID0gMDsKLSsJCQlsaW5lbnVtKys7Ci0rCQkJYnJlYWs7Ci0gCi0gCQkvKiBRdWl0LiAgRW5kIG9mIHNjcmlwdCwgZW5kIG9mIGlucHV0LiAqLwotIAkJY2FzZSAncSc6Ci1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3NlZC50ZXN0cyBiL3Rlc3RzdWl0ZS9zZWQudGVzdHMKLWluZGV4IDM0NDc5ZTUuLjk2ZmY3YTUgMTAwNzU1Ci0tLS0gYS90ZXN0c3VpdGUvc2VkLnRlc3RzCi0rKysgYi90ZXN0c3VpdGUvc2VkLnRlc3RzCi1AQCAtNzMsMTMgKzczLDkgQEAgdGVzdGluZyAic2VkIHQgKHRlc3QvYnJhbmNoIGNsZWFycyB0ZXN0IGJpdCkiICJzZWQgLWUgJ3MvYS9iLzs6bG9vcDt0IGxvb3AnIiBcCi0gdGVzdGluZyAic2VkIFQgKCF0ZXN0L2JyYW5jaCkiICJzZWQgLWUgJ3MvYS8xLztUIG5vdG9uZTtwOzogbm90b25lO3AnIiBcCi0gCSIxXG4xXG4xXG5iXG5iXG5jXG5jXG4iICIiICJhXG5iXG5jXG4iCi0gCi0tdGVzdCB4IiRTS0lQX0tOT1dOX0JVR1MiID0geCIiICYmIHsKLS0jIE5vcm1hbCBzZWQgZW5kLW9mLXNjcmlwdCBkb2Vzbid0IHByaW50ICJjIiBiZWNhdXNlIG4gZmx1c2hlZCB0aGUgcGF0dGVybgotLSMgc3BhY2UuICBJZiBuIGhpdHMgRU9GLCBwYXR0ZXJuIHNwYWNlIGlzIGVtcHR5IHdoZW4gc2NyaXB0IGVuZHMuCi0tIyBRdWVyeTogaG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIG5vIG5ld2xpbmUgYXQgRU9GPwotIHRlc3RpbmcgInNlZCBuIChmbHVzaGVzIHBhdHRlcm4gc3BhY2UsIHRlcm1pbmF0ZXMgZWFybHkpIiAic2VkIC1lICduO3AnIiBcCi0gCSJhXG5iXG5iXG5jXG4iICIiICJhXG5iXG5jXG4iCi0tfQotKwotICMgbm9uLUdOVSBzZWQ6IE4gZG9lcyBfbm90XyBmbHVzaCBwYXR0ZXJuIHNwYWNlLCB0aGVyZWZvcmUgYyBpcyBlYXRlbiBAIHNjcmlwdCBlbmQKLSAjIEdOVSBzZWQ6IE4gZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0aGVyZWZvcmUgYyBpcyBwcmludGVkIHRvbyBAIHNjcmlwdCBlbmQKLSB0ZXN0aW5nICJzZWQgTiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlIChHTlUgYmVoYXZpb3IpKSIgInNlZCAtZSAnTjtwJyIgXAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0JVRzkwNzFfYnVmZmVyX292ZXJmbG93X2FycC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQlVHOTA3MV9idWZmZXJfb3ZlcmZsb3dfYXJwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mjg2OTRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQlVHOTA3MV9idWZmZXJfb3ZlcmZsb3dfYXJwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotYnVzeWJveDEuMjQuMTogRml4IGJ1c3lib3ggLSAobG9jYWwpIGNtZGxpbmUgc3RhY2sgYnVmZmVyIG92ZXJ3cml0ZSAKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTkwNzEKLQotYnVzeWJveCAtIChsb2NhbCkgY21kbGluZSBzdGFjayBidWZmZXIgb3ZlcndyaXRlIAotCi1CdXN5Ym94IHByb3ZpZGVzIGFuIGBhcnBgIGFwcGxldCB3aGljaCBpcyBtaXNzaW5nIGFuIGFycmF5IGJvdW5kcyBjaGVjayBmb3IgCi1jb21tYW5kLWxpbmUgcGFyYW1ldGVyIGBJRk5BTUVgLiBJdCBpcyB0aGVyZWZvcmUgdnVsbmVyYWJsZSB0byBhIGNvbW1hbmQtbGluZSAKLWJhc2VkIGxvY2FsIHN0YWNrIGJ1ZmZlciBvdmVyd3JpdGUgZWZmZWN0aXZlbHkgYWxsb3dpbmcgbG9jYWwgdXNlcnMgdG8gd3JpdGUgCi1wYXN0IGEgMTYgYnl0ZXMgZml4ZWQgc3RhY2sgYnVmZmVyLiBUaGlzIGxlYWRzIHRvIHR3byBzY2VuYXJpb3MsIG9uZSAoQSkgd2hlcmUgCi1hbiBJT0NUTCBmb3IgR0VUX0hXX0FERFJFU1MgKGBTSU9DR0lGSFdBRERSYCkgZmFpbHMgYW5kIHJlc3VsdHMgaW4gYSBjb3JydXB0ZWQgCi1gdmFfbGlzdGAgYmVpbmcgcGFzc2VkIHRvIGAqcHJpbnRmKClgIGFuZCBvbmUgKEIpIHdoZXJlIGFuIGF0dGFja2VyIG1pZ2h0IHByb3ZpZGUgCi12YWxpZCBwYXJhbXMgZm9yIHRoZSBJT0NUTCBhbmQgdHJpY2sgdGhlIHByb2dyYW0gdG8gcHJvY2VlZCBhbmQgcmVzdWx0IGluIGEgCi1gUkVUIGVpcCBvdmVyd3JpdGVgIGV2ZW50dWFsbHkgZ2FpbmluZyBjb2RlIGV4ZWN1dGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvbmV0d29ya2luZy9hcnAuYz9pZD04OGUyYjFjYjYyNjc2MWIxOTI0MzA1Yjc2MWE1ZGZjNzIzNjEzYzRlXQotQlVHOiBCVUc5MDcxCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gQmFsaWsgPG1hcnRpbi5iYWxpa0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLQotLS0KLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvYXJwLmMgYi9uZXR3b3JraW5nL2FycC5jCi1pbmRleCAwMDk5YWE1Li44N2ViMzI3IDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9hcnAuYwotKysrIGIvbmV0d29ya2luZy9hcnAuYwotQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgaW50IGFycF9kZWwoY2hhciAqKmFyZ3MpCi0gCWlmIChmbGFncyA9PSAwKQotIAkJZmxhZ3MgPSAzOwotIAotLQlzdHJuY3B5KHJlcS5hcnBfZGV2LCBkZXZpY2UsIHNpemVvZihyZXEuYXJwX2RldikpOwotKwlzdHJuY3B5X0lGTkFNU0laKHJlcS5hcnBfZGV2LCBkZXZpY2UpOwotIAotIAllcnIgPSAtMTsKLSAKLUBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgYXJwX2dldGRldmh3KGNoYXIgKmlmbmFtZSwgc3RydWN0IHNvY2thZGRyICpzYSkKLSAJc3RydWN0IGlmcmVxIGlmcjsKLSAJY29uc3Qgc3RydWN0IGh3dHlwZSAqeGh3OwotIAotLQlzdHJjcHkoaWZyLmlmcl9uYW1lLCBpZm5hbWUpOwotKwlzdHJuY3B5X0lGTkFNU0laKGlmci5pZnJfbmFtZSwgaWZuYW1lKTsKLSAJaW9jdGxfb3JfcGVycm9yX2FuZF9kaWUoc29ja2ZkLCBTSU9DR0lGSFdBRERSLCAmaWZyLAotIAkJCQkJImNhbid0IGdldCBIVy1BZGRyZXNzIGZvciAnJXMnIiwgaWZuYW1lKTsKLSAJaWYgKGh3X3NldCAmJiAoaWZyLmlmcl9od2FkZHIuc2FfZmFtaWx5ICE9IGh3LT50eXBlKSkgewotQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgaW50IGFycF9zZXQoY2hhciAqKmFyZ3MpCi0gCS8qIEZpbGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVxdWVzdC4gKi8KLSAJcmVxLmFycF9mbGFncyA9IGZsYWdzOwotIAotLQlzdHJuY3B5KHJlcS5hcnBfZGV2LCBkZXZpY2UsIHNpemVvZihyZXEuYXJwX2RldikpOwotKwlzdHJuY3B5X0lGTkFNU0laKHJlcS5hcnBfZGV2LCBkZXZpY2UpOwotIAotIAkvKiBDYWxsIHRoZSBrZXJuZWwuICovCi0gCWlmIChvcHRpb25fbWFzazMyICYgQVJQX09QVF92KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxMS01MzI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxMS01MzI1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA5MjYxMDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDExLTUzMjUucGF0Y2gKQEAgLTAsMCArMSw0ODEgQEAKK2J1c3lib3gtMS4yNy4yOiBGaXggQ1ZFLTIwMTEtNTMyNQorCitbTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVncy5idXN5Ym94Lm5ldC9zaG93X2J1Zy5jZ2k/aWQ9ODQxMQorCitsaWJhcmNoaXZlOiBkbyBub3QgZXh0cmFjdCB1bnNhZmUgc3ltbGlua3MKKworUHJldmVudCB1bnNhZmUgbGlua3MgZXh0cmFjdGluZyB1bmxlc3MgZW52IHZhcmlhYmxlICRFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xCitpcyBub3Qgc2V0LiBVbnRhcnJpbmcgZmlsZSB3aXRoIC1DIERFU1RESVIgcGFyYW1ldGVyIGNvdWxkIGJlIGV4dHJhY3RlZCB3aXRoCit1bndhbnRlZCBzeW1saW5rcy4gVGhpcyBkb2Vzbid0IGZlZWwgcmlnaHQsIGFuZCBJSVJDIEdOVSB0YXIgZG9lc24ndCBkbyB0aGF0LgorSW5jbHVkZSBuZWNlc3NhcnkgY2hhbmdlcyBmcm9tIHByZXZpb3VzIGNvbW1pdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1iYzliYmViMmI4MTAwMWU4NzMxY2QyYWU1MDFjOGZjY2M4ZDg3Y2M3XQorQ1ZFOiBDVkUtMjAxMS01MzI1CitidWc6IDg0MTEKK1NpZ25lZC1vZmYtYnk6IFJhZG92YW4gU2Nhc255IDxyYWRvdmFuLnNjYXNueUBzaWVtZW5zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjCitpbmRleCA5NDJlNzU1Li5lMWE4YTc1IDEwMDY0NAorLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjCisrKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL0tidWlsZC5zcmMKK0BAIC0xMiw2ICsxMiw4IEBAIENPTU1PTl9GSUxFUzo9IFwKKyAJZGF0YV9leHRyYWN0X2FsbC5vIFwKKyAJZGF0YV9leHRyYWN0X3RvX3N0ZG91dC5vIFwKKyBcCisrCXVuc2FmZV9zeW1saW5rX3RhcmdldC5vIFwKKytcCisgCWZpbHRlcl9hY2NlcHRfYWxsLm8gXAorIAlmaWx0ZXJfYWNjZXB0X2xpc3QubyBcCisgCWZpbHRlcl9hY2NlcHRfcmVqZWN0X2xpc3QubyBcCitkaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYworaW5kZXggMTgzMGZmYi4uYjgyOGI2NSAxMDA2NDQKKy0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jCisrKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYworQEAgLTEyOCwxMCArMTI4LDkgQEAgdm9pZCBGQVNUX0ZVTkMgZGF0YV9leHRyYWN0X2FsbChhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSkKKyAJCXJlcyA9IGxpbmsoaGFyZF9saW5rLCBkc3RfbmFtZSk7CisgCQlpZiAocmVzICE9IDAgJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpKSB7CisgCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KKy0JCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICIKKy0JCQkJCSIlcyB0byAlcyIsICJoYXJkIiwKKy0JCQkJCWRzdF9uYW1lLAorLQkJCQkJaGFyZF9saW5rKTsKKysJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCisrCQkJCQkgImhhcmQiLCBkc3RfbmFtZSwgaGFyZF9saW5rCisrCQkJKTsKKyAJCX0KKyAJCS8qIEhhcmRsaW5rcyBoYXZlIG5vIHNlcGFyYXRlIG1vZGUvb3duZXJzaGlwLCBza2lwIGNob3duL2NobW9kICovCisgCQlnb3RvIHJldDsKK0BAIC0xNzgsMTUgKzE3NywxNyBAQCB2b2lkIEZBU1RfRlVOQyBkYXRhX2V4dHJhY3RfYWxsKGFyY2hpdmVfaGFuZGxlX3QgKmFyY2hpdmVfaGFuZGxlKQorIAljYXNlIFNfSUZMTks6CisgCQkvKiBTeW1saW5rICovCisgLy9UT0RPOiB3aGF0IGlmIGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCA9PSBOVUxMIChzYXksIGNvcnJ1cHRlZCB0YXJiYWxsPykKKy0JCXJlcyA9IHN5bWxpbmsoZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0LCBkc3RfbmFtZSk7CistCQlpZiAocmVzICE9IDAKKy0JCSAmJiAhKGFyY2hpdmVfaGFuZGxlLT5haF9mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9RVUlFVCkKKy0JCSkgeworLQkJCS8qIHNoYXJlZCBtZXNzYWdlICovCistCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAiCistCQkJCSIlcyB0byAlcyIsICJzeW0iLAorLQkJCQlkc3RfbmFtZSwKKy0JCQkJZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0KTsKKysJCWlmICghdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCkpIHsKKysJCQlyZXMgPSBzeW1saW5rKGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCwgZHN0X25hbWUpOworKwkJCWlmIChyZXMgIT0gMAorKwkJCQkmJiAhKGFyY2hpdmVfaGFuZGxlLT5haF9mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9RVUlFVCkKKysJCQkpIHsKKysJCQkJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworKwkJCQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKKysJCQkJCQkJInN5bSIsCisrCQkJCQkJCWRzdF9uYW1lLCBmaWxlX2hlYWRlci0+bGlua190YXJnZXQKKysJCQkJCQkpOworKwkJCX0KKyAJCX0KKyAJCWJyZWFrOworIAljYXNlIFNfSUZTT0NLOgorZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvdW5zYWZlX3N5bWxpbmtfdGFyZ2V0LmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL3Vuc2FmZV9zeW1saW5rX3RhcmdldC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWU0NmUyOAorLS0tIC9kZXYvbnVsbAorKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS91bnNhZmVfc3ltbGlua190YXJnZXQuYworQEAgLTAsMCArMSw0OCBAQAorKy8qIHZpOiBzZXQgc3c9NCB0cz00OiAqLworKy8qCisrICogTGljZW5zZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIsIHNlZSBmaWxlIExJQ0VOU0UgaW4gdGhpcyBzb3VyY2UgdHJlZS4KKysgKi8KKysjaW5jbHVkZSAibGliYmIuaCIKKysjaW5jbHVkZSAiYmJfYXJjaGl2ZS5oIgorKworK2ludCBGQVNUX0ZVTkMgdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KGNvbnN0IGNoYXIgKnRhcmdldCkKKyt7CisrCWNvbnN0IGNoYXIgKmRvdDsKKysKKysJaWYgKHRhcmdldFswXSA9PSAnLycpIHsKKysJCWNvbnN0IGNoYXIgKnZhcjsKKyt1bnNhZmU6CisrCQl2YXIgPSBnZXRlbnYoIkVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTIik7CisrCQlpZiAodmFyKSB7CisrCQkJaWYgKExPTkVfQ0hBUih2YXIsICcxJykpCisrCQkJCXJldHVybiAwOyAvKiBwcmV0ZW5kIGl0J3Mgc2FmZSAqLworKwkJCXJldHVybiAxOyAvKiAiVU5TQUZFISIgKi8KKysJCX0KKysJCWJiX2Vycm9yX21zZygic2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJyVzJyBpbiBhcmNoaXZlLCIKKysJCQkiIHNldCAlcz0xIHRvIGV4dHJhY3QiLAorKwkJCXRhcmdldCwKKysJCQkiRVhUUkFDVF9VTlNBRkVfU1lNTElOS1MiCisrCQkpOworKwkJLyogUHJldmVudCBmdXJ0aGVyIG1lc3NhZ2VzICovCisrCQlzZXRlbnYoIkVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTIiwgIjAiLCAwKTsKKysJCXJldHVybiAxOyAvKiAiVU5TQUZFISIgKi8KKysJfQorKworKwlkb3QgPSB0YXJnZXQ7CisrCWZvciAoOzspIHsKKysJCWRvdCA9IHN0cmNocihkb3QsICcuJyk7CisrCQkJaWYgKCFkb3QpCisrCQkJCXJldHVybiAwOyAvKiBzYWZlIHRhcmdldCAqLworKworKwkJCS8qIElzIGl0IGEgcGF0aCBjb21wb25lbnQgc3RhcnRpbmcgd2l0aCAiLi4iPyAqLworKwkJCWlmICgoZG90WzFdID09ICcuJykKKysJCQkJJiYgKGRvdCA9PSB0YXJnZXQgfHwgZG90Wy0xXSA9PSAnLycpCisrCQkJCQkvKiBJcyBpdCBleGFjdGx5ICIuLiI/ICovCisrCQkJCSYmIChkb3RbMl0gPT0gJy8nIHx8IGRvdFsyXSA9PSAnXDAnKQorKwkJCSkgeworKwkJCQlnb3RvIHVuc2FmZTsKKysJCQl9CisrCQkJLyogTkI6IGl0IGNhbiBldmVuIGJlIHRyYWlsaW5nICIuIiwgc2hvdWxkIG9ubHkgYWRkIDEgKi8KKysJCQlkb3QgKz0gMTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL2FyY2hpdmFsL3VuemlwLmMgYi9hcmNoaXZhbC91bnppcC5jCitpbmRleCA5MDM3MjYyLi4yNzBlMjYxIDEwMDY0NAorLS0tIGEvYXJjaGl2YWwvdW56aXAuYworKysrIGIvYXJjaGl2YWwvdW56aXAuYworQEAgLTMzNSw2ICszMzUsNDQgQEAgc3RhdGljIHZvaWQgdW56aXBfY3JlYXRlX2xlYWRpbmdfZGlycyhjb25zdCBjaGFyICpmbikKKyAJZnJlZShuYW1lKTsKKyB9CisgCisrc3RhdGljIHZvaWQgdW56aXBfZXh0cmFjdF9zeW1saW5rKHppcF9oZWFkZXJfdCAqemlwLCBjb25zdCBjaGFyICpkc3RfZm4pCisreworKwljaGFyICp0YXJnZXQ7CisrCisrCWlmICh6aXAtPmZtdC51Y21wc2l6ZSA+IDB4ZmZmKSAvKiBubyBmdW5ueSBidXNpbmVzcyBwbGVhc2UgKi8KKysJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJiYWQgYXJjaGl2ZSIpOworKworKwlpZiAoemlwLT5mbXQubWV0aG9kID09IDApIHsKKysJCS8qIE1ldGhvZCAwIC0gc3RvcmVkIChub3QgY29tcHJlc3NlZCkgKi8KKysJCXRhcmdldCA9IHh6YWxsb2MoemlwLT5mbXQudWNtcHNpemUgKyAxKTsKKysJCXhyZWFkKHppcF9mZCwgdGFyZ2V0LCB6aXAtPmZtdC51Y21wc2l6ZSk7CisrCX0gZWxzZSB7CisrI2lmIDEKKysJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJjb21wcmVzc2VkIHN5bWxpbmsgaXMgbm90IHN1cHBvcnRlZCIpOworKyNlbHNlCisrCQl0cmFuc2Zvcm1lcl9zdGF0ZV90IHhzdGF0ZTsKKysJCWluaXRfdHJhbnNmb3JtZXJfc3RhdGUoJnhzdGF0ZSk7CisrCQl4c3RhdGUubWVtX291dHB1dF9zaXplX21heCA9IHppcC0+Zm10LnVjbXBzaXplOworKwkJLyogLi4udW5wYWNrLi4uICovCisrCQlpZiAoIXhzdGF0ZS5tZW1fb3V0cHV0X2J1ZikKKysJCQlXVEYoKTsKKysJCXRhcmdldCA9IHhzdGF0ZS5tZW1fb3V0cHV0X2J1ZjsKKysJCXRhcmdldCA9IHhyZWFsbG9jKHRhcmdldCwgeHN0YXRlLm1lbV9vdXRwdXRfc2l6ZSArIDEpOworKwkJdGFyZ2V0W3hzdGF0ZS5tZW1fb3V0cHV0X3NpemVdID0gJ1wwJzsKKysjZW5kaWYKKysJfQorKwlpZiAoIXVuc2FmZV9zeW1saW5rX3RhcmdldCh0YXJnZXQpKSB7CisrLy9UT0RPOiBsaWJiYiBjYW5kaWRhdGUKKysJCWlmIChzeW1saW5rKHRhcmdldCwgZHN0X2ZuKSkgeworKwkJCS8qIHNoYXJlZCBtZXNzYWdlICovCisrCQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCisrCQkJCSJzeW0iLCBkc3RfZm4sIHRhcmdldAorKwkJCSk7CisrCQl9CisrCX0KKysJZnJlZSh0YXJnZXQpOworK30KKysKKyBzdGF0aWMgdm9pZCB1bnppcF9leHRyYWN0KHppcF9oZWFkZXJfdCAqemlwLCBpbnQgZHN0X2ZkKQorIHsKKyAJdHJhbnNmb3JtZXJfc3RhdGVfdCB4c3RhdGU7CitAQCAtODEzLDcgKzg1MSw3IEBAIGludCB1bnppcF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCX0KKyAgY2hlY2tfZmlsZToKKyAJCS8qIEV4dHJhY3QgZmlsZSAqLworLQkJaWYgKHN0YXQoZHN0X2ZuLCAmc3RhdF9idWYpID09IC0xKSB7CisrCQlpZiAobHN0YXQoZHN0X2ZuLCAmc3RhdF9idWYpID09IC0xKSB7CisgCQkJLyogRmlsZSBkb2VzIG5vdCBleGlzdCAqLworIAkJCWlmIChlcnJubyAhPSBFTk9FTlQpIHsKKyAJCQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBzdGF0ICclcyciLCBkc3RfZm4pOworQEAgLTgzNCw2ICs4NzIsNyBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZ290byBkb19vcGVuX2FuZF9leHRyYWN0OworIAkJcHJpbnRmKCJyZXBsYWNlICVzPyBbeV1lcywgW25dbywgW0FdbGwsIFtOXW9uZSwgW3JdZW5hbWU6ICIsIGRzdF9mbik7CisgCQlteV9mZ2V0czgwKGtleV9idWYpOworKy8vVE9ETzogcmVkbyBsc3RhdCArIElTUkVHIGNoZWNrISB1c2VyIGlucHV0IGNvdWxkIGhhdmUgdGFrZW4gYSBsb25nIHRpbWUhCisgCisgCQlzd2l0Y2ggKGtleV9idWZbMF0pIHsKKyAJCWNhc2UgJ0EnOgorQEAgLTg0Miw3ICs4ODEsOCBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgIGRvX29wZW5fYW5kX2V4dHJhY3Q6CisgCQkJdW56aXBfY3JlYXRlX2xlYWRpbmdfZGlycyhkc3RfZm4pOworICNpZiBFTkFCTEVfRkVBVFVSRV9VTlpJUF9DREYKKy0JCQlkc3RfZmQgPSB4b3BlbjMoZHN0X2ZuLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCBmaWxlX21vZGUpOworKwkJCWlmICghU19JU0xOSyhmaWxlX21vZGUpKQorKwkJCQlkc3RfZmQgPSB4b3BlbjMoZHN0X2ZuLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCBmaWxlX21vZGUpOworICNlbHNlCisgCQkJZHN0X2ZkID0geG9wZW4oZHN0X2ZuLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKKyAjZW5kaWYKK0BAIC04NTIsMTAgKzg5MiwxOCBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCQk/ICIgZXh0cmFjdGluZzogJXNcbiIKKyAJCQkJCTogKi8gIiAgaW5mbGF0aW5nOiAlc1xuIiwgZHN0X2ZuKTsKKyAJCQl9CistCQkJdW56aXBfZXh0cmFjdCgmemlwLCBkc3RfZmQpOworLQkJCWlmIChkc3RfZmQgIT0gU1RET1VUX0ZJTEVOTykgeworLQkJCQkvKiBjbG9zaW5nIFNURE9VVCBpcyBwb3RlbnRpYWxseSBiYWQgZm9yIGZ1dHVyZSBidXNpbmVzcyAqLworLQkJCQljbG9zZShkc3RfZmQpOworKyNpZiBFTkFCTEVfRkVBVFVSRV9VTlpJUF9DREYKKysJCQlpZiAoU19JU0xOSyhmaWxlX21vZGUpKSB7CisrCQkJCWlmIChkc3RfZmQgIT0gU1RET1VUX0ZJTEVOTykgLyogbm8gLXAgKi8KKysJCQkJCXVuemlwX2V4dHJhY3Rfc3ltbGluaygmemlwLCBkc3RfZm4pOworKwkJCX0gZWxzZQorKyNlbmRpZgorKwkJCXsKKysJCQkJdW56aXBfZXh0cmFjdCgmemlwLCBkc3RfZmQpOworKwkJCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIHsKKysJCQkJCS8qIGNsb3NpbmcgU1RET1VUIGlzIHBvdGVudGlhbGx5IGJhZCBmb3IgZnV0dXJlIGJ1c2luZXNzICovCisrCQkJCQljbG9zZShkc3RfZmQpOworKwkJCQl9OworIAkJCX0KKyAJCQlicmVhazsKKyAKK2RpZmYgLS1naXQgYS9jb3JldXRpbHMvbGluay5jIGIvY29yZXV0aWxzL2xpbmsuYworaW5kZXggYWMzZWY4NS4uYWFiMjQ5ZCAxMDA2NDQKKy0tLSBhL2NvcmV1dGlscy9saW5rLmMKKysrKyBiL2NvcmV1dGlscy9saW5rLmMKK0BAIC0zMiw5ICszMiw4IEBAIGludCBsaW5rX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKKyAJYXJndiArPSBvcHRpbmQ7CisgCWlmIChsaW5rKGFyZ3ZbMF0sIGFyZ3ZbMV0pICE9IDApIHsKKyAJCS8qIHNoYXJlZCBtZXNzYWdlICovCistCQliYl9wZXJyb3JfbXNnX2FuZF9kaWUoImNhbid0IGNyZWF0ZSAlc2xpbmsgIgorLQkJCQkJIiVzIHRvICVzIiwgImhhcmQiLAorLQkJCQkJYXJndlsxXSwgYXJndlswXQorKwkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCisrCQkJCQkiaGFyZCIsCWFyZ3ZbMV0sIGFyZ3ZbMF0KKyAJCSk7CisgCX0KKyAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2JiX2FyY2hpdmUuaCBiL2luY2x1ZGUvYmJfYXJjaGl2ZS5oCitpbmRleCAyYjljNWYwLi4xZTRkYTNjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9iYl9hcmNoaXZlLmgKKysrKyBiL2luY2x1ZGUvYmJfYXJjaGl2ZS5oCitAQCAtMTk2LDYgKzE5Niw3IEBAIHZvaWQgc2Vla19ieV9qdW1wKGludCBmZCwgb2ZmX3QgYW1vdW50KSBGQVNUX0ZVTkM7Cisgdm9pZCBzZWVrX2J5X3JlYWQoaW50IGZkLCBvZmZfdCBhbW91bnQpIEZBU1RfRlVOQzsKKyAKKyBjb25zdCBjaGFyICpzdHJpcF91bnNhZmVfcHJlZml4KGNvbnN0IGNoYXIgKnN0cikgRkFTVF9GVU5DOworK2ludCB1bnNhZmVfc3ltbGlua190YXJnZXQoY29uc3QgY2hhciAqdGFyZ2V0KSBGQVNUX0ZVTkM7CisgCisgdm9pZCBkYXRhX2FsaWduKGFyY2hpdmVfaGFuZGxlX3QgKmFyY2hpdmVfaGFuZGxlLCB1bnNpZ25lZCBib3VuZGFyeSkgRkFTVF9GVU5DOworIGNvbnN0IGxsaXN0X3QgKmZpbmRfbGlzdF9lbnRyeShjb25zdCBsbGlzdF90ICpsaXN0LCBjb25zdCBjaGFyICpmaWxlbmFtZSkgRkFTVF9GVU5DOworZGlmZiAtLWdpdCBhL2xpYmJiL2NvcHlfZmlsZS5jIGIvbGliYmIvY29weV9maWxlLmMKK2luZGV4IDIzYzBmODMuLmJlOTAwNjYgMTAwNjQ0CistLS0gYS9saWJiYi9jb3B5X2ZpbGUuYworKysrIGIvbGliYmIvY29weV9maWxlLmMKK0BAIC0zNzEsNyArMzcxLDEwIEBAIGludCBGQVNUX0ZVTkMgY29weV9maWxlKGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqZGVzdCwgaW50IGZsYWdzKQorIAkJCWludCByID0gc3ltbGluayhscGF0aCwgZGVzdCk7CisgCQkJZnJlZShscGF0aCk7CisgCQkJaWYgKHIgPCAwKSB7CistCQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSBzeW1saW5rICclcyciLCBkZXN0KTsKKysJCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KKysJCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkJInN5bSIsIGRlc3QsIGxwYXRoCisrCQkJCSk7CisgCQkJCXJldHVybiAtMTsKKyAJCQl9CisgCQkJaWYgKGZsYWdzICYgRklMRVVUSUxTX1BSRVNFUlZFX1NUQVRVUykKK2RpZmYgLS1naXQgYS90ZXN0c3VpdGUvdGFyLnRlc3RzIGIvdGVzdHN1aXRlL3Rhci50ZXN0cworaW5kZXggOWY3Y2UxNS4uYjdjZDc0YyAxMDA3NTUKKy0tLSBhL3Rlc3RzdWl0ZS90YXIudGVzdHMKKysrKyBiL3Rlc3RzdWl0ZS90YXIudGVzdHMKK0BAIC0xMCw5ICsxMCw2IEBAIHVuc2V0IExDX0NPTExBVEUKKyB1bnNldCBMQ19BTEwKKyB1bWFzayAwMjIKKyAKKy1ybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKy1ta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKy0KKyAjIHRlc3RpbmcgInRlc3QgbmFtZSIgInNjcmlwdCIgImV4cGVjdGVkIHJlc3VsdCIgImZpbGUgaW5wdXQiICJzdGRpbiIKKyAKKyB0ZXN0aW5nICJFbXB0eSBmaWxlIGlzIG5vdCBhIHRhcmJhbGwiICdcCitAQCAtNTMsNiArNTAsNyBAQCBkZCBpZj0vZGV2L3plcm8gYnM9NTEyIGNvdW50PTIwIDI+L2Rldi9udWxsIHwgdGFyIHh2ZiAtIDI+JjE7IGVjaG8gJD8KKyAiIiAiIgorIFNLSVA9CisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyAidGFyIGNmIHRlc3QudGFyIGlucHV0IGlucHV0X2Rpci8gaW5wdXRfaGFyZDEgaW5wdXRfaGFyZDIgaW5wdXRfaGFyZDEgaW5wdXRfZGlyLyBpbnB1dCI6CisgIyBHTlUgdGFyIDEuMjYgcmVjb3JkcyBhcyBoYXJkbGlua3M6CisgIyAgaW5wdXRfaGFyZDIgLT4gaW5wdXRfaGFyZDEKK0BAIC02NCw3ICs2Miw2IEBAIFNLSVA9CisgIyBXZSBhbHNvIGRvbid0IHVzZSAiaHJ3LXItLXItLSIgbm90YXRpb24gZm9yIGhhcmRsaW5rcyBpbiAidGFyIHR2IiBsaXN0aW5nLgorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX0xTX1NPUlRGSUxFUworIHRlc3RpbmcgInRhciBoYXJkbGlua3MgYW5kIHJlcGVhdGVkIGZpbGVzIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgPmlucHV0X2hhcmQxCisgbG4gaW5wdXRfaGFyZDEgaW5wdXRfaGFyZDIKKyBta2RpciBpbnB1dF9kaXIKK0BAIC05NSwxMCArOTIsMTEgQEAgZHJ3eHIteHIteCBpbnB1dF9kaXIKKyAiIFwKKyAiIiAiIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9MU19TT1JURklMRVMKKyB0ZXN0aW5nICJ0YXIgaGFyZGxpbmtzIG1vZGUiICdcCistcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKKyA+aW5wdXRfaGFyZDEKKyBjaG1vZCA3NDEgaW5wdXRfaGFyZDEKKyBsbiBpbnB1dF9oYXJkMSBpbnB1dF9oYXJkMgorQEAgLTEyOCwxMCArMTI2LDExIEBAIE9rOiAwCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfTFNfU09SVEZJTEVTCisgdGVzdGluZyAidGFyIHN5bWxpbmtzIG1vZGUiICdcCistcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKKyA+aW5wdXRfZmlsZQorIGNobW9kIDc0MSBpbnB1dF9maWxlCisgbG4gLXMgaW5wdXRfZmlsZSBpbnB1dF9zb2Z0CitAQCAtMTU5LDEwICsxNTgsMTEgQEAgbHJ3eHJ3eHJ3eCBpbnB1dF9maWxlCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfVEFSX0xPTkdfT1BUSU9OUworIHRlc3RpbmcgInRhciAtLW92ZXJ3cml0ZSIgIlwKKy1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAorIGxuIGlucHV0IGlucHV0X2hhcmQKKyB0YXIgY2YgdGVzdC50YXIgaW5wdXRfaGFyZAorIGVjaG8gV1JPTkcgPmlucHV0CitAQCAtMTc0LDEyICsxNzQsMTMgQEAgT2sKKyAiIFwKKyAiT2tcbiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgdGVzdCB4IiRTS0lQX0tOT1dOX0JVR1MiID0geCIiICYmIHsKKyAjIE5lZWRzIHRvIGJlIHJ1biB1bmRlciBub24tcm9vdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0Cisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFCisgdGVzdGluZyAidGFyIHdyaXRpbmcgaW50byByZWFkLW9ubHkgZGlyIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgbWtkaXIgaW5wdXRfZGlyCisgPmlucHV0X2Rpci9pbnB1dF9maWxlCisgY2htb2QgNTUwIGlucHV0X2RpcgorQEAgLTIwMSw3ICsyMDIsOSBAQCBkci14ci14LS0tIGlucHV0X2RpcgorICIiICIiCisgU0tJUD0KKyB9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyAjIEhhZCBhIGJ1ZyB3aGVyZSBvbiBleHRyYWN0IGF1dG9kZXRlY3QgZmlyc3QgInN3aXRjaGVkIG9mZiIgLXoKKyAjIGFuZCB0aGVuIGZhaWxlZCB0byByZWNvZ25pemUgLnRneiBleHRlbnNpb24KKyBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9TRUFNTEVTU19HWiBHVU5aSVAKK0BAIC0yMTcsNyArMjIwLDkgQEAgT2sKKyAiIFwKKyAiIiAiIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyAjIERvIHdlIGRldGVjdCBYWi1jb21wcmVzc2VkIGRhdGEgKGV2ZW4gdy9vIC50YXIueHogb3IgdHh6IGV4dGVuc2lvbik/CisgIyAodGhlIHV1ZW5jb2RlZCBoZWxsb193b3JsZC50eHogY29udGFpbnMgb25lIGVtcHR5IGZpbGUgbmFtZWQgImhlbGxvX3dvcmxkIikKKyBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfWFoKK0BAIC0yMzYsNyArMjQxLDkgQEAgQUFBRVdWbz0KKyA9PT09CisgIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyAjIE9uIGV4dHJhY3QsIGV2ZXJ5dGhpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyBsYXN0ICIuLiIgY29tcG9uZW50IGlzIHN0cmlwcGVkCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFCisgdGVzdGluZyAidGFyIHN0cmlwcyAvLi4vIG9uIGV4dHJhY3QiICJcCitAQCAtMjU1LDcgKzI2Miw5IEBAIE9rCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBhdHRhY2sudGFyLmJ6MiBoYXMgc3ltbGluayBwb2ludGluZyB0byBhIHN5c3RlbSBmaWxlCisgIyBmb2xsb3dlZCBieSBhIHJlZ3VsYXIgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAjIGNvbnRhaW5pbmcgInJvb3Q6OjA6MDo6L3Jvb3Q6L2Jpbi9zaCI6CitAQCAtMjcwLDYgKzI3OSw3IEBAIG9wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QgRkVBVFVSRV9TRUFNTEVTU19CWjIKKyB0ZXN0aW5nICJ0YXIgZG9lcyBub3QgZXh0cmFjdCBpbnRvIHN5bWxpbmtzIiAiXAorID4+L3RtcC9wYXNzd2QgJiYgdXVkZWNvZGUgLW8gaW5wdXQgJiYgdGFyIHhmIGlucHV0IDI+JjEgJiYgcm0gcGFzc3dkOyBjYXQgL3RtcC9wYXNzd2Q7IGVjaG8gXCQ/CisgIiAiXAorK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy90bXAvcGFzc3dkJyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0CisgMAorICIgXAorICIiICJcCitAQCAtMjgxLDEyICsyOTEsMTUgQEAgbDQvVjhMRG9lOTB5aVdKaE9Kdkl5cGdFZnhkeVJUaFFrQlZuL2JJPQorID09PT0KKyAiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorKworK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorICMgQW5kIHNhbWUgd2l0aCAtaworIG9wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QgRkVBVFVSRV9TRUFNTEVTU19CWjIKKyB0ZXN0aW5nICJ0YXIgLWsgZG9lcyBub3QgZXh0cmFjdCBpbnRvIHN5bWxpbmtzIiAiXAorID4+L3RtcC9wYXNzd2QgJiYgdXVkZWNvZGUgLW8gaW5wdXQgJiYgdGFyIHhmIGlucHV0IC1rIDI+JjEgJiYgcm0gcGFzc3dkOyBjYXQgL3RtcC9wYXNzd2Q7IGVjaG8gXCQ/CisgIiAiXAorLXRhcjogY2FuJ3Qgb3BlbiAncGFzc3dkJzogRmlsZSBleGlzdHMKKyt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdG1wL3Bhc3N3ZCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAorIDAKKyAiIFwKKyAiIiAiXAorQEAgLTI5OCw3ICszMTEsOSBAQCBsNC9WOExEb2U5MHlpV0poT0p2SXlwZ0VmeGR5UlRoUWtCVm4vYkk9CisgPT09PQorICIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgb3B0aW9uYWwgVU5JQ09ERV9TVVBQT1JUIEZFQVRVUkVfVEFSX0dOVV9FWFRFTlNJT05TIEZFQVRVUkVfU0VBTUxFU1NfQloyIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QKKyB0ZXN0aW5nICJQYXgtZW5jb2RlZCBVVEY4IG5hbWVzIGFuZCBzeW1saW5rcyIgJ1wKKyB0YXIgeHZmIC4uL3Rhci51dGY4LnRhci5iejIgMj4mMTsgZWNobyAkPworQEAgLTMwOSwxNyArMzI0LDQ1IEBAIHJtIC1yZiBldGMgdXNyCisgJyAiXAorIGV0Yy9zc2wvY2VydHMvM2IyNzE2ZTUuMAorIGV0Yy9zc2wvY2VydHMvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCisrdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3Vzci9zaGFyZS9jYS1jZXJ0aWZpY2F0ZXMvbW96aWxsYS9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5jcnQnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKKyBldGMvc3NsL2NlcnRzL2Y4MGNjN2Y2LjAKKyB1c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzL21vemlsbGEvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEuY3J0CisgMAorIGV0Yy9zc2wvY2VydHMvM2IyNzE2ZTUuMCAtPiBFQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0KKy1ldGMvc3NsL2NlcnRzL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbSAtPiAvdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcy9tb3ppbGxhL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLmNydAorIGV0Yy9zc2wvY2VydHMvZjgwY2M3ZjYuMCAtPiBFQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0KKyAiIFwKKyAiIiAiIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKy0KKy1jZCAuLiAmJiBybSAtcmYgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisrb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9TRUFNTEVTU19CWjIgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVAorK3Rlc3RpbmcgIlN5bWxpbmsgYXR0YWNrOiBjcmVhdGUgc3ltbGluayBhbmQgdGhlbiB3cml0ZSB0aHJvdWdoIGl0IiAnXAorK2V4ZWMgMj4mMQorK3V1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4dmYgaW5wdXQ7IGVjaG8gJD8KKytscyAvdG1wL2JiX3Rlc3RfZXZpbGZpbGUKKytscyBiYl90ZXN0X2V2aWxmaWxlCisrbHMgc3ltbGluay9iYl90ZXN0X2V2aWxmaWxlCisrJyAiXAorK2FueXRoaW5nLnR4dAorK3N5bWxpbmsKKyt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdG1wJyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0Cisrc3ltbGluay9iYl90ZXN0X2V2aWxmaWxlCisrMAorK2xzOiAvdG1wL2JiX3Rlc3RfZXZpbGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKytsczogYmJfdGVzdF9ldmlsZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorK3N5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQorKyIgXAorKyIiICJcCisrYmVnaW4tYmFzZTY0IDY0NCB0YXJfc3ltbGlua19hdHRhY2sudGFyLmJ6MgorK1FscG9PVEZCV1NaVFdaZ3M3YlFBQUxUL2hNbVFBRkJBQWYrQUVNQUdKUFB2MzJBQUFJQUlNQUM1dGhsUgorK29tQWpBbUNNQURRVDFCcU5FMEFFd0FBakFFd0VsVEtlbzlOVFI2aDZnYWVvQTBEUU5MVmR3Wlo1aU5UaworK0FRd0NBVjZTMDBRRkpZaHJsZkZrVkNFREVHdGdOVnFZckkwdUszZ2dudDMwZ3FrNGUxVFRRbTVRSUFLYQorK1NKcXpSR1NGTE1tT2xvSFNBY3ZMaUZ4eFJpUXRRWkYrcVB4Ym8xNzNaRElTT0FvTm9QTjRQUVBoQmhLUworK244ZllhS2xpb0NUekwyb1hZY3p5VVVJUDR1NUlwd29TRXdXZHRvQT0KKys9PT09CisrIgorK1NLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKyAKKyBleGl0ICRGQUlMQ09VTlQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRjYWU2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIGQ0NzRmZmM2ODI5MGUwYTgzNjUxYzQ0MzJlZWFiZmE2MmNkNTFlODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAxMCBNYXIgMjAxNiAxMTo0Nzo1OCArMDEwMAotU3ViamVjdDogW1BBVENIXSB1ZGhjcDogZml4IGEgU0VHViBvbiBtYWxmb3JtZWQgUkZDMTAzNS1lbmNvZGVkIGRvbWFpbiBuYW1lCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMjE0NwotCi1odHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9ZDQ3NGZmYwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG5ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMgfCAxMyArKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGJ1c3lib3gtMS4yMy4yL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBidXN5Ym94LTEuMjMuMi5vcmlnL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLSsrKyBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi1AQCAtNjMsMTEgKzYzLDEwIEBAIGNoYXIqIEZBU1RfRlVOQyBkbmFtZV9kZWMoY29uc3QgdWludDhfdAotIAkJCQlpZiAoY3J0cG9zICsgKmMgKyAxID4gY2xlbikgLyogbGFiZWwgdG9vIGxvbmc/IGFib3J0ICovCi0gCQkJCQlyZXR1cm4gTlVMTDsKLSAJCQkJaWYgKGRzdCkKLS0JCQkJCW1lbWNweShkc3QgKyBsZW4sIGMgKyAxLCAqYyk7Ci0rCQkJCQkvKiBcM2NvbSAtLS0+ICJjb20uIiAqLwotKwkJCQkJKChjaGFyKiltZW1wY3B5KGRzdCArIGxlbiwgYyArIDEsICpjKSlbMF0gPSAnLic7Ci0gCQkJCWxlbiArPSAqYyArIDE7Ci0gCQkJCWNydHBvcyArPSAqYyArIDE7Ci0tCQkJCWlmIChkc3QpCi0tCQkJCQlkc3RbbGVuIC0gMV0gPSAnLic7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJLyogTlVMOiBlbmQgb2YgY3VycmVudCBkb21haW4gbmFtZSAqLwotIAkJCQlpZiAocmV0cG9zID09IDApIHsKLUBAIC03OCw3ICs3NywxMCBAQCBjaGFyKiBGQVNUX0ZVTkMgZG5hbWVfZGVjKGNvbnN0IHVpbnQ4X3QKLSAJCQkJCWNydHBvcyA9IHJldHBvczsKLSAJCQkJCXJldHBvcyA9IGRlcHRoID0gMDsKLSAJCQkJfQotLQkJCQlpZiAoZHN0KQotKwkJCQlpZiAoZHN0ICYmIGxlbiAhPSAwKQotKwkJCQkJLyogXDRob3N0XDNjb21cMFw0aG9zdCBhbmQgd2UgYXJlIGF0IFwwOgotKwkJCQkJICogXDNjb20gd2FzIGNvbnZlcnRlZCB0byAiY29tLiIsIGNoYW5nZSBkb3QgdG8gc3BhY2UuCi0rCQkJCQkgKi8KLSAJCQkJCWRzdFtsZW4gLSAxXSA9ICcgJzsKLSAJCQl9Ci0gCi1AQCAtMjI4LDYgKzIzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJaW50IGxlbjsKLSAJdWludDhfdCAqZW5jb2RlZDsKLSAKLSsgICAgICAgIHVpbnQ4X3Qgc3RyWzZdID0geyAweDAwLCAweDAwLCAweDAyLCAweDY1LCAweDY1LCAweDAwIH07Ci0rICAgICAgICBwcmludGYoIk5VTDonJXMnXG4iLCAgIGRuYW1lX2RlYyhzdHIsIDYsICIiKSk7Ci0rCi0gI2RlZmluZSBETkFNRV9ERUMoZW5jb2RlZCxwcmUpIGRuYW1lX2RlYygodWludDhfdCopKGVuY29kZWQpLCBzaXplb2YoZW5jb2RlZCksIChwcmUpKQotIAlwcmludGYoIiclcydcbiIsICAgICAgIEROQU1FX0RFQygiXDRob3N0XDNjb21cMCIsICJ0ZXN0MToiKSk7Ci0gCXByaW50ZigidGVzdDI6JyVzJ1xuIiwgRE5BTUVfREVDKCJcNGhvc3RcM2NvbVwwXDRob3N0XDNjb21cMCIsICIiKSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0N18yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODM0OWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0N18yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAxYjdjMTczOTFkZTY2NTAyZGQ3YTk3Yzg2NmUwYTMzNjgxZWRiYjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTEgTWFyIDIwMTYgMDA6MjY6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdWRoY3BjOiBmaXggYSB3YXJuaW5nIGluIGRlYnVnIGNvZGUKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMjE0NyByZWdyZXNzaW9uIGZpeAotCi1odHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MWI3YzE3Ci0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBuZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jIGIvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYwotaW5kZXggY2VlMzFmMS4uNWE5MjNjYyAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLSsrKyBiL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLUBAIC03LDYgKzcsNyBAQAotICAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLCBzZWUgZmlsZSBMSUNFTlNFIGluIHRoaXMgc291cmNlIHRyZWUuCi0gICovCi0gI2lmZGVmIEROU19DT01QUl9URVNUSU5HCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjIGRlZmluZSBGQVNUX0ZVTkMgLyogbm90aGluZyAqLwotICMgZGVmaW5lIHhtYWxsb2MgbWFsbG9jCi0gIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjA0YTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gMzUyZjc5YWNiZDc1OWMxNDM5OWUzOWJhZWYyMWZjNGZmZTE4MGFjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI2IEZlYiAyMDE2IDE1OjU0OjU2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVkaGNwYzogZml4IE9QVElPTl82UkQgcGFyc2luZyAoY291bGQgb3ZlcmZsb3cgaXRzIG1hbGxvY2VkCi0gYnVmZmVyKQotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTIxNDgKLWh0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0zNTJmNzkKLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG5ldHdvcmtpbmcvdWRoY3AvY29tbW9uLmMgfCAxNSArKysrKysrKysrKysrLS0KLSBuZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMgIHwgIDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGJ1c3lib3gtMS4yMy4yL25ldHdvcmtpbmcvdWRoY3AvY29tbW9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBidXN5Ym94LTEuMjMuMi5vcmlnL25ldHdvcmtpbmcvdWRoY3AvY29tbW9uLmMKLSsrKyBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCi1AQCAtMTQyLDcgKzE0Miw3IEBAIGNvbnN0IGNoYXIgZGhjcF9vcHRpb25fc3RyaW5nc1tdIEFMSUdOMQotICAqIHVkaGNwX3N0cjJvcHRzZXQ6IHRvIGRldGVybWluZSBob3cgbWFueSBieXRlcyB0byBhbGxvY2F0ZS4KLSAgKiB4bWFsbG9jX29wdG5hbWVfb3B0dmFsOiB0byBlc3RpbWF0ZSBzdHJpbmcgbGVuZ3RoCi0gICogZnJvbSBiaW5hcnkgb3B0aW9uIGxlbmd0aDogKG9wdGlvbltMRU5dIC8gZGhjcF9vcHRpb25fbGVuZ3Roc1tvcHRfdHlwZV0pCi0tICogaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cywgbXVsdGlwbHkgaW4gYnkgb25lIGVsZW1lbnQncyBzdHJpbmcgd2lkdGgKLSsgKiBpcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzLCBtdWx0aXBseSBpdCBieSBvbmUgZWxlbWVudCdzIHN0cmluZyB3aWR0aAotICAqIChsZW5fb2Zfb3B0aW9uX2FzX3N0cmluZ1tvcHRfdHlwZV0pIGFuZCB5b3Uga25vdyBob3cgd2lkZSBzdHJpbmcgeW91IG5lZWQuCi0gICovCi0gY29uc3QgdWludDhfdCBkaGNwX29wdGlvbl9sZW5ndGhzW10gQUxJR04xID0gewotQEAgLTE2Miw3ICsxNjIsMTggQEAgY29uc3QgdWludDhfdCBkaGNwX29wdGlvbl9sZW5ndGhzW10gQUxJRwotIAlbT1BUSU9OX1MzMl0gPSAgICAgNCwKLSAJLyogSnVzdCBsaWtlIE9QVElPTl9TVFJJTkcsIHdlIHVzZSBtaW5pbXVtIGxlbmd0aCBoZXJlICovCi0gCVtPUFRJT05fU1RBVElDX1JPVVRFU10gPSA1LAotLQlbT1BUSU9OXzZSRF0gPSAgICAyMiwgIC8qIGlnbm9yZWQgYnkgdWRoY3Bfc3RyMm9wdHNldCAqLwotKwlbT1BUSU9OXzZSRF0gPSAgICAxMiwgIC8qIGlnbm9yZWQgYnkgdWRoY3Bfc3RyMm9wdHNldCAqLwotKwkvKiBUaGUgYWJvdmUgdmFsdWUgd2FzIGNob3NlbiBhcyBmb2xsb3dzOgotKwkgKiBsZW5fb2Zfb3B0aW9uX2FzX3N0cmluZ1tdIGZvciB0aGlzIG9wdGlvbiBpcyA+NjA6IGl0J3MgYSBzdHJpbmcgb2YgdGhlIGZvcm0KLSsJICogIjMyIDEyOCBmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYgMjU1LjI1NS4yNTUuMjU1ICIuCi0rCSAqIEVhY2ggYWRkaXRpb25hbCBpcHY0IGFkZHJlc3MgdGFrZXMgNCBieXRlcyBpbiBiaW5hcnkgb3B0aW9uIGFuZCBhcHBlbmRzCi0rCSAqIGFub3RoZXIgIjI1NS4yNTUuMjU1LjI1NSAiIDE2LWJ5dGUgc3RyaW5nLiBXZSBjYW4gc2V0IFtPUFRJT05fNlJEXSA9IDQKLSsJICogYnV0IHRoaXMgc2V2ZXJlbHkgb3ZlcmVzdGltYXRlcyBzdHJpbmcgbGVuZ3RoOiBpbnN0ZWFkIG9mIDE2IGJ5dGVzLAotKwkgKiBpdCBhZGRzID42MCBmb3IgZXZlcnkgNCBieXRlcyBpbiBiaW5hcnkgb3B0aW9uLgotKwkgKiBXZSBjaGVhdCBhbmQgZGVjbGFyZSBoZXJlIHRoYXQgb3B0aW9uIGlzIGluIHVuaXRzIG9mIDEyIGJ5dGVzLgotKwkgKiBUaGlzIGFkZHMgbW9yZSB0aGFuIDYwIGJ5dGVzIGZvciBldmVyeSB0aHJlZSBpcHY0IGFkZHJlc3NlcyAtIG1vcmUgdGhhbiBlbm91Z2guCi0rCSAqIChFdmVuIDE2IGluc3RlYWQgb2YgMTIgc2hvdWxkIHdvcmssIGJ1dCBsZXQncyBiZSBwYXJhbm9pZCkuCi0rCSAqLwotIH07Ci0gCi0gCi1JbmRleDogYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLSsrKyBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLUBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbGVuX29mX29wdGlvbl9hc19zdAotIAlbT1BUSU9OX0lQICAgICAgICAgICAgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUgIiksCi0gCVtPUFRJT05fSVBfUEFJUiAgICAgICAgIF0gPSBzaXplb2YoIjI1NS4yNTUuMjU1LjI1NSAiKSAqIDIsCi0gCVtPUFRJT05fU1RBVElDX1JPVVRFUyAgIF0gPSBzaXplb2YoIjI1NS4yNTUuMjU1LjI1NS8zMiAyNTUuMjU1LjI1NS4yNTUgIiksCi0tCVtPUFRJT05fNlJEICAgICAgICAgICAgIF0gPSBzaXplb2YoIjMyIDEyOCBmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYgMjU1LjI1NS4yNTUuMjU1ICIpLAotKwlbT1BUSU9OXzZSRCAgICAgICAgICAgICBdID0gc2l6ZW9mKCIxMzIgMTI4IGZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZiAyNTUuMjU1LjI1NS4yNTUgIiksCi0gCVtPUFRJT05fU1RSSU5HICAgICAgICAgIF0gPSAxLAotIAlbT1BUSU9OX1NUUklOR19IT1NUICAgICBdID0gMSwKLSAjaWYgRU5BQkxFX0ZFQVRVUkVfVURIQ1BfUkZDMzM5NwotQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgTk9JTkxJTkUgY2hhciAqeG1hbGxvY19vcHRuYW1lX29wCi0gCXR5cGUgPSBvcHRmbGFnLT5mbGFncyAmIE9QVElPTl9UWVBFX01BU0s7Ci0gCW9wdGxlbiA9IGRoY3Bfb3B0aW9uX2xlbmd0aHNbdHlwZV07Ci0gCXVwcGVyX2xlbmd0aCA9IGxlbl9vZl9vcHRpb25fYXNfc3RyaW5nW3R5cGVdCi0tCQkqICgodW5zaWduZWQpKGxlbiArIG9wdGxlbiAtIDEpIC8gKHVuc2lnbmVkKW9wdGxlbik7Ci0rCQkqICgodW5zaWduZWQpKGxlbiArIG9wdGxlbikgLyAodW5zaWduZWQpb3B0bGVuKTsKLSAKLSAJZGVzdCA9IHJldCA9IHhtYWxsb2ModXBwZXJfbGVuZ3RoICsgc3RybGVuKG9wdF9uYW1lKSArIDIpOwotIAlkZXN0ICs9IHNwcmludGYocmV0LCAiJXM9Iiwgb3B0X25hbWUpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi02MzAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi02MzAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTFiYzIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtNjMwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWJ1c3lib3gxLjI0LjE6IEZpeCBDVkUtMjAxNi02MzAxCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzYzNzEwCi0KLW50cGQ6IE5UUCBzZXJ2ZXIgZGVuaWFsIG9mIHNlcnZpY2UgZmxhdwotCi1UaGUgYnVzeWJveCBOVFAgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjaGVjayB0aGUgTlRQIG1vZGUgb2YgcGFja2V0cwotcmVjZWl2ZWQgb24gdGhlIHNlcnZlciBwb3J0IGFuZCByZXNwb25kcyB0byBhbnkgcGFja2V0IHdpdGggdGhlIHJpZ2h0Ci1zaXplLiBUaGlzIGluY2x1ZGVzIHJlc3BvbnNlcyBmcm9tIGFub3RoZXIgTlRQIHNlcnZlci4gQW4gYXR0YWNrZXIgY2FuCi1zZW5kIGEgcGFja2V0IHdpdGggYSBzcG9vZmVkIHNvdXJjZSBhZGRyZXNzIGluIG9yZGVyIHRvIGNyZWF0ZSBhbgotaW5maW5pdGUgbG9vcCBvZiByZXNwb25zZXMgYmV0d2VlbiB0d28gYnVzeWJveCBOVFAgc2VydmVycy4gQWRkaW5nCi1tb3JlIHBhY2tldHMgdG8gdGhlIGxvb3AgaW5jcmVhc2VzIHRoZSB0cmFmZmljIGJldHdlZW4gdGhlIHNlcnZlcnMKLXVudGlsIG9uZSBvZiB0aGVtIGhhcyBhIGZ1bGx5IGxvYWRlZCBDUFUgYW5kL29yIG5ldHdvcmsuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0xNTBkYzdhMmI0ODNiODMzOGEzZTE4NWM0NzhiNGIyM2VlODg0ZTcxXQotQ1ZFOiBDVkUtMjAxNi02MzAxCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbnRwZC5jIGIvbmV0d29ya2luZy9udHBkLmMKLWluZGV4IDk3MzJjOWIuLjBmNmE1NWYgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL250cGQuYwotKysrIGIvbmV0d29ya2luZy9udHBkLmMKLUBAIC0xOTg1LDYgKzE5ODUsMTMgQEAgcmVjdl9hbmRfcHJvY2Vzc19jbGllbnRfcGt0KHZvaWQgLyppbnQgZmQqLykKLSAJCWdvdG8gYmFpbDsKLSAJfQotIAotKwkvKiBSZXNwb25kIG9ubHkgdG8gY2xpZW50IGFuZCBzeW1tZXRyaWMgYWN0aXZlIHBhY2tldHMgKi8KLSsJaWYgKChtc2cubV9zdGF0dXMgJiBNT0RFX01BU0spICE9IE1PREVfQ0xJRU5UCi0rCSAmJiAobXNnLm1fc3RhdHVzICYgTU9ERV9NQVNLKSAhPSBNT0RFX1NZTV9BQ1QKLSsJKSB7Ci0rCQlnb3RvIGJhaWw7Ci0rCX0KLSsKLSAJcXVlcnlfc3RhdHVzID0gbXNnLm1fc3RhdHVzOwotIAlxdWVyeV94bXR0aW1lID0gbXNnLm1feG10dGltZTsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTctMTU4NzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMDI3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoCkBAIC0wLDAgKzEsOTUgQEAKK2J1c3lib3gtMS4yNy4yOiBGaXggQ1ZFLTIwMTctMTU4NzMKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTEwNDMxCisKK2J1bnppcDI6IGZpeCBydW5DbnQgb3ZlcmZsb3cKKworVGhlIGdldF9uZXh0X2Jsb2NrIGZ1bmN0aW9uIGluIGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKK2luIEJ1c3lCb3ggMS4yNy4yIGhhcyBhbiBJbnRlZ2VyIE92ZXJmbG93IHRoYXQgbWF5IGxlYWQgdG8gYSB3cml0ZSAKK2FjY2VzcyB2aW9sYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0wNDAyY2IzMmRmMDE1ZDkzNzI1NzhlM2RiMjdkYjQ3YjMzZDVjN2IwXQorQ1ZFOiBDVkUtMjAxNy0xNTg3MworYnVnOiAxMDQzMQorU2lnbmVkLW9mZi1ieTogUmFkb3ZhbiBTY2FzbnkgPHJhZG92YW4uc2Nhc255QHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKK2luZGV4IDdjZDE4ZjUuLmJlYzg5ZWQgMTAwNjQ0CistLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCisrKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCitAQCAtMTU2LDE1ICsxNTYsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGdldF9iaXRzKGJ1bnppcF9kYXRhICpiZCwgaW50IGJpdHNfd2FudGVkKQorIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQorIHsKKyAJc3RydWN0IGdyb3VwX2RhdGEgKmh1Zkdyb3VwOworLQlpbnQgZGJ1ZkNvdW50LCBkYnVmU2l6ZSwgZ3JvdXBDb3VudCwgKmJhc2UsICpsaW1pdCwgc2VsZWN0b3IsCistCQlpLCBqLCBydW5Qb3MsIHN5bUNvdW50LCBzeW1Ub3RhbCwgblNlbGVjdG9ycywgYnl0ZUNvdW50WzI1Nl07CistCWludCBydW5DbnQgPSBydW5DbnQ7IC8qIGZvciBjb21waWxlciAqLworKwlpbnQgZ3JvdXBDb3VudCwgKmJhc2UsICpsaW1pdCwgc2VsZWN0b3IsCisrCQlpLCBqLCBzeW1Db3VudCwgc3ltVG90YWwsIG5TZWxlY3RvcnMsIGJ5dGVDb3VudFsyNTZdOworIAl1aW50OF90IHVjLCBzeW1Ub0J5dGVbMjU2XSwgbXRmU3ltYm9sWzI1Nl0sICpzZWxlY3RvcnM7CisgCXVpbnQzMl90ICpkYnVmOworIAl1bnNpZ25lZCBvcmlnUHRyLCB0OworKwl1bnNpZ25lZCBkYnVmQ291bnQsIHJ1blBvczsKKysJdW5zaWduZWQgcnVuQ250ID0gcnVuQ250OyAvKiBmb3IgY29tcGlsZXIgKi8KKyAKKyAJZGJ1ZiA9IGJkLT5kYnVmOworLQlkYnVmU2l6ZSA9IGJkLT5kYnVmU2l6ZTsKKyAJc2VsZWN0b3JzID0gYmQtPnNlbGVjdG9yczsKKyAKKyAvKiBJbiBiYm94LCB3ZSBhcmUgb2sgd2l0aCBhYm9ydGluZyB0aHJvdWdoIHNldGptcCB3aGljaCBpcyBzZXQgdXAgaW4gc3RhcnRfYnVuemlwICovCitAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQorIAkgICBpdCBkaWRuJ3QgYWN0dWFsbHkgd29yay4gKi8KKyAJaWYgKGdldF9iaXRzKGJkLCAxKSkgcmV0dXJuIFJFVFZBTF9PQlNPTEVURV9JTlBVVDsKKyAJb3JpZ1B0ciA9IGdldF9iaXRzKGJkLCAyNCk7CistCWlmICgoaW50KW9yaWdQdHIgPiBkYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworKwlpZiAob3JpZ1B0ciA+IGJkLT5kYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworIAorIAkvKiBtYXBwaW5nIHRhYmxlOiBpZiBzb21lIGJ5dGUgdmFsdWVzIGFyZSBuZXZlciB1c2VkIChlbmNvZGluZyB0aGluZ3MKKyAJICAgbGlrZSBhc2NpaSB0ZXh0KSwgdGhlIGNvbXByZXNzaW9uIGNvZGUgcmVtb3ZlcyB0aGUgZ2FwcyB0byBoYXZlIGZld2VyCitAQCAtNDM1LDcgKzQzNSwxNCBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJCQkgICBzeW1ib2xzLCBidXQgYSBydW4gb2YgbGVuZ3RoIDAgZG9lc24ndCBtZWFuIGFueXRoaW5nIGluIHRoaXMKKyAJCQkgICBjb250ZXh0KS4gIFRodXMgc3BhY2UgaXMgc2F2ZWQuICovCisgCQkJcnVuQ250ICs9IChydW5Qb3MgPDwgbmV4dFN5bSk7IC8qICtydW5Qb3MgaWYgUlVOQTsgKzIqcnVuUG9zIGlmIFJVTkIgKi8KKy0JCQlpZiAocnVuUG9zIDwgZGJ1ZlNpemUpIHJ1blBvcyA8PD0gMTsKKysvL1RoZSAzMi1iaXQgb3ZlcmZsb3cgb2YgcnVuQ250IHdhc24ndCB5ZXQgc2VlbiwgYnV0IHByb2JhYmx5IGNhbiBoYXBwZW4uCisrLy9UaGlzIHdvdWxkIGJlIHRoZSBmaXggKGNhdGNoZXMgdG9vIGxhcmdlIGNvdW50IHdheSBiZWZvcmUgaXQgY2FuIG92ZXJmbG93KToKKysvLwkJCWlmIChydW5DbnQgPiBiZC0+ZGJ1ZlNpemUpIHsKKysvLwkJCQlkYmcoInJ1bkNudDoldSA+IGRidWZTaXplOiV1IFJFVFZBTF9EQVRBX0VSUk9SIiwKKysvLwkJCQkJCXJ1bkNudCwgYmQtPmRidWZTaXplKTsKKysvLwkJCQlyZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7CisrLy8JCQl9CisrCQkJaWYgKHJ1blBvcyA8IGJkLT5kYnVmU2l6ZSkgcnVuUG9zIDw8PSAxOworIAkJCWdvdG8gZW5kX29mX2h1ZmZtYW5fbG9vcDsKKyAJCX0KKyAKK0BAIC00NDUsMTQgKzQ1MiwxNSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJCSAgIGxpdGVyYWwgdXNlZCBpcyB0aGUgb25lIGF0IHRoZSBoZWFkIG9mIHRoZSBtdGZTeW1ib2wgYXJyYXkuKSAqLworIAkJaWYgKHJ1blBvcyAhPSAwKSB7CisgCQkJdWludDhfdCB0bXBfYnl0ZTsKKy0JCQlpZiAoZGJ1ZkNvdW50ICsgcnVuQ250ID4gZGJ1ZlNpemUpIHsKKy0JCQkJZGJnKCJkYnVmQ291bnQ6JWQrcnVuQ250OiVkICVkID4gZGJ1ZlNpemU6JWQgUkVUVkFMX0RBVEFfRVJST1IiLAorLQkJCQkJCWRidWZDb3VudCwgcnVuQ250LCBkYnVmQ291bnQgKyBydW5DbnQsIGRidWZTaXplKTsKKysJCQlpZiAoZGJ1ZkNvdW50ICsgcnVuQ250ID4gYmQtPmRidWZTaXplKSB7CisrCQkJCWRiZygiZGJ1ZkNvdW50OiV1K3J1bkNudDoldSAldSA+IGRidWZTaXplOiV1IFJFVFZBTF9EQVRBX0VSUk9SIiwKKysJCQkJCQlkYnVmQ291bnQsIHJ1bkNudCwgZGJ1ZkNvdW50ICsgcnVuQ250LCBiZC0+ZGJ1ZlNpemUpOworIAkJCQlyZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7CisgCQkJfQorIAkJCXRtcF9ieXRlID0gc3ltVG9CeXRlW210ZlN5bWJvbFswXV07CisgCQkJYnl0ZUNvdW50W3RtcF9ieXRlXSArPSBydW5DbnQ7CistCQkJd2hpbGUgKC0tcnVuQ250ID49IDApIGRidWZbZGJ1ZkNvdW50KytdID0gKHVpbnQzMl90KXRtcF9ieXRlOworKwkJCXdoaWxlICgoaW50KS0tcnVuQ250ID49IDApCisrCQkJCWRidWZbZGJ1ZkNvdW50KytdID0gKHVpbnQzMl90KXRtcF9ieXRlOworIAkJCXJ1blBvcyA9IDA7CisgCQl9CisgCitAQCAtNDY2LDcgKzQ3NCw3IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQorIAkJICAgZmlyc3Qgc3ltYm9sIGluIHRoZSBtdGYgYXJyYXksIHBvc2l0aW9uIDAsIHdvdWxkIGhhdmUgYmVlbiBoYW5kbGVkCisgCQkgICBhcyBwYXJ0IG9mIGEgcnVuIGFib3ZlLiAgVGhlcmVmb3JlIDEgdW51c2VkIG10ZiBwb3NpdGlvbiBtaW51cworIAkJICAgMiBub24tbGl0ZXJhbCBuZXh0U3ltIHZhbHVlcyBlcXVhbHMgLTEuKSAqLworLQkJaWYgKGRidWZDb3VudCA+PSBkYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworKwkJaWYgKGRidWZDb3VudCA+PSBiZC0+ZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKyAJCWkgPSBuZXh0U3ltIC0gMTsKKyAJCXVjID0gbXRmU3ltYm9sW2ldOworIAorLS0gCitjZ2l0IHYwLjEyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdHJ1bmNhdGUtb3Blbi1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGM5MTA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdHJ1bmNhdGUtb3Blbi1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gIGh0dHA6Ly9idXN5Ym94Lm5ldC9kb3dubG9hZHMvZml4ZXMtMS4yNC4xLwotICBodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9ZTExMWExNjQwNDk0ZmU4N2ZjOTEzZjk0ZmFlM2JiODA1ZGUwZmM5OQotICBodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aD0xXzI0X3N0YWJsZSZpZD1iZTcyOWMxZDNiNWM5MjNmMTA4NzFkZDY4ZWE5NDE1NmQwZjhjODAzCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLUZyb20gYmU3MjljMWQzYjVjOTIzZjEwODcxZGQ2OGVhOTQxNTZkMGY4YzgwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFyaSBTdW5kaG9sbSA8YXJpQHR1eGVyYS5jb20+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6NDA6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdHJ1bmNhdGU6IGFsd2F5cyBzZXQgbW9kZSB3aGVuIG9wZW5pbmcgZmlsZSB0byBhdm9pZCBmb3J0aWZ5Ci0gZXJyb3JzCi0KLUJ1c3lib3ggY3Jhc2hlcyBkdWUgdG8gbm8gbW9kZSBiZWluZyBnaXZlbiB3aGVuIG9wZW5pbmc6Ci0kIC4vYnVzeWJveCB0cnVuY2F0ZSAtcyAxTSBmb28KLSoqKiBpbnZhbGlkIG9wZW42NCBjYWxsOiBPX0NSRUFUIHdpdGhvdXQgbW9kZSAqKio6IC4vYnVzeWJveCB0ZXJtaW5hdGVkCi09PT09PT09IEJhY2t0cmFjZTogPT09PT09PT09Ci0vbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy5zby42KCsweDczMzhmKVsweDdmNjZkOTIxMzM4Zl0KLS9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLnNvLjYoX19mb3J0aWZ5X2ZhaWwrMHg1YylbMHg3ZjY2ZDkyYWFjOWNdCi0vbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy5zby42KCsweGViNmFhKVsweDdmNjZkOTI4YjZhYV0KLS4vYnVzeWJveFsweDQ4OTlmOV0KLT09PT09PT0gTWVtb3J5IG1hcDogPT09PT09PT0KLTAwNDAwMDAwLTAwNGQwMDAwIHIteHAgMDAwMDAwMDAgMDA6MWEgMTM3NTU5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvaG9tZS9hcmkvYnVzeWJveC9idXN5Ym94Ci0wMDZjZjAwMC0wMDZkMDAwMCByLS1wIDAwMGNmMDAwIDAwOjFhIDEzNzU1OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2hvbWUvYXJpL2J1c3lib3gvYnVzeWJveAotMDA2ZDAwMDAtMDA2ZDEwMDAgcnctcCAwMDBkMDAwMCAwMDoxYSAxMzc1NTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9ob21lL2FyaS9idXN5Ym94L2J1c3lib3gKLTAwNmQxMDAwLTAwNmQ0MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAotMDE0ZTcwMDAtMDE1MDgwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFwXQotN2Y2NmQ4ZjhhMDAwLTdmNjZkOGZhMDAwMCByLXhwIDAwMDAwMDAwIDA4OjA3IDE1NzkwMDggICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnY2Nfcy5zby4xCi03ZjY2ZDhmYTAwMDAtN2Y2NmQ5MTlmMDAwIC0tLXAgMDAwMTYwMDAgMDg6MDcgMTU3OTAwOCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdjY19zLnNvLjEKLTdmNjZkOTE5ZjAwMC03ZjY2ZDkxYTAwMDAgcnctcCAwMDAxNTAwMCAwODowNyAxNTc5MDA4ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ2NjX3Muc28uMQotN2Y2NmQ5MWEwMDAwLTdmNjZkOTM1YjAwMCByLXhwIDAwMDAwMDAwIDA4OjA3IDE1Nzg5OTQgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28KLTdmNjZkOTM1YjAwMC03ZjY2ZDk1NWEwMDAgLS0tcCAwMDFiYjAwMCAwODowNyAxNTc4OTk0ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy0yLjE5LnNvCi03ZjY2ZDk1NWEwMDAtN2Y2NmQ5NTVlMDAwIHItLXAgMDAxYmEwMDAgMDg6MDcgMTU3ODk5NCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMtMi4xOS5zbwotN2Y2NmQ5NTVlMDAwLTdmNjZkOTU2MDAwMCBydy1wIDAwMWJlMDAwIDA4OjA3IDE1Nzg5OTQgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28KLTdmNjZkOTU2MDAwMC03ZjY2ZDk1NjUwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwCi03ZjY2ZDk1NjUwMDAtN2Y2NmQ5NjZhMDAwIHIteHAgMDAwMDAwMDAgMDg6MDcgMTU3OTAyMCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm0tMi4xOS5zbwotN2Y2NmQ5NjZhMDAwLTdmNjZkOTg2OTAwMCAtLS1wIDAwMTA1MDAwIDA4OjA3IDE1NzkwMjAgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJtLTIuMTkuc28KLTdmNjZkOTg2OTAwMC03ZjY2ZDk4NmEwMDAgci0tcCAwMDEwNDAwMCAwODowNyAxNTc5MDIwICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGlibS0yLjE5LnNvCi03ZjY2ZDk4NmEwMDAtN2Y2NmQ5ODZiMDAwIHJ3LXAgMDAxMDUwMDAgMDg6MDcgMTU3OTAyMCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm0tMi4xOS5zbwotN2Y2NmQ5ODZiMDAwLTdmNjZkOTg4ZTAwMCByLXhwIDAwMDAwMDAwIDA4OjA3IDE1Nzg5ODEgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9sZC0yLjE5LnNvCi03ZjY2ZDlhNjQwMDAtN2Y2NmQ5YTY3MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAotN2Y2NmQ5YThhMDAwLTdmNjZkOWE4ZDAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTdmNjZkOWE4ZDAwMC03ZjY2ZDlhOGUwMDAgci0tcCAwMDAyMjAwMCAwODowNyAxNTc4OTgxICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtMi4xOS5zbwotN2Y2NmQ5YThlMDAwLTdmNjZkOWE4ZjAwMCBydy1wIDAwMDIzMDAwIDA4OjA3IDE1Nzg5ODEgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9sZC0yLjE5LnNvCi03ZjY2ZDlhOGYwMDAtN2Y2NmQ5YTkwMDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAotN2ZmYzQ3NzYxMDAwLTdmZmM0Nzc4MjAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja10KLTdmZmM0NzdhYjAwMC03ZmZjNDc3YWQwMDAgci14cCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRzb10KLWZmZmZmZmZmZmY2MDAwMDAtZmZmZmZmZmZmZjYwMTAwMCByLXhwIDAwMDAwMDAwIDAwOjAwIDAgICAgICAgICAgICAgICAgICBbdnN5c2NhbGxdCi1BYm9ydGVkIChjb3JlIGR1bXBlZCkKLSQKLQotRml4IHRoaXMgYnkgc2ltcGx5IGFsd2F5cyBzZXR0aW5nIHRoZSBtb2RlLCBhcyBpdCBkb2Vzbid0IGh1cnQgZXZlbgotd2hlbiBPX0NSRUFUIGlzIG5vdCBzcGVjaWZpZWQuCi0KLVRoaXMgYnVnIGlzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIGZjM2U0MGUsIGFzIHhvcGVuKCksIHdoaWNoCi13YXMgb3JpZ2luYWxseSB1c2VkLCB3b3VsZCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgbW9kZS4KLQotU2lnbmVkLW9mZi1ieTogQXJpIFN1bmRob2xtIDxhcmlAdHV4ZXJhLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGUxMTFhMTY0MDQ5NGZlODdmYzkxM2Y5NGZhZTNiYjgwNWRlMGZjOTkpCi0tLS0KLSBjb3JldXRpbHMvdHJ1bmNhdGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvcmV1dGlscy90cnVuY2F0ZS5jIGIvY29yZXV0aWxzL3RydW5jYXRlLmMKLWluZGV4IGU1ZmE2NTYuLjRjOTk3YmYgMTAwNjQ0Ci0tLS0gYS9jb3JldXRpbHMvdHJ1bmNhdGUuYwotKysrIGIvY29yZXV0aWxzL3RydW5jYXRlLmMKLUBAIC02NCw3ICs2NCw3IEBAIGludCB0cnVuY2F0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCi0gCWFyZ3YgKz0gb3B0aW5kOwotIAl3aGlsZSAoKmFyZ3YpIHsKLS0JCWludCBmZCA9IG9wZW4oKmFyZ3YsIGZsYWdzKTsKLSsJCWludCBmZCA9IG9wZW4oKmFyZ3YsIGZsYWdzLCAwNjY2KTsKLSAJCWlmIChmZCA8IDApIHsKLSAJCQlpZiAoZXJybm8gIT0gRU5PRU5UIHx8ICEob3B0cyAmIE9QVF9OT0NSRUFURSkpIHsKLSAJCQkJYmJfcGVycm9yX21zZygiJXM6IG9wZW4iLCAqYXJndik7Ci0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdW56aXAtcmVncmVzc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdW56aXAtcmVncmVzc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjNTAyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gIGh0dHA6Ly9idXN5Ym94Lm5ldC9kb3dubG9hZHMvZml4ZXMtMS4yNC4xLwotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0wOTJmYWJjZjFkZjVkNDZjZDIyYmU0ZmZjZDNiODcxZjYxODBlYjljCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2g9MV8yNF9zdGFibGUmaWQ9MDkyZmFiY2YxZGY1ZDQ2Y2QyMmJlNGZmY2QzYjg3MWY2MTgwZWI5YwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotCi1Gcm9tIDA5MmZhYmNmMWRmNWQ0NmNkMjJiZTRmZmNkM2I4NzFmNjE4MGViOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAyMzo0MTo1MyArMDEwMAotU3ViamVjdDogW1BBVENIXSBbZ111bnppcDogZml4IHJlY2VudCBicmVha2FnZS4KLQotQWxzbywgZG8gZW1pdCBlcnJvciBtZXNzYWdlIHdlIHNvIHBhaW5zdGFraW5nbHkgcGFzcyBmcm9tIGd6aXAgaW50ZXJuYWxzCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA2YmQzZmZmNTFhYTc0ZTJlZTJkODc4ODdiMTIxODJhM2IwOTc5MmVmKQotU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotLS0tCi0gYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jIHwgMzMgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gdGVzdHN1aXRlL3VuemlwLnRlc3RzICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLWluZGV4IGM3NmZkMzEuLjM1N2M5YmYgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19ndW56aXAuYwotQEAgLTMwOSw4ICszMDksNyBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCWh1ZnRfdCAqcTsgICAgICAgICAgICAgIC8qIHBvaW50cyB0byBjdXJyZW50IHRhYmxlICovCi0gCWh1ZnRfdCByOyAgICAgICAgICAgICAgIC8qIHRhYmxlIGVudHJ5IGZvciBzdHJ1Y3R1cmUgYXNzaWdubWVudCAqLwotIAlodWZ0X3QgKnVbQk1BWF07ICAgICAgICAvKiB0YWJsZSBzdGFjayAqLwotLQl1bnNpZ25lZCB2W05fTUFYXTsgICAgICAvKiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aCAqLwotLQl1bnNpZ25lZCB2X2VuZDsKLSsJdW5zaWduZWQgdltOX01BWCArIDFdOyAgLyogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGguIGxhc3QgdltdIGlzIG5ldmVyIHVzZWQgKi8KLSAJaW50IHdzW0JNQVggKyAxXTsgICAgICAgLyogYml0cyBkZWNvZGVkIHN0YWNrICovCi0gCWludCB3OyAgICAgICAgICAgICAgICAgIC8qIGJpdHMgZGVjb2RlZCAqLwotIAl1bnNpZ25lZCB4W0JNQVggKyAxXTsgICAvKiBiaXQgb2Zmc2V0cywgdGhlbiBjb2RlIHN0YWNrICovCi1AQCAtMzY1LDE1ICszNjQsMTcgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAkJKnhwKysgPSBqOwotIAl9Ci0gCi0tCS8qIE1ha2UgYSB0YWJsZSBvZiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aHMgKi8KLSsJLyogTWFrZSBhIHRhYmxlIG9mIHZhbHVlcyBpbiBvcmRlciBvZiBiaXQgbGVuZ3Rocy4KLSsJICogVG8gZGV0ZWN0IGJhZCBpbnB1dCwgdW51c2VkIHZbaV0ncyBhcmUgc2V0IHRvIGludmFsaWQgdmFsdWUgVUlOVF9NQVguCi0rCSAqIEluIHBhcnRpY3VsYXIsIGxhc3QgdltpXSBpcyBuZXZlciBmaWxsZWQgYW5kIG11c3Qgbm90IGJlIGFjY2Vzc2VkLgotKwkgKi8KLSsJbWVtc2V0KHYsIDB4ZmYsIHNpemVvZih2KSk7Ci0gCXAgPSBiOwotIAlpID0gMDsKLS0Jdl9lbmQgPSAwOwotIAlkbyB7Ci0gCQlqID0gKnArKzsKLSAJCWlmIChqICE9IDApIHsKLSAJCQl2W3hbal0rK10gPSBpOwotLQkJCXZfZW5kID0geFtqXTsKLSAJCX0KLSAJfSB3aGlsZSAoKytpIDwgbik7Ci0gCi1AQCAtNDM1LDcgKzQzNiw5IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAKLSAJCQkvKiBzZXQgdXAgdGFibGUgZW50cnkgaW4gciAqLwotIAkJCXIuYiA9ICh1bnNpZ25lZCBjaGFyKSAoayAtIHcpOwotLQkJCWlmIChwID49IHYgKyB2X2VuZCkgeyAvLyBXYXMgImlmIChwID49IHYgKyBuKSIgYnV0IHZbXSBjYW4gYmUgc2hvcnRlciEKLSsJCQlpZiAoLypwID49IHYgKyBuIHx8IC0tIHJlZHVuZGFudCwgY2F1Z2h0IGJ5IHRoZSBzZWNvbmQgY2hlY2s6ICovCi0rCQkJICAgICpwID09IFVJTlRfTUFYIC8qIGRvIHdlIGFjY2VzcyB1bmluaXRlZCB2W2ldPyAoc2VlIG1lbXNldCh2KSkqLwotKwkJCSkgewotIAkJCQlyLmUgPSA5OTsgLyogb3V0IG9mIHZhbHVlcy0taW52YWxpZCBjb2RlICovCi0gCQkJfSBlbHNlIGlmICgqcCA8IHMpIHsKLSAJCQkJci5lID0gKHVuc2lnbmVkIGNoYXIpICgqcCA8IDI1NiA/IDE2IDogMTUpOwkvKiAyNTYgaXMgRU9CIGNvZGUgKi8KLUBAIC01MjAsOCArNTIzLDkgQEAgc3RhdGljIE5PSU5MSU5FIGludCBpbmZsYXRlX2NvZGVzKFNUQVRFX1BBUkFNX09OTFkpCi0gCQllID0gdC0+ZTsKLSAJCWlmIChlID4gMTYpCi0gCQkJZG8gewotLQkJCQlpZiAoZSA9PSA5OSkKLS0JCQkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7OwotKwkJCQlpZiAoZSA9PSA5OSkgewotKwkJCQkJYWJvcnRfdW56aXAoUEFTU19TVEFURV9PTkxZKTsKLSsJCQkJfQotIAkJCQliYiA+Pj0gdC0+YjsKLSAJCQkJayAtPSB0LT5iOwotIAkJCQllIC09IDE2OwotQEAgLTU1Nyw4ICs1NjEsOSBAQCBzdGF0aWMgTk9JTkxJTkUgaW50IGluZmxhdGVfY29kZXMoU1RBVEVfUEFSQU1fT05MWSkKLSAJCQllID0gdC0+ZTsKLSAJCQlpZiAoZSA+IDE2KQotIAkJCQlkbyB7Ci0tCQkJCQlpZiAoZSA9PSA5OSkKLSsJCQkJCWlmIChlID09IDk5KSB7Ci0gCQkJCQkJYWJvcnRfdW56aXAoUEFTU19TVEFURV9PTkxZKTsKLSsJCQkJCX0KLSAJCQkJCWJiID4+PSB0LT5iOwotIAkJCQkJayAtPSB0LT5iOwotIAkJCQkJZSAtPSAxNjsKLUBAIC04MjQsOCArODI5LDkgQEAgc3RhdGljIGludCBpbmZsYXRlX2Jsb2NrKFNUQVRFX1BBUkFNIHNtYWxsaW50ICplKQotIAotIAkJYl9keW5hbWljID4+PSA0OwotIAkJa19keW5hbWljIC09IDQ7Ci0tCQlpZiAobmwgPiAyODYgfHwgbmQgPiAzMCkKLSsJCWlmIChubCA+IDI4NiB8fCBuZCA+IDMwKSB7Ci0gCQkJYWJvcnRfdW56aXAoUEFTU19TVEFURV9PTkxZKTsJLyogYmFkIGxlbmd0aHMgKi8KLSsJCX0KLSAKLSAJCS8qIHJlYWQgaW4gYml0LWxlbmd0aC1jb2RlIGxlbmd0aHMgKi8KLSAJCWZvciAoaiA9IDA7IGogPCBuYjsgaisrKSB7Ci1AQCAtOTA2LDEyICs5MTIsMTQgQEAgc3RhdGljIGludCBpbmZsYXRlX2Jsb2NrKFNUQVRFX1BBUkFNIHNtYWxsaW50ICplKQotIAkJYmwgPSBsYml0czsKLSAKLSAJCWkgPSBodWZ0X2J1aWxkKGxsLCBubCwgMjU3LCBjcGxlbnMsIGNwbGV4dCwgJmluZmxhdGVfY29kZXNfdGwsICZibCk7Ci0tCQlpZiAoaSAhPSAwKQotKwkJaWYgKGkgIT0gMCkgewotIAkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQl9Ci0gCQliZCA9IGRiaXRzOwotIAkJaSA9IGh1ZnRfYnVpbGQobGwgKyBubCwgbmQsIDAsIGNwZGlzdCwgY3BkZXh0LCAmaW5mbGF0ZV9jb2Rlc190ZCwgJmJkKTsKLS0JCWlmIChpICE9IDApCi0rCQlpZiAoaSAhPSAwKSB7Ci0gCQkJYWJvcnRfdW56aXAoUEFTU19TVEFURV9PTkxZKTsKLSsJCX0KLSAKLSAJCS8qIHNldCB1cCBkYXRhIGZvciBpbmZsYXRlX2NvZGVzKCkgKi8KLSAJCWluZmxhdGVfY29kZXNfc2V0dXAoUEFTU19TVEFURSBibCwgYmQpOwotQEAgLTk5OSw2ICsxMDA3LDcgQEAgaW5mbGF0ZV91bnppcF9pbnRlcm5hbChTVEFURV9QQVJBTSB0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCWVycm9yX21zZyA9ICJjb3JydXB0ZWQgZGF0YSI7Ci0gCWlmIChzZXRqbXAoZXJyb3Jfam1wKSkgewotIAkJLyogRXJyb3IgZnJvbSBkZWVwIGluc2lkZSB6aXAgbWFjaGluZXJ5ICovCi0rCQliYl9lcnJvcl9tc2coZXJyb3JfbXNnKTsKLSAJCW4gPSAtMTsKLSAJCWdvdG8gcmV0OwotIAl9Ci1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3VuemlwLnRlc3RzIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1pbmRleCBjYTBhNDU4Li5kODczOGEzIDEwMDc1NQotLS0tIGEvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi0rKysgYi90ZXN0c3VpdGUvdW56aXAudGVzdHMKLUBAIC0zNCw2ICszNCw3IEBAIHJtIGZvby56aXAKLSB0ZXN0aW5nICJ1bnppcCAoYmFkIGFyY2hpdmUpIiAidXVkZWNvZGU7IHVuemlwIGJhZC56aXAgMj4mMTsgZWNobyBcJD8iIFwKLSAiQXJjaGl2ZTogIGJhZC56aXAKLSAgIGluZmxhdGluZzogXTNqwr1ywqtJGxJLLSVJeAotK3VuemlwOiBjb3JydXB0ZWQgZGF0YQotIHVuemlwOiBpbmZsYXRlIGVycm9yCi0gMQotICIgXAotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE4NjcyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotICBodHRwOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2ZpeGVzLTEuMjQuMS8KLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MWRlMjVhNmU4N2UwZTYyN2FhMzQyOTgxMDVhM2QxN2M2MGExZjQ0ZQotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9oPTFfMjRfc3RhYmxlJmlkPTY3NjdhZjE3ZjExMTQ0YzdjZDNjZmU5ZWY3OTlkN2Y4OWE3OGZlNjUKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotRnJvbSAxZGUyNWE2ZTg3ZTBlNjI3YWEzNDI5ODEwNWEzZDE3YzYwYTFmNDRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTk6MzM6MDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdW56aXA6IHRlc3QgZm9yIGJhZCBhcmNoaXZlIFNFR1ZpbmcKLQotZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCi1odWZ0X2J1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI5NiAgICAxMzAwICAgICAgKzQKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19ndW56aXAuYyB8IDExICsrKysrKystLS0tCi0gdGVzdHN1aXRlL3VuemlwLnRlc3RzICAgICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLWluZGV4IDdiNmY0NTkuLjMwYmY0NTEgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19ndW56aXAuYwotQEAgLTMwNSwxMSArMzA1LDEyIEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAJdW5zaWduZWQgaTsgICAgICAgICAgICAgLyogY291bnRlciwgY3VycmVudCBjb2RlICovCi0gCXVuc2lnbmVkIGo7ICAgICAgICAgICAgIC8qIGNvdW50ZXIgKi8KLSAJaW50IGs7ICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgaW4gY3VycmVudCBjb2RlICovCi0tCXVuc2lnbmVkICpwOyAgICAgICAgICAgIC8qIHBvaW50ZXIgaW50byBjW10sIGJbXSwgb3IgdltdICovCi0rCWNvbnN0IHVuc2lnbmVkICpwOyAgICAgIC8qIHBvaW50ZXIgaW50byBjW10sIGJbXSwgb3IgdltdICovCi0gCWh1ZnRfdCAqcTsgICAgICAgICAgICAgIC8qIHBvaW50cyB0byBjdXJyZW50IHRhYmxlICovCi0gCWh1ZnRfdCByOyAgICAgICAgICAgICAgIC8qIHRhYmxlIGVudHJ5IGZvciBzdHJ1Y3R1cmUgYXNzaWdubWVudCAqLwotIAlodWZ0X3QgKnVbQk1BWF07ICAgICAgICAvKiB0YWJsZSBzdGFjayAqLwotIAl1bnNpZ25lZCB2W05fTUFYXTsgICAgICAvKiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aCAqLwotKwl1bnNpZ25lZCB2X2VuZDsKLSAJaW50IHdzW0JNQVggKyAxXTsgICAgICAgLyogYml0cyBkZWNvZGVkIHN0YWNrICovCi0gCWludCB3OyAgICAgICAgICAgICAgICAgIC8qIGJpdHMgZGVjb2RlZCAqLwotIAl1bnNpZ25lZCB4W0JNQVggKyAxXTsgICAvKiBiaXQgb2Zmc2V0cywgdGhlbiBjb2RlIHN0YWNrICovCi1AQCAtMzI0LDcgKzMyNSw3IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAKLSAJLyogR2VuZXJhdGUgY291bnRzIGZvciBlYWNoIGJpdCBsZW5ndGggKi8KLSAJbWVtc2V0KGMsIDAsIHNpemVvZihjKSk7Ci0tCXAgPSAodW5zaWduZWQgKikgYjsgLyogY2FzdCBhbGxvd3MgdXMgdG8gcmV1c2UgcCBmb3IgcG9pbnRpbmcgdG8gYiAqLwotKwlwID0gYjsKLSAJaSA9IG47Ci0gCWRvIHsKLSAJCWNbKnBdKys7IC8qIGFzc3VtZSBhbGwgZW50cmllcyA8PSBCTUFYICovCi1AQCAtMzY1LDEyICszNjYsMTQgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAl9Ci0gCi0gCS8qIE1ha2UgYSB0YWJsZSBvZiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aHMgKi8KLS0JcCA9ICh1bnNpZ25lZCAqKSBiOwotKwlwID0gYjsKLSAJaSA9IDA7Ci0rCXZfZW5kID0gMDsKLSAJZG8gewotIAkJaiA9ICpwKys7Ci0gCQlpZiAoaiAhPSAwKSB7Ci0gCQkJdlt4W2pdKytdID0gaTsKLSsJCQl2X2VuZCA9IHhbal07Ci0gCQl9Ci0gCX0gd2hpbGUgKCsraSA8IG4pOwotIAotQEAgLTQzMiw3ICs0MzUsNyBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCi0gCQkJLyogc2V0IHVwIHRhYmxlIGVudHJ5IGluIHIgKi8KLSAJCQlyLmIgPSAodW5zaWduZWQgY2hhcikgKGsgLSB3KTsKLS0JCQlpZiAocCA+PSB2ICsgbikgewotKwkJCWlmIChwID49IHYgKyB2X2VuZCkgeyAvLyBXYXMgImlmIChwID49IHYgKyBuKSIgYnV0IHZbXSBjYW4gYmUgc2hvcnRlciEKLSAJCQkJci5lID0gOTk7IC8qIG91dCBvZiB2YWx1ZXMtLWludmFsaWQgY29kZSAqLwotIAkJCX0gZWxzZSBpZiAoKnAgPCBzKSB7Ci0gCQkJCXIuZSA9ICh1bnNpZ25lZCBjaGFyKSAoKnAgPCAyNTYgPyAxNiA6IDE1KTsJLyogMjU2IGlzIEVPQiBjb2RlICovCi1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3VuemlwLnRlc3RzIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1pbmRleCA4Njc3YTAzLi5jYTBhNDU4IDEwMDc1NQotLS0tIGEvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi0rKysgYi90ZXN0c3VpdGUvdW56aXAudGVzdHMKLUBAIC03LDcgKzcsNyBAQAotIAotIC4gLi90ZXN0aW5nLnNoCi0gCi0tIyB0ZXN0aW5nICJ0ZXN0IG5hbWUiICJvcHRpb25zIiAiZXhwZWN0ZWQgcmVzdWx0IiAiZmlsZSBpbnB1dCIgInN0ZGluIgotKyMgdGVzdGluZyAidGVzdCBuYW1lIiAiY29tbWFuZHMiICJleHBlY3RlZCByZXN1bHQiICJmaWxlIGlucHV0IiAic3RkaW4iCi0gIyAgIGZpbGUgaW5wdXQgd2lsbCBiZSBmaWxlIGNhbGxlZCAiaW5wdXQiCi0gIyAgIHRlc3QgY2FuIGNyZWF0ZSBhIGZpbGUgImFjdHVhbCIgaW5zdGVhZCBvZiB3cml0aW5nIHRvIHN0ZG91dAotIAotQEAgLTMwLDYgKzMwLDI3IEBAIHRlc3RpbmcgInVuemlwIChzdWJkaXIgb25seSkiICJ1bnppcCAtcSBmb28uemlwIGZvby8gJiYgdGVzdCAtZCBmb28gJiYgdGVzdCAhIC1mCi0gcm1kaXIgZm9vCi0gcm0gZm9vLnppcAotIAotKyMgRmlsZSBjb250YWluaW5nIHNvbWUgZGFtYWdlZCBlbmNyeXB0ZWQgc3RyZWFtCi0rdGVzdGluZyAidW56aXAgKGJhZCBhcmNoaXZlKSIgInV1ZGVjb2RlOyB1bnppcCBiYWQuemlwIDI+JjE7IGVjaG8gXCQ/IiBcCi0rIkFyY2hpdmU6ICBiYWQuemlwCi0rICBpbmZsYXRpbmc6IF0zasK9csKrSRsSSy0lSXgKLSt1bnppcDogaW5mbGF0ZSBlcnJvcgotKzEKLSsiIFwKLSsiIiAiXAotK2JlZ2luLWJhc2U2NCA2NDQgYmFkLnppcAotK1VFc0RCQlFBQWdrSUFBQUFJUUE1QUFBQU53QUFBRHdBQUFBUUFBY0FYVE5xd3IxeXdxdEpHeEpMTFNWSgotK2VDa0JEMEFkS0JrOEp6UXNJajAxSkMwL09SSlFTd01FRkFFQ0NBQUFBQUFoQURvQUFBQVBBQUFBTmdBQQotK0FBd0FBUUFTdzczQ3QxRENva29oUFhRaU5qb1VOVFVpSFJ3Z0xUNFdIbEJMQVFJUUFCUUFBZ2dJQUFBQQotK29RQTVBQUFBTndBQUFEd0FBQUFRUUFjQURBQUFBQ3dBTWdDQUFBQUFBQUJkTTJyQ3ZYTENxMGtiRWtzdAotK0pVbDRLUUVQUUIwb0dTWTRDejRRTmdFbkpTWUlQVkJMQVFJQUFCUUFBZ2dBQUFBQUlRQXFBQUFBRHdBQQotK0JEWUFBQUFNQUFFQURRQUFBRElBRFFBQUFFRUFBQUFTdzczQ3QxREtva29oUFhRaU56QStGQUkxSENjVwotK056SVRORkJMQlFVS0FDNEpBQTA0Q3cwRU9oWlFTd1VHQVFBQUJBSUFBZ0NaQUFBQWVRQUFBQUlBTGhNPQotKz09PT0KLSsiCi0rCi0rcm0gKgotKwotICMgQ2xlYW4gdXAgc2NyYXRjaCBkaXJlY3RvcnkuCi0gCi0gY2QgLi4KLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMTllZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtQ1ZFLTIwMTctMTY1NDQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBjMzc5N2Q0MGExYzU3MzUyMTkyYzYxMDZjYzBmNDM1ZTdkOWMxMWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBOb3YgMjAxNyAxODowOToyOSArMDEwMAorU3ViamVjdDogbGluZWVkaXQ6IGRvIG5vdCB0YWItY29tcGxldGUgYW55IHN0cmluZ3Mgd2hpY2ggaGF2ZSBjb250cm9sCisgY2hhcmFjdGVycworCitmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKK2FkZF9tYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxICAgICAgNjggICAgICsyNworCitDVkU6IENWRS0yMDE3LTE2NTQ0CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYmIvbGluZWVkaXQuYyB8IDEyICsrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJiYi9saW5lZWRpdC5jIGIvbGliYmIvbGluZWVkaXQuYworaW5kZXggYzBlMzViYi4uNTZlODE0MCAxMDA2NDQKKy0tLSBhL2xpYmJiL2xpbmVlZGl0LmMKKysrKyBiL2xpYmJiL2xpbmVlZGl0LmMKK0BAIC02NDUsNiArNjQ1LDE4IEBAIHN0YXRpYyB2b2lkIGZyZWVfdGFiX2NvbXBsZXRpb25fZGF0YSh2b2lkKQorIAorIHN0YXRpYyB2b2lkIGFkZF9tYXRjaChjaGFyICptYXRjaGVkKQorIHsKKysJdW5zaWduZWQgY2hhciAqcCA9ICh1bnNpZ25lZCBjaGFyKiltYXRjaGVkOworKwl3aGlsZSAoKnApIHsKKysJCS8qIEVTQyBhdHRhY2sgZml4OiBkcm9wIGFueSBzdHJpbmcgd2l0aCBjb250cm9sIGNoYXJzICovCisrCQlpZiAoKnAgPCAnICcKKysJCSB8fCAoIUVOQUJMRV9VTklDT0RFX1NVUFBPUlQgJiYgKnAgPj0gMHg3ZikKKysJCSB8fCAoRU5BQkxFX1VOSUNPREVfU1VQUE9SVCAmJiAqcCA9PSAweDdmKQorKwkJKSB7CisrCQkJZnJlZShtYXRjaGVkKTsKKysJCQlyZXR1cm47CisrCQl9CisrCQlwKys7CisrCX0KKyAJbWF0Y2hlcyA9IHhyZWFsbG9jX3ZlY3RvcihtYXRjaGVzLCA0LCBudW1fbWF0Y2hlcyk7CisgCW1hdGNoZXNbbnVtX21hdGNoZXNdID0gbWF0Y2hlZDsKKyAJbnVtX21hdGNoZXMrKzsKKy0tIAorY2dpdCB2MC4xMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaAppbmRleCBiZGE4Njg1Li42ZmFjYTIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaApAQCAtMzMsNyArMzMsNyBAQAogIHNjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9NYWtlZmlsZSAgICAgICAgICB8ICAgIDIgKy0KICBzY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2ggfCAgICA4ICsrKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQorIAogLS0tIGEvc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoCiArKysgYi9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2gKIEBAIC00LDYgKzQsMTAgQEAKQEAgLTQ0LDEwICs0NCwxMCBAQAogKwkJZWNobyAiJENST1NTX0NVUlNFU19MSUIiCiArCQlleGl0CiArCWZpCi0gCWZvciBleHQgaW4gc28gYSBkeWxpYiA7IGRvCi0gCQlmb3IgbGliIGluIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIDsgZG8KLSAJCQkkY2MgLXByaW50LWZpbGUtbmFtZT1saWIke2xpYn0uJHtleHR9IHwgZ3JlcCAtcSAvCi1AQCAtMTksNiArMjMsMTAgQEAgbGRmbGFncygpCisgCXBrZy1jb25maWcgLS1saWJzIG5jdXJzZXN3IDI+L2Rldi9udWxsICYmIGV4aXQKKyAJcGtnLWNvbmZpZyAtLWxpYnMgbmN1cnNlcyAyPi9kZXYvbnVsbCAmJiBleGl0CisgCWZvciBleHQgaW4gc28gYSBkbGwuYSBkeWxpYiA7IGRvCitAQCAtMjEsNiArMjUsMTAgQEAKICAjIFdoZXJlIGlzIG5jdXJzZXMuaD8KICBjY2ZsYWdzKCkKICB7CkBAIC01NSwxMiArNTUsMTIgQEAKICsJCWVjaG8gIiRDUk9TU19DVVJTRVNfSU5DIgogKwkJZXhpdAogKwlmaQotIAlpZiBbIC1mIC91c3IvaW5jbHVkZS9uY3Vyc2Vzdy9uY3Vyc2VzLmggXTsgdGhlbgotIAkJZWNobyAnLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3cgLURDVVJTRVNfTE9DPSI8bmN1cnNlcy5oPiInCi0gCWVsaWYgWyAtZiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cvY3Vyc2VzLmggXTsgdGhlbgorIAlpZiBwa2ctY29uZmlnIC0tY2ZsYWdzIG5jdXJzZXN3IDI+L2Rldi9udWxsOyB0aGVuCisgCQllY2hvICctRENVUlNFU19MT0M9IjxuY3Vyc2VzLmg+IiAtRE5DVVJTRVNfV0lERUNIQVI9MScKKyAJZWxpZiBwa2ctY29uZmlnIC0tY2ZsYWdzIG5jdXJzZXMgMj4vZGV2L251bGw7IHRoZW4KIC0tLSBhL3NjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9NYWtlZmlsZQogKysrIGIvc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL01ha2VmaWxlCi1AQCAtNSw3ICs1LDcgQEAgY2hlY2stbHhkaWFsb2cgIDo9ICQoc3JjdHJlZSkvJChzcmMpL2NoZQorQEAgLTUsNyArNSw3IEBACiAgCiAgIyBVc2UgcmV1cnNpdmVseSBleHBhbmRlZCB2YXJpYWJsZXMgc28gd2UgZG8gbm90IGNhbGwgZ2NjIHVubGVzcwogICMgd2UgcmVhbGx5IG5lZWQgdG8gZG8gc28uIChEbyBub3QgY2FsbCBnY2MgYXMgcGFydCBvZiBtYWtlIG1ycHJvcGVyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWtidWlsZC1yYWNlLWZpeC1jb21taXQtZDhlNjFiYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzAyZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWtidWlsZC1yYWNlLWZpeC1jb21taXQtZDhlNjFiYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotUGF0Y2ggYWRkcmVzc2luZyBhIHBhcmFsbGVsIG1ha2UgcmFjZSBpbiBCdXN5Ym94Ci0KLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9ZDhlNjFiYmYxM2QwY2YzOGQ0NzcyNTVjZmQ1ZGM3MWM1ZDUxZDU3NQotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1Gcm9tIGQ4ZTYxYmJmMTNkMGNmMzhkNDc3MjU1Y2ZkNWRjNzFjNWQ1MWQ1NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogU3VuLCAyMSBBdWcgMjAxNiAyMjowMDoyMCArMDIwMAotU3ViamVjdDogYnVpbGQgc3lzdGVtOiBkaWZmZXJlbnQgZml4IGZvcgotIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oL2luY2x1ZGUvTlVNX0FQUExFVFMuaAotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXBwbGV0cy9LYnVpbGQuc3JjIGIvYXBwbGV0cy9LYnVpbGQuc3JjCi1pbmRleCA1Y2MxODI3Li4zYWVkYmJmIDEwMDY0NAotLS0tIGEvYXBwbGV0cy9LYnVpbGQuc3JjCi0rKysgYi9hcHBsZXRzL0tidWlsZC5zcmMKLUBAIC0yOSw3ICsyOSw3IEBAIGFwcGxldHMvYXBwbGV0cy5vOiBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaCBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAotIAotIGFwcGxldHMvYXBwbGV0X3RhYmxlczogLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaAotIGFwcGxldHMvdXNhZ2U6ICAgICAgICAgLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaAotLWFwcGxldHMvdXNhZ2VfcG9kOiAgICAgLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaCBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKLSthcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKLSAKLSBxdWlldF9jbWRfZ2VuX3VzYWdlX2NvbXByZXNzZWQgPSBHRU4gICAgIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oCi0gICAgICAgY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gJChzcmN0cmVlX3NsYXNoKWFwcGxldHMvdXNhZ2VfY29tcHJlc3NlZCBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaCBhcHBsZXRzCi1AQCAtMzcsOCArMzcsMjEgQEAgcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAotIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oOiBhcHBsZXRzL3VzYWdlICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQKLSAJJChjYWxsIGNtZCxnZW5fdXNhZ2VfY29tcHJlc3NlZCkKLSAKLS1xdWlldF9jbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBHRU4gICAgIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0rcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKLSAgICAgICBjbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBhcHBsZXRzL2FwcGxldF90YWJsZXMgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0gCi0taW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLStpbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcwotKwkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQotKwotKyMgSW4gZmFjdCwgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggZGVwZW5kcyBvbmx5IG9uIGFwcGxldHMvYXBwbGV0X3RhYmxlcywKLSsjIGFuZCBpcyBnZW5lcmF0ZWQgYnkgaXQuIEJ1dCBzcGVjaWZ5aW5nIG9ubHkgaXQgY2FuIHJ1bgotKyMgYXBwbGV0cy9hcHBsZXRfdGFibGVzIHR3aWNlLCBwb3NzaWJseSBpbiBwYXJhbGxlbC4KLSsjIFdlIHNheSB0aGF0IGl0IGFsc28gbmVlZHMgTlVNX0FQUExFVFMuaAotKyMKLSsjIFVuZm9ydHVuYXRlbHksIHdlIG5lZWQgdG8gbGlzdCB0aGUgc2FtZSBjb21tYW5kLAotKyMgYW5kIGl0IGNhbiBiZSBleGVjdXRlZCB0d2ljZSAoc2VxdWVudGlhbGx5KS4KLSsjIFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBub3QgbGlzdCBhbnkgY29tbWFuZCwKLSsjIGFuZCB0aGVuIGlmIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGlzIGRlbGV0ZWQsIGl0IHdvbid0IGJlIHJlYnVpbHQuCi0rIwotK2luY2x1ZGUvYXBwbGV0X3RhYmxlcy5oOiBpbmNsdWRlL05VTV9BUFBMRVRTLmggYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0gCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdGFyLWFkZC1JRl9GRUFUVVJFXy1jaGVja3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdGFyLWFkZC1JRl9GRUFUVVJFXy1jaGVja3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjM2M5YzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXRhci1hZGQtSUZfRkVBVFVSRV8tY2hlY2tzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSBmOTQ0MTJmNmJiNDkxMzY2OTRjNTQ3OGQwYWVjYjE5MTE4ZDFiMDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotRGF0ZTogV2VkLCAzMSBNYXkgMjAxNyAxMTo0ODowOSArMDIwMAotU3ViamVjdDogW1BBVENIXSB0YXI6IGFkZCBJRl9GRUFUVVJFXyogY2hlY2tzCi0KLUEgZm9sbG93aW5nIGxpbmtpbmcgZXJyb3Igd2FzIG9ic2VydmVkOgotfCA9PT09PT09PT09Ci18IGFyY2hpdmFsL2xpYi5hKHRhci5vKTogSW4gZnVuY3Rpb24gYHRhcl9tYWluJzoKLXwgYXJjaGl2YWwvdGFyLmM6MTE2ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgdW5wYWNrX1pfc3RyZWFtJwotfCBhcmNoaXZhbC90YXIuYzoxMTY4OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB1bnBhY2tfWl9zdHJlYW0nCi18IGxkOiBidXN5Ym94X3Vuc3RyaXBwZWQ6IGhpZGRlbiBzeW1ib2wgYHVucGFja19aX3N0cmVhbScgaXNuJ3QgZGVmaW5lZAotfCBsZDogZmluYWwgbGluayBmYWlsZWQ6IEJhZCB2YWx1ZQotCi10aGlzIGhhcHBlbmVkIHdpdGggY2xhbmcgY29tcGlsZXIsIHdpdGggdGhlIGZvbGxvd2luZyBjb25maWdzOgotfCBDT05GSUdfVEFSPXkKLXwgIyBDT05GSUdfRkVBVFVSRV9TRUFNTEVTU19aIGlzIG5vdCBzZXQKLQotd2hpY2ggY2FuIGJlIGZpeGVkIGJ5IGFkZGluZyBJRl9GRUFUVVJFXyogY2hlY2tzIGluLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBTZW50IHRvIGJ1c3lib3ggdXBzdHJlYW0gb24gMjAxNy0wNi0wMiBdCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KLS0tLQotIGFyY2hpdmFsL3Rhci5jIHwgMjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FyY2hpdmFsL3Rhci5jIGIvYXJjaGl2YWwvdGFyLmMKLWluZGV4IGI3MGUwMGEuLjc1OThiNzEgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC90YXIuYwotKysrIGIvYXJjaGl2YWwvdGFyLmMKLUBAIC0xMjE2LDIxICsxMjE2LDI2IEBAIGludCB0YXJfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAkJVVNFX0ZPUl9NTVUoSUZfREVTS1RPUChsb25nIGxvbmcpIGludCBGQVNUX0ZVTkMgKCp4Zm9ybWVyKSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpOykKLSAJCVVTRV9GT1JfTk9NTVUoY29uc3QgY2hhciAqeGZvcm1lcl9wcm9nOykKLSAKLS0JCWlmIChvcHQgJiBPUFRfQ09NUFJFU1MpCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19aX3N0cmVhbTspCi0rCQlpZiAob3B0ICYgT1BUX0NPTVBSRVNTKSB7Ci0rCQkJVVNFX0ZPUl9NTVUoSUZfRkVBVFVSRV9TRUFNTEVTU19aKHhmb3JtZXIgPSB1bnBhY2tfWl9zdHJlYW07KSkKLSAJCQlVU0VfRk9SX05PTU1VKHhmb3JtZXJfcHJvZyA9ICJ1bmNvbXByZXNzIjspCi0tCQlpZiAob3B0ICYgT1BUX0daSVApCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19nel9zdHJlYW07KQotKwkJfQotKwkJaWYgKG9wdCAmIE9QVF9HWklQKSB7Ci0rCQkJVVNFX0ZPUl9NTVUoSUZfRkVBVFVSRV9TRUFNTEVTU19HWih4Zm9ybWVyID0gdW5wYWNrX2d6X3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gImd1bnppcCI7KQotLQkJaWYgKG9wdCAmIE9QVF9CWklQMikKLS0JCQlVU0VfRk9SX01NVSh4Zm9ybWVyID0gdW5wYWNrX2J6Ml9zdHJlYW07KQotKwkJfQotKwkJaWYgKG9wdCAmIE9QVF9CWklQMikgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfQloyKHhmb3JtZXIgPSB1bnBhY2tfYnoyX3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gImJ1bnppcDIiOykKLS0JCWlmIChvcHQgJiBPUFRfTFpNQSkKLS0JCQlVU0VfRk9SX01NVSh4Zm9ybWVyID0gdW5wYWNrX2x6bWFfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfTFpNQSkgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfTFpNQSh4Zm9ybWVyID0gdW5wYWNrX2x6bWFfc3RyZWFtOykpCi0gCQkJVVNFX0ZPUl9OT01NVSh4Zm9ybWVyX3Byb2cgPSAidW5sem1hIjspCi0tCQlpZiAob3B0ICYgT1BUX1haKQotLQkJCVVTRV9GT1JfTU1VKHhmb3JtZXIgPSB1bnBhY2tfeHpfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfWFopIHsKLSsJCQlVU0VfRk9SX01NVShJRl9GRUFUVVJFX1NFQU1MRVNTX1haKHhmb3JtZXIgPSB1bnBhY2tfeHpfc3RyZWFtOykpCi0gCQkJVVNFX0ZPUl9OT01NVSh4Zm9ybWVyX3Byb2cgPSAidW54eiI7KQotKwkJfQotIAotIAkJZm9ya190cmFuc2Zvcm1lcl93aXRoX3NpZyh0YXJfaGFuZGxlLT5zcmNfZmQsIHhmb3JtZXIsIHhmb3JtZXJfcHJvZyk7Ci0gCQkvKiBDYW4ndCBsc2VlayBvdmVyIHBpcGVzICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCmluZGV4IDRjOWNlM2IuLjU4MmEyNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaApAQCAtMjgsMjQgKzI4LDIzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+CiAtLS0KLSBuZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMgfCAgIDI5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorIG5ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKLUluZGV4OiBidXN5Ym94LTEuMjAuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKK0luZGV4OiBidXN5Ym94LTEuMjcuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBidXN5Ym94LTEuMjAuMi5vcmlnL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotKysrIGJ1c3lib3gtMS4yMC4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotQEAgLTI5LDYgKzI5LDkgQEAKLSAjaW5jbHVkZSA8bmV0cGFja2V0L3BhY2tldC5oPgotICNpbmNsdWRlIDxsaW51eC9maWx0ZXIuaD4KKy0tLSBidXN5Ym94LTEuMjcuMi5vcmlnL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYworKysrIGJ1c3lib3gtMS4yNy4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYworQEAgLTQ5LDYgKzQ5LDggQEAgc3RydWN0IHRwYWNrZXRfYXV4ZGF0YSB7CisgfTsKKyAjZW5kaWYKICAKICsvKiBvcHRpb24gd2hldGhlciB0byBkb3duIHRoZSBpbnRlcmZhY2Ugd2hlbiByZWNvbmZpZ3VyaW5nICovCiArc3RhdGljIGludCBhbGxvd19kZWNvbmZpZyA9IDE7Ci0rCisgCiAgLyogInN0cnVjdCBjbGllbnRfY29uZmlnX3QgY2xpZW50X2NvbmZpZyIgaXMgaW4gYmJfY29tbW9uX2J1ZnNpejEgKi8KICAKLSAKLUBAIC04MSw4ICs4NCw5IEBAIGVudW0geworQEAgLTEwNCw4ICsxMDYsOSBAQCBlbnVtIHsKICAJT1BUX3ggPSAxIDw8IDE4LAogIAlPUFRfZiA9IDEgPDwgMTksCiAgCU9QVF9CID0gMSA8PCAyMCwKQEAgLTU2LDcgKzU1LDcgQEAKICAJVVNFX0ZPUl9NTVUoICAgICAgICAgICAgIE9QVEJJVF9iLCkKICAJSUZfRkVBVFVSRV9VREhDUENfQVJQSU5HKE9QVEJJVF9hLCkKICAJSUZfRkVBVFVSRV9VREhDUF9QT1JUKCAgIE9QVEJJVF9QLCkKLUBAIC0xMDQwLDcgKzEwNDQsOCBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtX3JlbmV3KHZvaWQpCitAQCAtMTExMCw3ICsxMTEzLDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZW5ldyh2b2lkKQogIAkJc3RhdGUgPSBSRU5FV19SRVFVRVNURUQ7CiAgCQlicmVhazsKICAJY2FzZSBSRU5FV19SRVFVRVNURUQ6IC8qIGltcGF0aWVudCBhcmUgd2U/IGZpbmUsIHNxdWFyZSAxICovCkBAIC02NiwzNiArNjUsMzcgQEAKICAJY2FzZSBSRVFVRVNUSU5HOgogIAljYXNlIFJFTEVBU0VEOgogIAkJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwotQEAgLTEwNjQsNyArMTA2OSw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVsZWFzZSh1aW50MzJfdCBzZXIKLSAJCWJiX2luZm9fbXNnKCJVbmljYXN0aW5nIGEgcmVsZWFzZSBvZiAlcyB0byAlcyIsCi0gCQkJCWluZXRfbnRvYSh0ZW1wX2FkZHIpLCBidWZmZXIpOwotIAkJc2VuZF9yZWxlYXNlKHNlcnZlcl9hZGRyLCByZXF1ZXN0ZWRfaXApOyAvKiB1bmljYXN0ICovCi0tCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOwotKwkJaWYgKGFsbG93X2RlY29uZmlnKQotKwkJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7Ci0gCX0KLSAJYmJfaW5mb19tc2coIkVudGVyaW5nIHJlbGVhc2VkIHN0YXRlIik7CitAQCAtMTE0Niw3ICsxMTUwLDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZWxlYXNlKHVpbnQzMl90IHNlcnZlcl9hZGRyLCB1aW50MzJfdCByZXF1ZXN0ZWRfaXApCisgICogVXNlcnMgcmVxdWVzdGVkIHRvIGJlIG5vdGlmaWVkIGluIGFsbCBjYXNlcywgZXZlbiBpZiBub3QgaW4gb25lCisgICogb2YgdGhlIHN0YXRlcyBhYm92ZS4KKyAgKi8KKy0JdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKKysJaWYgKGFsbG93X2RlY29uZmlnKQorKwkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKICAKLUBAIC0xMjE1LDcgKzEyMjEsNyBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCisgCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fTk9ORSk7CisgCXN0YXRlID0gUkVMRUFTRUQ7CitAQCAtMTI5OCw3ICsxMzAzLDcgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCiAgCS8qIE8seDogbGlzdDsgLVQsLXQsLUEgdGFrZSBudW1lcmljIHBhcmFtICovCi0gCW9wdF9jb21wbGVtZW50YXJ5ID0gIk86Ong6OlQrOnQrOkErIiBJRl9VREhDUF9WRVJCT1NFKCI6dnYiKSA7CisgCUlGX1VESENQX1ZFUkJPU0Uob3B0X2NvbXBsZW1lbnRhcnkgPSAidnYiOykKICAJSUZfTE9OR19PUFRTKGFwcGxldF9sb25nX29wdGlvbnMgPSB1ZGhjcGNfbG9uZ29wdHM7KQotLQlvcHQgPSBnZXRvcHQzMihhcmd2LCAiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOnQ6U0E6TzpveDpmQiIKLSsJb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDp0OlNBOk86b3g6ZkJEIgorLQlvcHQgPSBnZXRvcHQzMihhcmd2LCAiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCIgorKwlvcHQgPSBnZXRvcHQzMihhcmd2LCAiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCRCIKICAJCVVTRV9GT1JfTU1VKCJiIikKLSAJCUlGX0ZFQVRVUkVfVURIQ1BDX0FSUElORygiYSIpCisgCQlJRl9GRUFUVVJFX1VESENQQ19BUlBJTkcoImE6OiIpCiAgCQlJRl9GRUFUVVJFX1VESENQX1BPUlQoIlA6IikKLUBAIC0xMzE2LDYgKzEzMjIsOSBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCitAQCAtMTQwOSw2ICsxNDE0LDEwIEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkJbG9nbW9kZSB8PSBMT0dNT0RFX1NZU0xPRzsKICAJfQogIAotKwlpZiAob3B0ICYgT1BUX0QpCisrCWlmIChvcHQgJiBPUFRfRCkgewogKwkJYWxsb3dfZGVjb25maWcgPSAwOworKwl9CiArCiAgCS8qIE1ha2Ugc3VyZSBmZCAwLDEsMiBhcmUgb3BlbiAqLwogIAliYl9zYW5pdGl6ZV9zdGRpbygpOwogIAkvKiBFcXVpdmFsZW50IG9mIGRvaW5nIGEgZmZsdXNoIGFmdGVyIGV2ZXJ5IFxuICovCi1AQCAtMTMzMCw3ICsxMzM5LDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworQEAgLTE0MjMsNyArMTQzMiw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAlzcmFuZChtb25vdG9uaWNfdXMoKSk7CiAgCiAgCXN0YXRlID0gSU5JVF9TRUxFQ1RJTkc7CkBAIC0xMDUsMTcgKzEwNSwxNyBAQAogIAljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX1JBVyk7CiAgCXBhY2tldF9udW0gPSAwOwogIAl0aW1lb3V0ID0gMDsKLUBAIC0xNDg0LDcgKzE0OTQsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCitAQCAtMTU3Nyw3ICsxNTg3LDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCiAgCQkJCX0KICAJCQkJLyogVGltZWQgb3V0LCBlbnRlciBpbml0IHN0YXRlICovCi0gCQkJCWJiX2luZm9fbXNnKCJMZWFzZSBsb3N0LCBlbnRlcmluZyBpbml0IHN0YXRlIik7CisgCQkJCWJiX2Vycm9yX21zZygibGVhc2UgbG9zdCwgZW50ZXJpbmcgaW5pdCBzdGF0ZSIpOwogLQkJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOwogKwkJCQlpZiAoYWxsb3dfZGVjb25maWcpCiArCQkJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOwogIAkJCQlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwogIAkJCQljbGllbnRfY29uZmlnLmZpcnN0X3NlY3MgPSAwOyAvKiBtYWtlIHNlY3MgZmllbGQgY291bnQgZnJvbSAwICovCiAgCQkJCS8qdGltZW91dCA9IDA7IC0gYWxyZWFkeSBpcyAqLwotQEAgLTE2NjcsNyArMTY3OCw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGMKK0BAIC0xNzcwLDcgKzE3ODEsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKICAJCQkJCQlzZW5kX2RlY2xpbmUoLyp4aWQsKi8gc2VydmVyX2FkZHIsIHBhY2tldC55aWFkZHIpOwogIAogIAkJCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQpAQCAtMTI1LDggKzEyNSw4IEBACiAgCQkJCQkJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwogIAkJCQkJCXN0YXRlID0gSU5JVF9TRUxFQ1RJTkc7CiAgCQkJCQkJY2xpZW50X2NvbmZpZy5maXJzdF9zZWNzID0gMDsgLyogbWFrZSBzZWNzIGZpZWxkIGNvdW50IGZyb20gMCAqLwotQEAgLTE3MTEsNyArMTcyMyw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGMKLSAJCQkJYmJfaW5mb19tc2coIlJlY2VpdmVkIERIQ1AgTkFLIik7CitAQCAtMTg0MCw3ICsxODUyLDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCisgCQkJCWJiX2Vycm9yX21zZygicmVjZWl2ZWQgJXMiLCAiREhDUCBOQUsiKTsKICAJCQkJdWRoY3BfcnVuX3NjcmlwdCgmcGFja2V0LCAibmFrIik7CiAgCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQogLQkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9jb21taXQtYXBwbGV0X3RhYmxlcy1maXgtY29tbWl0LTBkZGRiYzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmODBhMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9jb21taXQtYXBwbGV0X3RhYmxlcy1maXgtY29tbWl0LTBkZGRiYzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVBhdGNoIGFkZHJlc3NpbmcgYSBwYXJhbGxlbCBtYWtlIHJhY2UgaW4gQnVzeWJveAotCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTBkZGRiYzFhNTk3OTVhNzc2NzlkOGM1ZWY0OGEyNzk1Y2I0NzA1NjMKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotRnJvbSAwZGRkYmMxYTU5Nzk1YTc3Njc5ZDhjNWVmNDhhMjc5NWNiNDcwNTYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjMgQXVnIDIwMTYgMjA6MjE6MzYgKzAyMDAKLVN1YmplY3Q6IGJ1aWxkIHN5c3RlbTogYWx3YXlzIHJld3JpdGUgTlVNX0FQUExFVFMuaAotCi1Db25kaXRpb25hbCByZXdyaXRlIGNhbiBrZWVwIE5VTV9BUFBMRVRTLmggbXRpbWUgb2xkLAotdGhpcyBjYXVzZXMgbWFrZSB0byB0cnkgdG8gcmVnZW5lcmF0ZSBpdCBhdCBldmVyeSBpbnZvY2F0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMgYi9hcHBsZXRzL2FwcGxldF90YWJsZXMuYwotaW5kZXggODQwMWExNS4uZWY5MTFhNCAxMDA2NDQKLS0tLSBhL2FwcGxldHMvYXBwbGV0X3RhYmxlcy5jCi0rKysgYi9hcHBsZXRzL2FwcGxldF90YWJsZXMuYwotQEAgLTE5MiwyNyArMTkyLDI4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJcHJpbnRmKCJ9O1xuIik7Ci0gI2VuZGlmCi0gCS8vcHJpbnRmKCIjZW5kaWYgLyogU0tJUF9kZWZpbml0aW9ucyAqL1xuIik7Ci0rCi0gLy8JcHJpbnRmKCJcbiIpOwotIC8vCXByaW50ZigiI2RlZmluZSBNQVhfQVBQTEVUX05BTUVfTEVOICV1XG4iLCBNQVhfQVBQTEVUX05BTUVfTEVOKTsKLSAKLSAJaWYgKGFyZ3ZbMl0pIHsKLS0JCWNoYXIgbGluZV9vbGRbODBdOwotLQkJY2hhciBsaW5lX25ld1s4MF07Ci0gCQlGSUxFICpmcDsKLSsJCWNoYXIgbGluZV9uZXdbODBdOwotKy8vCQljaGFyIGxpbmVfb2xkWzgwXTsKLSAKLS0JCWxpbmVfb2xkWzBdID0gMDsKLS0JCWZwID0gZm9wZW4oYXJndlsyXSwgInIiKTsKLS0JCWlmIChmcCkgewotLQkJCWZnZXRzKGxpbmVfb2xkLCBzaXplb2YobGluZV9vbGQpLCBmcCk7Ci0tCQkJZmNsb3NlKGZwKTsKLS0JCX0KLSAJCXNwcmludGYobGluZV9uZXcsICIjZGVmaW5lIE5VTV9BUFBMRVRTICV1XG4iLCBOVU1fQVBQTEVUUyk7Ci0tCQlpZiAoc3RyY21wKGxpbmVfb2xkLCBsaW5lX25ldykgIT0gMCkgewotKy8vCQlsaW5lX29sZFswXSA9IDA7Ci0rLy8JCWZwID0gZm9wZW4oYXJndlsyXSwgInIiKTsKLSsvLwkJaWYgKGZwKSB7Ci0rLy8JCQlmZ2V0cyhsaW5lX29sZCwgc2l6ZW9mKGxpbmVfb2xkKSwgZnApOwotKy8vCQkJZmNsb3NlKGZwKTsKLSsvLwkJfQotKy8vCQlpZiAoc3RyY21wKGxpbmVfb2xkLCBsaW5lX25ldykgIT0gMCkgewotIAkJCWZwID0gZm9wZW4oYXJndlsyXSwgInciKTsKLSAJCQlpZiAoIWZwKQotIAkJCQlyZXR1cm4gMTsKLSAJCQlmcHV0cyhsaW5lX25ldywgZnApOwotLQkJfQotKy8vCQl9Ci0gCX0KLSAKLSAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCmluZGV4IGNjNjhiZWEuLmZiYjVmZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCkBAIC0xLDQzICsxLDI1IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIEJ1c3lib3ggdmVyc2lvbjogMS4yNC4xCi0jIFR1ZSBPY3QgMzEgMTE6MDA6MDAgMjAxNQorIyBCdXN5Ym94IHZlcnNpb246IDEuMjcuMgorIyBXZWQgU2VwIDI3IDA4OjU2OjEzIDIwMTcKICMKIENPTkZJR19IQVZFX0RPVF9DT05GSUc9eQogCiAjCiAjIEJ1c3lib3ggU2V0dGluZ3MKICMKLQotIwotIyBHZW5lcmFsIENvbmZpZ3VyYXRpb24KLSMKICMgQ09ORklHX0RFU0tUT1AgaXMgbm90IHNldAogIyBDT05GSUdfRVhUUkFfQ09NUEFUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFRE9SQV9DT01QQVQgaXMgbm90IHNldAogIyBDT05GSUdfSU5DTFVERV9TVVN2MiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0VfUE9SVEFCTEVfQ09ERSBpcyBub3Qgc2V0Ci1DT05GSUdfUExBVEZPUk1fTElOVVg9eQotQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19VU0VfTUFMTE9DPXkKLSMgQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19HT19PTl9TVEFDSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0JVRkZFUlNfR09fSU5fQlNTIGlzIG5vdCBzZXQKIENPTkZJR19TSE9XX1VTQUdFPXkKICMgQ09ORklHX0ZFQVRVUkVfVkVSQk9TRV9VU0FHRSBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9DT01QUkVTU19VU0FHRT15CitDT05GSUdfQlVTWUJPWD15CiAjIENPTkZJR19GRUFUVVJFX0lOU1RBTExFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19JTlNUQUxMX05PX1VTUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19MT0NBTEVfU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX1NVUFBPUlQgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9VU0lOR19MT0NBTEUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9DSEVDS19VTklDT0RFX0lOX0VOViBpcyBub3Qgc2V0Ci1DT05GSUdfU1VCU1RfV0NIQVI9MAotQ09ORklHX0xBU1RfU1VQUE9SVEVEX1dDSEFSPTAKLSMgQ09ORklHX1VOSUNPREVfQ09NQklOSU5HX1dDSEFSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX1dJREVfV0NIQVJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VOSUNPREVfQklESV9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VOSUNPREVfTkVVVFJBTF9UQUJMRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX1BSRVNFUlZFX0JST0tFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19QQU0gaXMgbm90IHNldAotQ09ORklHX0ZFQVRVUkVfVVNFX1NFTkRGSUxFPXkKIENPTkZJR19MT05HX09QVFM9eQogQ09ORklHX0ZFQVRVUkVfREVWUFRTPXkKICMgQ09ORklHX0ZFQVRVUkVfQ0xFQU5fVVAgaXMgbm90IHNldApAQCAtNTMsNiArMzUsNyBAQAogQ09ORklHX0JVU1lCT1hfRVhFQ19QQVRIPSIvcHJvYy9zZWxmL2V4ZSIKIENPTkZJR19GRUFUVVJFX1NZU0xPRz15CiAjIENPTkZJR19GRUFUVVJFX0hBVkVfUlBDIGlzIG5vdCBzZXQKK0NPTkZJR19QTEFURk9STV9MSU5VWD15CiAKICMKICMgQnVpbGQgT3B0aW9ucwpAQCAtNzEsMTcgKzU0LDYgQEAKIENPTkZJR19FWFRSQV9MRExJQlM9IiIKIAogIwotIyBEZWJ1Z2dpbmcgT3B0aW9ucwotIwotIyBDT05GSUdfREVCVUcgaXMgbm90IHNldAotIyBDT05GSUdfREVCVUdfUEVTU0lNSVpFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VOSVRfVEVTVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XRVJST1IgaXMgbm90IHNldAotQ09ORklHX05PX0RFQlVHX0xJQj15Ci0jIENPTkZJR19ETUFMTE9DIGlzIG5vdCBzZXQKLSMgQ09ORklHX0VGRU5DRSBpcyBub3Qgc2V0Ci0KLSMKICMgSW5zdGFsbGF0aW9uIE9wdGlvbnMgKCJtYWtlIGluc3RhbGwiIGJlaGF2aW9yKQogIwogQ09ORklHX0lOU1RBTExfQVBQTEVUX1NZTUxJTktTPXkKQEAgLTk0LDE2ICs2NiwzMCBAQAogQ09ORklHX1BSRUZJWD0iLi9faW5zdGFsbCIKIAogIworIyBEZWJ1Z2dpbmcgT3B0aW9ucworIworIyBDT05GSUdfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfUEVTU0lNSVpFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NBTklUSVpFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSVRfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19XRVJST1IgaXMgbm90IHNldAorQ09ORklHX05PX0RFQlVHX0xJQj15CisjIENPTkZJR19ETUFMTE9DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGRU5DRSBpcyBub3Qgc2V0CisKKyMKICMgQnVzeWJveCBMaWJyYXJ5IFR1bmluZwogIwotQ09ORklHX0ZFQVRVUkVfU1lTVEVNRD15CisjIENPTkZJR19GRUFUVVJFX1VTRV9CU1NfVEFJTCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9SVE1JTk1BWD15CitDT05GSUdfRkVBVFVSRV9CVUZGRVJTX1VTRV9NQUxMT0M9eQorIyBDT05GSUdfRkVBVFVSRV9CVUZGRVJTX0dPX09OX1NUQUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19HT19JTl9CU1MgaXMgbm90IHNldAogQ09ORklHX1BBU1NXT1JEX01JTkxFTj02CiBDT05GSUdfTUQ1X1NNQUxMPTEKIENPTkZJR19TSEEzX1NNQUxMPTEKIENPTkZJR19GRUFUVVJFX0ZBU1RfVE9QPXkKICMgQ09ORklHX0ZFQVRVUkVfRVRDX05FVFdPUktTIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX1VTRV9URVJNSU9TPXkKIENPTkZJR19GRUFUVVJFX0VESVRJTkc9eQogQ09ORklHX0ZFQVRVUkVfRURJVElOR19NQVhfTEVOPTEwMjQKICMgQ09ORklHX0ZFQVRVUkVfRURJVElOR19WSSBpcyBub3Qgc2V0CkBAIC0xMTUsOCArMTAxLDIwIEBACiBDT05GSUdfRkVBVFVSRV9VU0VSTkFNRV9DT01QTEVUSU9OPXkKIENPTkZJR19GRUFUVVJFX0VESVRJTkdfRkFOQ1lfUFJPTVBUPXkKICMgQ09ORklHX0ZFQVRVUkVfRURJVElOR19BU0tfVEVSTUlOQUwgaXMgbm90IHNldAorIyBDT05GSUdfTE9DQUxFX1NVUFBPUlQgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9TVVBQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfVVNJTkdfTE9DQUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfVU5JQ09ERV9JTl9FTlYgaXMgbm90IHNldAorQ09ORklHX1NVQlNUX1dDSEFSPTAKK0NPTkZJR19MQVNUX1NVUFBPUlRFRF9XQ0hBUj0wCisjIENPTkZJR19VTklDT0RFX0NPTUJJTklOR19XQ0hBUlMgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9XSURFX1dDSEFSUyBpcyBub3Qgc2V0CisjIENPTkZJR19VTklDT0RFX0JJRElfU1VQUE9SVCBpcyBub3Qgc2V0CisjIENPTkZJR19VTklDT0RFX05FVVRSQUxfVEFCTEUgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9QUkVTRVJWRV9CUk9LRU4gaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfTk9OX1BPU0lYX0NQPXkKICMgQ09ORklHX0ZFQVRVUkVfVkVSQk9TRV9DUF9NRVNTQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX1VTRV9TRU5ERklMRT15CiBDT05GSUdfRkVBVFVSRV9DT1BZQlVGX0tCPTQKIENPTkZJR19GRUFUVVJFX1NLSVBfUk9PVEZTPXkKIENPTkZJR19NT05PVE9OSUNfU1lTQ0FMTD15CkBAIC0xNDAsNzYgKzEzOCw1OSBAQAogIyBDT05GSUdfRkVBVFVSRV9BUl9DUkVBVEUgaXMgbm90IHNldAogIyBDT05GSUdfVU5DT01QUkVTUyBpcyBub3Qgc2V0CiBDT05GSUdfR1VOWklQPXkKK0NPTkZJR19aQ0FUPXkKK0NPTkZJR19GRUFUVVJFX0dVTlpJUF9MT05HX09QVElPTlM9eQogQ09ORklHX0JVTlpJUDI9eQorQ09ORklHX0JaQ0FUPXkKICMgQ09ORklHX1VOTFpNQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0xaTUFfRkFTVCBpcyBub3Qgc2V0CitDT05GSUdfTFpDQVQ9eQogIyBDT05GSUdfTFpNQSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0xaTUFfRkFTVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VTlhaIGlzIG5vdCBzZXQKK0NPTkZJR19YWkNBVD15CiAjIENPTkZJR19YWiBpcyBub3Qgc2V0CiAjIENPTkZJR19CWklQMiBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9CWklQMl9ERUNPTVBSRVNTPXkKIENPTkZJR19DUElPPXkKICMgQ09ORklHX0ZFQVRVUkVfQ1BJT19PIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ1BJT19QIGlzIG5vdCBzZXQKICMgQ09ORklHX0RQS0cgaXMgbm90IHNldAogIyBDT05GSUdfRFBLR19ERUIgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9EUEtHX0RFQl9FWFRSQUNUX09OTFkgaXMgbm90IHNldAogQ09ORklHX0daSVA9eQogIyBDT05GSUdfRkVBVFVSRV9HWklQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfR1pJUF9GQVNUPTAKICMgQ09ORklHX0ZFQVRVUkVfR1pJUF9MRVZFTFMgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfR1pJUF9ERUNPTVBSRVNTPXkKICMgQ09ORklHX0xaT1AgaXMgbm90IHNldAorIyBDT05GSUdfVU5MWk9QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xaT1BDQVQgaXMgbm90IHNldAogIyBDT05GSUdfTFpPUF9DT01QUl9ISUdIIGlzIG5vdCBzZXQKICMgQ09ORklHX1JQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19SUE0yQ1BJTyBpcyBub3Qgc2V0CiBDT05GSUdfVEFSPXkKKyMgQ09ORklHX0ZFQVRVUkVfVEFSX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9UQVJfQ1JFQVRFPXkKIENPTkZJR19GRUFUVVJFX1RBUl9BVVRPREVURUNUPXkKIENPTkZJR19GRUFUVVJFX1RBUl9GUk9NPXkKIENPTkZJR19GRUFUVVJFX1RBUl9PTERHTlVfQ09NUEFUSUJJTElUWT15CiAjIENPTkZJR19GRUFUVVJFX1RBUl9PTERTVU5fQ09NUEFUSUJJTElUWSBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9UQVJfR05VX0VYVEVOU0lPTlM9eQotIyBDT05GSUdfRkVBVFVSRV9UQVJfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEFSX1RPX0NPTU1BTkQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9UQVJfVU5BTUVfR05BTUUgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVEFSX05PUFJFU0VSVkVfVElNRT15CiAjIENPTkZJR19GRUFUVVJFX1RBUl9TRUxJTlVYIGlzIG5vdCBzZXQKIENPTkZJR19VTlpJUD15CitDT05GSUdfRkVBVFVSRV9VTlpJUF9DREY9eQorIyBDT05GSUdfRkVBVFVSRV9VTlpJUF9CWklQMiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VOWklQX0xaTUEgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VTlpJUF9YWiBpcyBub3Qgc2V0CiAKICMKICMgQ29yZXV0aWxzCiAjCiBDT05GSUdfQkFTRU5BTUU9eQogQ09ORklHX0NBVD15Ci1DT05GSUdfREFURT15Ci0jIENPTkZJR19GRUFUVVJFX0RBVEVfSVNPRk1UIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfREFURV9OQU5PIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX0RBVEVfQ09NUEFUPXkKLUNPTkZJR19ERD15Ci1DT05GSUdfRkVBVFVSRV9ERF9TSUdOQUxfSEFORExJTkc9eQotIyBDT05GSUdfRkVBVFVSRV9ERF9USElSRF9TVEFUVVNfTElORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0REX0lCU19PQlMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9ERF9TVEFUVVMgaXMgbm90IHNldAotIyBDT05GSUdfSE9TVElEIGlzIG5vdCBzZXQKLUNPTkZJR19JRD15Ci1DT05GSUdfR1JPVVBTPXkKLUNPTkZJR19TSFVGPXkKLUNPTkZJR19TWU5DPXkKLSMgQ09ORklHX0ZFQVRVUkVfU1lOQ19GQU5DWSBpcyBub3Qgc2V0Ci1DT05GSUdfVEVTVD15Ci1DT05GSUdfRkVBVFVSRV9URVNUXzY0PXkKLUNPTkZJR19UT1VDSD15Ci1DT05GSUdfRkVBVFVSRV9UT1VDSF9OT0RFUkVGPXkKLUNPTkZJR19GRUFUVVJFX1RPVUNIX1NVU1YzPXkKLUNPTkZJR19UUj15Ci1DT05GSUdfRkVBVFVSRV9UUl9DTEFTU0VTPXkKLSMgQ09ORklHX0ZFQVRVUkVfVFJfRVFVSVYgaXMgbm90IHNldAotIyBDT05GSUdfVFJVTkNBVEUgaXMgbm90IHNldAotQ09ORklHX1VOTElOSz15Ci0jIENPTkZJR19CQVNFNjQgaXMgbm90IHNldAotQ09ORklHX1dITz15Ci1DT05GSUdfVVNFUlM9eQotIyBDT05GSUdfQ0FMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NBVFYgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9DQVRWIGlzIG5vdCBzZXQKIENPTkZJR19DSEdSUD15CiBDT05GSUdfQ0hNT0Q9eQogQ09ORklHX0NIT1dOPXkKQEAgLTIyMCw2ICsyMDEsMTUgQEAKIENPTkZJR19DUD15CiAjIENPTkZJR19GRUFUVVJFX0NQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfQ1VUPXkKK0NPTkZJR19EQVRFPXkKKyMgQ09ORklHX0ZFQVRVUkVfREFURV9JU09GTVQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9EQVRFX05BTk8gaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfREFURV9DT01QQVQ9eQorQ09ORklHX0REPXkKK0NPTkZJR19GRUFUVVJFX0REX1NJR05BTF9IQU5ETElORz15CisjIENPTkZJR19GRUFUVVJFX0REX1RISVJEX1NUQVRVU19MSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRERfSUJTX09CUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0REX1NUQVRVUyBpcyBub3Qgc2V0CiBDT05GSUdfREY9eQogIyBDT05GSUdfRkVBVFVSRV9ERl9GQU5DWSBpcyBub3Qgc2V0CiBDT05GSUdfRElSTkFNRT15CkBAIC0yMzMsMzYgKzIyMyw1NyBAQAogQ09ORklHX0ZFQVRVUkVfRU5WX0xPTkdfT1BUSU9OUz15CiAjIENPTkZJR19FWFBBTkQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9FWFBBTkRfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VORVhQQU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVU5FWFBBTkRfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKIENPTkZJR19FWFBSPXkKIENPTkZJR19FWFBSX01BVEhfU1VQUE9SVF82ND15CisjIENPTkZJR19GQUNUT1IgaXMgbm90IHNldAogQ09ORklHX0ZBTFNFPXkKICMgQ09ORklHX0ZPTEQgaXMgbm90IHNldAogIyBDT05GSUdfRlNZTkMgaXMgbm90IHNldAogQ09ORklHX0hFQUQ9eQogIyBDT05GSUdfRkVBVFVSRV9GQU5DWV9IRUFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hPU1RJRCBpcyBub3Qgc2V0CitDT05GSUdfSUQ9eQorQ09ORklHX0dST1VQUz15CiAjIENPTkZJR19JTlNUQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TVEFMTF9MT05HX09QVElPTlMgaXMgbm90IHNldAorIyBDT05GSUdfTElOSyBpcyBub3Qgc2V0CiBDT05GSUdfTE49eQogQ09ORklHX0xPR05BTUU9eQogQ09ORklHX0xTPXkKIENPTkZJR19GRUFUVVJFX0xTX0ZJTEVUWVBFUz15CiBDT05GSUdfRkVBVFVSRV9MU19GT0xMT1dMSU5LUz15CiBDT05GSUdfRkVBVFVSRV9MU19SRUNVUlNJVkU9eQorQ09ORklHX0ZFQVRVUkVfTFNfV0lEVEg9eQogQ09ORklHX0ZFQVRVUkVfTFNfU09SVEZJTEVTPXkKIENPTkZJR19GRUFUVVJFX0xTX1RJTUVTVEFNUFM9eQogQ09ORklHX0ZFQVRVUkVfTFNfVVNFUk5BTUU9eQogQ09ORklHX0ZFQVRVUkVfTFNfQ09MT1I9eQogIyBDT05GSUdfRkVBVFVSRV9MU19DT0xPUl9JU19ERUZBVUxUIGlzIG5vdCBzZXQKIENPTkZJR19NRDVTVU09eQorIyBDT05GSUdfU0hBMVNVTSBpcyBub3Qgc2V0CisjIENPTkZJR19TSEEyNTZTVU0gaXMgbm90IHNldAorIyBDT05GSUdfU0hBNTEyU1VNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQTNTVU0gaXMgbm90IHNldAorCisjCisjIENvbW1vbiBvcHRpb25zIGZvciBtZDVzdW0sIHNoYTFzdW0sIHNoYTI1NnN1bSwgc2hhNTEyc3VtLCBzaGEzc3VtCisjCitDT05GSUdfRkVBVFVSRV9NRDVfU0hBMV9TVU1fQ0hFQ0s9eQogQ09ORklHX01LRElSPXkKIENPTkZJR19GRUFUVVJFX01LRElSX0xPTkdfT1BUSU9OUz15CiBDT05GSUdfTUtGSUZPPXkKIENPTkZJR19NS05PRD15CitDT05GSUdfTUtURU1QPXkKIENPTkZJR19NVj15CiAjIENPTkZJR19GRUFUVVJFX01WX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19OSUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MIGlzIG5vdCBzZXQKIENPTkZJR19OT0hVUD15CitDT05GSUdfTlBST0M9eQogQ09ORklHX09EPXkKKyMgQ09ORklHX1BBU1RFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BSSU5URU5WIGlzIG5vdCBzZXQKIENPTkZJR19QUklOVEY9eQogQ09ORklHX1BXRD15CkBAIC0yNzMsMTAgKzI4NCw4IEBACiBDT05GSUdfUk1ESVI9eQogIyBDT05GSUdfRkVBVFVSRV9STURJUl9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX1NFUT15Ci0jIENPTkZJR19TSEExU1VNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQTI1NlNVTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEE1MTJTVU0gaXMgbm90IHNldAotIyBDT05GSUdfU0hBM1NVTSBpcyBub3Qgc2V0CisjIENPTkZJR19TSFJFRCBpcyBub3Qgc2V0CitDT05GSUdfU0hVRj15CiBDT05GSUdfU0xFRVA9eQogQ09ORklHX0ZFQVRVUkVfRkFOQ1lfU0xFRVA9eQogQ09ORklHX0ZFQVRVUkVfRkxPQVRfU0xFRVA9eQpAQCAtMjg2LDI1ICsyOTUsNDMgQEAKICMgQ09ORklHX0ZFQVRVUkVfU1BMSVRfRkFOQ1kgaXMgbm90IHNldAogQ09ORklHX1NUQVQ9eQogQ09ORklHX0ZFQVRVUkVfU1RBVF9GT1JNQVQ9eQorQ09ORklHX0ZFQVRVUkVfU1RBVF9GSUxFU1lTVEVNPXkKIENPTkZJR19TVFRZPXkKICMgQ09ORklHX1NVTSBpcyBub3Qgc2V0CitDT05GSUdfU1lOQz15CisjIENPTkZJR19GRUFUVVJFX1NZTkNfRkFOQ1kgaXMgbm90IHNldAogIyBDT05GSUdfVEFDIGlzIG5vdCBzZXQKIENPTkZJR19UQUlMPXkKIENPTkZJR19GRUFUVVJFX0ZBTkNZX1RBSUw9eQogQ09ORklHX1RFRT15CiAjIENPTkZJR19GRUFUVVJFX1RFRV9VU0VfQkxPQ0tfSU8gaXMgbm90IHNldAorQ09ORklHX1RFU1Q9eQorQ09ORklHX1RFU1QxPXkKK0NPTkZJR19URVNUMj15CitDT05GSUdfRkVBVFVSRV9URVNUXzY0PXkKKyMgQ09ORklHX1RJTUVPVVQgaXMgbm90IHNldAorQ09ORklHX1RPVUNIPXkKK0NPTkZJR19GRUFUVVJFX1RPVUNIX05PREVSRUY9eQorQ09ORklHX0ZFQVRVUkVfVE9VQ0hfU1VTVjM9eQorQ09ORklHX1RSPXkKK0NPTkZJR19GRUFUVVJFX1RSX0NMQVNTRVM9eQorIyBDT05GSUdfRkVBVFVSRV9UUl9FUVVJViBpcyBub3Qgc2V0CiBDT05GSUdfVFJVRT15CisjIENPTkZJR19UUlVOQ0FURSBpcyBub3Qgc2V0CiBDT05GSUdfVFRZPXkKIENPTkZJR19VTkFNRT15CiBDT05GSUdfVU5BTUVfT1NOQU1FPSJHTlUvTGludXgiCi0jIENPTkZJR19VTkVYUEFORCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1VORVhQQU5EX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfVU5JUT15CitDT05GSUdfVU5MSU5LPXkKIENPTkZJR19VU0xFRVA9eQogIyBDT05GSUdfVVVERUNPREUgaXMgbm90IHNldAorIyBDT05GSUdfQkFTRTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX1VVRU5DT0RFIGlzIG5vdCBzZXQKIENPTkZJR19XQz15CiAjIENPTkZJR19GRUFUVVJFX1dDX0xBUkdFIGlzIG5vdCBzZXQKK0NPTkZJR19XSE89eQorIyBDT05GSUdfVyBpcyBub3Qgc2V0CitDT05GSUdfVVNFUlM9eQogQ09ORklHX1dIT0FNST15CiBDT05GSUdfWUVTPXkKIApAQCAtMzE5LDMwICszNDYsMjkgQEAKICMgQ09ORklHX0ZFQVRVUkVfUFJFU0VSVkVfSEFSRExJTktTIGlzIG5vdCBzZXQKIAogIwotIyBDb21tb24gb3B0aW9ucyBmb3IgbHMsIG1vcmUgYW5kIHRlbG5ldAotIwotQ09ORklHX0ZFQVRVUkVfQVVUT1dJRFRIPXkKLQotIwogIyBDb21tb24gb3B0aW9ucyBmb3IgZGYsIGR1LCBscwogIwogQ09ORklHX0ZFQVRVUkVfSFVNQU5fUkVBREFCTEU9eQogCiAjCi0jIENvbW1vbiBvcHRpb25zIGZvciBtZDVzdW0sIHNoYTFzdW0sIHNoYTI1NnN1bSwgc2hhNTEyc3VtLCBzaGEzc3VtCi0jCi1DT05GSUdfRkVBVFVSRV9NRDVfU0hBMV9TVU1fQ0hFQ0s9eQotCi0jCiAjIENvbnNvbGUgVXRpbGl0aWVzCiAjCiBDT05GSUdfQ0hWVD15Ci0jIENPTkZJR19GR0NPTlNPTEUgaXMgbm90IHNldAogQ09ORklHX0NMRUFSPXkKIENPTkZJR19ERUFMTE9DVlQ9eQogQ09ORklHX0RVTVBLTUFQPXkKKyMgQ09ORklHX0ZHQ09OU09MRSBpcyBub3Qgc2V0CiAjIENPTkZJR19LQkRfTU9ERSBpcyBub3Qgc2V0CiBDT05GSUdfTE9BREZPTlQ9eQorIyBDT05GSUdfU0VURk9OVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1NFVEZPTlRfVEVYVFVBTF9NQVAgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfU0VURk9OVF9ESVI9IiIKKworIworIyBDb21tb24gb3B0aW9ucyBmb3IgbG9hZGZvbnQgYW5kIHNldGZvbnQKKyMKKyMgQ09ORklHX0ZFQVRVUkVfTE9BREZPTlRfUFNGMiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0xPQURGT05UX1JBVyBpcyBub3Qgc2V0CiBDT05GSUdfTE9BREtNQVA9eQogQ09ORklHX09QRU5WVD15CiBDT05GSUdfUkVTRVQ9eQpAQCAtMzUwLDMwICszNzYsMjAgQEAKICMgQ09ORklHX0ZFQVRVUkVfUkVTSVpFX1BSSU5UIGlzIG5vdCBzZXQKIENPTkZJR19TRVRDT05TT0xFPXkKICMgQ09ORklHX0ZFQVRVUkVfU0VUQ09OU09MRV9MT05HX09QVElPTlMgaXMgbm90IHNldAotIyBDT05GSUdfU0VURk9OVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NFVEZPTlRfVEVYVFVBTF9NQVAgaXMgbm90IHNldAotQ09ORklHX0RFRkFVTFRfU0VURk9OVF9ESVI9IiIKICMgQ09ORklHX1NFVEtFWUNPREVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVExPR0NPTlMgaXMgbm90IHNldAogIyBDT05GSUdfU0hPV0tFWSBpcyBub3Qgc2V0CiAKICMKLSMgQ29tbW9uIG9wdGlvbnMgZm9yIGxvYWRmb250IGFuZCBzZXRmb250Ci0jCi0jIENPTkZJR19GRUFUVVJFX0xPQURGT05UX1BTRjIgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MT0FERk9OVF9SQVcgaXMgbm90IHNldAotCi0jCiAjIERlYmlhbiBVdGlsaXRpZXMKICMKLUNPTkZJR19NS1RFTVA9eQogIyBDT05GSUdfUElQRV9QUk9HUkVTUyBpcyBub3Qgc2V0CiBDT05GSUdfUlVOX1BBUlRTPXkKIENPTkZJR19GRUFUVVJFX1JVTl9QQVJUU19MT05HX09QVElPTlM9eQogIyBDT05GSUdfRkVBVFVSRV9SVU5fUEFSVFNfRkFOQ1kgaXMgbm90IHNldAogQ09ORklHX1NUQVJUX1NUT1BfREFFTU9OPXkKLUNPTkZJR19GRUFUVVJFX1NUQVJUX1NUT1BfREFFTU9OX0ZBTkNZPXkKIENPTkZJR19GRUFUVVJFX1NUQVJUX1NUT1BfREFFTU9OX0xPTkdfT1BUSU9OUz15CitDT05GSUdfRkVBVFVSRV9TVEFSVF9TVE9QX0RBRU1PTl9GQU5DWT15CiBDT05GSUdfV0hJQ0g9eQogCiAjCkBAIC00MzYsOCArNDUyLDggQEAKICMgQ09ORklHX0ZFQVRVUkVfRklORF9DT05URVhUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRklORF9MSU5LUyBpcyBub3Qgc2V0CiBDT05GSUdfR1JFUD15Ci1DT05GSUdfRkVBVFVSRV9HUkVQX0VHUkVQX0FMSUFTPXkKLUNPTkZJR19GRUFUVVJFX0dSRVBfRkdSRVBfQUxJQVM9eQorQ09ORklHX0VHUkVQPXkKK0NPTkZJR19GR1JFUD15CiBDT05GSUdfRkVBVFVSRV9HUkVQX0NPTlRFWFQ9eQogQ09ORklHX1hBUkdTPXkKICMgQ09ORklHX0ZFQVRVUkVfWEFSR1NfU1VQUE9SVF9DT05GSVJNQVRJT04gaXMgbm90IHNldApAQCAtNDUzLDQwICs0NjksNDUgQEAKICMgQ09ORklHX0ZFQVRVUkVfQk9PVENIQVJURF9CTE9BVEVEX0hFQURFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0JPT1RDSEFSVERfQ09ORklHX0ZJTEUgaXMgbm90IHNldAogQ09ORklHX0hBTFQ9eQorQ09ORklHX1BPV0VST0ZGPXkKK0NPTkZJR19SRUJPT1Q9eQogIyBDT05GSUdfRkVBVFVSRV9DQUxMX1RFTElOSVQgaXMgbm90IHNldAogQ09ORklHX1RFTElOSVRfUEFUSD0iIgogIyBDT05GSUdfSU5JVCBpcyBub3Qgc2V0CisjIENPTkZJR19MSU5VWFJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVVNFX0lOSVRUQUIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9LSUxMX1JFTU9WRUQgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfS0lMTF9ERUxBWT0wCiAjIENPTkZJR19GRUFUVVJFX0lOSVRfU0NUVFkgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTklUX1NZU0xPRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0VYVFJBX1FVSUVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSU5JVF9RVUlFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOSVRfQ09SRURVTVBTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfSU5JVFJEIGlzIG5vdCBzZXQKIENPTkZJR19JTklUX1RFUk1JTkFMX1RZUEU9IiIKLUNPTkZJR19NRVNHPXkKLSMgQ09ORklHX0ZFQVRVUkVfTUVTR19FTkFCTEVfT05MWV9HUk9VUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lOSVRfTU9ESUZZX0NNRExJTkUgaXMgbm90IHNldAogCiAjCiAjIExvZ2luL1Bhc3N3b3JkIE1hbmFnZW1lbnQgVXRpbGl0aWVzCiAjCi0jIENPTkZJR19BRERfU0hFTEwgaXMgbm90IHNldAotIyBDT05GSUdfUkVNT1ZFX1NIRUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU0hBRE9XUEFTU1dEUyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0VfQkJfUFdEX0dSUCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0VfQkJfU0hBRE9XIGlzIG5vdCBzZXQKIENPTkZJR19VU0VfQkJfQ1JZUFQ9eQogIyBDT05GSUdfVVNFX0JCX0NSWVBUX1NIQSBpcyBub3Qgc2V0CisjIENPTkZJR19BRERfU0hFTEwgaXMgbm90IHNldAorIyBDT05GSUdfUkVNT1ZFX1NIRUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FEREdST1VQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQURER1JPVVBfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQUREVVNFUl9UT19HUk9VUCBpcyBub3Qgc2V0CiAjIENPTkZJR19BRERVU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQUREVVNFUl9MT05HX09QVElPTlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9DSEVDS19OQU1FUyBpcyBub3Qgc2V0CiBDT05GSUdfTEFTVF9JRD02MDAwMAogQ09ORklHX0ZJUlNUX1NZU1RFTV9JRD0xMDAKIENPTkZJR19MQVNUX1NZU1RFTV9JRD05OTkKLSMgQ09ORklHX0FEREdST1VQIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQURER1JPVVBfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQUREVVNFUl9UT19HUk9VUCBpcyBub3Qgc2V0CisjIENPTkZJR19DSFBBU1NXRCBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9ERUZBVUxUX1BBU1NXRF9BTEdPPSIiCisjIENPTkZJR19DUllQVFBXIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LUEFTU1dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFTFVTRVIgaXMgbm90IHNldAogIyBDT05GSUdfREVMR1JPVVAgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9ERUxfVVNFUl9GUk9NX0dST1VQIGlzIG5vdCBzZXQKQEAgLTQ5OCwxMiArNTE5LDEwIEBACiAjIENPTkZJR19GRUFUVVJFX1NFQ1VSRVRUWSBpcyBub3Qgc2V0CiAjIENPTkZJR19QQVNTV0QgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9QQVNTV0RfV0VBS19DSEVDSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVFBXIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NIUEFTU1dEIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX0RFRkFVTFRfUEFTU1dEX0FMR089IiIKICMgQ09ORklHX1NVIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU1VfU1lTTE9HIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU1VfQ0hFQ0tTX1NIRUxMUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1NVX0JMQU5LX1BXX05FRURTX1NFQ1VSRV9UVFkgaXMgbm90IHNldAogIyBDT05GSUdfU1VMT0dJTiBpcyBub3Qgc2V0CiAjIENPTkZJR19WTE9DSyBpcyBub3Qgc2V0CiAKQEAgLTUxOCwyOSArNTM3LDI5IEBACiAjCiAjIExpbnV4IE1vZHVsZSBVdGlsaXRpZXMKICMKLSMgQ09ORklHX01PRElORk8gaXMgbm90IHNldAogIyBDT05GSUdfTU9EUFJPQkVfU01BTEwgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9NT0RQUk9CRV9TTUFMTF9PUFRJT05TX09OX0NNRExJTkUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9NT0RQUk9CRV9TTUFMTF9DSEVDS19BTFJFQURZX0xPQURFRCBpcyBub3Qgc2V0CitDT05GSUdfREVQTU9EPXkKIENPTkZJR19JTlNNT0Q9eQotQ09ORklHX1JNTU9EPXkKIENPTkZJR19MU01PRD15CiAjIENPTkZJR19GRUFUVVJFX0xTTU9EX1BSRVRUWV8yXzZfT1VUUFVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX01PRElORk8gaXMgbm90IHNldAogQ09ORklHX01PRFBST0JFPXkKICMgQ09ORklHX0ZFQVRVUkVfTU9EUFJPQkVfQkxBQ0tMSVNUIGlzIG5vdCBzZXQKLUNPTkZJR19ERVBNT0Q9eQorQ09ORklHX1JNTU9EPXkKIAogIwogIyBPcHRpb25zIGNvbW1vbiB0byBtdWx0aXBsZSBtb2R1dGlscwogIworQ09ORklHX0ZFQVRVUkVfQ01ETElORV9NT0RVTEVfT1BUSU9OUz15CisjIENPTkZJR19GRUFUVVJFX01PRFBST0JFX1NNQUxMX0NIRUNLX0FMUkVBRFlfTE9BREVEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfMl80X01PRFVMRVMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfVFJZX01NQVAgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfVkVSU0lPTl9DSEVDS0lORyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOU01PRF9LU1lNT09QU19TWU1CT0xTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX0xPQURJTktNRU0gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfTE9BRF9NQVAgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfTE9BRF9NQVBfRlVMTCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9DSEVDS19UQUlOVEVEX01PRFVMRT15CisjIENPTkZJR19GRUFUVVJFX0lOU01PRF9UUllfTU1BUCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9NT0RVVElMU19BTElBUz15CiBDT05GSUdfRkVBVFVSRV9NT0RVVElMU19TWU1CT0xTPXkKIENPTkZJR19ERUZBVUxUX01PRFVMRVNfRElSPSIvbGliL21vZHVsZXMiCkBAIC01NDksMTUgKzU2OCw3MSBAQAogIwogIyBMaW51eCBTeXN0ZW0gVXRpbGl0aWVzCiAjCisjIENPTkZJR19BQ1BJRCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0FDUElEX0NPTVBBVCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtESVNDQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS0lEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQkxLSURfVFlQRSBpcyBub3Qgc2V0CiAjIENPTkZJR19CTE9DS0RFViBpcyBub3Qgc2V0CisjIENPTkZJR19DQUwgaXMgbm90IHNldAorQ09ORklHX0RNRVNHPXkKK0NPTkZJR19GRUFUVVJFX0RNRVNHX1BSRVRUWT15CisjIENPTkZJR19GQUxMT0NBVEUgaXMgbm90IHNldAogIyBDT05GSUdfRkFUQVRUUiBpcyBub3Qgc2V0CitDT05GSUdfRkJTRVQ9eQorQ09ORklHX0ZFQVRVUkVfRkJTRVRfRkFOQ1k9eQorQ09ORklHX0ZFQVRVUkVfRkJTRVRfUkVBRE1PREU9eQorIyBDT05GSUdfRkRGT1JNQVQgaXMgbm90IHNldAorQ09ORklHX0ZESVNLPXkKKyMgQ09ORklHX0ZESVNLX1NVUFBPUlRfTEFSR0VfRElTS1MgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfRkRJU0tfV1JJVEFCTEU9eQorIyBDT05GSUdfRkVBVFVSRV9BSVhfTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TR0lfTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TVU5fTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9PU0ZfTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9HUFRfTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9GRElTS19BRFZBTkNFRCBpcyBub3Qgc2V0CisjIENPTkZJR19GSU5ERlMgaXMgbm90IHNldAorQ09ORklHX0ZMT0NLPXkKKyMgQ09ORklHX0ZERkxVU0ggaXMgbm90IHNldAorIyBDT05GSUdfRlJFRVJBTURJU0sgaXMgbm90IHNldAorIyBDT05GSUdfRlNDS19NSU5JWCBpcyBub3Qgc2V0CisjIENPTkZJR19GU0ZSRUVaRSBpcyBub3Qgc2V0CiBDT05GSUdfRlNUUklNPXkKKyMgQ09ORklHX0dFVE9QVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0dFVE9QVF9MT05HIGlzIG5vdCBzZXQKK0NPTkZJR19IRVhEVU1QPXkKKyMgQ09ORklHX0ZFQVRVUkVfSEVYRFVNUF9SRVZFUlNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hYRCBpcyBub3Qgc2V0CitDT05GSUdfSFdDTE9DSz15CitDT05GSUdfRkVBVFVSRV9IV0NMT0NLX0xPTkdfT1BUSU9OUz15CitDT05GSUdfRkVBVFVSRV9IV0NMT0NLX0FESlRJTUVfRkhTPXkKKyMgQ09ORklHX0lQQ1JNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQQ1MgaXMgbm90IHNldAorIyBDT05GSUdfTEFTVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0xBU1RfRkFOQ1kgaXMgbm90IHNldAorQ09ORklHX0xPU0VUVVA9eQorIyBDT05GSUdfTFNQQ0kgaXMgbm90IHNldAorIyBDT05GSUdfTFNVU0IgaXMgbm90IHNldAogIyBDT05GSUdfTURFViBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfQ09ORiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfUkVOQU1FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTURFVl9SRU5BTUVfUkVHRVhQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTURFVl9FWEVDIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTURFVl9MT0FEX0ZJUk1XQVJFIGlzIG5vdCBzZXQKK0NPTkZJR19NRVNHPXkKKyMgQ09ORklHX0ZFQVRVUkVfTUVTR19FTkFCTEVfT05MWV9HUk9VUCBpcyBub3Qgc2V0CisjIENPTkZJR19NS0UyRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUtGU19FWFQyIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRlNfTUlOSVggaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9NSU5JWDIgaXMgbm90IHNldAorIyBDT05GSUdfTUtGU19SRUlTRVIgaXMgbm90IHNldAorIyBDT05GSUdfTUtET1NGUyBpcyBub3Qgc2V0CisjIENPTkZJR19NS0ZTX1ZGQVQgaXMgbm90IHNldAorQ09ORklHX01LU1dBUD15CisjIENPTkZJR19GRUFUVVJFX01LU1dBUF9VVUlEIGlzIG5vdCBzZXQKK0NPTkZJR19NT1JFPXkKIENPTkZJR19NT1VOVD15CiAjIENPTkZJR19GRUFUVVJFX01PVU5UX0ZBS0UgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9NT1VOVF9WRVJCT1NFIGlzIG5vdCBzZXQKQEAgLTU2OCw2NyArNjQzLDMzIEBACiBDT05GSUdfRkVBVFVSRV9NT1VOVF9GTEFHUz15CiBDT05GSUdfRkVBVFVSRV9NT1VOVF9GU1RBQj15CiAjIENPTkZJR19GRUFUVVJFX01PVU5UX09USEVSVEFCIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFViBpcyBub3Qgc2V0Ci0jIENPTkZJR19VRVZFTlQgaXMgbm90IHNldAotIyBDT05GSUdfQUNQSUQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9BQ1BJRF9DT01QQVQgaXMgbm90IHNldAotIyBDT05GSUdfQkxLSUQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9CTEtJRF9UWVBFIGlzIG5vdCBzZXQKLUNPTkZJR19ETUVTRz15Ci1DT05GSUdfRkVBVFVSRV9ETUVTR19QUkVUVFk9eQotQ09ORklHX0ZCU0VUPXkKLUNPTkZJR19GRUFUVVJFX0ZCU0VUX0ZBTkNZPXkKLUNPTkZJR19GRUFUVVJFX0ZCU0VUX1JFQURNT0RFPXkKLSMgQ09ORklHX0ZERkxVU0ggaXMgbm90IHNldAotIyBDT05GSUdfRkRGT1JNQVQgaXMgbm90IHNldAotQ09ORklHX0ZESVNLPXkKLUNPTkZJR19GRElTS19TVVBQT1JUX0xBUkdFX0RJU0tTPXkKLUNPTkZJR19GRUFUVVJFX0ZESVNLX1dSSVRBQkxFPXkKLSMgQ09ORklHX0ZFQVRVUkVfQUlYX0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfU0dJX0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfU1VOX0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfT1NGX0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfR1BUX0xBQkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRkRJU0tfQURWQU5DRUQgaXMgbm90IHNldAotIyBDT05GSUdfRklOREZTIGlzIG5vdCBzZXQKLUNPTkZJR19GTE9DSz15Ci0jIENPTkZJR19GUkVFUkFNRElTSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GU0NLX01JTklYIGlzIG5vdCBzZXQKLSMgQ09ORklHX01LRlNfRVhUMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX01JTklYIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTUlOSVgyIGlzIG5vdCBzZXQKLSMgQ09ORklHX01LRlNfUkVJU0VSIGlzIG5vdCBzZXQKLSMgQ09ORklHX01LRlNfVkZBVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19HRVRPUFQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9HRVRPUFRfTE9ORyBpcyBub3Qgc2V0Ci1DT05GSUdfSEVYRFVNUD15Ci0jIENPTkZJR19GRUFUVVJFX0hFWERVTVBfUkVWRVJTRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19IRCBpcyBub3Qgc2V0Ci1DT05GSUdfSFdDTE9DSz15Ci1DT05GSUdfRkVBVFVSRV9IV0NMT0NLX0xPTkdfT1BUSU9OUz15Ci1DT05GSUdfRkVBVFVSRV9IV0NMT0NLX0FESlRJTUVfRkhTPXkKLSMgQ09ORklHX0lQQ1JNIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQQ1MgaXMgbm90IHNldAotQ09ORklHX0xPU0VUVVA9eQotIyBDT05GSUdfTFNQQ0kgaXMgbm90IHNldAotIyBDT05GSUdfTFNVU0IgaXMgbm90IHNldAotQ09ORklHX01LU1dBUD15Ci0jIENPTkZJR19GRUFUVVJFX01LU1dBUF9VVUlEIGlzIG5vdCBzZXQKLUNPTkZJR19NT1JFPXkKKyMgQ09ORklHX05TRU5URVIgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9OU0VOVEVSX0xPTkdfT1BUUyBpcyBub3Qgc2V0CiBDT05GSUdfUElWT1RfUk9PVD15CiBDT05GSUdfUkRBVEU9eQogIyBDT05GSUdfUkRFViBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUFEUFJPRklMRSBpcyBub3Qgc2V0CitDT05GSUdfUkVOSUNFPXkKKyMgQ09ORklHX1JFViBpcyBub3Qgc2V0CiAjIENPTkZJR19SVENXQUtFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDUklQVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1JJUFRSRVBMQVkgaXMgbm90IHNldAogIyBDT05GSUdfU0VUQVJDSCBpcyBub3Qgc2V0Ci1DT05GSUdfU1dBUE9OT0ZGPXkKKyMgQ09ORklHX0xJTlVYMzIgaXMgbm90IHNldAorIyBDT05GSUdfTElOVVg2NCBpcyBub3Qgc2V0CisjIENPTkZJR19TRVRQUklWIGlzIG5vdCBzZXQKK0NPTkZJR19TV0FQT049eQogQ09ORklHX0ZFQVRVUkVfU1dBUE9OX0RJU0NBUkQ9eQogQ09ORklHX0ZFQVRVUkVfU1dBUE9OX1BSST15CitDT05GSUdfU1dBUE9GRj15CiBDT05GSUdfU1dJVENIX1JPT1Q9eQorIyBDT05GSUdfVEFTS1NFVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1RBU0tTRVRfRkFOQ1kgaXMgbm90IHNldAorIyBDT05GSUdfVUVWRU5UIGlzIG5vdCBzZXQKIENPTkZJR19VTU9VTlQ9eQogQ09ORklHX0ZFQVRVUkVfVU1PVU5UX0FMTD15CisjIENPTkZJR19VTlNIQVJFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBTEwgaXMgbm90IHNldAogCiAjCiAjIENvbW1vbiBvcHRpb25zIGZvciBtb3VudC91bW91bnQKQEAgLTYzNyw2ICs2NzgsNyBAQAogQ09ORklHX0ZFQVRVUkVfTU9VTlRfTE9PUF9DUkVBVEU9eQogIyBDT05GSUdfRkVBVFVSRV9NVEFCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfVk9MVU1FSUQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9CQ0FDSEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9CVFJGUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX0NSQU1GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX0VYRkFUIGlzIG5vdCBzZXQKQEAgLTY1NiwxNyArNjk4LDMzIEBACiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX1JPTUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfU1FVQVNIRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9TWVNWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfVUJJRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9VREYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9YRlMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzCiAjCisjIENPTkZJR19CRUVQIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0JFRVBfRlJFUT0wCitDT05GSUdfRkVBVFVSRV9CRUVQX0xFTkdUSF9NUz0wCiAjIENPTkZJR19DT05TUFkgaXMgbm90IHNldAogIyBDT05GSUdfQ1JPTkQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9DUk9ORF9EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ1JPTkRfQ0FMTF9TRU5ETUFJTCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9DUk9ORF9ESVI9IiIKKyMgQ09ORklHX0RFVkZTRCBpcyBub3Qgc2V0CisjIENPTkZJR19ERVZGU0RfTU9ETE9BRCBpcyBub3Qgc2V0CisjIENPTkZJR19ERVZGU0RfRkdfTlAgaXMgbm90IHNldAorIyBDT05GSUdfREVWRlNEX1ZFUkJPU0UgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9ERVZGUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRFBBUk0gaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fR0VUX0lERU5USVRZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fU0NBTl9IV0lGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fVU5SRUdJU1RFUl9IV0lGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fRFJJVkVfUkVTRVQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fSERJT19UUklTVEFURV9IV0lGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fR0VUU0VUX0RNQSBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNHRVQgaXMgbm90IHNldAogIyBDT05GSUdfSTJDU0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ0RVTVAgaXMgbm90IHNldApAQCAtNjgyLDE5ICs3NDAsMTkgQEAKICMgQ09ORklHX0ZFQVRVUkVfTEVTU19BU0tfVEVSTUlOQUwgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9MRVNTX0RBU0hDTUQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9MRVNTX0xJTkVOVU1TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTU0NTSSBpcyBub3Qgc2V0CiAjIENPTkZJR19OQU5EV1JJVEUgaXMgbm90IHNldAogIyBDT05GSUdfTkFORERVTVAgaXMgbm90IHNldAorIyBDT05GSUdfUEFSVFBST0JFIGlzIG5vdCBzZXQKIENPTkZJR19SRktJTEw9eQogIyBDT05GSUdfU0VUU0VSSUFMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RBU0tTRVQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9UQVNLU0VUX0ZBTkNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSUFUVEFDSCBpcyBub3Qgc2V0CiAjIENPTkZJR19VQklERVRBQ0ggaXMgbm90IHNldAogIyBDT05GSUdfVUJJTUtWT0wgaXMgbm90IHNldAogIyBDT05GSUdfVUJJUk1WT0wgaXMgbm90IHNldAogIyBDT05GSUdfVUJJUlNWT0wgaXMgbm90IHNldAogIyBDT05GSUdfVUJJVVBEQVRFVk9MIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dBTEwgaXMgbm90IHNldAorIyBDT05GSUdfVUJJUkVOQU1FIGlzIG5vdCBzZXQKICMgQ09ORklHX0FESlRJTUVYIGlzIG5vdCBzZXQKICMgQ09ORklHX0JCQ09ORklHIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ09NUFJFU1NfQkJDT05GSUcgaXMgbm90IHNldApAQCAtNzI5LDcgKzc4Nyw2IEBACiAjIENPTkZJR19JT05JQ0UgaXMgbm90IHNldAogIyBDT05GSUdfSU5PVElGWUQgaXMgbm90IHNldAogIyBDT05GSUdfTEFTVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0xBU1RfU01BTEwgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9MQVNUX0ZBTkNZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hEUEFSTSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9HRVRfSURFTlRJVFkgaXMgbm90IHNldApAQCAtNzYwLDI0ICs4MTcsNiBAQAogIwogIyBOZXR3b3JraW5nIFV0aWxpdGllcwogIwotIyBDT05GSUdfTkFNRUlGIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTkFNRUlGX0VYVEVOREVEIGlzIG5vdCBzZXQKLSMgQ09ORklHX05CRENMSUVOVCBpcyBub3Qgc2V0Ci1DT05GSUdfTkM9eQotIyBDT05GSUdfTkNfU0VSVkVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DX0VYVFJBIGlzIG5vdCBzZXQKLSMgQ09ORklHX05DXzExMF9DT01QQVQgaXMgbm90IHNldAotQ09ORklHX1BJTkc9eQotQ09ORklHX1BJTkc2PXkKLUNPTkZJR19GRUFUVVJFX0ZBTkNZX1BJTkc9eQotQ09ORklHX1dHRVQ9eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9TVEFUVVNCQVI9eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9BVVRIRU5USUNBVElPTj15Ci1DT05GSUdfRkVBVFVSRV9XR0VUX0xPTkdfT1BUSU9OUz15Ci1DT05GSUdfRkVBVFVSRV9XR0VUX1RJTUVPVVQ9eQotIyBDT05GSUdfRkVBVFVSRV9XR0VUX09QRU5TU0wgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9XR0VUX1NTTF9IRUxQRVIgaXMgbm90IHNldAotIyBDT05GSUdfV0hPSVMgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfSVBWNj15CiAjIENPTkZJR19GRUFUVVJFX1VOSVhfTE9DQUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfUFJFRkVSX0lQVjRfQUREUkVTUz15CkBAIC03ODksMTUgKzgyOCwxNSBAQAogIyBDT05GSUdfRkVBVFVSRV9CUkNUTF9TSE9XIGlzIG5vdCBzZXQKICMgQ09ORklHX0ROU0QgaXMgbm90IHNldAogIyBDT05GSUdfRVRIRVJfV0FLRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQUtFSURFTlREIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZUUEQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9GVFBfV1JJVEUgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9GVFBEX1dSSVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRlRQRF9BQ0NFUFRfQlJPS0VOX0xJU1QgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9GVFBfQVVUSEVOVElDQVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9GVFBEX0FVVEhFTlRJQ0FUSU9OIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZUUEdFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GVFBQVVQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9GVFBHRVRQVVRfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKIENPTkZJR19IT1NUTkFNRT15CitDT05GSUdfRE5TRE9NQUlOTkFNRT15CiAjIENPTkZJR19IVFRQRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0hUVFBEX1JBTkdFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0hUVFBEX1NFVFVJRCBpcyBub3Qgc2V0CkBAIC04MTgsMTEgKzg1NywxMCBAQAogIyBDT05GSUdfRkVBVFVSRV9JRkNPTkZJR19CUk9BRENBU1RfUExVUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JRkVOU0xBVkUgaXMgbm90IHNldAogIyBDT05GSUdfSUZQTFVHRCBpcyBub3Qgc2V0Ci1DT05GSUdfSUZVUERPV049eQorQ09ORklHX0lGVVA9eQorQ09ORklHX0lGRE9XTj15CiBDT05GSUdfSUZVUERPV05fSUZTVEFURV9QQVRIPSIvdmFyL3J1bi9pZnN0YXRlIgogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVA9eQotQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBfQlVJTFRJTj15Ci0jIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lGQ09ORklHX0JVSUxUSU4gaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBWND15CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUFY2PXkKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX01BUFBJTkc9eQpAQCAtODM1LDIyICs4NzMsMzEgQEAKICMgQ09ORklHX0ZFQVRVUkVfSU5FVERfU1VQUE9SVF9CVUlMVElOX0NIQVJHRU4gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTkVURF9SUEMgaXMgbm90IHNldAogQ09ORklHX0lQPXkKKyMgQ09ORklHX0lQQUREUiBpcyBub3Qgc2V0CisjIENPTkZJR19JUExJTksgaXMgbm90IHNldAorIyBDT05GSUdfSVBST1VURSBpcyBub3Qgc2V0CisjIENPTkZJR19JUFRVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JUFJVTEUgaXMgbm90IHNldAorIyBDT05GSUdfSVBORUlHSCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9JUF9BRERSRVNTPXkKIENPTkZJR19GRUFUVVJFX0lQX0xJTks9eQogQ09ORklHX0ZFQVRVUkVfSVBfUk9VVEU9eQogQ09ORklHX0ZFQVRVUkVfSVBfUk9VVEVfRElSPSIvZXRjL2lwcm91dGUyIgogQ09ORklHX0ZFQVRVUkVfSVBfVFVOTkVMPXkKICMgQ09ORklHX0ZFQVRVUkVfSVBfUlVMRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lQX1NIT1JUX0ZPUk1TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSVBfTkVJR0ggaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JUF9SQVJFX1BST1RPQ09MUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUEFERFIgaXMgbm90IHNldAotIyBDT05GSUdfSVBMSU5LIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQUk9VVEUgaXMgbm90IHNldAotIyBDT05GSUdfSVBUVU5ORUwgaXMgbm90IHNldAotIyBDT05GSUdfSVBSVUxFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lQQ0FMQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lQQ0FMQ19GQU5DWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lQQ0FMQ19MT05HX09QVElPTlMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9JUENBTENfRkFOQ1kgaXMgbm90IHNldAorIyBDT05GSUdfRkFLRUlERU5URCBpcyBub3Qgc2V0CisjIENPTkZJR19OQU1FSUYgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9OQU1FSUZfRVhURU5ERUQgaXMgbm90IHNldAorIyBDT05GSUdfTkJEQ0xJRU5UIGlzIG5vdCBzZXQKK0NPTkZJR19OQz15CisjIENPTkZJR19OQ19TRVJWRVIgaXMgbm90IHNldAorIyBDT05GSUdfTkNfRVhUUkEgaXMgbm90IHNldAorIyBDT05GSUdfTkNfMTEwX0NPTVBBVCBpcyBub3Qgc2V0CiBDT05GSUdfTkVUU1RBVD15CiAjIENPTkZJR19GRUFUVVJFX05FVFNUQVRfV0lERSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX05FVFNUQVRfUFJHIGlzIG5vdCBzZXQKQEAgLTg1OCwxMyArOTA1LDE5IEBACiAjIENPTkZJR19OVFBEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTlRQRF9TRVJWRVIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9OVFBEX0NPTkYgaXMgbm90IHNldAorQ09ORklHX1BJTkc9eQorQ09ORklHX1BJTkc2PXkKK0NPTkZJR19GRUFUVVJFX0ZBTkNZX1BJTkc9eQogIyBDT05GSUdfUFNDQU4gaXMgbm90IHNldAogQ09ORklHX1JPVVRFPXkKICMgQ09ORklHX1NMQVRUQUNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NTTF9DTElFTlQgaXMgbm90IHNldAogIyBDT05GSUdfVENQU1ZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VEUFNWRCBpcyBub3Qgc2V0CiBDT05GSUdfVEVMTkVUPXkKICMgQ09ORklHX0ZFQVRVUkVfVEVMTkVUX1RUWVBFIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1RFTE5FVF9BVVRPTE9HSU49eQorQ09ORklHX0ZFQVRVUkVfVEVMTkVUX1dJRFRIPXkKICMgQ09ORklHX1RFTE5FVEQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9URUxORVREX1NUQU5EQUxPTkUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9URUxORVREX0lORVREX1dBSVQgaXMgbm90IHNldApAQCAtODc5LDMzICs5MzIsNDMgQEAKICMgQ09ORklHX0ZFQVRVUkVfVEZUUF9CTE9DS1NJWkUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9URlRQX1BST0dSRVNTX0JBUiBpcyBub3Qgc2V0CiAjIENPTkZJR19URlRQX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19UTFM9eQogQ09ORklHX1RSQUNFUk9VVEU9eQogIyBDT05GSUdfVFJBQ0VST1VURTYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9UUkFDRVJPVVRFX1ZFUkJPU0UgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9UUkFDRVJPVVRFX1NPVVJDRV9ST1VURSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1RSQUNFUk9VVEVfVVNFX0lDTVAgaXMgbm90IHNldAogIyBDT05GSUdfVFVOQ1RMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVFVOQ1RMX1VHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZDT05GSUcgaXMgbm90IHNldAorQ09ORklHX1dHRVQ9eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9MT05HX09QVElPTlM9eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9TVEFUVVNCQVI9eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9BVVRIRU5USUNBVElPTj15CitDT05GSUdfRkVBVFVSRV9XR0VUX1RJTUVPVVQ9eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9IVFRQUz15CisjIENPTkZJR19GRUFUVVJFX1dHRVRfT1BFTlNTTCBpcyBub3Qgc2V0CisjIENPTkZJR19XSE9JUyBpcyBub3Qgc2V0CisjIENPTkZJR19aQ0lQIGlzIG5vdCBzZXQKICMgQ09ORklHX1VESENQQzYgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzM2NDYgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzQ3MDQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzQ4MzMgaXMgbm90IHNldAogQ09ORklHX1VESENQRD15Ci0jIENPTkZJR19ESENQUkVMQVkgaXMgbm90IHNldAotQ09ORklHX0RVTVBMRUFTRVM9eQogIyBDT05GSUdfRkVBVFVSRV9VREhDUERfV1JJVEVfTEVBU0VTX0VBUkxZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVURIQ1BEX0JBU0VfSVBfT05fTUFDIGlzIG5vdCBzZXQKIENPTkZJR19ESENQRF9MRUFTRVNfRklMRT0iL3Zhci9saWIvbWlzYy91ZGhjcGQubGVhc2VzIgorQ09ORklHX0RVTVBMRUFTRVM9eQorIyBDT05GSUdfREhDUFJFTEFZIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUEM9eQogQ09ORklHX0ZFQVRVUkVfVURIQ1BDX0FSUElORz15CiBDT05GSUdfRkVBVFVSRV9VREhDUENfU0FOSVRJWkVPUFQ9eQorQ09ORklHX1VESENQQ19ERUZBVUxUX1NDUklQVD0iL3Vzci9zaGFyZS91ZGhjcGMvZGVmYXVsdC5zY3JpcHQiCiAjIENPTkZJR19GRUFUVVJFX1VESENQX1BPUlQgaXMgbm90IHNldAogQ09ORklHX1VESENQX0RFQlVHPTAKICMgQ09ORklHX0ZFQVRVUkVfVURIQ1BfUkZDMzM5NyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VESENQXzgwMjFRIGlzIG5vdCBzZXQKLUNPTkZJR19VREhDUENfREVGQVVMVF9TQ1JJUFQ9Ii91c3Ivc2hhcmUvdWRoY3BjL2RlZmF1bHQuc2NyaXB0IgogQ09ORklHX1VESENQQ19TTEFDS19GT1JfQlVHR1lfU0VSVkVSUz04MAotQ09ORklHX0lGVVBET1dOX1VESENQQ19DTURfT1BUSU9OUz0iLVIgLW4iCi0jIENPTkZJR19VRFBTVkQgaXMgbm90IHNldAotIyBDT05GSUdfVkNPTkZJRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19aQ0lQIGlzIG5vdCBzZXQKK0NPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1iIgogCiAjCiAjIFByaW50IFV0aWxpdGllcwpAQCAtOTE4LDI2ICs5ODEsNDUgQEAKICMgTWFpbCBVdGlsaXRpZXMKICMKICMgQ09ORklHX01BS0VNSU1FIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX01JTUVfQ0hBUlNFVD0iIgogIyBDT05GSUdfUE9QTUFJTERJUiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1BPUE1BSUxESVJfREVMSVZFUlkgaXMgbm90IHNldAogIyBDT05GSUdfUkVGT1JNSU1FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfUkVGT1JNSU1FX0NPTVBBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5ETUFJTCBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9NSU1FX0NIQVJTRVQ9IiIKIAogIwogIyBQcm9jZXNzIFV0aWxpdGllcwogIworQ09ORklHX0ZSRUU9eQorQ09ORklHX0ZVU0VSPXkKICMgQ09ORklHX0lPU1RBVCBpcyBub3Qgc2V0CitDT05GSUdfS0lMTD15CitDT05GSUdfS0lMTEFMTD15CisjIENPTkZJR19LSUxMQUxMNSBpcyBub3Qgc2V0CiAjIENPTkZJR19MU09GIGlzIG5vdCBzZXQKICMgQ09ORklHX01QU1RBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19OTUVURVIgaXMgbm90IHNldAorIyBDT05GSUdfUEdSRVAgaXMgbm90IHNldAorIyBDT05GSUdfUEtJTEwgaXMgbm90IHNldAorQ09ORklHX1BJRE9GPXkKKyMgQ09ORklHX0ZFQVRVUkVfUElET0ZfU0lOR0xFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUElET0ZfT01JVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VSVE9QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUE9XRVJUT1BfSU5URVJBQ1RJVkUgaXMgbm90IHNldAorQ09ORklHX1BTPXkKK0NPTkZJR19GRUFUVVJFX1BTX1dJREU9eQorQ09ORklHX0ZFQVRVUkVfUFNfTE9ORz15CisjIENPTkZJR19GRUFUVVJFX1BTX1RJTUUgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9QU19VTlVTVUFMX1NZU1RFTVMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9QU19BRERJVElPTkFMX0NPTFVNTlMgaXMgbm90IHNldAogIyBDT05GSUdfUFNUUkVFIGlzIG5vdCBzZXQKICMgQ09ORklHX1BXRFggaXMgbm90IHNldAogIyBDT05GSUdfU01FTUNBUCBpcyBub3Qgc2V0CitDT05GSUdfQkJfU1lTQ1RMPXkKIENPTkZJR19UT1A9eQorIyBDT05GSUdfRkVBVFVSRV9UT1BfSU5URVJBQ1RJVkUgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVE9QX0NQVV9VU0FHRV9QRVJDRU5UQUdFPXkKIENPTkZJR19GRUFUVVJFX1RPUF9DUFVfR0xPQkFMX1BFUkNFTlRTPXkKICMgQ09ORklHX0ZFQVRVUkVfVE9QX1NNUF9DUFUgaXMgbm90IHNldApAQCAtOTQ2LDg0ICsxMDI4LDY5IEBACiAjIENPTkZJR19GRUFUVVJFX1RPUE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfVVBUSU1FPXkKICMgQ09ORklHX0ZFQVRVUkVfVVBUSU1FX1VUTVBfU1VQUE9SVCBpcyBub3Qgc2V0Ci1DT05GSUdfRlJFRT15Ci1DT05GSUdfRlVTRVI9eQotQ09ORklHX0tJTEw9eQotQ09ORklHX0tJTExBTEw9eQotIyBDT05GSUdfS0lMTEFMTDUgaXMgbm90IHNldAotIyBDT05GSUdfUEdSRVAgaXMgbm90IHNldAotQ09ORklHX1BJRE9GPXkKLSMgQ09ORklHX0ZFQVRVUkVfUElET0ZfU0lOR0xFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfUElET0ZfT01JVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19QS0lMTCBpcyBub3Qgc2V0Ci1DT05GSUdfUFM9eQotQ09ORklHX0ZFQVRVUkVfUFNfV0lERT15Ci1DT05GSUdfRkVBVFVSRV9QU19MT05HPXkKLSMgQ09ORklHX0ZFQVRVUkVfUFNfVElNRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1BTX0FERElUSU9OQUxfQ09MVU1OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1BTX1VOVVNVQUxfU1lTVEVNUyBpcyBub3Qgc2V0Ci1DT05GSUdfUkVOSUNFPXkKLUNPTkZJR19CQl9TWVNDVEw9eQotIyBDT05GSUdfRkVBVFVSRV9TSE9XX1RIUkVBRFMgaXMgbm90IHNldAogQ09ORklHX1dBVENIPXkKKyMgQ09ORklHX0ZFQVRVUkVfU0hPV19USFJFQURTIGlzIG5vdCBzZXQKIAogIwogIyBSdW5pdCBVdGlsaXRpZXMKICMKLSMgQ09ORklHX1JVTlNWIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JVTlNWRElSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfUlVOU1ZESVJfTE9HIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NWIGlzIG5vdCBzZXQKLUNPTkZJR19TVl9ERUZBVUxUX1NFUlZJQ0VfRElSPSIiCi0jIENPTkZJR19TVkxPR0QgaXMgbm90IHNldAogIyBDT05GSUdfQ0hQU1QgaXMgbm90IHNldAogIyBDT05GSUdfU0VUVUlER0lEIGlzIG5vdCBzZXQKICMgQ09ORklHX0VOVlVJREdJRCBpcyBub3Qgc2V0CiAjIENPTkZJR19FTlZESVIgaXMgbm90IHNldAogIyBDT05GSUdfU09GVExJTUlUIGlzIG5vdCBzZXQKLQotIwotIyAgU0VMaW51eCB1dGlsaXRpZXMKLSMKKyMgQ09ORklHX1JVTlNWIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JVTlNWRElSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUlVOU1ZESVJfTE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NWIGlzIG5vdCBzZXQKK0NPTkZJR19TVl9ERUZBVUxUX1NFUlZJQ0VfRElSPSIiCisjIENPTkZJR19TVkMgaXMgbm90IHNldAorIyBDT05GSUdfU1ZMT0dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NIQ09OIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ0hDT05fTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFVEVORk9SQ0UgaXMgbm90IHNldAogIyBDT05GSUdfR0VUU0VCT09MIGlzIG5vdCBzZXQKICMgQ09ORklHX0xPQURfUE9MSUNZIGlzIG5vdCBzZXQKICMgQ09ORklHX01BVENIUEFUSENPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19SRVNUT1JFQ09OIGlzIG5vdCBzZXQKICMgQ09ORklHX1JVTkNPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1JVTkNPTl9MT05HX09QVElPTlMgaXMgbm90IHNldAogIyBDT05GSUdfU0VMSU5VWEVOQUJMRUQgaXMgbm90IHNldAorIyBDT05GSUdfU0VTVEFUVVMgaXMgbm90IHNldAogIyBDT05GSUdfU0VURU5GT1JDRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVRGSUxFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NFVEZJTEVTX0NIRUNLX09QVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19SRVNUT1JFQ09OIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVFNFQk9PTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVNUQVRVUyBpcyBub3Qgc2V0CiAKICMKICMgU2hlbGxzCiAjCitDT05GSUdfU0hfSVNfQVNIPXkKKyMgQ09ORklHX1NIX0lTX0hVU0ggaXMgbm90IHNldAorIyBDT05GSUdfU0hfSVNfTk9ORSBpcyBub3Qgc2V0CisjIENPTkZJR19CQVNIX0lTX0FTSCBpcyBub3Qgc2V0CisjIENPTkZJR19CQVNIX0lTX0hVU0ggaXMgbm90IHNldAorQ09ORklHX0JBU0hfSVNfTk9ORT15CiBDT05GSUdfQVNIPXkKK0NPTkZJR19BU0hfT1BUSU1JWkVfRk9SX1NJWkU9eQorQ09ORklHX0FTSF9JTlRFUk5BTF9HTE9CPXkKIENPTkZJR19BU0hfQkFTSF9DT01QQVQ9eQotIyBDT05GSUdfQVNIX0lETEVfVElNRU9VVCBpcyBub3Qgc2V0CiBDT05GSUdfQVNIX0pPQl9DT05UUk9MPXkKIENPTkZJR19BU0hfQUxJQVM9eQotQ09ORklHX0FTSF9HRVRPUFRTPXkKLUNPTkZJR19BU0hfQlVJTFRJTl9FQ0hPPXkKLUNPTkZJR19BU0hfQlVJTFRJTl9QUklOVEY9eQotQ09ORklHX0FTSF9CVUlMVElOX1RFU1Q9eQotQ09ORklHX0FTSF9IRUxQPXkKLUNPTkZJR19BU0hfQ01EQ01EPXkKLSMgQ09ORklHX0FTSF9NQUlMIGlzIG5vdCBzZXQKLUNPTkZJR19BU0hfT1BUSU1JWkVfRk9SX1NJWkU9eQogIyBDT05GSUdfQVNIX1JBTkRPTV9TVVBQT1JUIGlzIG5vdCBzZXQKIENPTkZJR19BU0hfRVhQQU5EX1BSTVQ9eQorIyBDT05GSUdfQVNIX0lETEVfVElNRU9VVCBpcyBub3Qgc2V0CisjIENPTkZJR19BU0hfTUFJTCBpcyBub3Qgc2V0CitDT05GSUdfQVNIX0VDSE89eQorQ09ORklHX0FTSF9QUklOVEY9eQorQ09ORklHX0FTSF9URVNUPXkKK0NPTkZJR19BU0hfSEVMUD15CitDT05GSUdfQVNIX0dFVE9QVFM9eQorQ09ORklHX0FTSF9DTURDTUQ9eQogIyBDT05GSUdfQ1RUWUhBQ0sgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX0JBU0hfQ09NUEFUIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfQlJBQ0VfRVhQQU5TSU9OIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hVU0hfSEVMUCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX0lOVEVSQUNUSVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfU0FWRUhJU1RPUlkgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9KT0IgaXMgbm90IHNldApAQCAtMTAzNCwxNyArMTEwMSwzMCBAQAogIyBDT05GSUdfSFVTSF9GVU5DVElPTlMgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9MT0NBTCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX1JBTkRPTV9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hVU0hfRVhQT1JUX04gaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9NT0RFX1ggaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9FQ0hPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfUFJJTlRGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX0hFTFAgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9FWFBPUlQgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9FWFBPUlRfTiBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX0tJTEwgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9XQUlUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVFJBUCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1RZUEUgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9SRUFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVU5TRVQgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9VTElNSVQgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9VTUFTSyBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX01FTUxFQUsgaXMgbm90IHNldAogIyBDT05GSUdfTVNIIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX1NIX0lTX0FTSD15Ci0jIENPTkZJR19GRUFUVVJFX1NIX0lTX0hVU0ggaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9TSF9JU19OT05FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQkFTSF9JU19BU0ggaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9CQVNIX0lTX0hVU0ggaXMgbm90IHNldAotQ09ORklHX0ZFQVRVUkVfQkFTSF9JU19OT05FPXkKLUNPTkZJR19TSF9NQVRIX1NVUFBPUlQ9eQotIyBDT05GSUdfU0hfTUFUSF9TVVBQT1JUXzY0IGlzIG5vdCBzZXQKKworIworIyBPcHRpb25zIGNvbW1vbiB0byBhbGwgc2hlbGxzCisjCitDT05GSUdfRkVBVFVSRV9TSF9NQVRIPXkKKyMgQ09ORklHX0ZFQVRVUkVfU0hfTUFUSF82NCBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9TSF9FWFRSQV9RVUlFVD15CiAjIENPTkZJR19GRUFUVVJFX1NIX1NUQU5EQUxPTkUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TSF9OT0ZPUksgaXMgbm90IHNldApAQCAtMTA1MywxOSArMTEzMywxNyBAQAogIwogIyBTeXN0ZW0gTG9nZ2luZyBVdGlsaXRpZXMKICMKK0NPTkZJR19LTE9HRD15CitDT05GSUdfRkVBVFVSRV9LTE9HRF9LTE9HQ1RMPXkKK0NPTkZJR19MT0dHRVI9eQorIyBDT05GSUdfTE9HUkVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX1NZU0xPR0QgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9ST1RBVEVfTE9HRklMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1JFTU9URV9MT0cgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NZU0xPR0RfQ0ZHIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfUkVBRF9CVUZGRVJfU0laRT0wCiAjIENPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0cgaXMgbm90IHNldAotIyBDT05GSUdfTE9HUkVBRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0dfQlVGRkVSX1NJWkU9MAogIyBDT05GSUdfRkVBVFVSRV9LTVNHX1NZU0xPRyBpcyBub3Qgc2V0Ci1DT05GSUdfS0xPR0Q9eQotCi0jCi0jIGtsb2dkIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIHN5c2xvZyB0byBrZXJuZWwgcHJpbnRrIGJ1ZmZlcgotIwotQ09ORklHX0ZFQVRVUkVfS0xPR0RfS0xPR0NUTD15Ci1DT05GSUdfTE9HR0VSPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaXBfZml4X3Byb2JsZW1fb25fbWlwczY0X242NF9iaWdfZW5kaWFuX211c2xfc3lzdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaXBfZml4X3Byb2JsZW1fb25fbWlwczY0X242NF9iaWdfZW5kaWFuX211c2xfc3lzdGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjNTY1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDRhYjM3MmQ0OWE2ZTgyYjBiZjA5N2RlZGI5NmQyNjMzMGM1ZjJkNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFN1biwgMjQgQXByIDIwMTYgMTc6Mzk6MDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gaXA6IGZpeCBwcm9ibGVtIG9uIG1pcHM2NCBuNjQgYmlnIGVuZGlhbiBtdXNsIHN5c3RlbXMKLQotVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzIGZvciBzdHJ1Y3QgbXNnaGRyLgotVGhlIHN0cnVjdCBsYXlvdXQgaXMgbm9uLXBvcnRhYmxlIGFuZCBtdXNsIGxpYmMgZG9lcyBub3QgbWF0Y2ggd2hhdCBidXN5Ym94IGV4cGVjdHMuCi0KLVNpZ25lZC1vZmYtYnk6IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotVGVzdGVkLWJ5OiBXYWxkZW1hciBCcm9ka29yYiA8d2J4QG9wZW5hZGsub3JnPgotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1odHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9NGFiMzcyZDQ5YTZlODJiMGJmMDk3ZGVkYjk2ZDI2MzMwYzVmMmQ1ZgotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gbmV0d29ya2luZy9saWJpcHJvdXRlL2xpYm5ldGxpbmsuYyB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2xpYm5ldGxpbmsuYwotaW5kZXggYzc1MzNhNC4uY2JiNWRhZiAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMKLUBAIC03MSwxMSArNzEsMTUgQEAgaW50IEZBU1RfRlVOQyBydG5sX2R1bXBfcmVxdWVzdChzdHJ1Y3QgcnRubF9oYW5kbGUgKnJ0aCwgaW50IHR5cGUsIHZvaWQgKnJlcSwgaW4KLSAJc3RydWN0IG5sbXNnaGRyIG5saDsKLSAJc3RydWN0IHNvY2thZGRyX25sIG5sYWRkcjsKLSAJc3RydWN0IGlvdmVjIGlvdlsyXSA9IHsgeyAmbmxoLCBzaXplb2YobmxoKSB9LCB7IHJlcSwgbGVuIH0gfTsKLSsJLyogVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLCBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSAqLwotIAlzdHJ1Y3QgbXNnaGRyIG1zZyA9IHsKLS0JCSh2b2lkKikmbmxhZGRyLCBzaXplb2YobmxhZGRyKSwKLS0JCWlvdiwgIDIsCi0tCQlOVUxMLCAwLAotLQkJMAotKwkJLm1zZ19uYW1lID0gKHZvaWQqKSZubGFkZHIsCi0rCQkubXNnX25hbWVsZW4gPSBzaXplb2YobmxhZGRyKSwKLSsJCS5tc2dfaW92ID0gaW92LAotKwkJLm1zZ19pb3ZsZW4gPSAyLAotKwkJLm1zZ19jb250cm9sID0gTlVMTCwKLSsJCS5tc2dfY29udHJvbGxlbiA9IDAsCi0rCQkubXNnX2ZsYWdzID0gMAotIAl9OwotIAotIAltZW1zZXQoJm5sYWRkciwgMCwgc2l6ZW9mKG5sYWRkcikpOwotQEAgLTEwNCwxMiArMTA4LDE1IEBAIHN0YXRpYyBpbnQgcnRubF9kdW1wX2ZpbHRlcihzdHJ1Y3QgcnRubF9oYW5kbGUgKnJ0aCwKLSAJd2hpbGUgKDEpIHsKLSAJCWludCBzdGF0dXM7Ci0gCQlzdHJ1Y3Qgbmxtc2doZHIgKmg7Ci0tCi0rCQkvKiBVc2UgZGVzaWduYXRlZCBpbml0aWFsaXplcnMsIHN0cnVjdCBsYXlvdXQgaXMgbm9uLXBvcnRhYmxlICovCi0gCQlzdHJ1Y3QgbXNnaGRyIG1zZyA9IHsKLS0JCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCi0tCQkJJmlvdiwgMSwKLS0JCQlOVUxMLCAwLAotLQkJCTAKLSsJCQkubXNnX25hbWUgPSAodm9pZCopJm5sYWRkciwKLSsJCQkubXNnX25hbWVsZW4gPSBzaXplb2YobmxhZGRyKSwKLSsJCQkubXNnX2lvdiA9ICZpb3YsCi0rCQkJLm1zZ19pb3ZsZW4gPSAxLAotKwkJCS5tc2dfY29udHJvbCA9IE5VTEwsCi0rCQkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCQkubXNnX2ZsYWdzID0gMAotIAkJfTsKLSAKLSAJCXN0YXR1cyA9IHJlY3Ztc2cocnRoLT5mZCwgJm1zZywgMCk7Ci1AQCAtMjExLDExICsyMTgsMTUgQEAgaW50IEZBU1RfRlVOQyBydG5sX3RhbGsoc3RydWN0IHJ0bmxfaGFuZGxlICpydG5sLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sCi0gCXN0cnVjdCBzb2NrYWRkcl9ubCBubGFkZHI7Ci0gCXN0cnVjdCBpb3ZlYyBpb3YgPSB7ICh2b2lkKiluLCBuLT5ubG1zZ19sZW4gfTsKLSAJY2hhciAgICpidWYgPSB4bWFsbG9jKDgqMTAyNCk7IC8qIGF2b2lkIGJpZyBzdGFjayBidWZmZXIgKi8KLSsJLyogVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLCBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSAqLwotIAlzdHJ1Y3QgbXNnaGRyIG1zZyA9IHsKLS0JCSh2b2lkKikmbmxhZGRyLCBzaXplb2YobmxhZGRyKSwKLS0JCSZpb3YsIDEsCi0tCQlOVUxMLCAwLAotLQkJMAotKwkJLm1zZ19uYW1lID0gKHZvaWQqKSZubGFkZHIsCi0rCQkubXNnX25hbWVsZW4gPSBzaXplb2YobmxhZGRyKSwKLSsJCS5tc2dfaW92ID0gJmlvdiwKLSsJCS5tc2dfaW92bGVuID0gMSwKLSsJCS5tc2dfY29udHJvbCA9IE5VTEwsCi0rCQkubXNnX2NvbnRyb2xsZW4gPSAwLAotKwkJLm1zZ19mbGFncyA9IDAKLSAJfTsKLSAKLSAJbWVtc2V0KCZubGFkZHIsIDAsIHNpemVvZihubGFkZHIpKTsKLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L21ha2VmaWxlLWZpeC1iYWNrcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5ODQyZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L21ha2VmaWxlLWZpeC1iYWNrcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOWU1ODIwYTg2Mjc3ODE4YzJmODNjMTFjMmFhNzZkN2YwYTM4MjgzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE0IEF1ZyAyMDE2IDAyOjU0OjI3ICswMjAwCi1TdWJqZWN0OiBidWlsZCBzeXN0ZW06IGZpeCBpbmNsdWRlL05VTV9BUFBMRVRTLmggZ2VuZXJhdGlvbgotCi1UQkgsIGl0J3MgbW9yZSBsaWtlICJ3b3JrIGFyb3VuZCBteSBiYWQgbWFrZWZpbGUtZnUiIHRoYW4gImZpeCIuLi4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGFwcGxldHMvS2J1aWxkLnNyYyB8IDcgKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvS2J1aWxkLnNyYyBiL2FwcGxldHMvS2J1aWxkLnNyYwotaW5kZXggYjYxMjM5OS4uNWNjMTgyNyAxMDA2NDQKLS0tLSBhL2FwcGxldHMvS2J1aWxkLnNyYwotKysrIGIvYXBwbGV0cy9LYnVpbGQuc3JjCi1AQCAtMjksNyArMjksNyBAQCBhcHBsZXRzL2FwcGxldHMubzogaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKLSAKLSBhcHBsZXRzL2FwcGxldF90YWJsZXM6IC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLSBhcHBsZXRzL3VzYWdlOiAgICAgICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLS1hcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9hcHBsZXRzLmgKLSthcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0gCi0gcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAotICAgICAgIGNtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9ICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggYXBwbGV0cwotQEAgLTQwLDggKzQwLDUgQEAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmg6IGFwcGxldHMvdXNhZ2UgJChzcmN0cmVlX3NsYXNoKWFwcGxldHMvdXNhZ2VfY29tcHJlc3MKLSBxdWlldF9jbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBHRU4gICAgIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0gICAgICAgY21kX2dlbl9hcHBsZXRfdGFibGVzID0gYXBwbGV0cy9hcHBsZXRfdGFibGVzIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAotIAotLWluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLS0JJChjYWxsIGNtZCxnZW5fYXBwbGV0X3RhYmxlcykKLS0KLS1pbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcwotK2luY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0gCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCi0tLSAKLWNnaXQgdjAuMTIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tdXNsLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbXVzbC5jZmcKaW5kZXggZmFjZmU4NS4uNmZmZmM5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tdXNsLmNmZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L211c2wuY2ZnCkBAIC0yLDcgKzIsNiBAQAogIyBDT05GSUdfU0VMSU5VWCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0hBVkVfUlBDIGlzIG5vdCBzZXQKICMgQ09ORklHX1dFUlJPUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NZU1RFTUQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WSV9SRUdFWF9TRUFSQ0ggaXMgbm90IHNldAogIyBDT05GSUdfUEFNIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5FVERfUlBDIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjODU4MDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1yZXF1aXJlIGJ1c3lib3guaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC5idXN5Ym94IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2ctc3RhcnR1cC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vbWRldiBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2LmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi1tb3VudC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly91bW91bnQuYnVzeWJveCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vZmFpbF9vbl9ub19tZWRpYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmV0ZCBcCi0gICAgICAgICAgIGZpbGU6Ly9sb2dpbi11dGlsaXRpZXMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3JlY29nbml6ZV9jb25ubWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0Mtd2hlbi1saW5raW5nLWluc3RlYWQtb2YtTEQtYW5kLXVzZS1DRkxBR1MtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXVuemlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC0xLjI0LjEtdHJ1bmNhdGUtb3Blbi1tb2RlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0dGFiIFwKLSAgICAgICAgICAgZmlsZTovL3JjUyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY0sgXAotICAgICAgICAgICBmaWxlOi8vcnVubGV2ZWwgXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjE0OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTQ3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIxNDdfMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MzAxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtZml4LWJhY2twb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtidWlsZC1yYWNlLWZpeC1jb21taXQtZDhlNjFiYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb21taXQtYXBwbGV0X3RhYmxlcy1maXgtY29tbWl0LTBkZGRiYzEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbGliYmItcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmlwcm91dGUtaGFuZGxlLXRhYmxlLWlkcy1sYXJnZXItdGhhbi0yNTUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWZ1cGRvd24tcGFzcy1pbnRlcmZhY2UtZGV2aWNlLW5hbWUtZm9yLWlwdjYtcm91dGUtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9CVUc5MDcxX2J1ZmZlcl9vdmVyZmxvd19hcnAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC10YXItYWRkLUlGX0ZFQVRVUkVfLWNoZWNrcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwcm91dGUtc3VwcG9ydC1zY29wZS0uLUNsb3Nlcy04NTYxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImJlOThhNDBjYWRmODRjZTJkNmIwNWZhNDFhMjc1YzZhIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMzdkMDMxMzJjYzA3ODkzNzM2MGIzOTIxNzBiN2ExZDBlNWIzMjJlZWU5ZjU3YzBiODIyOTJhOGIxZjBhZmUzZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI3LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhNjM0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK3JlcXVpcmUgYnVzeWJveC5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbmQtdG91Y2hzY3JlZW4uc2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9uIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtaHR0cGQgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGQgXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vc2ltcGxlLnNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9od2Nsb2NrLnNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LmJ1c3lib3ggXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1zdGFydHVwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LW1vdW50LnNoIFwKKyAgICAgICAgICAgZmlsZTovL3Vtb3VudC5idXN5Ym94IFwKKyAgICAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9mYWlsX29uX25vX21lZGlhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkIFwKKyAgICAgICAgICAgZmlsZTovL2xvZ2luLXV0aWxpdGllcy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVjb2duaXplX2Nvbm5tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy13aGVuLWxpbmtpbmctaW5zdGVhZC1vZi1MRC1hbmQtdXNlLUNGTEFHUy1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MgXAorICAgICAgICAgICBmaWxlOi8vcmNLIFwKKyAgICAgICAgICAgZmlsZTovL3J1bmxldmVsIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTEtNTMyNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTg3My5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wuY2ZnICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNDc2MTg2ZjRiYWI4MTc4MWRhYjIzNjliZmQ0MjczNGUiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI5ZDRiZTUxNmI2MWU2NDgwZjE1NmIxMWViNDI1NzdhMTM1MjlmNzVkMzM4Mzg1MGJiNzVjNTBjMjg1ZGU2M2RmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M4OTZhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gYjRkMjU4NjI5ZjA5MDA2Njc4M2MzYjRjOTFiNDBmNjNiOWQwYTI5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA4IEZlYiAyMDE1IDE2OjUxOjU3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1hbjogZGVjb3VwbGUgbWFucGFnZXMgZnJvbSBidWlsZAotCi1UaGUgdXNlIG9mICJoZWxwMm1hbiIgZG9lc24ndCB3b3JrIGF0IGFsbCBmb3IgY3Jvc3MgY29tcGlsZSwgaW4KLWFkZGl0aW9uIHRvIHRoZSBleHRyYSByZXF1aXJlbWVudCBvZiBwZXJsIGl0IGFkZHMuCi0KLUp1c3QgZGVjb3VwbGUgdGhlIG1hbnBhZ2VzIGZyb20gdGhlIGJ1aWxkIGluIG9yZGVyIHRvIHBhdmUgdGhlIHdheSBmb3IKLWltcG9ydGluZyBwcmVidWlsdCBtYW5wYWdlcyB0aGF0IGNhbiBiZSB1c2VkIGluIGEgY3Jvc3MgYnVpbGQgc2l0dWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGRvZXNuJ3QgY2FyZSBhYm91dCB4LWNvbXBpbGUgY2FzZS5dCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGZiNGFmMjcuLjc1NzZiMmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMTQsNSArMjE0LDQgQEAgQU1fQ1BQRkxBR1MgPSAtSWxpYiAtSSQodG9wX3NyY2RpcikvbGliIC1Jc3JjIC1JJCh0b3Bfc3JjZGlyKS9zcmMKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvbGliL2xvY2FsLm1rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9sb2NhbC5tawotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9kb2MvbG9jYWwubWsKLS1pbmNsdWRlICQodG9wX3NyY2RpcikvbWFuL2xvY2FsLm1rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3Rlc3RzL2xvY2FsLm1rCi0tLSAKLTIuMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTg3NDBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgbWFuaXB1bGF0aW9uIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlRoZSBHTlUgQ29yZSBVdGlsaXRpZXMgcHJvdmlkZSB0aGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgXAotbWFuaXB1bGF0aW9uIHV0aWxpdGllcy4gVGhlc2UgYXJlIHRoZSBjb3JlIHV0aWxpdGllcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qgb24gXAotZXZlcnkgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vZGViYnVncy5nbnUub3JnL2NvcmV1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zOGI3OTc4NWNhODg1MzdiNzU4NzE3ODJhMmEzYzZiOCIKLURFUEVORFMgPSAiZ21wIGxpYmNhcCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jb3JldXRpbHMvJHtCUH0udGFyLnh6O25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgIGh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0ZmlsZXMvJHtCUH0tbWFuLnRhci54ejtuYW1lPW1hbnBhZ2VzIFwKLSAgICAgICAgICAgZmlsZTovL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXNlbGludXgtZmxhc2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjUwMjc5NTc5MmMyMTI5MzIzNjVlMDc3OTQ2ZDM1M2FlIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiODg5MWQzNDllZTg3YjlmZjc4NzBmNTJiNmQ5MzEyYTlkYjY3MmQyNDM5ZDI4OWJjNTcwODQ3NzFjYTIxNjU2YiIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIxYjMxYTY4OGQwNjc2NGUwZTk0YWEyMGI3ZWEwODIyMiIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICIxZjYxNTgxOWU5MTY3NjQ2YzczMTYzNmI2YzVlY2JlNzk4MzdlODJhMTg2NjZiYWNjODJjM2ZiMWRmY2ZhZWEzIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIgotCi0jIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCi0jCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi0jIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKLQotIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcwotIwotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi0KLSMgWyBkZiBta3RlbXAgYmFzZTY0IGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKLWJpbmRpcl9wcm9ncyA9ICJhcmNoIGJhc2VuYW1lIGNoY29uIGNrc3VtIGNvbW0gY3NwbGl0IGN1dCBkaXIgZGlyY29sb3JzIGRpcm5hbWUgZHUgXAotICAgICAgICAgICAgICAgIGVudiBleHBhbmQgZXhwciBmYWN0b3IgZm10IGZvbGQgZ3JvdXBzIGhlYWQgaG9zdGlkIGlkIGluc3RhbGwgXAotICAgICAgICAgICAgICAgIGpvaW4gbGluayBsb2duYW1lIG1kNXN1bSBta2ZpZm8gbmljZSBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKLSAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGVudiBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKLSAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXRcCi0gICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgotCi0jIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKLWJhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2Uga2lsbCBsbiBscyBta2RpciBcCi0gICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKLQotc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKLQotIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQotIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKLSMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKLSMgZGlyZWN0b3J5LgotYWNwYXRocyA9ICItSSAuL200IgotCi0jIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wICR7Qn0vc3JjCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKLQlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcwotCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKLQkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgotCXJldHVybgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlmb3IgaSBpbiBkZiBta3RlbXAgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgotCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAotCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCi0JbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59Ci0KLQkjIHByZWJ1aWx0IG1hbiBwYWdlcwotCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuMQotCWluc3RhbGwgLXQgJHtEfS8ke21hbmRpcn0vbWFuMSAke1N9L21hbi8qLjEKLQkjIHByZWJ1aWx0IG1hbiBwYWdlcyBkb24ndCBkbyBhIHNlcGFyYXRlIG1hbiBwYWdlIGZvciBbIHZzIHRlc3QuCi0JIyBzZWUgY29tbWVudCBhYm92ZSByLmUuIHNlZCBhbmQgdXBkYXRlLWFsdGVybmF0aXZlcwotCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7RH0ke21hbmRpcn0vbWFuMS90ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEuJHtCUE59Ci19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbWt0ZW1wIGRmIgotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG1rdGVtcC4xIGRmLjEgbGJyYWNrZXQuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgotQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCi1BTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCi1BTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0JCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLQlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0JCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI4YWNjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjkuYmIKQEAgLTAsMCArMSwxMzMgQEAKK1NVTU1BUlkgPSAiVGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IG1hbmlwdWxhdGlvbiB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJUaGUgR05VIENvcmUgVXRpbGl0aWVzIHByb3ZpZGUgdGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IFwKK21hbmlwdWxhdGlvbiB1dGlsaXRpZXMuIFRoZXNlIGFyZSB0aGUgY29yZSB1dGlsaXRpZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGV4aXN0IG9uIFwKK2V2ZXJ5IHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jb3JldXRpbHMiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNTttZDU9MWMzZjk0MTFlMTg0MmEwNjJjZTVjZTkyMTBiZWVlMGUiCitERVBFTkRTID0gImdtcCBsaWJjYXAiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY29yZXV0aWxzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTYwY2ZlNzVhNDJjOTkwN2M3MTQzOWY4ZWI0MzYzMDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTJkMGZhMWMzMTFjYWNlZmE4OTg1M2JkYjUzYzYyZjQxMTBjZGZkYTM4MjAzNDZiNTljYmQwOThmNDBmOTU1ZSIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtZ21wIgorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCxob3N0bmFtZSAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCIKKworIyBhY2wgYW5kIHhhdHRyIGFyZSBub3QgZGVmYXVsdCBmZWF0dXJlcworIworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKKyIKKworIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCisKKyMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKKyMKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1tzaW5nbGUtYmluYXJ5XSA9ICItLWVuYWJsZS1zaW5nbGUtYmluYXJ5LC0tZGlzYWJsZS1zaW5nbGUtYmluYXJ5LCwiCisKKyMgWyBkZiBta3RlbXAgYmFzZTY0IGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2JpbmRpcl9wcm9ncyA9ICJhcmNoIGJhc2VuYW1lIGNoY29uIGNrc3VtIGNvbW0gY3NwbGl0IGN1dCBkaXIgZGlyY29sb3JzIGRpcm5hbWUgZHUgXAorICAgICAgICAgICAgICAgIGVudiBleHBhbmQgZXhwciBmYWN0b3IgZm10IGZvbGQgZ3JvdXBzIGhlYWQgaG9zdGlkIGlkIGluc3RhbGwgXAorICAgICAgICAgICAgICAgIGpvaW4gbGluayBsb2duYW1lIG1kNXN1bSBta2ZpZm8gbmljZSBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKKyAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGVudiBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKKyAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXRcCisgICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgorCisjIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2Jhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2UgaG9zdG5hbWUga2lsbCBsbiBscyBta2RpciBcCisgICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKKworc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKKworIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQorIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKKyMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKKyMgZGlyZWN0b3J5LgorYWNwYXRocyA9ICItSSAuL200IgorCisjIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wICR7Qn0vc3JjCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKKwlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcworCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKKwkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgorCXJldHVybgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlmb3IgaSBpbiBkZiBta3RlbXAgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgorCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAorCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCisJbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisjIE1ha2UgaG9zdG5hbWUncyBwcmlvcml0eSBoaWdoZXIgdGhhbiBidXN5Ym94IGJ1dCBsb3dlciB0aGFuIG5ldC10b29scworQUxURVJOQVRJVkVfUFJJT1JJVFlbaG9zdG5hbWVdID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30gYmFzZTY0IG1rdGVtcCBkZiIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJiYXNlNjQuMSBta3RlbXAuMSBkZi4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEgIGhvc3RuYW1lLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0XSA9ICIke2Jhc2VfYmluZGlyfS9iYXNlNjQiCitBTFRFUk5BVElWRV9UQVJHRVRbYmFzZTY0XSA9ICIke2JpbmRpcn0vYmFzZTY0LiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjQuMV0gPSAiJHttYW5kaXJ9L21hbjEvYmFzZTY0LjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXBdID0gIiR7YmFzZV9iaW5kaXJ9L21rdGVtcCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtta3RlbXBdID0gIiR7YmluZGlyfS9ta3RlbXAuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS9ta3RlbXAuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2RmXSA9ICIke2Jhc2VfYmluZGlyfS9kZiIKK0FMVEVSTkFUSVZFX1RBUkdFVFtkZl0gPSAiJHtiaW5kaXJ9L2RmLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZi4xXSA9ICIke21hbmRpcn0vbWFuMS9kZi4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9bIgorQUxURVJOQVRJVkVfVEFSR0VUW2xicmFja2V0XSA9ICIke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCmluZGV4IDRhZmI5MGMuLmMyNDI5NWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKQEAgLTExLDcgKzExLDcgQEAKIFBSID0gInIyIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIvbm8tZXhhbXBsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIvbm8tZXhhbXBsZXMucGF0Y2gKaW5kZXggZmJiNDk2Ny4uMzJlNzYxMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliL25vLWV4YW1wbGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi9uby1leGFtcGxlcy5wYXRjaApAQCAtNSwxMSArNSwxMyBAQAogU2lnbmVkLW9mZi1ieTogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KIAotLS0tIGRidXMtZ2xpYi0wLjcwL2RidXMvTWFrZWZpbGUuYW0ub3JpZwkyMDA2LTA3LTIzIDE2OjA0OjQzLjAwMDAwMDAwMCArMDIwMAotKysrIGRidXMtZ2xpYi0wLjcwL2RidXMvTWFrZWZpbGUuYW0JMjAwNi0wNy0yMyAxNjowNDo1Mi4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBkYnVzLWdsaWItMC4xMDgvZGJ1cy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRidXMtZ2xpYi0wLjEwOC5vcmlnL2RidXMvTWFrZWZpbGUuYW0KKysrKyBkYnVzLWdsaWItMC4xMDgvZGJ1cy9NYWtlZmlsZS5hbQogQEAgLTEsNCArMSw0IEBACiAtU1VCRElSUyA9IC4gZXhhbXBsZXMKICtTVUJESVJTID0gLgogIAotIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAkKERCVVNfQ0ZMQUdTKSAkKERCVVNfR0xJQl9DRkxBR1MpICQoREJVU19HTElCX1RPT0xfQ0ZMQUdTKSAtRERCVVNfQ09NUElMQVRJT049MSAtRERCVVNfTE9DQUxFRElSPVwiJChwcmVmaXgpL0BEQVRBRElSTkFNRUAvbG9jYWxlXCIgCi0gCisgQU1fQ1BQRkxBR1MgPSBcCisgCS1JJCh0b3Bfc3JjZGlyKQkJCQkJCVwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYWRiN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgotCi1SREVQRU5EU18ke1BOfSArPSAibWFrZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRjOTkxZTc2M2Q0ZjlmMTM2OTA0MTZiMmRjZDk0MTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTU3NGI5NzgwYjU0MjVmZGU0ZDk3M2JiNTk2ZTdlYTBmMDllMDBmZTJlZGQ2NjJkYTkwMTZlOTc2YzQ2MGI0OCIKLQotUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1FWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKLUVYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN5c3RlbWQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtdGVzdC1kaXI9JHtQVEVTVF9QQVRIfSBcCi0gICAgICAgICAgICAgICAgJHtFWFRSQV9PRUNPTkZfWH0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgOgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWw9InNoZWxsIHByaW50ZiByZWZzIHN5c2xvZyBtYXJzaGFsIHN5bnRheCBjb3JydXB0IGRidXMtZGFlbW9uIGRidXMtZGFlbW9uLWVhdmVzZHJvcCBsb29wYmFjayByZWxheSIKLQlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCi0JbD0iYnVzIGJ1cy1zeXN0ZW0gYnVzLWxhdW5jaC1oZWxwZXIiCi0JZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS9idXMvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCi0JaW5zdGFsbCAke0J9L2RidXMvLmxpYnMvdGVzdC1kYnVzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtciAke0J9L3Rlc3QvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci19Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZTA0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4yLmJiCkBAIC0wLDAgKzEsODIgQEAKK1NVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgorSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMzYxNDU2Y2FkYjk5YWE2NjAxYmVkNWI0ODk2NDI1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzJiYjUwOTE3NzBiMDQ3YzgxODhiOTI2ZDVlNjAzOGZhNGZlNjc0NTQ4OGIyYWRkOTZiMjNlMmQ5YTgzZDg4IgorCitTPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0VYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgorRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAorICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNQ1RMPSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgorCitkb19pbnN0YWxsKCkgeworICAgIDoKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkgXAorCSAgIHZhcmlhbnQgdWlkLXBlcm1pc3Npb25zIHN5bnRheCBzcGF3biBzZC1hY3RpdmF0aW9uIG5hbWVzIG1vbml0b3IgbWVzc2FnZSBmZHBhc3MgIgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKworCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQorCisJY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKKwljcCAtYSAke0J9L2RidXMvLmxpYnMvKi5zbyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8ubGlicworCisJIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzLi4uCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kYXRhIiBcKCAtbmFtZSAqLnNlcnZpY2UgLW8gLW5hbWUgKi5jb25mIC1vIC1uYW1lICIqLmFhcHJvZmlsZSIgXCkgLXR5cGUgZiAtZXhlYyBcCisJCXNlZCAtaSBcCisJCSAtZSAnczoke0J9OiR7UFRFU1RfUEFUSH06ZycgXAorCQkge30gKworfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmRidXMtMS5zby4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy8wMDAxLWNvbmZpZ3VyZS5hYy1leHBsaWNpdGVseS1jaGVjay1zdGRpbnQuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YWNiN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy8wMDAxLWNvbmZpZ3VyZS5hYy1leHBsaWNpdGVseS1jaGVjay1zdGRpbnQuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMWJmZGUyMjI5MjZiZTYyNGEzMGE2ZTRiMmNkYzJjNTA2NGEzNjI5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IElvYW4tQWRyaWFuIFJhdGl1IDxhZHJpYW4ucmF0aXVAbmkuY29tPgotRGF0ZTogRnJpLCAyOSBKdWwgMjAxNiAwMToxOTozNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGV4cGxpY2l0ZWx5IGNoZWNrIHN0ZGludC5oCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLU90aGVyd2lzZSBIQVZFX1NURElOVF9IIHdpbGwgbm90IGJlIGRlZmluZWQgb3IgdGhlIHZhciB3aWxsIG5vdCBiZQotcGlja2VkIHVwIGZyb20gY2FjaGUgc28gYnVpbGRzIGNvdWxkIGZhaWwgd2l0aCBlcnJvcnMgbGlrZToKLXwgLi4vLi4vZGJ1cy0xLjEwLjgvZGJ1cy9kYnVzLWludGVybmFscy5oOjIzOTo4OiBlcnJvcjog4oCYdWludHB0cl904oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotCi1TaWduZWQtb2ZmLWJ5OiBJb2FuLUFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QG5pLmNvbT4KLVtzbWN2OiBmaXggQXV0b2NvbmYgdW5kZXJxdW90aW5nXQotUmV2aWV3ZWQtYnk6IFNpbW9uIE1jVml0dGllIDxzaW1vbi5tY3ZpdHRpZUBjb2xsYWJvcmEuY28udWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGJ1cy0xLjEwXQotCi0tLS0KLSBjb25maWd1cmUuYWMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjZjVjNWI5Li5hMjI4ZDYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02OTksNiArNjk5LDggQEAgQUNfQ0hFQ0tfSEVBREVSUyhieXRlc3dhcC5oKQotIAotIEFDX0NIRUNLX0hFQURFUlModW5pc3RkLmgpCi0gCi0rQUNfQ0hFQ0tfSEVBREVSUyhbc3RkaW50LmhdKQotKwotIEFDX0NIRUNLX0hFQURFUlMod3MydGNwaXAuaCkKLSAKLSBBQ19DSEVDS19IRUFERVJTKGFsbG9jYS5oKQotLS0gCi0yLjkuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL29zLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL29zLXRlc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YzI1N2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9vcy10ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotZGJ1czogcmVtb3ZlIGJ1aWxkIGhvc3QgdGVzdCBpbiBjb25maWd1cmUgc2NyaXB0Ci0KLVRoZSBkYnVzIGJ1aWxkIHRlc3RzIHRoZSBidWlsZCBob3N0IHRvIGRldGVjdCB3aGF0IGluaXRzY3JpcHQKLWVudmlyb25tZW50IGl0IGV4cGVjdHMuICBSZW1vdmUgdGhlIHRlc3QgYW5kIHNldCBpdCB0byAicmVkaGF0IgotdW5jb25kaXRpb25hbGx5IGFzIHRoZSBvZS1jb3JlIGluaXRzY3JpcHQgaGFzIGEgcmVkaGF0LXN0eWxlIHBpZCBmaWxlCi1wYXRoLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmR5IFJvc3MgPGFuZHkucm9zc0B3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZF0KLQotZGlmZiAtdSBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotLS0tIGEvY29uZmlndXJlLmFjCTIwMTItMDgtMjggMTE6MjM6NDMuMDQwNjA5ODc0IC0wNzAwCi0rKysgYi9jb25maWd1cmUuYWMJMjAxMi0wOC0yOCAxMTo1NDoyNS42MDI5MTM5NDUgLTA3MDAKLUBAIC0xMzQ4LDE5ICsxMzQ4LDggQEAKLSBBU19BQ19FWFBBTkQoRVhQQU5ERURfTElCRVhFQ0RJUiwgIiRsaWJleGVjZGlyIikKLSBBU19BQ19FWFBBTkQoRVhQQU5ERURfREFUQURJUiwgIiRkYXRhZGlyIikKLSAKLS0jIyMjIENoZWNrIG91ciBvcGVyYXRpbmcgc3lzdGVtCi0tb3BlcmF0aW5nX3N5c3RlbT11bmtub3duCi0taWYgdGVzdCAtZiAvZXRjL3JlZGhhdC1yZWxlYXNlIHx8IHRlc3QgLWYgJEVYUEFOREVEX1NZU0NPTkZESVIvcmVkaGF0LXJlbGVhc2UgOyB0aGVuCi0tICAgb3BlcmF0aW5nX3N5c3RlbT1yZWRoYXQKLS1maQotLQotLWlmIHRlc3QgLWYgL2V0Yy9zbGFja3dhcmUtdmVyc2lvbiB8fCB0ZXN0IC1mICRFWFBBTkRFRF9TWVNDT05GRElSL3NsYWNrd2FyZS12ZXJzaW9uIDsgdGhlbgotLSAgIG9wZXJhdGluZ19zeXN0ZW09c2xhY2t3YXJlCi0tZmkKLS0KLS1pZiB0ZXN0IC1mIC91c3IvYmluL2N5Z3dpbjEuZGxsIHx8IHRlc3QgLWYgJEVYUEFOREVEX0JJTkRJUi9jeWd3aW4xLmRsbCA7IHRoZW4KLS0gICBvcGVyYXRpbmdfc3lzdGVtPWN5Z3dpbgotLWZpCi0rIyMjIyBCdWlsZCBob3N0IHRlc3QgcmVtb3ZlZCBmcm9tIHVwc3RyZWFtIGNvZGUsIG9wZW5lbWJlZGRlZCBpbml0c2NyaXB0IGlzIHJlZGhhdC1saWtlOgotK29wZXJhdGluZ19zeXN0ZW09cmVkaGF0Ci0gCi0gIyMjIyBTb3J0IG91dCBpbml0IHNjcmlwdHMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKaW5kZXggYzcyZDA4My4uOGE4OTcwZSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKQEAgLTEsMTAgKzEsMjQgQEAKICMhL2Jpbi9zaAogCiBvdXRwdXQoKSB7Ci0gIGlmIFsgJD8gLWVxIDAgXQorICByZXRjb2RlPSQ/CisgIGlmIFsgJHJldGNvZGUgLWVxIDAgXQogICAgIHRoZW4gZWNobyAiUEFTUzogJGkiCi0gICAgZWxzZSBlY2hvICJGQUlMOiAkaSIKKyAgZWxpZiBbICRyZXRjb2RlIC1lcSA3NyBdCisgICAgdGhlbiBlY2hvICJTS0lQOiAkaSIKKyAgZWxzZSBlY2hvICJGQUlMOiAkaSIKICAgZmkKIH0KIAotZm9yIGkgaW4gYGxzIHRlc3QvdGVzdC0qYDsgZG8gLi8kaSAuL3Rlc3QvZGF0YSBEQlVTX1RFU1RfSE9NRURJUj0uL3Rlc3QgPi9kZXYvbnVsbDsgb3V0cHV0OyBkb25lCitleHBvcnQgREJVU19URVNUX0hPTUVESVI9Li90ZXN0CitleHBvcnQgWERHX1JVTlRJTUVfRElSPS4vdGVzdAorZXhwb3J0IExEX0xJQlJBUllfUEFUSD0vdXNyL2xpYi9kYnVzLXRlc3QvcHRlc3QvdGVzdC8ubGlicworCitmaWxlcz1gbHMgdGVzdC90ZXN0LSpgCisKK2ZvciBpIGluICRmaWxlcworCWRvCisJCS4vJGkgLi90ZXN0L2RhdGEgPi9kZXYvbnVsbAorCQlvdXRwdXQKKwlkb25lCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkZWRjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyBtZXNzYWdlIGJ1cyIKLURFU0NSSVBUSU9OID0gIkQtQnVzIGlzIGEgbWVzc2FnZSBidXMgc3lzdGVtLCBhIHNpbXBsZSB3YXkgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWxrIHRvIG9uZSBhbm90aGVyLiBJbiBhZGRpdGlvbiB0byBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiwgRC1CdXMgaGVscHMgY29vcmRpbmF0ZSBwcm9jZXNzIGxpZmVjeWNsZTsgaXQgbWFrZXMgaXQgc2ltcGxlIGFuZCByZWxpYWJsZSB0byBjb2RlIGEgXCJzaW5nbGUgaW5zdGFuY2VcIiBhcHBsaWNhdGlvbiBvciBkYWVtb24sIGFuZCB0byBsYXVuY2ggYXBwbGljYXRpb25zIGFuZCBkYWVtb25zIG9uIGRlbWFuZCB3aGVuIHRoZWlyIHNlcnZpY2VzIGFyZSBuZWVkZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotREVQRU5EUyA9ICJleHBhdCB2aXJ0dWFsL2xpYmludGwiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCi1BTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCi1SREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL29zLXRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRjOTkxZTc2M2Q0ZjlmMTM2OTA0MTZiMmRjZDk0MTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTU3NGI5NzgwYjU0MjVmZGU0ZDk3M2JiNTk2ZTdlYTBmMDllMDBmZTJlZGQ2NjJkYTkwMTZlOTc2YzQ2MGI0OCIKLQotaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotSU5JVFNDUklQVF9OQU1FID0gImRidXMtMSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAyIDUgMyAyIC4gc3RvcCAyMCAwIDEgNiAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbmV0ZGV2IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cyBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiAke3N5c2NvbmZkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYiCi0KLURFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGliIgotCi1PTERQS0dOQU1FID0gImRidXMteDExIgotT0xEUEtHTkFNRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi0jIGZvciBjb21wYXRpYmlsaXR5Ci1SUFJPVklERVNfJHtQTn0gPSAiJHtPTERQS0dOQU1FfSIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtPTERQS0dOQU1FfSIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2RidXMtZGFlbW9uKiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11dWlkZ2VuIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWNsZWFudXAtc29ja2V0cyBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1zZW5kIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLW1vbml0b3IgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbGF1bmNoIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXJ1bi1zZXNzaW9uIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXVwZGF0ZS1hY3RpdmF0aW9uLWVudmlyb25tZW50IFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vZGJ1cyogXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgotcGtnX3Bvc3RpbnN0X2RidXMoKSB7Ci0JIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQotCWZpCi0KLQlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0JCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCWZpCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCi1QQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCXNlZCAnczpAYmluZGlyQDoke2JpbmRpcn06JyA8ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQgPiR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2gKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RidXMtMQotCWZpCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlmb3IgaSBpbiBkYnVzLnRhcmdldC53YW50cyBzb2NrZXRzLnRhcmdldC53YW50cyBtdWx0aS11c2VyLnRhcmdldC53YW50czsgZG8gXAotCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8kaTsgZG9uZQotCQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9idXMvZGJ1cy5zZXJ2aWNlICR7Qn0vYnVzL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LwotCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAotCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCi0KLQotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKLQotCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0JY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0KLQkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKLQlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAotCi0JIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KLQlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCi0JIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/Ci0JaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKLQotCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQotCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKLQkKLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKLQkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjViNjlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIKQEAgLTAsMCArMSwxODEgQEAKK1NVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCitERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKK0RFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIGF1dG9jb25mLWFyY2hpdmUiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCitBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCitSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjMzNjE0NTZjYWRiOTlhYTY2MDFiZWQ1YjQ4OTY0MjU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3MmJiNTA5MTc3MGIwNDdjODE4OGI5MjZkNWU2MDM4ZmE0ZmU2NzQ1NDg4YjJhZGQ5NmIyM2UyZDlhODNkODgiCisKK2luaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgorCitERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKKworT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKK09MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworIyBmb3IgY29tcGF0aWJpbGl0eQorUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3htbC9kYnVzLTEgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN1c2Vycy5kL2RidXMuY29uZiBcCisgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kL2RidXMuY29uZiBcCisiCitGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTXyR7UE59LWxpYiA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtsaWJkaXJ9L2NtYWtlL0RCdXMxICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKKworUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgorcGtnX3Bvc3RpbnN0X2RidXMoKSB7CisJIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpZiBbIC1uICIkRCIgXTsgdGhlbgorCQkJT1BUUz0iLS1yb290PSREIgorCQlmaQorCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQorCWZpCisKKwlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCisJCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorCWZpCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCitQQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCXNlZCAnczpAYmluZGlyQDoke2JpbmRpcn06JyA8ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQgPiR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2gKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RidXMtMQorCWZpCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlmb3IgaSBpbiBkYnVzLnRhcmdldC53YW50cyBzb2NrZXRzLnRhcmdldC53YW50cyBtdWx0aS11c2VyLnRhcmdldC53YW50czsgZG8gXAorCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8kaTsgZG9uZQorCQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9idXMvZGJ1cy5zZXJ2aWNlICR7Qn0vYnVzL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LworCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAorCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCisKKworCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKKworCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCisJY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCisKKwkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKKwlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAorCisJIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAorCisJIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KKwlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCisJIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/CisJaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKKworCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQorCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKKwkKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKKwkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCisJcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAorCisJIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoCmluZGV4IDc1MzlkMjAuLjYwYzZhMjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNC1maXgtMmtiLWtleXMucGF0Y2gKQEAgLTUsMTggKzUsMTUgQEAKICBrZXguaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2tleC5oIGIva2V4LmgKLWluZGV4IDcyNDMwZTkuLjM3NWM2NzcgMTAwNjQ0Ci0tLS0gYS9rZXguaAotKysrIGIva2V4LmgKLUBAIC02Nyw2ICs2Nyw2IEBAIHN0cnVjdCBLRVhTdGF0ZSB7Ci0gfTsKK0luZGV4OiBkcm9wYmVhci0yMDE3Ljc1L2tleC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZHJvcGJlYXItMjAxNy43NS5vcmlnL2tleC5oCisrKysgZHJvcGJlYXItMjAxNy43NS9rZXguaAorQEAgLTEwNiw2ICsxMDYsNiBAQCBpbnQgY3VydmUyNTUxOV9kb25uYSh1bnNpZ25lZCBjaGFyICpvdXQsCisgI2VuZGlmCiAgCiAgCiAtI2RlZmluZSBNQVhfS0VYSEFTSEJVRiAyMDAwCiArI2RlZmluZSBNQVhfS0VYSEFTSEJVRiAzMDAwCiAgCi0gI2VuZGlmIC8qIF9LRVhfSF8gKi8KLS0tIAotMS43LjExLjcKLQorICNlbmRpZiAvKiBEUk9QQkVBUl9LRVhfSF8gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWU2YzI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgc3RyZWFtLW9yaWVudGVkIFhNTCBwYXJzZXIgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkV4cGF0IGlzIGFuIFhNTCBwYXJzZXIgbGlicmFyeSB3cml0dGVuIGluIEMuIEl0IGlzIGEgc3RyZWFtLW9yaWVudGVkIHBhcnNlciBpbiB3aGljaCBhbiBhcHBsaWNhdGlvbiByZWdpc3RlcnMgaGFuZGxlcnMgZm9yIHRoaW5ncyB0aGUgcGFyc2VyIG1pZ2h0IGZpbmQgaW4gdGhlIFhNTCBkb2N1bWVudCAobGlrZSBzdGFydCB0YWdzKSIKLUhPTUVQQUdFID0gImh0dHA6Ly9leHBhdC5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKLQkgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vbm9fZ2V0cmFuZG9tLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZQotCi0jIFRoaXMgcGFja2FnZSB1c2VzIGFuIGFyY2hpdmUgZm9ybWF0IGtub3duIHRvIGhhdmUgaXNzdWUgd2l0aCBzb21lCi0jIHZlcnNpb25zIG9mIGd6aXAKLURFUEVORFMgKz0gInBpZ3otbmF0aXZlIgotZG9fdW5wYWNrW2RlcGVuZHNdICs9ICJwaWd6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9jb25mdG9vbHMvbGlidG9vbC5tNAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvYXV0b3Rvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaAppbmRleCAzZDNjNWJhLi4xMDQ3MTdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvYXV0b3Rvb2xzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9hdXRvdG9vbHMucGF0Y2gKQEAgLTEwLDExICsxMCwxMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgogCi1kaWZmIC1OdXJkIGV4cGF0LTIuMS4wL2NvbmZpZ3VyZS5pbiBleHBhdC0yLjEuMC9jb25maWd1cmUuaW4KLS0tLSBleHBhdC0yLjEuMC9jb25maWd1cmUuYWMJMjAxMi0wMy0wNCAwMTo0NTo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBleHBhdC0yLjEuMC9jb25maWd1cmUuYWMJMjAxMi0wNS0xMCAyMTowNDo0NC4wMDAwMDAwMDAgKzAzMDAKLUBAIC01MSw4ICs1MSw2IEBACi0gCitJbmRleDogZXhwYXQtMi4yLjUvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZXhwYXQtMi4yLjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBleHBhdC0yLjIuNS9jb25maWd1cmUuYWMKK0BAIC01Myw4ICs1Myw2IEBAIExJQkFHRT02ICAgICAgICMgQ01ha2VMaXN0cy50eHQhCisgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ESEFWRV9FWFBBVF9DT05GSUdfSCIKICBBQ19DT05GSUdfSEVBREVSKGV4cGF0X2NvbmZpZy5oKQogIAogLXNpbmNsdWRlKGNvbmZ0b29scy9hY19jX2JpZ2VuZGlhbl9jcm9zcy5tNCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaAppbmRleCAzZWY0MTk3Li4wYTBhZWQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2xpYnRvb2wtdGFnLnBhdGNoCkBAIC0xLDE4ICsxLDMwIEBACitGcm9tIDEwMzQyZTZiNjAwODU4YjA5MWJjNzc3MWU0NTRkOWUwNmFmMDY0MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE4OjIwOjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBDQyB0YWcgdG8gYnVpbGQKKwogQWRkIENDIHRhZyB0byBidWlsZAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBleHBhdC0yLjIuMi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGV4cGF0LTIuMi4yLm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBleHBhdC0yLjIuMi9NYWtlZmlsZS5pbgotQEAgLTEwOSw3ICsxMDksNyBAQCBta2Rpci1pbml0OgotIAotIENDID0gQENDQAotIENYWCA9IEBDWFhACitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggOTU2MGE5NS4uZDQ0NGJkNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTMxOSw3ICszMTksNyBAQCBMSUJDVVJSRU5UID0gQExJQkNVUlJFTlRACisgTElCT0JKUyA9IEBMSUJPQkpTQAorIExJQlJFVklTSU9OID0gQExJQlJFVklTSU9OQAorIExJQlMgPSBATElCU0AKIC1MSUJUT09MID0gQExJQlRPT0xACiArTElCVE9PTCA9IEBMSUJUT09MQCAtLXRhZyBDQwotIAotIElOQ0xVREVTID0gLUkkKHNyY2RpcikvbGliIC1JLgotIExERkxBR1MgPSBATERGTEFHU0AKKyBMSVBPID0gQExJUE9ACisgTE5fUyA9IEBMTl9TQAorIExUTElCT0JKUyA9IEBMVExJQk9CSlNACistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjRmMWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgbmF0aXZlIHZlcnNpb24gb2YgZXhwYXQgbWF5IGJlIHVzZWQgb24gb2xkZXIgc3lzdGVtcyB3aGljaCBkb250IGhhdmUgZ2xpYmMgMi4yNQotYW5kIGhlbmNlIGRvbid0IGhhdmUgZ2V0cmFuZG9tKCkgdGhhbmtzIHRvIHVuaW5hdGl2ZS4gRGlzYWJsZSB0aGUgbGliYyBjYWxsIGFuZAotdXNlIHRoZSBzeXNjYWxsIGluc3RlYWQgdG8gYXZvaWQgYSBjb21wYXRpYmlsaXR5IGlzc3VlIHVudGlsIHdlIGhhdmUgMi4yNSBldmVyeXdoZXJlCi13ZSBzdXBwb3J0IHdpdGggdW5pbmF0aXZlLgotCi1SUAotMjAxNy84LzE0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1JbmRleDogZXhwYXQtMi4yLjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXhwYXQtMi4yLjMub3JpZy9jb25maWd1cmUuYWMKLSsrKyBleHBhdC0yLjIuMy9jb25maWd1cmUuYWMKLUBAIC0xNTEsNyArMTUxLDcgQEAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKLSAgICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8qIGZvciBOVUxMICovCi0gICAjaW5jbHVkZSA8c3lzL3JhbmRvbS5oPgotICAgaW50IG1haW4oKSB7Ci0tICAgIHJldHVybiBnZXRyYW5kb20oTlVMTCwgMFUsIDBVKTsKLSsgICAgcmV0dXJuIGdldHJhbmRvbUJSRUFLTUUoTlVMTCwgMFUsIDBVKTsKLSAgIH0KLSBdKV0sIFsKLSAgICAgQUNfREVGSU5FKFtIQVZFX0dFVFJBTkRPTV0sIFsxXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmODQ1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgZXhwYXQuaW5jCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01Yjg2MjBkOThlNDk3NzJkOTVmYzFkMjkxYzI2YWE3OSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMDUzYWY2M2VmNWYzOWJkOWI3OGQwMWZiYzIwMzMzNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzE4OTBmYjAyZjg1YzAwMmE2NzQ5MTkyM2Y4OWJkYTUwMjhhODgwZmQ2YzM3NGY3MDcxOTNhZDgxYWFjZTVmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2OGEyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjUuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBIHN0cmVhbS1vcmllbnRlZCBYTUwgcGFyc2VyIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJFeHBhdCBpcyBhbiBYTUwgcGFyc2VyIGxpYnJhcnkgd3JpdHRlbiBpbiBDLiBJdCBpcyBhIHN0cmVhbS1vcmllbnRlZCBwYXJzZXIgaW4gd2hpY2ggYW4gYXBwbGljYXRpb24gcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciB0aGluZ3MgdGhlIHBhcnNlciBtaWdodCBmaW5kIGluIHRoZSBYTUwgZG9jdW1lbnQgKGxpa2Ugc3RhcnQgdGFncykiCitIT01FUEFHRSA9ICJodHRwOi8vZXhwYXQuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01Yjg2MjBkOThlNDk3NzJkOTVmYzFkMjkxYzI2YWE3OSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwYXQvZXhwYXQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAorCSAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzg5ZTI5N2Y1NDc5ODBmYzllY2MwMzZmOWEwNzBkNDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkYzMyZWZiYTdlNzRmNzg4ZmNjNGYyMTJhNDMyMTZmYzM3Y2Y1ZjIzZjRjMjMzOTY2NGQ0NzMzNTNhZWRmNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vY29uZnRvb2xzL2xpYnRvb2wubTQKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNTZhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2gKQEAgLTAsMCArMSwzMjEgQEAKK0ZvciByZWFzb25zIHdoaWNoIEkganVzdCBjYW4ndCBmYXRob20gZ251bGliIGRvZXNuJ3QgdXNlIHRoZSBleHBlY3RlZCB0b29scyB0bworZmluZCBsaWJyYXJpZXMgYnV0IGJhZGx5IHJlaW52ZW50cyB0aGUgd2hlZWwuICBUaGlzIHdpbGwgdHJpdmlhbGx5IGxlYWQgdG8gaG9zdAorY29udGFtaW5hdGlvbiAoZXhwbGljaXQgc2VhcmNoZXMgb2YgL3Vzci9saWIpIG9yIGluY29ycmVjdCBSUEFUSHMgKGJhZAorY2Fub25pY2FsaXNhdGlvbiByZXN1bHRpbmcgaW4gcmVsYXRpdmUgcGF0aHMpLgorCitTaW1wbHkgZGVsZXRlIGFsbCB0aGUgY3JhenksIGFuZCByZXBsYWNlIHdpdGggYSBzaW5nbGUgY2FsbCB0byBwa2ctY29uZmlnLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKHVwc3RyZWFtIHN0aWxsIHJlZnVzZSB0byBjb25zaWRlciBwa2ctY29uZmlnKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNAoraW5kZXggZjc5ZWE4MmYxLi4xZjY3Mjc0ZGIgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJjcm9jby5tNAorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliY3JvY28ubTQKK0BAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisgCisgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKKyBbCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCisgICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKyAKK0BAIC0yMyw2NSArMjQsMTAgQEAgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKKyAgIExUTElCQ1JPQ089CisgICBJTkNDUk9DTz0KKyAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliY3JvY28tMC42LCBvciBoYXZlIHRvCistICAgIGRubCB1c2UgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKKy0gICAgICBnbF9jdl9saWJjcm9jbz1ubworLSAgICAgIGdsX2N2X0xJQkNST0NPPQorLSAgICAgIGdsX2N2X0xUTElCQ1JPQ089CistICAgICAgZ2xfY3ZfSU5DQ1JPQ089CistICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCistICAgICAgZG5sIElOQ0NST0NPXzBfNiBhY2NvcmRpbmdseS4KKy0gICAgICBkbmwgRG9uJ3QgdXNlIGNyb2NvLTAuNi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtjcm9jby0wLjZdLCBbZ2xpYi0yLjBdKQorLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKKy0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgIF0pCistICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCistICAgICAgICAgIGRubCAvdXNyL2luY2x1ZGUvbGliY3JvY28tMC42L2xpYmNyb2NvLgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oXSkKKy0gICAgICAgICAgICAgbGliY3JvY29faW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJjcm9jb18wXzZfbGliY3JvY29fbGliY3JvY29fY29uZmlnX2giIHwgc2VkIC1lICdzLC5saWJjcm9jby1jb25maWdcLmgkLCwnYAorLSAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICAgZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSItSSRsaWJjcm9jb19pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgZmkKKy0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICBmaQorLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgIF0pCistICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvXSkKKy0gICAgaWYgdGVzdCAkZ2xfY3ZfbGliY3JvY28gPSB5ZXM7IHRoZW4KKy0gICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgorLSAgICAgIExUTElCQ1JPQ089IiRnbF9jdl9MVExJQkNST0NPIgorLSAgICAgIElOQ0NST0NPPSIkZ2xfY3ZfSU5DQ1JPQ08iCistICAgIGVsc2UKKy0gICAgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9eWVzCistICAgIGZpCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtDUk9DT10sIFtsaWJjcm9jby0wLjZdKQorKyAgICBMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBMVExJQkNST0NPPSRDUk9DT19MSUJTCisrICAgIElOQ0NST0NPPSRDUk9DT19DRkxBR1MKKyAgIGZpCisgICBBQ19TVUJTVChbTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0xUTElCQ1JPQ09dKQorZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00IGIvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKK2luZGV4IDQyZTU1ZTZmZC4uYWIyNWE1YjIyIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliZ2xpYi5tNAorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliZ2xpYi5tNAorQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKyBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorQEAgLTIwLDc2ICsyMSwxMCBAQCBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCisgICBMVExJQkdMSUI9CisgICBJTkNHTElCPQorICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmdsaWItMi4wLCBvciBoYXZlIHRvIHVzZQorLSAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWworLSAgICAgIGdsX2N2X2xpYmdsaWI9bm8KKy0gICAgICBnbF9jdl9MSUJHTElCPQorLSAgICAgIGdsX2N2X0xUTElCR0xJQj0KKy0gICAgICBnbF9jdl9JTkNHTElCPQorLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKKy0gICAgICBkbmwgSU5DR0xJQl8yXzAgYWNjb3JkaW5nbHkuCistICAgICAgZG5sIERvbid0IHVzZSBnbGliLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2dsaWItMi4wXSkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKKy0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgXSkKKy0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCistICAgICAgICAgIGRubCBhbmQgL3Vzci9saWIvZ2xpYi0yLjAvaW5jbHVkZS4KKy0gICAgICAgICAgaWYgdGVzdCAtbiAiJExJQkdMSUJfMl8wX1BSRUZJWCI7IHRoZW4KKy0gICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgZmkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICBdKQorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnbGliXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQorLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJnbGliID0geWVzOyB0aGVuCistICAgICAgTElCR0xJQj0iJGdsX2N2X0xJQkdMSUIiCistICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgorLSAgICAgIElOQ0dMSUI9IiRnbF9jdl9JTkNHTElCIgorLSAgICBlbHNlCistICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCistICAgIGZpCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTElCXSwgW2dsaWItMi4wXSkKKysgICAgTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgTFRMSUJHTElCPSIkR0xJQl9MSUJTIgorKyAgICBJTkNHTElCPSIkR0xJQl9DRkxBR1MiCisgICBmaQorICAgQUNfU1VCU1QoW0xJQkdMSUJdKQorICAgQUNfU1VCU1QoW0xUTElCR0xJQl0pCitkaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYnhtbC5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJ4bWwubTQKK2luZGV4IDQ4MGM3MDBkMi4uY2IzOTMwOWQ1IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CisrKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKK0BAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKKyBBQ19ERUZVTihbZ2xfTElCWE1MXSwKKyBbCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktdKQorCisgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGlieG1sIGlzIHJlcXVlc3RlZF0pCitAQCAtMjIsMTAwICsyMiwxMCBAQCBBQ19ERUZVTihbZ2xfTElCWE1MXSwKKyAgIExUTElCWE1MPQorICAgSU5DWE1MPQorICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGlieG1sMiwgb3IgaGF2ZSB0byB1c2UKKy0gICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGlieG1sXSwgWworLSAgICAgIGdsX2N2X2xpYnhtbD1ubworLSAgICAgIGdsX2N2X0xJQlhNTD0KKy0gICAgICBnbF9jdl9MVExJQlhNTD0KKy0gICAgICBnbF9jdl9JTkNYTUw9CistICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCistICAgICAgZG5sIFNlYXJjaCBmb3IgbGlieG1sMiBhbmQgZGVmaW5lIExJQlhNTDIsIExUTElCWE1MMiBhbmQgSU5DWE1MMgorLSAgICAgIGRubCBhY2NvcmRpbmdseS4KKy0gICAgICBkbmwgRG9uJ3QgdXNlIHhtbDItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgIGRubCBVc2UgYSB0ZXN0IHByb2dyYW0gdGhhdCB0cmllcyB0byBpbnZva2UgeG1sRnJlZS4gT24gQ3lnd2luIDEuNy54LAorLSAgICAgIGRubCBsaWJ4bWwyIGlzIGJ1aWx0IGluIHN1Y2ggYSB3YXkgdGhhdCB1c2VzIG9mIHhtbEZyZWUgd29yayBmaW5lIHdpdGgKKy0gICAgICBkbmwgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IGJ1dCBsZWFkIHRvIGEgbGluayBlcnJvciB3aXRoCistICAgICAgZG5sIC1XbCwtLWRpc2FibGUtYXV0by1pbXBvcnQuCistICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFt4bWwyXSkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+CistICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7CistICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgXSwKKy0gICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCistICAgICAgICBdKQorLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWwiICE9IHllczsgdGhlbgorLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DWE1MMiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgIF0sCistICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSIkSU5DWE1MMiIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWwiICE9IHllczsgdGhlbgorLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvbGlieG1sMi4KKy0gICAgICAgICAgZG5sIEluIGxpYnhtbDItMi41LCA8bGlieG1sL3htbHZlcnNpb24uaD4gaXMgc2VsZi1jb250YWluZWQuCistICAgICAgICAgIGRubCBJbiBsaWJ4bWwyLTIuNiwgaXQgaW5jbHVkZXMgPGxpYnhtbC94bWxleHBvcnRzLmg+IHdoaWNoIGlzCistICAgICAgICAgIGRubCBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj0KKy0gICAgICAgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPGxpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaD5dLAorLSAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0pCistICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWxleHBvcnRzX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sZXhwb3J0c1wuaCQsLCdgCistICAgICAgICAgICAgXSkKKy0gICAgICAgICAgaWYgdGVzdCAteiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPGxpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaD5dLAorLSAgICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oXSkKKy0gICAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sdmVyc2lvbl9oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbHZlcnNpb25cLmgkLCwnYAorLSAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgaWYgdGVzdCAtbiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiICYmIHRlc3QgLWQgIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRsaWJ4bWwyX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKKy0gICAgICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKKy0gICAgICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgICBnbF9jdl9JTkNYTUw9Ii1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICBmaQorLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgIF0pCistICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnhtbF0pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJ4bWxdKQorLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJ4bWwgPSB5ZXM7IHRoZW4KKy0gICAgICBMSUJYTUw9IiRnbF9jdl9MSUJYTUwiCistICAgICAgTFRMSUJYTUw9IiRnbF9jdl9MVExJQlhNTCIKKy0gICAgICBJTkNYTUw9IiRnbF9jdl9JTkNYTUwiCistICAgIGVsc2UKKy0gICAgICBnbF9jdl9saWJ4bWxfdXNlX2luY2x1ZGVkPXllcworLSAgICBmaQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbWE1MXSwgW2xpYnhtbC0yLjBdKQorKyAgICBMSUJYTUw9JFhNTF9MSUJTCisrICAgIExUTElCWE1MPSRYTUxfTElCUworKyAgICBJTkNYTUw9JFhNTF9DRkxBR1MKKyAgIGZpCisgICBBQ19TVUJTVChbTElCWE1MXSkKKyAgIEFDX1NVQlNUKFtMVExJQlhNTF0pCitkaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworaW5kZXggODFhNDA3NDY3Li4yMTg1NjUzMjkgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCisrKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCitAQCAtMjUsNCArMjUsNCBAQAorLSNpbmNsdWRlIDxjci1vbS1wYXJzZXIuaD4KKy0jaW5jbHVkZSA8Y3Itc2VsLWVuZy5oPgorLSNpbmNsdWRlIDxjci1zdHlsZS5oPgorLSNpbmNsdWRlIDxjci1yZ2IuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itb20tcGFyc2VyLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXNlbC1lbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3R5bGUuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3ItcmdiLmg+CitAQCAtMzEgKzMxIEBACistIyBpbmNsdWRlIDxjci1mb250cy5oPgorKyMgaW5jbHVkZSA8bGliY3JvY28vY3ItZm9udHMuaD4KK0BAIC0zMyArMzMgQEAKKy0jaW5jbHVkZSA8Y3Itc3RyaW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKaW5kZXggYzIwNTllNi4uNjhmNWNjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCkBAIC04LDcgKzgsNyBAQAogTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMLTIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IGV4cGF0IgorREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKIFBST1ZJREVTID0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2dldHRleHQiCiBQUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidmlydHVhbC9nZXR0ZXh0LW5hdGl2ZSIKQEAgLTE3LDE0ICsxNywxMyBAQAogCSAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCiAJICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKIAkgICBmaWxlOi8vY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisJICAgZmlsZTovL3VzZS1wa2djb25maWcucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiOTdlMDM0Y2Y4Y2U1YmE3M2EyOGZmNmMzYzA2MzgwOTIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmY5NDJhZjBlNDM4Y2VkNGE4YjBlYTRiMGI2ZTBkNmQ2NTcxNTdjNWUyMzY0ZGU1N2JhYTI3OWMxYzEyNWM0MyIKIAotUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jc2hhcnAgXApAQCAtMzMsMTggKzMyLDI2IEBACiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uYXRpdmUtamF2YSBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vcGVubXAgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtYWNsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWdsaWIgXAogICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZW1hY3MgXAogICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIFwKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdpdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1pbmNsdWRlZC1saWJ4bWwgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nIFwKICAgICAgICAgICAgICAgICAiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAogICAgICAgICAgICAgICAgICAtLXdpdGgtYmlzb25sb2NhbGVkaXI9JHtkYXRhZGlyfS9sb2NhbGUgXAogIgogCitQQUNLQUdFQ09ORklHID8/PSAiY3JvY28gZ2xpYiBsaWJ4bWwiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbY3JvY29dID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJjcm9jbywtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28sbGliY3JvY28iCitQQUNLQUdFQ09ORklHW2dsaWJdID0gIi0td2l0aG91dC1pbmNsdWRlZC1nbGliLC0td2l0aC1pbmNsdWRlZC1nbGliLGdsaWItMi4wIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWxdID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJ4bWwsLS13aXRoLWluY2x1ZGVkLWxpYnhtbCxsaWJ4bWwyIgorIyBOZWVkIHBhdGhzIGhlcmUgdG8gYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uIGJ1dCB0aGlzIGNhbiBjYXVzZSBSUEFUSCB3YXJuaW5ncworIyBvciBwcm9ibGVtcyBpZiAkbGliZGlyIGlzbid0ICRwcmVmaXgvbGliLgorUEFDS0FHRUNPTkZJR1tsaWJ1bmlzdHJpbmddID0gIi0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0td2l0aC1pbmNsdWRlZC1saWJ1bmlzdHJpbmcsbGlidW5pc3RyaW5nIgorUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKKwogYWNwYXRocyA9ICctSSAke1N9L2dldHRleHQtcnVudGltZS9tNCBcCiAgICAgICAgICAgIC1JICR7U30vZ2V0dGV4dC10b29scy9tNCcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2gKaW5kZXggNDFhMTkwZS4uNjdjYTYyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0MTUzNDI1M2I2YjYxZWQ0NzY5ZWI2YTM5NjY2OThhNTBlZTczYjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyYWNmNDAzNjFlZWNkMTdjNjk4MTc0M2RhYmQwNmUyNWE5OTM0MjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDEyIEp1biAyMDE1IDE3OjA4OjQ2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0aGUgd2FybmluZyBhYm91dCBkZXByZWNhdGVkIHBhdGhzIGluIHNjaGVtYXMKK1N1YmplY3Q6IFtQQVRDSCAwNS8xMF0gUmVtb3ZlIHRoZSB3YXJuaW5nIGFib3V0IGRlcHJlY2F0ZWQgcGF0aHMgaW4gc2NoZW1hcwogCiBTb21lIHNjaGVtYXMgaW4gZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyAoc3VjaCBhcyBwcm94eSBhbmQgbG9jYWxlKQogYXJlIHN0aWxsIHVzaW5nIGRlcHJlY2F0ZWQgcGF0aHMsIGFzIG9mIDMuMTYuMS4gVGhpcyBjYXVzZXMgd2FybmluZwpAQCAtMTEsMjYgKzExLDMzIEBACiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCi0gZ2lvL2dsaWItY29tcGlsZS1zY2hlbWFzLmMgfCA2IC0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQorIGdpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jIHwgMTMgLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jIGIvZ2lvL2dsaWItY29tcGlsZS1zY2hlbWFzLmMKLWluZGV4IGU0Mjk0OWIuLmVjNzlkN2MgMTAwNjQ0CitpbmRleCBiOGRlMDkwLi4xMzBmODliIDEwMDY0NAogLS0tIGEvZ2lvL2dsaWItY29tcGlsZS1zY2hlbWFzLmMKICsrKyBiL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jCi1AQCAtMTIwMiwxMiArMTIwMiw2IEBAIHBhcnNlX3N0YXRlX3N0YXJ0X3NjaGVtYSAoUGFyc2VTdGF0ZSAgKnN0YXRlLAorQEAgLTEyMTksMTkgKzEyMTksNiBAQCBwYXJzZV9zdGF0ZV9zdGFydF9zY2hlbWEgKFBhcnNlU3RhdGUgICpzdGF0ZSwKICAgICAgICByZXR1cm47CiAgICAgIH0KICAKIC0gIGlmIChwYXRoICYmIChnX3N0cl9oYXNfcHJlZml4IChwYXRoLCAiL2FwcHMvIikgfHwKIC0gICAgICAgICAgICAgICBnX3N0cl9oYXNfcHJlZml4IChwYXRoLCAiL2Rlc2t0b3AvIikgfHwKIC0gICAgICAgICAgICAgICBnX3N0cl9oYXNfcHJlZml4IChwYXRoLCAiL3N5c3RlbS8iKSkpCi0tICAgIGdfcHJpbnRlcnIgKCJ3YXJuaW5nOiBTY2hlbWEgJyVzJyBoYXMgcGF0aCAnJXMnLiAgUGF0aHMgc3RhcnRpbmcgd2l0aCAiCi0tICAgICAgICAgICAgICAgICInL2FwcHMvJywgJy9kZXNrdG9wLycgb3IgJy9zeXN0ZW0vJyBhcmUgZGVwcmVjYXRlZC5cbiIsIGlkLCBwYXRoKTsKKy0gICAgeworLSAgICAgIGdjaGFyICptZXNzYWdlID0gTlVMTDsKKy0gICAgICBtZXNzYWdlID0gZ19zdHJkdXBfcHJpbnRmIChfKCJXYXJuaW5nOiBTY2hlbWEg4oCcJXPigJ0gaGFzIHBhdGgg4oCcJXPigJ0uICAiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0aHMgc3RhcnRpbmcgd2l0aCAiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi4oCcL2FwcHMv4oCdLCDigJwvZGVza3RvcC/igJ0gb3Ig4oCcL3N5c3RlbS/igJ0gYXJlIGRlcHJlY2F0ZWQuIiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsIHBhdGgpOworLSAgICAgIGdfcHJpbnRlcnIgKCIlc1xuIiwgbWVzc2FnZSk7CistICAgICAgZ19mcmVlIChtZXNzYWdlKTsKKy0gICAgfQogLQogICAgc3RhdGUtPnNjaGVtYV9zdGF0ZSA9IHNjaGVtYV9zdGF0ZV9uZXcgKHBhdGgsIGdldHRleHRfZG9tYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZHMsIGV4dGVuZHNfbmFtZSwgbGlzdF9vZik7CiAgCiAtLSAKLTIuMS40CisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk3ZDYzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBiOTE2MGQ5NTFiOWFmNjQ3Yjk3NzY2YzU3Mjk1Y2E0ZjQ1Y2Y5NTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgT2N0IDIwMTcgMTA6NDU6NTUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMF0gRG8gbm90IGhhcmRjb2RlIHB5dGhvbiBwYXRoIGludG8gdmFyaW91cyB0b29scworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluIHwgMiArLQorIGdvYmplY3QvZ2xpYi1nZW5tYXJzaGFsLmluICAgICAgICAgICAgIHwgMiArLQorIGdvYmplY3QvZ2xpYi1ta2VudW1zLmluICAgICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4gYi9naW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbgoraW5kZXggODA1MDk4MS4uZTY5M2VmMyAxMDA2NDQKKy0tLSBhL2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluCisrKysgYi9naW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBHREJ1cyAtIEdMaWIgRC1CdXMgTGlicmFyeQorICMKK2RpZmYgLS1naXQgYS9nb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbiBiL2dvYmplY3QvZ2xpYi1nZW5tYXJzaGFsLmluCitpbmRleCAwOWU4NDA4Li5iMmY5ZDk5IDEwMDc1NQorLS0tIGEvZ29iamVjdC9nbGliLWdlbm1hcnNoYWwuaW4KKysrKyBiL2dvYmplY3QvZ2xpYi1nZW5tYXJzaGFsLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIHB5bGludDogZGlzYWJsZT10b28tbWFueS1saW5lcywgbWlzc2luZy1kb2NzdHJpbmcsIGludmFsaWQtbmFtZQorIAorZGlmZiAtLWdpdCBhL2dvYmplY3QvZ2xpYi1ta2VudW1zLmluIGIvZ29iamVjdC9nbGliLW1rZW51bXMuaW4KK2luZGV4IGQ0YmZkMTEuLjA1MWZjZTQgMTAwNzU1CistLS0gYS9nb2JqZWN0L2dsaWItbWtlbnVtcy5pbgorKysrIGIvZ29iamVjdC9nbGliLW1rZW51bXMuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IEBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgSWYgdGhlIGNvZGUgYmVsb3cgbG9va3MgaG9ycmlibGUgYW5kIHVucHl0aG9uaWMsIGRvIG5vdCBwYW5pYy4KKyAjCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAppbmRleCA5YjRkZWQxLi5iOThmOTMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMxMGRmZTFiZGQxNmQ0YjI1NDczMmZjYzIwMmM2MjExNjI5YmM3YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ3NjI5MDdkMzNiODFjZjc0NjliNTY5NmM4N2YyMTg4ZDIwNTBhZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA5IE5vdiAyMDE1IDExOjA3OjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEVuYWJsZSBtb3JlIHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZworU3ViamVjdDogW1BBVENIIDA2LzEwXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKIAogVXBzdHJlYW0gZGlzYWJsZXMgYSBmZXcgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nIGJlY2F1c2UgdGhlaXIgYnVpbGQgcmVxdWlyZXMKIHJ1bm5pbmcgb3RoZXIgYnVpbHQgYmluYXJpZXMuIFRoaXMgdXN1YWxseSBtYWtlcyBzZW5zZSBidXQgaW4gdGhlIGNyb3NzLWNvbXBpbGUKQEAgLTksMTYgKzksMTcgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIGdpby90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCA4ICsrKy0tLS0tCi0gdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbSB8IDggKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisgZ2lvL3Rlc3RzL01ha2VmaWxlLmFtICAgICB8IDEwICsrKysrKy0tLS0KKyB0ZXN0cy9nb2JqZWN0L01ha2VmaWxlLmFtIHwgIDggKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9naW8vdGVzdHMvTWFrZWZpbGUuYW0gYi9naW8vdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDg2ODg3M2YuLjUzM2U0NTQgMTAwNjQ0CitpbmRleCBhY2MxZGE0Li45MTc2NjQwIDEwMDY0NAogLS0tIGEvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi9naW8vdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC01MDMsMTAgKzUwMyw5IEBAIHRlc3RfcHJvZ3JhbXMgKz0gXAorQEAgLTUxNiwxMCArNTE2LDkgQEAgdGVzdF9wcm9ncmFtcyArPSBcCiAgZW5kaWYKICAKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMSw3ICszMiw3IEBACiAgdGVzdF9wcm9ncmFtcyArPSByZXNvdXJjZXMKICByZXNvdXJjZXNfU09VUkNFUyA9IHJlc291cmNlcy5jCiAgbm9kaXN0X3Jlc291cmNlc19TT1VSQ0VTID0gdGVzdF9yZXNvdXJjZXMuYyB0ZXN0X3Jlc291cmNlczIuYyB0ZXN0X3Jlc291cmNlczIuaAotQEAgLTUyOCw3ICs1MjcsMTEgQEAgaWYgIUVOQUJMRV9JTlNUQUxMRURfVEVTVFMKK0BAIC01NDMsNyArNTQyLDExIEBAIGlmICFFTkFCTEVfSU5TVEFMTEVEX1RFU1RTCiAgbGlicmVzb3VyY2VwbHVnaW5fbGFfTERGTEFHUyArPSAtcnBhdGggLwogIGVuZGlmCiAgCkBAIC00MSwxOCArNDIsMTggQEAKICtnbGliX2NvbXBpbGVfcmVzb3VyY2VzPWdsaWItY29tcGlsZS1yZXNvdXJjZXMKICtlbmRpZgogIAotIHJlc291cmNlcy5vOiB0ZXN0X3Jlc291cmNlczIuaAotIHRlc3RfcmVzb3VyY2VzLmM6IHRlc3QyLmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tc291cmNlZGlyPSQoc3JjZGlyKSAtLWdlbmVyYXRlLWRlcGVuZGVuY2llcyAkKHNyY2RpcikvdGVzdDIuZ3Jlc291cmNlLnhtbCkKLUBAIC01NDUsNyArNTQ4LDYgQEAgdGVzdC5ncmVzb3VyY2U6IHRlc3QuZ3Jlc291cmNlLnhtbCBNYWtlZmlsZSAkKHNoZWxsICQoZ2xpYl9jb21waWxlX3Jlc291cmNlcykgLS0KKyB0ZXN0LWdlbmVyYXRlZC50eHQ6IHRlc3QxLnR4dAorIAkkKEFNX1ZfR0VOKSBlY2hvICJHZW5lcmF0ZWQiID4gJEAgJiYgXAorQEAgLTU2NCw3ICs1NjcsNiBAQCB0ZXN0LmdyZXNvdXJjZTogdGVzdC5ncmVzb3VyY2UueG1sIE1ha2VmaWxlICQoc2hlbGwgJChnbGliX2NvbXBpbGVfcmVzb3VyY2VzKSAtLQogIAogIEVYVFJBX0RJU1QgKz0gdGVzdC5ncmVzb3VyY2UueG1sIHRlc3QxLnR4dCB0ZXN0Mi5ncmVzb3VyY2UueG1sIHRlc3QyLnR4dCB0ZXN0My5ncmVzb3VyY2UueG1sIHRlc3QzLnR4dCB0ZXN0NC5ncmVzb3VyY2UueG1sCiAgQ0xFQU5GSUxFUyArPSB0ZXN0LWdlbmVyYXRlZC50eHQgdGVzdF9yZXNvdXJjZXMuYyB0ZXN0X3Jlc291cmNlczIuW2NoXSBwbHVnaW5fcmVzb3VyY2VzLmMgdGVzdC5ncmVzb3VyY2UKIC1lbmRpZiAjICFDUk9TU19DT01QSUxJTkcKICAKLSBCVUlMVF9TT1VSQ0VTICs9IGdpb3R5cGVmdW5jcy5jCisgQlVJTFRfU09VUkNFUyArPSBnaW90eXBlZnVuY3MuaW5jCiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbSBiL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KLWluZGV4IDE2ZjI4MjcuLjRjMjIwOGUgMTAwNjQ0CitpbmRleCA2NTY5NDFkLi42ODU1NWZmIDEwMDY0NAogLS0tIGEvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbQogQEAgLTQ4LDEwICs0OCwxMyBAQCBpZiBFTkFCTEVfVElNRUxPT1AKQEAgLTc5LDMgKzgwLDYgQEAKICAKICBkaXN0LWhvb2s6ICQoQlVJTFRfRVhUUkFfRElTVCkKICAJZmlsZXM9JyQoQlVJTFRfRVhUUkFfRElTVCknOwkJCQlcCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvY29uZmlndXJlLWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvY29uZmlndXJlLWxpYnRvb2wucGF0Y2gKaW5kZXggYWE1ZGUyNy4uNTliODkxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9jb25maWd1cmUtbGlidG9vbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTg3NDA4MzMzMzZjNTlkNmY2MTZhMTc4MWIyNTZlNjQ4ZTMzOGMyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWRkMWU2ZGRjYTVkZWFkYTA0OWJhYzJlMWVlMWZlNGVjYzUzNDJjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjggQXByIDIwMTIgMTg6MjQ6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiB1c2UgJGhvc3RfYWxpYXMtbGlidG9vbCBpbnN0ZWFkIG9mIGxpYnRvb2wKK1N1YmplY3Q6IFtQQVRDSCAwMS8xMF0gY29uZmlndXJlOiB1c2UgJGhvc3RfYWxpYXMtbGlidG9vbCBpbnN0ZWFkIG9mIGxpYnRvb2wKICBkaXJlY3RseQogCiBQb2t5IHJlbmFtZXMgbGlidG9vbCB0byAkaG9zdF9hbGlhcy1saWJ0b29sLgpAQCAtMTgsMjQgKzE4LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gY29uZmlndXJlLmFjIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWFmOTBjNS4uZjZiN2E3MyAxMDA2NDQKK2luZGV4IDZmYTZlYjAuLmI2Zjc4YTYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzNzgsNyArMTM3OCw3IEBAIGlmIHRlc3QgeCIkZ2xpYl9uYXRpdmVfd2luMzIiID0geHllczsgdGhlbgotICAgR19NT0RVTEVfTERGTEFHUz0KLSBlbHNlCi0gICBleHBvcnQgU0VECi0tICBHX01PRFVMRV9MREZMQUdTPWAoLi9saWJ0b29sIC0tY29uZmlnOyBlY2hvIGV2YWwgZWNobyBcXCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpIHwgc2hgCi0rICBHX01PRFVMRV9MREZMQUdTPWAoLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnOyBlY2hvIGV2YWwgZWNobyBcXCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpIHwgc2hgCi0gZmkKLSBkbmwgR19NT0RVTEVfSU1QTD0gZG9uJ3QgcmVzZXQsIHNvIGNtZC1saW5lIGNhbiBvdmVycmlkZQotIEdfTU9EVUxFX05FRURfVVNDT1JFPTAKLUBAIC0xNDI3LDEzICsxNDI3LDEzIEBAIEFTX0lGKFsgdGVzdCAiJEdfTU9EVUxFX0lNUEwiID0gIkdfTU9EVUxFX0lNUExfREwiIF0sIFsKK0BAIC0xNDI4LDkgKzE0MjgsOSBAQCBBU19JRihbIHRlc3QgIiRHX01PRFVMRV9JTVBMIiA9ICJHX01PRFVMRV9JTVBMX0RMIiBdLCBbCiAgCUxERkxBR1M9IiRMREZMQUdTICRHX01PRFVMRV9MREZMQUdTIgogIGRubCAqKiogY2hlY2sgZm9yIE9TRjEvNS4wIFJUTERfR0xPQkFMIGJyb2tlbm5lc3MKICAJZWNobyAidm9pZCBnbGliX3BsdWdpbl90ZXN0KHZvaWQpIHsgfSIgPiBwbHVnaW4uYwpAQCAtNDcsMjAgKzM5LDYgQEAKICAJCSR7TERGTEFHU30gLW1vZHVsZSAtbyBwbHVnaW4ubGEgLWV4cG9ydC1keW5hbWljIFwKICAJCS1zaHJleHQgIi5vIiAtYXZvaWQtdmVyc2lvbiBwbHVnaW4ubG8gXAogIAkJLXJwYXRoIC9kb250L2NhcmUgPi9kZXYvbnVsbCAyPiYxCi0tCWV2YWwgYC4vbGlidG9vbCAtLWNvbmZpZyB8IGdyZXAgXm9iamRpcmAKLSsJZXZhbCBgLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnIHwgZ3JlcCBeb2JqZGlyYAotIAlBQ19DQUNIRV9DSEVDSyhbZm9yIFJUTERfR0xPQkFMIGJyb2tlbm5lc3NdLAotIAkJZ2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbixbCi0gCQlBQ19UUllfUlVOKFsKLUBAIC0xNTA2LDcgKzE1MDYsNyBAQCBmaQotIAotIEFDX01TR19DSEVDS0lORyhmb3IgdGhlIHN1ZmZpeCBvZiBtb2R1bGUgc2hhcmVkIGxpYnJhcmllcykKLSBleHBvcnQgU0VECi0tc2hyZXh0X2NtZHM9YC4vbGlidG9vbCAtLWNvbmZpZyB8IGdyZXAgJ15zaHJleHRfY21kcz0nYAotK3NocmV4dF9jbWRzPWAuLyRob3N0X2FsaWFzLWxpYnRvb2wgLS1jb25maWcgfCBncmVwICdec2hyZXh0X2NtZHM9J2AKLSBldmFsICRzaHJleHRfY21kcwotIG1vZHVsZT15ZXMgZXZhbCBzdGRfc2hyZXh0PSRzaHJleHRfY21kcwotICMgY2hvcCB0aGUgaW5pdGlhbCBkb3QKIC0tIAotMS45LjEKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41Mi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFmZTYwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41Mi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotcmVxdWlyZSBnbGliLmluYwotCi1QRSA9ICIxIgotCi1TSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTI2NWQwMjg5YTQzNmU5OWNhZDU0NDkxZWIyMWVmNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWVlNzYzNWE3YzBmY2Q0ZWM5MWNiYzNhZTA3YzdmOGY1Y2U2MjFkODE4MzUxMWY0MTRkZWQwOWU3ZTRlMTI4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFmNTk0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTZlODg2YWQ2NzdiZjA3YjdkNDhlYjgxODhiY2Y3NTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYzZmRjNjY4NWRjM2RhOGU1MzgxZGZiOWYxNWNhNGI1NzA5YjI4YmU4NGQ5ZDA1YTliYjhlNDQ2YWJhYzBhOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwppbmRleCA0Y2RmMTQxLi5mNjQ1ZWQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCkBAIC0zLDEyICszLDEyIEBACiBIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi8iCiAKICMgcGNyZSBpcyB1bmRlciBCU0Q7Ci0jIGRvY3MvcmVmZXJlbmNlL0NPUFlJTkcgaXMgd2l0aCBhICdwdWJsaWMgZG9tYWknLWxpa2UgbGljZW5zZSEKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEJTRCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9nbGliLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YjRmMGY0YTM5OWMxOWU1ZWJiMjBjMzFiNzlkNmJjMzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbW9kdWxlL2dtb2R1bGUuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1iNGYwZjRhMzk5YzE5ZTVlYmIyMGMzMWI3OWQ2YmMzMiBcCisjIGRvY3MvcmVmZXJlbmNlL0NPUFlJTkcgaXMgd2l0aCBhICdwdWJsaWMgZG9tYWluJy1saWtlIGxpY2Vuc2UhCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEJTRCAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9nbGliLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9Yjg4YWJiN2YzYWQwOTYwN2U3MWNiOWQ1MzAxNTU5MDYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbW9kdWxlL2dtb2R1bGUuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1iODhhYmI3ZjNhZDA5NjA3ZTcxY2I5ZDUzMDE1NTkwNiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbGliL3BjcmUvQ09QWUlORzttZDU9MjY2ZWJjM2ZmNzRlZTljZTZmYWQ2NTU3NzY2N2MwZjQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL3BjcmUuaDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0zNTttZDU9ZGUyN2YyYmY2MzNkMjBhMmI3YWYwYjE5ODM0MjMyODMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9yZWZlcmVuY2UvQ09QWUlORzttZDU9ZjUxYTUxMDBjMTdhZjZiYWUwMDczNWNkNzkxZTFmY2MiCkBAIC0xOSwxNiArMTksMTggQEAKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCi1ERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYgbGliZmZpIHpsaWIgZ2xpYi0yLjAtbmF0aXZlIgotREVQRU5EU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnIGRidXMnLCAnJywgZCl9IgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAicGtnY29uZmlnLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSBsaWJmZmktbmF0aXZlIHpsaWItbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLWxpYnRvb2wgbmF0aXZlc2RrLWdldHRleHQgbmF0aXZlc2RrLWxpYmZmaSBuYXRpdmVzZGstemxpYiBnbGliLTIuMC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBcCisgICAgICAgICAgIHZpcnR1YWwvbGliaW50bCBcCisgICAgICAgICAgIHZpcnR1YWwvbGliaWNvbnYgXAorICAgICAgICAgICBsaWJmZmkgXAorICAgICAgICAgICB6bGliIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdkYnVzJywgJycsIGQpfSIKIAogUEFDS0FHRVMgKz0gIiR7UE59LWNvZGVnZW4gJHtQTn0tdXRpbHMiCiAKIExFQURfU09OQU1FID0gImxpYmdsaWItMi4wLioiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgZ3RrLWRvYyBwa2djb25maWcgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBnaW8tbW9kdWxlLWNhY2hlIHB5dGhvbjNuYXRpdmUgbWFucGFnZXMKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgZ3RrLWRvYyBwa2djb25maWcgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBnaW8tbW9kdWxlLWNhY2hlIG1hbnBhZ2VzCiAKIFMgPSAiJHtXT1JLRElSfS9nbGliLSR7UFZ9IgogCkBAIC00Nyw3ICs0OSw3IEBACiBFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7Q09SRUNPTkZ9IC0tZGlzYWJsZS1zZWxpbnV4IgogCiAjIFRlbGwgY29uZmlndXJlIHRoYXQgd2UnbGwgaGF2ZSBkYnVzLWRhZW1vbiBvbiB0aGUgdGFyZ2V0IGZvciB0aGUgdGVzdHMKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXRfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJyBhY19jdl9wcm9nX0RCVVNfREFFTU9OPWRidXMtZGFlbW9uJywgJycsIGQpfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJyBhY19jdl9wcm9nX0RCVVNfREFFTU9OPWRidXMtZGFlbW9uJywgJycsIGQpfSIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KQEAgLTgzLDcgKzg1LDE0IEBACiAjIGRvZXNuJ3Qgc3VwcG9ydCBtaXBzMTZlCiBDUFBGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0X21pcHMxNmUgPSAiIC1ETlZBTEdSSU5EPTEiCiAKLVVTRV9OTFMgPSAieWVzIgorIyBHTGliIGdlbmVyYWxseSByZXF1aXJlcyBnZXR0ZXh0IHRvIGJlIHByZXNlbnQgc28gZm9yIFVTRV9OTFMgdG8geWVzLiAgRm9yCisjIG5hdGl2ZSBidWlsZHMgYXMgaTE4biBpcyBkaXNhYmxlZCBnbG9iYWxseSB3ZSBjYW4gdGVsbCBpdCB0byB1c2UgYSBmYWtlIG1zZ2ZtdC4KK1VTRV9OTFNfY2xhc3MtdGFyZ2V0ID0gInllcyIKK1VTRV9OTFNfY2xhc3MtbmF0aXZlc2RrID0gInllcyIKK0NBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGFjX2N2X3BhdGhfTVNHRk1UPS9iaW4vZmFsc2UiCisKK0VYRUVYVCA9ICIiCitFWEVFWFRfbWluZ3czMiA9ICIuZXhlIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAJaWYgWyAtZiAke0R9JHtiaW5kaXJ9L2d0ZXN0ZXItcmVwb3J0IF07IHRoZW4KQEAgLTk1LDE1ICsxMDQsMTQgQEAKIAlybSAtZiAke0R9JHtkYXRhZGlyfS9nbGliLTIuMC9jb2RlZ2VuLyoucHljCiAJcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2xpYi0yLjAvY29kZWdlbi8qLnB5bwogCi0JIyBTb21lIGRpc3Ryb3MgaGF2ZSBib3RoIC9iaW4vcGVybCBhbmQgL3Vzci9iaW4vcGVybCwgYnV0IHdlIHNldCBwZXJsIGxvY2F0aW9uCi0JIyBmb3IgdGFyZ2V0IGFzIC91c3IvYmluL3BlcmwsIHNvIGZpeCBpdCB0byAvdXNyL2Jpbi9wZXJsLgotCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9nbGliLW1rZW51bXMgXTsgdGhlbgotCQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L2dsaWItbWtlbnVtcwotCWZpCi0KIAlpZiBbIC1lICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcyBdOyB0aGVuCiAJCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwogCWZpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgZ2lvLXF1ZXJ5bW9kdWxlcyBpcyB1bmlxdWUgYW1vbmcgbXVsdGlsaWJzCisgICAgICAgIGlmIHRlc3QgIngke01MUFJFRklYfSIgIT0gIngiOyB0aGVuCisgICAgICAgICAgICAgICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vZ2lvLXF1ZXJ5bW9kdWxlcyR7RVhFRVhUfSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfWdpby1xdWVyeW1vZHVsZXMke0VYRUVYVH0KKyAgICAgICAgZmkKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKQEAgLTExNCwxOCArMTIyLDEyIEBACiAJCQlybSAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9nZGJ1cy1zZXJpYWxpemF0aW9uLnRlc3QKIAkJZmkKIAlmaQotCi0JIyBNYWtlIHN1cmUgZ2lvLXF1ZXJ5bW9kdWxlcyBpcyB1bmlxdWUgYW1vbmcgbXVsdGlsaWJzCi0JaWYgdGVzdCAieCR7TUxQUkVGSVh9IiAhPSAieCI7IHRoZW4KLQkJbXYgJHtEfSR7bGliZXhlY2Rpcn0vZ2lvLXF1ZXJ5bW9kdWxlcyAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfWdpby1xdWVyeW1vZHVsZXMKLQlmaQogfQogCi1SREVQRU5EU18ke1BOfS1jb2RlZ2VuICs9ICJcCi0gICAgICAgICAgICBweXRob24zIFwKLSAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgICAgICAgICAgIHB5dGhvbjMteG1sIFwKLSAgICAgICAgICAgIgorQ09ERUdFTl9QWVRIT05fUkRFUEVORFMgPSAicHl0aG9uMyBweXRob24zLWRpc3R1dGlscyBweXRob24zLXhtbCIKK0NPREVHRU5fUFlUSE9OX1JERVBFTkRTX21pbmd3MzIgPSAiIgorCitSREVQRU5EU18ke1BOfS1jb2RlZ2VuICs9ICIke0NPREVHRU5fUFlUSE9OX1JERVBFTkRTfSIKIAogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKICAgICAgICAgICAgIGRidXMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41MC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzgyYmQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiR0xpYiBuZXR3b3JraW5nIGV4dGVuc2lvbnMiCi1ERVNDUklQVElPTiA9ICJnbGliLW5ldHdvcmtpbmcgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBjZXJ0YWluIEdMaWIgbmV0d29ya2luZyBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBHTGliIGl0c2VsZiBiZWNhdXNlIG9mIHRoZWlyIGRlcGVuZGVuY2llcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvZ2xpYi1uZXR3b3JraW5nLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNGQwNmQwMjI0NjQ2ZjI3NDkxOGIxY2I2ZGE5YTA3ZjYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzZjFhNDQyZjNjMmE3MzQ5NDY5ODM1MzJjZTU5ZWQ0OTEyMDMxOWZkYjEwYzkzODQ0N2MzNzNkNWU1Mjg2YmVlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2EtY2VydGlmaWNhdGVzIGdudXRscyIKLQotIyBObyBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGl0IHdvcmtzIHdpdGhvdXQgY2EtY2VydGlmaWNhdGVzIGluc3RhbGxlZAotUEFDS0FHRUNPTkZJR1tjYS1jZXJ0aWZpY2F0ZXNdID0gIi0td2l0aC1jYS1jZXJ0aWZpY2F0ZXM9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtY2EtY2VydGlmaWNhdGVzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgotUEFDS0FHRUNPTkZJR1twa2NzMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxwMTEta2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWdub21lLXByb3h5IgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNmY4YWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjU0LjEuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKK0RFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9nbGliLW5ldHdvcmtpbmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5OTg2NzQ2M2YxODJjMjc2N2JjZTBjNzRiYzljYzk4MSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVhYTc4N2I2NTMwMTVhMGRlMzFjOTI4ZTlhMTdlYjU3YjRjZTIzYzhjZjZmMjc3YWZhZWMwZDY4NTMzNTAxMmYiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjYS1jZXJ0aWZpY2F0ZXMgZ251dGxzIgorCisjIE5vIGV4cGxpY2l0IGRlcGVuZGVuY3kgYXMgaXQgd29ya3Mgd2l0aG91dCBjYS1jZXJ0aWZpY2F0ZXMgaW5zdGFsbGVkCitQQUNLQUdFQ09ORklHW2NhLWNlcnRpZmljYXRlc10gPSAiLS13aXRoLWNhLWNlcnRpZmljYXRlcz0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0LC0td2l0aG91dC1jYS1jZXJ0aWZpY2F0ZXMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi0td2l0aC1saWJwcm94eSwtLXdpdGhvdXQtbGlicHJveHksbGlicHJveHkiCitQQUNLQUdFQ09ORklHW3BrY3MxMV0gPSAiLS13aXRoLXBrY3MxMSwtLXdpdGhvdXQtcGtjczExLHAxMS1raXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZ25vbWUtcHJveHkiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdpby1tb2R1bGUtY2FjaGUKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLnNvICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ0MDg1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCi0gICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLSMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5Ci0jCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCi0KLWluaGVyaXQgbmF0aXZlCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgotCi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopIgotCi1TUkNSRVZfZ2xpYmMgPz0gImQzMDAwNDFjNTMzYTNkODM3YzlmMzdhMDk5YmNjOTU0NjY4NjBlOTgiCi1TUkNSRVZfbG9jYWxlZGVmID89ICJkZmI0YWZlNTUxYzZjNmU5NGY5Y2M4NTQxN2JkMWY1ODIxNjhjODQzIgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FyY2hpdmUtcGF0aC5wYXRjaCBcCi0iCi0jIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgotIwotU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKLUNGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5MmViNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKKyMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5CisjCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCisKK2luaGVyaXQgbmF0aXZlCitpbmhlcml0IGF1dG90b29scworCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgorCitTUkNSRVZfZ2xpYmMgPz0gImRmM2ZmNGU0OWQ0ZWUzY2JiZGFlYjBiMWNiNWRjMjM0NGMwOGJlOTgiCitTUkNSRVZfbG9jYWxlZGVmID89ICJkZTViZGJkNWU3NmI1NDAzYTQxNTFiOWI5Zjk1OGI2Y2NhMzZiM2U3IgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FyY2hpdmUtcGF0aC5wYXRjaCBcCisiCisjIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgorIworU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKK0NGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCmluZGV4IGRlODU5ZDUuLmFhODcxYWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKQEAgLTcsNyArNyw4IEBACiAjIFRoaXMgbmVlZHMgdG8gbWF0Y2ggd2l0aCBnbGliYy5pbmMsIG90aGVyd2lzZSBnbGliYy1zY3JpcHRzIGFuZCBnbGliYy1sb2NhbGUKICMgd2lsbCBmYWlsIHRvIGZpbmQgbWFpbiBnbGliYywgZm9yIGRldGFpbHMgc2VlCiAjIGh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZS8yMDE1LUphbnVhcnkvMTAwNjc5Lmh0bWwKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKIAogZGVsdGFzayBkb19mZXRjaAogZGVsdGFzayBkb191bnBhY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI2LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggYjZkODA3NC4uNzI4YmM1MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtNjYsNyArNjYsNyBAQAogCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQogCWZpCiAKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9zeXNjYWxsLmggYml0cy9sb25nLWRvdWJsZS5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaCBiaXRzL2Zsb2F0bi5oCiAKIAlpZiBbIC1mICR7RH0ke2JpbmRpcn0vbXRyYWNlIF07IHRoZW4KIAkJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgLWUgJzJzLGV4ZWMuKnBlcmwsZXhlYyAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS9tdHJhY2UKQEAgLTk3LDYgKzk3LDcgQEAKIAlpbnN0YWxsIC1tIDA3NTUgJHtTfS9uc2NkL25zY2QuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnNjZAogCWluc3RhbGwgLW0gMDc1NSAke1N9L25zY2QvbnNjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L25zY2QuY29uZgogCXNlZCAtaSAicyVkYWVtb24lc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLWV4ZWMlZyIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25zY2QKKwlzZWQgLWkgInN8XChlbmFibGUtY2FjaGVcdFwrbmV0Z3JvdXBcdFwrXCl5ZXN8XDFub3wiICR7RH0ke3N5c2NvbmZkaXJ9L25zY2QuY29uZgogCiAJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCWluc3RhbGwgLW0gMDY0NCAke1N9L25zY2QvbnNjZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwpAQCAtMTE3LDEwICsxMTgsMTAgQEAKIAkJIyBUaGUgYWFyY2g2NCBBQkkgc2F5cyB0aGUgZHluYW1pYyBsaW5rZXIgLW11c3QtIGJlIC9saWIvbGQtbGludXgtYWFyY2g2NFtfYmVdLnNvLjEKIAkJaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQogCQlpZiBbIC1lICR7RH0ke2Jhc2VfbGliZGlyfS9sZC1saW51eC1hYXJjaDY0LnNvLjEgXTsgdGhlbgotCQkJbG4gLXMgJHtAYmFzZV9wYXRoX3JlbGF0aXZlKCcke25vbmFyY2hfYmFzZV9saWJkaXJ9JywgJyR7YmFzZV9saWJkaXJ9Jyl9L2xkLWxpbnV4LWFhcmNoNjQuc28uMSBcCisJCQlsbiAtcyAke0BvZS5wYXRoLnJlbGF0aXZlKCcke25vbmFyY2hfYmFzZV9saWJkaXJ9JywgJyR7YmFzZV9saWJkaXJ9Jyl9L2xkLWxpbnV4LWFhcmNoNjQuc28uMSBcCiAJCQkJJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NC5zby4xCiAJCWVsaWYgWyAtZSAke0R9JHtiYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NF9iZS5zby4xIF07IHRoZW4KLQkJCWxuIC1zICR7QGJhc2VfcGF0aF9yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0X2JlLnNvLjEgXAorCQkJbG4gLXMgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0X2JlLnNvLjEgXAogCQkJCSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjRfYmUuc28uMQogCQlmaQogCWZpCkBAIC0yMDYsOCArMjA3LDExIEBACiAJcm0gLXJmICR7RH0vJHtsb2NhbGVkaXJ9CiAJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2xvY2FsZQogCWlmIFsgIiR7bGliZGlyfSIgIT0gIiR7ZXhlY19wcmVmaXh9L2xpYiIgXTsgdGhlbgotCQkjIFRoaXMgZGlyIG9ubHkgZXhpc3RzIHRvIGhvbGQgbG9jYWxlcwotCQlybSAtcmYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYgorCQlpZiBbIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbG9jYWxlIF0gOyB0aGVuCisJCQlybSAtcmYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9sb2NhbGUKKwkJCSMgZXJyb3Igb3V0IGlmIGRpcmVjdG9yeSBpc24ndCBlbXB0eQorCQkJcm0gLWYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYgorCQlmaQogCWZpCiB9CiBhZGR0YXNrIGRvX3Bvc3RzdGFzaF9pbnN0YWxsX2NsZWFudXAgYWZ0ZXIgZG9fc3Rhc2hfbG9jYWxlIGRvX2luc3RhbGwgYmVmb3JlIGRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9fcGFja2FnZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjcuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCmluZGV4IDIxYmJkYzIuLmNlMTIyMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwpAQCAtMzUsNyArMzUsMTAgQEAKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwgbGliZ2NjLWluaXRpYWwgbGludXgtbGliYy1oZWFkZXJzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtaW5pdGlhbCIKICMgbnB0bCBuZWVkcyBsaWJnY2MgYnV0IGRsb3BlbnMgaXQsIHNvIG91ciBzaGxpYnMgY29kZSBkb2Vzbid0IGRldGVjdCB0aGlzCiAjUkRFUEVORFNfJHtQTn0gKz0gIiR7QFsnJywnbGliZ2NjJ11bJ25wdGwnIGluICcke0dMSUJDX0FERE9OU30nXX0iCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIgorCitDUllQVFBST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCitDUllQVFBST1ZJREVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjICR7Q1JZUFRQUk9WSURFU30iCiBQUk9WSURFUyArPSAidmlydHVhbC9saWJpbnRsIHZpcnR1YWwvbGliaWNvbnYiCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGRpc3Ryb19mZWF0dXJlc19jaGVjayBzeXN0ZW1kCiAKQEAgLTQ3LDYgKzUwLDcgQEAKICAgbGliY19jdl9yb290c2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAogICBsaWJjX2N2X2xvY2FsZWRpcj0ke2xvY2FsZWRpcn0gXAogICBsaWJjX2N2X3NzcF9zdHJvbmc9bm8gXAorICBsaWJjX2N2X3NzcF9hbGw9bm8gXAogICBsaWJjX2N2X3NzcD1ubyBcCiAiCiAKQEAgLTU3LDcgKzYxLDggQEAKICMgVGhpcyBuZWVkcyB0byBtYXRjaCB3aXRoIGdsaWJjLWNvbGxhdGVyYWwuaW5jLCBvdGhlcndpc2UgZ2xpYmMtc2NyaXB0cyBhbmQgZ2xpYmMtbG9jYWxlCiAjIHdpbGwgZmFpbCB0byBmaW5kIG1haW4gZ2xpYmMsIGZvciBkZXRhaWxzIHNlZQogIyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxNS1KYW51YXJ5LzEwMDY3OS5odG1sCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAKICMgZ2xpYmMgdXNlcyBQQVJBTExFTE1GTEFHUyB2YXJpYWJsZSB0byBwYXNzIHBhcmFsbGVsIGJ1aWxkIGluZm8gc28gdHJhbnNmZXIKICMgUEFSQUxMRUxfTUFLRSBpbnRvIFBBUkFMTEVMTUZMQUdTIGFuZCBlbXB0eSBvdXQgUEFSQUxMRUxfTUFLRQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKaW5kZXggMTljMWQ5Yi4uODYyMzRjOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4MTM0NmIyZjc3MzU2OTgwNzhkNWJmOTE5YTc4YjZjMDI2OWQ2ZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZDkxYjYwY2U2ZmYwMWY0OWIxNzNiNmI0NWUyM2NlOTQ5MTFiMmE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NDg6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNV0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcworU3ViamVjdDogW1BBVENIIDAxLzI3XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCiAgd2VsbAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQpAQCAtMzEsMTAgKzMxLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCBjMWI2ZDRiYTBmLi5kN2FmOWViY2JjIDEwMDY0NAoraW5kZXggNzU1NGE5OWI1YS4uYTczZDExYTYyZiAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0yMDU0LDYgKzIwNTQsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTIwMDcsNiArMjAwNywxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogIApAQCAtNDksNyArNDksNyBAQAogICNpZmRlZiBVU0VfTERDT05GSUcKICAgICAgICBpZiAoZmQgPT0gLTEKICAJICAmJiAoX19nbGliY19saWtlbHkgKChtb2RlICYgX19SVExEX1NFQ1VSRSkgPT0gMCkKLUBAIC0yMTEyLDE0ICsyMTIwLDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTIwNjUsMTQgKzIwNzMsNiBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCX0KICAjZW5kaWYKICAKQEAgLTY1LDUgKzY1LDUgQEAKICAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQogIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKaW5kZXggMmNlMjQwYi4uODk5NDgxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4MmYyZTkxMGVjMGUyZGU2YTllMmIwMDc4MjViZGRmYzU4NTA1NzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MDczNmY3ZmMxZmRjOWUxZjdjMDVmMWZlYzc1Yzk3N2Q5YmU5MjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNV0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAorU3ViamVjdDogW1BBVENIIDAyLzI3XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCiAgU0RLCiAKIFdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKQEAgLTIyLDEwICsyMiwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggZDdhZjllYmNiYy4uMTljMWRiOTk0OCAxMDA2NDQKK2luZGV4IGE3M2QxMWE2MmYuLjYyZTNlZWU0NzggMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTc1Myw3ICsxNzUzLDE5IEBAIG9wZW5fcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGludCBtb2RlLAorQEAgLTE3MDcsNyArMTcwNywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKICAgICAgICAgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHJ0bGQgaXMgcnVuIGRpcmVjdGx5LiAgKi8KICAgICAgcmV0dXJuIC0xOwogIApAQCAtNDYsNSArNDYsNSBAQAogICAgICB7CiAgICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKaW5kZXggMzk3ZThiMy4uMDNmOTk5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0OTBhMGViNGRhMWFmNzI2ZWE1ZDY4ZTNlZmMwZDE4YmE5NGM0MDU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2OTVlMWNiZmY2ZWU2ZGIzNDM1YzMzZTU1MzExYzY3YWRmNDQ0NzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTE6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8yNV0gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAorU3ViamVjdDogW1BBVENIIDAzLzI3XSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsCiAgcGF0aHMKIAogVGhpcyBwYXRjaCBwdXRzIHRoZSBkeW5hbWljIGxvYWRlciBwYXRoIGluIHRoZSBiaW5hcmllcywgU1lTVEVNX0RJUlMgc3RyaW5ncwpAQCAtMjYsNyArMjYsNyBAQAogIDcgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtY2FjaGUuYyBiL2VsZi9kbC1jYWNoZS5jCi1pbmRleCBlOTYzMmRhMGIzLi40ZGU1MjlkMmNmIDEwMDY0NAoraW5kZXggNmVlNTE1M2ZmOS4uMzdhNWY3MDFmYSAxMDA2NDQKIC0tLSBhL2VsZi9kbC1jYWNoZS5jCiArKysgYi9lbGYvZGwtY2FjaGUuYwogQEAgLTEzMyw2ICsxMzMsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCkBAIC0zOCwxNCArMzgsMTQgQEAKICsKICsKICBpbnQKLSBpbnRlcm5hbF9mdW5jdGlvbgogIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKKyB7CiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDE5YzFkYjk5NDguLjcwYzI1OWI0MDAgMTAwNjQ0CitpbmRleCA2MmUzZWVlNDc4Li42ZGRiYTczNjUwIDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTEwNiw4ICsxMDYsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOwotIC8qIEdldCB0aGUgZ2VuZXJhdGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cnVzdGVkIGRpcmVjdG9yaWVzLiAgKi8KK0BAIC0xMDksOCArMTA5LDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKKyAgICBnZW4tdHJ1c3RlZC1kaXJzLmF3ay4gICovCiAgI2luY2x1ZGUgInRydXN0ZWQtZGlycy5oIgogIAogLXN0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzW10gPSBTWVNURU1fRElSUzsKQEAgLTU2LDcgKzU2LDcgQEAKICAgIFNZU1RFTV9ESVJTX0xFTgogIH07CiBkaWZmIC0tZ2l0IGEvZWxmL2ludGVycC5jIGIvZWxmL2ludGVycC5jCi1pbmRleCBiNmU4ZjA0NDQ0Li40N2MyMDQxNWJjIDEwMDY0NAoraW5kZXggOWNkNTBjNzI5MS4uZmMyZjM5ZDczYyAxMDA2NDQKIC0tLSBhL2VsZi9pbnRlcnAuYwogKysrIGIvZWxmL2ludGVycC5jCiBAQCAtMTgsNSArMTgsNSBAQApAQCAtNjcsNyArNjcsNyBAQAogK2NvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCiAgICA9IFJVTlRJTUVfTElOS0VSOwogZGlmZiAtLWdpdCBhL2VsZi9sZGNvbmZpZy5jIGIvZWxmL2xkY29uZmlnLmMKLWluZGV4IDk5Y2FmOWU5YmIuLjM2ZWE1ZGY1ZjEgMTAwNjQ0CitpbmRleCBmYmRkODE0ZWRmLi45ZjRkOGQ2OWIxIDEwMDY0NAogLS0tIGEvZWxmL2xkY29uZmlnLmMKICsrKyBiL2VsZi9sZGNvbmZpZy5jCiBAQCAtMTY4LDYgKzE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncCBhcmdwID0KQEAgLTgxLDcgKzgxLDcgQEAKICAgICBhIHBsYXRmb3JtLiAgKi8KICBzdGF0aWMgaW50CiBkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IDY1NjQ3ZmIxYzguLmNkODM4MWNiMzMgMTAwNjQ0CitpbmRleCA0NTNmNTZlYjE1Li4wOGUwYzRjOTRiIDEwMDY0NAogLS0tIGEvZWxmL3J0bGQuYwogKysrIGIvZWxmL3J0bGQuYwogQEAgLTEyOCw2ICsxMjgsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKQEAgLTkyLDcgKzkyLDcgQEAKICAKICAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKICAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KLUBAIC05OTksMTIgKzEwMDAsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCitAQCAtMTAwMCwxMiArMTAwMSwxMiBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKICAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAogICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKICAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgKytfZGxfc2tpcF9hcmdzOwogICAgICAgIC0tX2RsX2FyZ2M7CiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1pbmRleCA1YWEwNTVkZTZlLi5iOWExNGI5YmQzIDEwMDY0NAoraW5kZXggZDZjZjlkMmEzZS4uOWZjZjk3MDE0NCAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NvbmYuYwogKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCiBAQCAtMzYsNyArMzYsNyBAQApAQCAtMTIxLDcgKzEyMSw3IEBACiAgLyogVGhlIHBhdGggZWxlbWVudHMsIGFzIGRldGVybWluZWQgYnkgdGhlIF9fZ2NvbnZfZ2V0X3BhdGggZnVuY3Rpb24uCiAgICAgQWxsIHBhdGggZWxlbWVudHMgZW5kIGluIGEgc2xhc2guICAqLwogZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLWluZGV4IDFmMGI4ZjYyOWQuLmFjYmU2ODM5OWQgMTAwNjQ0CitpbmRleCBjZjQzZjFjZjNiLi43ZjA3YWRkZTUzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKICsrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiBAQCAtMjcsMTAgKzI3LDYgQEAKQEAgLTEzNiw1ICsxMzYsNSBAQAogICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQogICNlbmRpZgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCmluZGV4IDhkYjQ3YmMuLmY5ZDcwYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4ZmUxYjU2MTgwYzMwZDIzN2NjMmFiOWE1YTljOTdhMDMxMWY0MWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyYmFmZGJkNzA2Nzc5NGM2YTI0ZTVlODU2MDhjMGVjNDYzOGM1NjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzU6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yNV0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CitTdWJqZWN0OiBbUEFUQ0ggMDQvMjddIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgogCiBUaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgogVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKLWluZGV4IDBlMjQyMDA2MTcuLjE1MzJmNTJkZWMgMTAwNjQ0CitpbmRleCAyNzJkYTVkZDhmLi40MDljNzU5ZjE0IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCiBAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OwpAQCAtMzAsNSArMzAsNSBAQAogICNkZWZpbmUgQVRPTUlDX0VYQ0hBTkdFX1VTRVNfQ0FTIDAKICAKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggOTU2YjJhYS4uYWQ5MTA2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiOWVkY2M4NDU2NDE5NTZiNzI4NmM2MGM4MzNmMDVhOWY3MGNmYWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2NjFhZGZlOWMyMjBkMTA2MTdiZjZiYjI4MzgyNzQ3MWMzOTU2YjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yNV0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDA1LzI3XSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KQEAgLTE1ODAsNSArMTU4MCw1IEBACiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCmluZGV4IGM3NGZlYWQuLmEzZDUwZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMzI0MjAyNDg4YTFjMjQzOWJlMzQ1NzQ1NzIyZjVjYjA0YzBlMDg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjE1NTk4ZmNjYTY0NDYxYTcxZDg0Zjc1NmQ3NTM3NGYwMmQ5MTRhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjVdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KK1N1YmplY3Q6IFtQQVRDSCAwNi8yN10gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgogIG5hbWVzCiAKIFRoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgpAQCAtMTcsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKLWluZGV4IGQyNzhhMTg5YjIuLmE4NGNiODUxNTggMTAwNjQ0CitpbmRleCA1NzNjMDE0NzZjLi5kOGM3NDEyMjg3IDEwMDY0NAogLS0tIGEvZWxmL3JlYWRsaWIuYwogKysrIGIvZWxmL3JlYWRsaWIuYwogQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9CkBAIC0yOSw1ICsyOSw1IEBACiAgCiAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAppbmRleCBiNjQzMjc2Li4xMjM0ZGYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNmMDBiZjlkZTgxMjgxNzFlNzlhMDE5ZGU4MDllMzVmM2FlZWQyODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDgwNGI3M2FlMjk1YmRmZGEyOTM0MWU4OWYyZDBjMWI5OTQ5MmRjOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzI1XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCitTdWJqZWN0OiBbUEFUQ0ggMDcvMjddIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKIAogb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdwogfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCkBAIC0yMDQsNSArMjA0LDUgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAppbmRleCAzYWVlYzUyLi4xYjQzNjQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGJhYmUzMTFkZWNhOWVlMjczMDI3OGYxM2IwNjFiOTE0YjUyODZkYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFhNTMwODQyNDlkOWRhZTFlZjQyODEyNDZlZmM4OTljOGY5ZDYzZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzI1XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCitTdWJqZWN0OiBbUEFUQ0ggMDgvMjddIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKICBvdXQgX19zbG93IHZlcnNpb25zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMzgzLDUgKzM4Myw1IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAppbmRleCA3ZDVjMmUzLi5lYTQ5ODU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDkzYjVkNmJlZDE5OTM5MDM5MDMxYzQ1Yjc3N2QyOTYxOWRiMDYxODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ4MjYyYjZkZGE5MzUyNzhhNDAzNzRkZGYwMDgwYWI2Y2M5OTk1ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzI1XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKK1N1YmplY3Q6IFtQQVRDSCAwOS8yN10gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCiAgOgogCiAgIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LApAQCAtNDUsMTAgKzQ1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLWluZGV4IDcwNTNlYWQxNmUuLjBiMWUxNzE2YjAgMTAwNjQ0CitpbmRleCA4YTAwZWFiNWUzLi42MjNlZGNiMWJkIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCiArKysgYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLUBAIC01MDAsNyArNTAwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKK0BAIC01MTAsNyArNTEwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKICAKICAJY2FzZSBSX0FSTV9UTFNfRFRQT0ZGMzI6CiAgCSAgaWYgKHN5bSAhPSBOVUxMKQpAQCAtNTgsNSArNTgsNSBAQAogIAogIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCmluZGV4IDcyNzVjM2UuLjE3NTEzMTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxYTZlMGY0ZWU4NTg0YjA0MjI2MTU2ZGYxYTNkZTNlNDY3ZjBlZjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3MmVhNTQxMDkwOWFlZjZiNmFlZTcwZTdmOWE4OGQ1MzQ1ODNhYTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgogRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAotU3ViamVjdDogW1BBVENIIDEwLzI1XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KK1N1YmplY3Q6IFtQQVRDSCAxMC8yN10gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CiAKIGxpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgogaW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCkBAIC0xOCwxMCArMTgsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKLWluZGV4IDRlZDYzYThlZjMuLmU4OTkxOWViMTkgMTAwNjQ0CitpbmRleCBjMjc1NjY0MGE3Li4xYjViYjE2YTk2IDEwMDY0NAogLS0tIGEvbWFudWFsL01ha2VmaWxlCiArKysgYi9tYW51YWwvTWFrZWZpbGUKLUBAIC0xMDUsNyArMTA1LDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKK0BAIC0xMDIsNyArMTAyLDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKICAkKG9ianBmeClzdGFtcC1saWJtLWVycjogbGlibS1lcnItdGFiLnBsICQod2lsZGNhcmQgJChmb3JlYWNoIGRpciwkKHN5c2RpcnMpLFwKICAJCQkJCQkgICAgICQoZGlyKS9saWJtLXRlc3QtdWxwcykpCiAgCXB3ZD1gcHdkYDsgXApAQCAtMzIsNSArMzIsNSBAQAogIAl0b3VjaCAkQAogIAogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAppbmRleCA4NGYyY2E1Li4xZTcwYjJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDliMmFmNmNiZjY4ZDMzNTNkNzI1MTllN2Y2YzQ2YmVjYjdiZDFkMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhhZTk5OGExMGIyNDU0NWUwYzEyZjFmM2Q4YmU5N2IxOTExNzgyMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzI1XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCitTdWJqZWN0OiBbUEFUQ0ggMTEvMjddIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKICBvdXQgX19zbG93IHZlcnNpb25zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtNTcsNSArNTcsNSBAQAogICNlbmRpZgogIHsKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKaW5kZXggMmJmNmIyMy4uYzM1Yjc1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBmZmQzYzVhMDRkOGYyZjI2ZmVhNzFmZWQ0Y2U0MWU4OGI2ZjUxMDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0ZjlmMzk3NjE5MDllNjdiZDZkMjliOTcwYjcxNjU4NjNlMzNlNTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjc6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yNV0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5CitTdWJqZWN0OiBbUEFUQ0ggMTIvMjddIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQogICRsaWJjX2N2X3Jvb3RzYmluZGlyCiAKIFVwc3RyZWFtLVN0YXR1czpQZW5kaW5nCkBAIC0xNCw3ICsxNCw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLWluZGV4IDcxMjQzYWQwYzYuLmY1NzgxODc1NzYgMTAwNjQ0CitpbmRleCBjMTVkMTA4N2U4Li4zN2NjOTgzZjJhIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCiArKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKIEBAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCkBAIC0zOCw1ICszOCw1IEBACiAgICA7OwogIGVzYWMKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAppbmRleCAwOTlmZTUwLi42MmM2NTI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMDQ5Y2NlODJmMzVlMGQ4NjRkOTgwNzViODM4ODhkYmJhNGQ2OGFmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmJhN2E2NDdiNjM2NjE4ZDVmZDA4M2U5MDRmOTk1Zjc3MzZiOTE2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMjVdIEFkZCB1bnVzZWQgYXR0cmlidXRlCitTdWJqZWN0OiBbUEFUQ0ggMTMvMjddIEFkZCB1bnVzZWQgYXR0cmlidXRlCiAKIEhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCiBhIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwpAQCAtMTcsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1pbmRleCAxOGQ4YmQ2YWU3Li5lYjcyOWRhNWQzIDEwMDY0NAoraW5kZXggMTIzZTJhNjJjZS4uNjNjYzgzZWM4NCAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAogKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtMzAsNSArMzAsNSBAQAogIHsKICAgIGludCBzbGFzaF9jb3VudCA9IDA7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKaW5kZXggZGRjNzBlMC4uNjY5MTEyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNiOTA0YmVlODFhMWNmZTgxZTNmNDM3YjVmMzI5NmVmZDU0YTUxYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYyZjQ0Y2UzZGQwMWEyNTdjZjY3MTE2ZTM1NTQ5MmNiMTY1OWE5MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAotU3ViamVjdDogW1BBVENIIDE0LzI1XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCitTdWJqZWN0OiBbUEFUQ0ggMTQvMjddICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKIAogSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgogYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKQEAgLTE2NSw3ICsxNjUsNyBAQAogICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKICBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotaW5kZXggYTU1MTNmYWQ0OC4uMjgzYjI5M2ZmMyAxMDA2NDQKK2luZGV4IDFlZTdmNDFhMzYuLjc3ZTM4YmViZGUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKIEBAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCkBAIC0xOTksNyArMTk5LDcgQEAKICAKICBsaWJjX21pcHNfbmFuPQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotaW5kZXggNGU3ZmNmMWQ5Ny4uNDRhOWNiMzc5MSAxMDA2NDQKK2luZGV4IGFlN2YyNTRkYTQuLjg3NDUxOTAwMGIgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQogQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKQEAgLTI1OSw1ICsyNTksNSBAQAogICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCiAgICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCmluZGV4IGI1ZmVmZmEuLjY2YmY0ZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYjhjYjhjYjI0MmNiNzUxZDg4OGZlYjFhZGE1YzRkMGYwNWNiYzFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWMyNDBmYjAxZjY0NzBhYzIwNzk2OGFkZmJlMjBjY2M5M2IxNmY4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjVdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCitTdWJqZWN0OiBbUEFUQ0ggMTUvMjddIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCiAKIFRvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCiAKQEAgLTE1LDcgKzE1LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKLWluZGV4IGQ2Y2M3YmEzNTcuLmU0ZWFkNmUxYTcgMTAwNjQ0CitpbmRleCAwMTk0YWJhNGExLi41OGU1NDA1YTA1IDEwMDY0NAogLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKICsrKyBiL3RpbWV6b25lL01ha2VmaWxlCiBAQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCkBAIC00MSw1ICs0MSw1IEBACiAgIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KICAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKaW5kZXggMWQ5OTgzYi4uMGIxZWU5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA2OWQzNzgwMDFhZGZlOWEzNTlkMmY0YjA2OWMxZWQyZDM2ZGU0NDgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3OTBiMTMzZmYyYmM1Yjc3ZWQ4NTMzYjg5OTlhYmM2NWVkMGRhMDJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yNV0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAorU3ViamVjdDogW1BBVENIIDE2LzI3XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0CiAKIFRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCiAodHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgpAQCAtNzEsNSArNzEsNSBAQAogIAk7OwogIGVzYWMKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKaW5kZXggM2UzOWQ3NC4uZmQ4MjEzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjZGM4OGRmZmEyMjY4MTVlM2EyMTg2MDQ2NTU0NTllMzNkYzg2NDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4OTc0MzBiYmI2NWEwZjIyMjg0ZDc5NTcyMDZiNWZkNGVmZDY2MDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yNV0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKK1N1YmplY3Q6IFtQQVRDSCAxNy8yN10gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKIAogUG9ydGVkIGZyb20gZWdsaWJjCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTYxNSw1ICs2MTUsNSBAQAogKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAogKyAgZGlyZWN0b3J5LgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAppbmRleCAwMmYzNWY0Li44MGQ1NDdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDExNjFjZDFjNjgzNTQ3ZDI5YTAzNjI2ZDlkN2RlN2Y5Y2MwM2I3NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZjZmExOWI2OWU4NzQ5NDc3MDIyMTYxYTgwOGEyMDE4MDdlZjcyZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzI1XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorU3ViamVjdDogW1BBVENIIDE4LzI3XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgogCiBUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQogCkBAIC0yOSw3ICsyOSw3IEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDNlMGFlNmY0M2IuLjI0ZGM2NmQxN2MgMTAwNjQ0CitpbmRleCBiZWE0ZTI3ZjhkLi44YzgzY2ZhZGM2IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCkBAIC05Niw1ICs5Niw1IEBACiArICAgRUdMSUJDIHN1YmRpciAnc3R1YnMnIG1ha2UgdGFyZ2V0cywgb24gZXZlcnkgLm8gZmlsZSBpbiBFR0xJQkMsIGJ1dAogKyAgIGFuIGVtcHR5IHN0dWJzLmggbGlrZSB0aGlzIHdpbGwgZG8gZmluZSBmb3IgR0NDLiAgKi8KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKaW5kZXggYWRiMjhjZi4uMTdiZmU0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxNzMyYzdmMjU0NTNjODc5YzE3NzAxODM5ZWYzNDg3NmE3MzU3MDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNmYyZGIwZDdjNWM2NWJmYTE5NzY2YTBlMWNlODIxMDExMWY5YzdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTU6MTU6MDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yNV0gZWdsaWJjOiBDbGVhciBjYWNoZSBsaW5lcyBvbiBwcGM4eHgKK1N1YmplY3Q6IFtQQVRDSCAxOS8yN10gZWdsaWJjOiBDbGVhciBjYWNoZSBsaW5lcyBvbiBwcGM4eHgKIAogMjAwNy0wNi0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KICAgICAgICAgICAgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgpAQCAtMjEsNyArMjEsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1pbmRleCAyM2Y1ZDVkMzg4Li43ZTQ1Mjg4ZGI3IDEwMDY0NAoraW5kZXggNzgwNTFiYzdiYy4uZTI0ZjQ0MjMyMCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKIEBAIC0yNCw5ICsyNCwyMSBAQCBpbnQgX19jYWNoZV9saW5lX3NpemUgYXR0cmlidXRlX2hpZGRlbjsKQEAgLTQ4LDcgKzQ4LDcgQEAKICAJYnJlYWs7CiAgCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotaW5kZXggYWQwMzZjMWU0Yi4uYWZlZTU2YTNkYSAxMDA2NDQKK2luZGV4IGYyYWQwYzM1NWQuLjNlNjc3Mzc5NWUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKIEBAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKQEAgLTc5LDUgKzc5LDUgQEAKICAJYnJlYWs7CiAgI2lmbmRlZiBTSEFSRUQKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCmluZGV4IGY4MzVkODcuLjA5Zjc2NzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDEwOGIzYTFkZjk2YTg1NTIyYzUyYTBkZWMwMzJmYzJjMTA2ZjVmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU3NzA4NTAxNmJiOTI2YTY4N2FiZWMxNDU1NTdmZThjYjhmNWFmMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIIDIwLzI1XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CitTdWJqZWN0OiBbUEFUQ0ggMjAvMjddIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKIAogMjAxMC0wOS0yOSAgTm9idWhpcm8gSXdhbWF0c3UgIDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgICAgICAgICAgIEFuZHJldyBTdHViYnMgIDxhbXNAY29kZXNvdXJjZXJ5LmNvbT4KQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgIyBhKgogICAgICBhbHBoYXNvcnQ2NDsKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCA1ZjExYmM3MzdiLi4yZmQyMTdiMDBiIDEwMDY0NAoraW5kZXggYzRlMjhmZmI5OC4uNjQ4YmFlMDNkNSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwogQEAgLTMwLDMgKzMwLDE0IEBAIEVOVFJZIChfX3N5c2NhbGxfZXJyb3IpCkBAIC01Miw1ICs1Miw1IEBACiArd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKICsKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCmluZGV4IDZlZTM5N2IuLjUzMGY0ZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMzOTJlZTgzYjAxMzJjMDg5ZGZmYjFlOTg5MmI0YjI1MmNlMWVjMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGMxYmVhYjhhMTE5ODVmOTZmNWViNjQ0ZTcxMDNkMzQzYjcwNWFmYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1NzowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDIxLzI1XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCitTdWJqZWN0OiBbUEFUQ0ggMjEvMjddIGVnbGliYzogSW5zdGFsbCBQSUMgYXJjaGl2ZXMKIAogRm9yd2FyZCBwb3J0IGZyb20gZWdsaWJjCiAKQEAgLTI5LDEwICsyOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZXJ1bGVzIGIvTWFrZXJ1bGVzCi1pbmRleCA5YmI3MDdjMTY4Li43NGNiZWZiOWJhIDEwMDY0NAoraW5kZXggZWY2YWJlYWM2ZC4uZWVhYTY2N2Y0OSAxMDA2NDQKIC0tLSBhL01ha2VydWxlcwogKysrIGIvTWFrZXJ1bGVzCi1AQCAtNzc1LDYgKzc3NSw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCitAQCAtNzc4LDYgKzc3OCw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCiAgJChjb21tb24tb2JqcGZ4KWxpYmMuc286ICQoY29tbW9uLW9ianBmeClsaWJjLm1hcAogIGVuZGlmCiAgY29tbW9uLWdlbmVyYXRlZCArPSBsaWJjLnNvIGxpYmNfcGljLm9zCkBAIC00Miw3ICs0Miw3IEBACiAgaWZkZWYgbGliYy5zby12ZXJzaW9uCiAgJChjb21tb24tb2JqcGZ4KWxpYmMuc28kKGxpYmMuc28tdmVyc2lvbik6ICQoY29tbW9uLW9ianBmeClsaWJjLnNvCiAgCSQobWFrZS1saW5rKQotQEAgLTEwMjYsNiArMTAyOSw3IEBAIGVuZGlmCitAQCAtMTAyOSw2ICsxMDMyLDcgQEAgZW5kaWYKICAKICBpbnN0YWxsOiBjaGVjay1pbnN0YWxsLXN1cHBvcnRlZAogIApAQCAtNTAsNyArNTAsNyBAQAogIGluc3RhbGw6ICQoaW5zdGFsbGVkLWxpYmNzKQogICQoaW5zdGFsbGVkLWxpYmNzKTogJChpbnN0X2xpYmRpcikvbGliJChsaWJwcmVmaXgpJTogbGliICQoK2ZvcmNlKQogIAkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLUBAIC0xMDU0LDYgKzEwNTgsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKK0BAIC0xMDU3LDYgKzEwNjEsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKICBpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQgOj0gJChmaWx0ZXIgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKICBpbnN0YWxsLWxpYi5zby11bnZlcnNpb25lZCA6PSAkKGZpbHRlci1vdXQgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKICAKQEAgLTczLDcgKzczLDcgQEAKICAjIEZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCB3ZSBpbnN0YWxsIHRocmVlIGZpbGVzOgogICMJJChpbnN0X2xpYmRpcikvbGliZm9vLnNvCS0tIGZvciBsaW5raW5nLCBzeW1saW5rIG9yIGxkIHNjcmlwdAogICMJJChpbnN0X3NsaWJkaXIpL2xpYmZvby5zby5OTgktLSBmb3IgbG9hZGluZyBieSBTT05BTUUsIHN5bWxpbmsKLUBAIC0xMjk4LDkgKzEzMTgsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAorQEAgLTEzMTEsOSArMTMzMSwyMiBAQCAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycy1ub25oKSk6ICQoaW5zdF9pbmNsdWRlZGlyKS8lOiBcCiAgZW5kaWYJIyBoZWFkZXJzLW5vbmgKICBlbmRpZgkjIGhlYWRlcnMKICAKQEAgLTk3LDcgKzk3LDcgQEAKICBpbnN0YWxsLWJpbi1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4pKQogIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4tc2NyaXB0KSkKICBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyOiBcCi1AQCAtMTMxMyw2ICsxMzQ2LDEwIEBAIGluc3RhbGwtZGF0YS1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2RhdGFkaXIpLywkKGluc3RhbGwtZGF0YSkpCitAQCAtMTMyNiw2ICsxMzU5LDEwIEBAIGluc3RhbGwtZGF0YS1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2RhdGFkaXIpLywkKGluc3RhbGwtZGF0YSkpCiAgaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycykpCiAgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMpCiAgaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMpCkBAIC0xMDgsNyArMTA4LDcgQEAKICAKICAjIFdlIG5lZWQgYWxsIHRoZSBgLW5vc3ViZGlyJyB0YXJnZXRzIHNvIHRoYXQgYGluc3RhbGwnIGluIHRoZSBwYXJlbnQKICAjIGRvZXNuJ3QgZGVwZW5kIG9uIHNldmVyYWwgdGhpbmdzIHdoaWNoIGVhY2ggaXRlcmF0ZSBvdmVyIHRoZSBzdWJkaXJzLgotQEAgLTEzMjIsNyArMTM1OSw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7CitAQCAtMTMzNSw3ICsxMzcyLDggQEAgaW5zdGFsbC0lOjogaW5zdGFsbC0lLW5vc3ViZGlyIDsKICAKICAuUEhPTlk6IGluc3RhbGwgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIKICBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyIGluc3RhbGwtZGF0YS1ub3N1YmRpciBcCkBAIC0xMTksNSArMTE5LDUgQEAKICBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1iaW4tbm9zdWJkaXIgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyIFwKICAJCQkgICAgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpciBpbnN0YWxsLXNiaW4tbm9zdWJkaXIgXAogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKaW5kZXggMmE4YTIwYS4uYTYyOWNlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDk3NTMzZGMyMDFjZmQ4NjM3NjViMWE2N2EyN2ZkZTNlMjYyMmRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTAxOWZlNmEyYjQxMGRiNjA0M2UyMTgwM2Y0OTdiNWNiZGQ5MGE4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjMzOjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMjVdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKK1N1YmplY3Q6IFtQQVRDSCAyMi8yN10gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIApAQCAtMjMsNyArMjMsNyBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYwogCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCi1pbmRleCA5OGVlNzYyNzJkLi5iYzNhZmIyMjQ4IDEwMDY0NAoraW5kZXggZmQ5OTcyMjc5Yi4uMTc2YjM5NDZkZSAxMDA2NDQKIC0tLSBhL2xvY2FsZS9NYWtlZmlsZQogKysrIGIvbG9jYWxlL01ha2VmaWxlCiBAQCAtMjYsNyArMjYsOCBAQCBoZWFkZXJzCQk9IGxhbmdpbmZvLmggbG9jYWxlLmggYml0cy9sb2NhbGUuaCBcCkBAIC05MSw3ICs5MSw3IEBACiArICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCiArICB9OwogZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1pbmRleCA0ZTFjOGM1NjhhLi5mN2VkOTQ2ZjFjIDEwMDY0NAoraW5kZXggNjg4MjJhNjMxOS4uZmEzNjEyMzc3NiAxMDA2NDQKIC0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKICsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKIEBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKQEAgLTEwNCwxMSArMTA0LDExIEBACiAgIyBkZWZpbmUgTkxfQ1VSUkVOVF9JTkRJUkVDVAkxCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotaW5kZXggZTU1YWI4NmUyOC4uMGY4N2U2ZGQyOCAxMDA2NDQKK2luZGV4IDM0YThkMzJjOTIuLmNiYjk0MzZjZDEgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLUBAIC0xOSw3ICsxOSw5IEBACi0gI2luY2x1ZGUgPGVycm9yLmg+CitAQCAtMTgsNyArMTgsOSBAQAorICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiArI2lmbmRlZiBOT19VTkNPTVBSRVNTCkBAIC0xMTcsNyArMTE3LDcgQEAKICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKK0BAIC0xNTQsNiArMTU2LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCiAgICByZXR1cm4gY2xvc2VkaXIgKGRpcik7CiAgfQogIApAQCAtMTI1LDcgKzEyNSw3IEBACiAgLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCiAgICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KICBzdGF0aWMKLUBAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKK0BAIC0yMDIsNiArMjA1LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQpAQCAtMTMzLDcgKzEzMyw3IEBACiAgCiAgLyogT3BlbnMgYSBjaGFybWFwIGZvciByZWFkaW5nLCBnaXZlbiBpdHMgbmFtZSAobm90IGFuIGFsaWFzIG5hbWUpLiAgKi8KICBGSUxFICoKLUBAIC0yMjYsNiArMjMwLDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCitAQCAtMjI0LDYgKzIyOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQogICAgaWYgKHN0cmVhbSAhPSBOVUxMKQogICAgICByZXR1cm4gc3RyZWFtOwogIApAQCAtMTQxLDcgKzE0MSw3IEBACiAgICBtZW1jcHkgKHAsICIuZ3oiLCA0KTsKICAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJnemlwIik7CiAgICBpZiAoc3RyZWFtICE9IE5VTEwpCi1AQCAtMjM1LDYgKzI0MCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorQEAgLTIzMyw2ICsyMzgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKICAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOwogICAgaWYgKHN0cmVhbSAhPSBOVUxMKQogICAgICByZXR1cm4gc3RyZWFtOwpAQCAtMTUwLDEwICsxNTAsMTAgQEAKICAgIHJldHVybiBOVUxMOwogIH0KIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotaW5kZXggY2VjODQ4Y2I3Yy4uZmNkNzY4ZWI3ZCAxMDA2NDQKK2luZGV4IGQyZWViY2ZkYmIuLmMzNzE4ZDY1ODkgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1AQCAtMzUwLDcgKzM1MCw3IEBAIG5ld19lbGVtZW50IChzdHJ1Y3QgbG9jYWxlX2NvbGxhdGVfdCAqY29sbGF0ZSwgY29uc3QgY2hhciAqbWJzLCBzaXplX3QgbWJzbGVuLAorQEAgLTM0OSw3ICszNDksNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKICAgICAgfQogICAgaWYgKHdjcyAhPSBOVUxMKQogICAgICB7CkBAIC0xNjIsNyArMTYyLDcgQEAKICAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKICAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLwogICAgICAgIGlmIChud2NzID09IDApCi1AQCAtMTc3Niw4ICsxNzc2LDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOworQEAgLTE3NzIsOCArMTc3Miw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKICAKICAJICAgICAgaWYgKCgqZXB0ciktPm53Y3MgPT0gcnVucC0+bndjcykKICAJCXsKQEAgLTE3Miw3ICsxNzIsNyBAQAogIAogIAkJICBpZiAoYyA9PSAwKQogIAkJICAgIHsKLUBAIC0yMDEwLDkgKzIwMDksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCitAQCAtMjAwMCw5ICsxOTk5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQogIAkgICAgIG9uZSBjb25zZWN1dGl2ZSBlbnRyeS4gICovCiAgCSAgaWYgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCiAgCSAgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCkBAIC0xODUsNyArMTg1LDcgQEAKICAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KICAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCiAgCSAgICB7Ci1AQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorQEAgLTIwMjYsOSArMjAyNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKICAJCXJ1bnAgPSBydW5wLT53Y25leHQ7CiAgCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAogIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwpAQCAtMTk5LDEwICsxOTksMTAgQEAKICAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOwogIAogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLWluZGV4IGRmMjY2YzIwZDYuLjA1YzAxNTJlYzkgMTAwNjQ0CitpbmRleCBmNzkxZTZiN2U5Li5kODA5ZDZkYjdmIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi1AQCAtOTI2LDcgKzkyNiw3IEBAIGN0eXBlX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCitAQCAtOTE1LDcgKzkxNSw3IEBAIGN0eXBlX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCiAgICBhbGxvY2F0ZV9hcnJheXMgKGN0eXBlLCBjaGFybWFwLCBjdHlwZS0+cmVwZXJ0b2lyZSk7CiAgCiAgICBkZWZhdWx0X21pc3NpbmdfbGVuID0gKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcKQEAgLTIxMSw3ICsyMTEsNyBAQAogIAkJCSA6IDApOwogIAogICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7Ci1AQCAtMTkzNyw3ICsxOTM3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKK0BAIC0xOTI2LDcgKzE5MjYsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAogIAkgICAgaWdub3JlID0gMTsKICAJICBlbHNlCiAgCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCkBAIC0yMjAsNyArMjIwLDcgQEAKICAKICAJICBmaXJzdCA9IDA7CiAgCX0KLUBAIC0yNDcxLDggKzI0NzEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOworQEAgLTI0NjAsOCArMjQ2MCw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7CiAgCSAgICB9CiAgCiAgCWhhbmRsZV90b2tfZGlnaXQ6CkBAIC0yMzEsNyArMjMxLDcgQEAKICAJICBoYW5kbGVfZGlnaXRzID0gMTsKICAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOwogIAotQEAgLTM5MjksOCArMzkyOSw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKK0BAIC0zOTAxLDggKzM5MDEsNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCiAgCiAgCSAgd2hpbGUgKGlkeCA8IG51bWJlcikKICAJICAgIHsKQEAgLTI0MSw3ICsyNDEsNyBAQAogIAkgICAgICBpZiAocmVzID09IDApCiAgCQl7CiAgCQkgIHJlcGxhY2UgPSAxOwotQEAgLTM5NjcsMTEgKzM5NjYsMTEgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorQEAgLTM5MzksMTEgKzM5MzgsMTEgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogICAgICAgIGZvciAoc2l6ZV90IGNudCA9IDA7IGNudCA8IG51bWJlcjsgKytjbnQpCiAgCXsKICAJICBzdHJ1Y3QgdHJhbnNsaXRfdG9fdCAqc3J1bnA7CkBAIC0yNTUsNyArMjU1LDcgQEAKICAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKICAJICAgIH0KICAJICAvKiBQbHVzIG9uZSBmb3IgdGhlIGV4dHJhIE5VTCBjaGFyYWN0ZXIgbWFya2luZyB0aGUgZW5kIG9mCi1AQCAtMzk5NSwxOCArMzk5NCwxOCBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCitAQCAtMzk2NywxOCArMzk2NiwxOCBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCiAgCSAgY3R5cGUtPnRyYW5zbGl0X2Zyb21faWR4W2NudF0gPSBmcm9tX2xlbjsKICAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47CiAgCkBAIC0yODEsMTAgKzI4MSwxMCBAQAogIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwogIAkgICAgfQogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1pbmRleCAzMmU5YzQxZTM1Li42YTYxZmNlZGViIDEwMDY0NAoraW5kZXggYTc1NTc5MjM2My4uZThiMmY4NTUyMiAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLUBAIC0yMTUsOCArMjE1LDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworQEAgLTIyMCw4ICsyMjAsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKICAJfQogICAgICAgIGVsc2UKICAJewpAQCAtMjk2LDcgKzI5Niw3IEBACiAgCX0KICAgICAgfQogIAotQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKK0BAIC0yMzEsNyArMjMzLDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKICAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAogIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OwogICAgICAgIHNpemVfdCBpZHg7CkBAIC0zMDUsNyArMzA1LDcgQEAKICAKICAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9CiAgCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQotQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworQEAgLTQ1NywxOCArNDU5LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CiAgCSAgICB9CiAgCiAgCSAgLyogTm93IGdlbmVyYXRlIHRoZSB3aWRlIGNoYXJhY3RlciBuYW1lIGFuZCBmb3JtYXQuICAqLwpAQCAtMzMxLDcgKzMzMSw3IEBACiAgCQl9CiAgCSAgICAgIGVsc2UKICAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQotQEAgLTUzNCw3ICs1MzYsMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CitAQCAtNTI3LDcgKzUyOSwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwogICAgaWYgKHRpbWUtPmRhdGVfZm10ID09IE5VTEwpCiAgICAgIHRpbWUtPmRhdGVfZm10ID0gIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKICAgIGlmICh0aW1lLT53ZGF0ZV9mbXQgPT0gTlVMTCkKQEAgLTM1MCw3ICszNTAsNyBAQAogIAogIAogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCA1MmIzNDA5NjNhLi4xYThiY2UxN2I0IDEwMDY0NAoraW5kZXggMzUyNWM4YTQzZC4uZjhhN2ZkOWMyNCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKIEBAIC01OTUsNyArNTk1LDcgQEAgZ2V0X3N0cmluZyAoc3RydWN0IGxpbmVyZWFkZXIgKmxyLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLApAQCAtMzYzLDE4ICszNjMsMTggQEAKICAgIHNpemVfdCBidWZtYXggPSA1NjsKICAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLWluZGV4IDZhY2MxMzQyYzcuLmRmODc3NDBmOGIgMTAwNjQ0CitpbmRleCBkNzE4ZDJlOWY0Li5lMGEzYWQ1YTgzIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLUBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKLSAjZGVmaW5lIE9QVF9MSVNUX0FSQ0hJVkUgMzA5Ci0gI2RlZmluZSBPUFRfTElUVExFX0VORElBTiA0MDAKK0BAIC0xMDUsNiArMTA1LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKICAjZGVmaW5lIE9QVF9CSUdfRU5ESUFOIDQwMQotKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDIKKyAjZGVmaW5lIE9QVF9OT19XQVJOIDQwMgorICNkZWZpbmUgT1BUX1dBUk4gNDAzCisrI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwNAogIAogIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLwogIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KLUBAIC0xNDMsNiArMTQ0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorQEAgLTE0Nyw2ICsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CiAgICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCiAgICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCiAgICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCkBAIC0zODMsNyArMzgzLDcgQEAKICAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9CiAgfTsKICAKLUBAIC0yMzIsMTIgKzIzNSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTIzNiwxMiArMjM5LDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICBjdHlwZSBsb2NhbGUuICAoUDEwMDMuMiA0LjM1LjUuMikgICovCiAgICBzZXRsb2NhbGUgKExDX0NUWVBFLCAiUE9TSVgiKTsKICAKQEAgLTM5MiwxNSArMzkyLDE1IEBACiAgICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCiAgICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KICAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKLSAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOworICAgICByZWNvcmRfZXJyb3IgKDMsIDAsIF8oIlwKKyBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpOwogKyNlbmRpZgogIAogICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLwogICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7Ci1AQCAtMzI4LDYgKzMzMyw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCi0gICAgIGNhc2UgT1BUX0JJR19FTkRJQU46Ci0gICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOworQEAgLTM4OSw2ICszOTQsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQorICAgICAgIC8qIEVuYWJsZSB0aGUgd2FybmluZ3MuICAqLworICAgICAgIHNldF93YXJuaW5ncyAoYXJnLCB0cnVlKTsKICAgICAgICBicmVhazsKICsgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgogKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKQEAgLTQwOSw3ICs0MDksNyBAQAogICAgICAgIGZvcmNlX291dHB1dCA9IDE7CiAgICAgICAgYnJlYWs7CiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLWluZGV4IDA5OTBlZjExYmUuLjY4MzQyMmM5MDggMTAwNjQ0CitpbmRleCAzMmU1Zjc2MWYyLi5iNDFlNzdiZDhkIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwogQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCkBAIC00MzIsNyArNDMyLDcgQEAKICAKICAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLWluZGV4IDM0MDdlMTNjMTMuLjBiYjU1NmNhZjggMTAwNjQ0CitpbmRleCA4OWIzNDdjNzJkLi5hNjM2ZmMyOTYwIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAogQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIHZvaWQgd3JpdGVfYWxsX2NhdGVnb3JpZXMgKHN0cnVjdCBsb2NhbGVkZWZfdCAqZGVmaW5pdGlvbnMsCkBAIC01MjEsNyArNTIxLDcgQEAKICsKICAjZW5kaWYgLyogbG9jZmlsZS5oICovCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1pbmRleCAxOWFjYzRiMmM3Li5jODlkM2I4N2FkIDEwMDY0NAoraW5kZXggZTRkZTkwN2UxZi4uYjVkOGY1YzE3ZCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYwogKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCiBAQCAtNjQsMzYgKzY0LDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9CkBAIC01NjIsNSArNTYyLDUgQEAKICAjIGRlZmluZSBXRUFLX1BPU1RMT0FEKHBvc3Rsb2FkKSB3ZWFrX2V4dGVybiAocG9zdGxvYWQpCiAgI2Vsc2UKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCmluZGV4IDllNTgwZDQuLmFlNzA4ZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNiNGQwMGVhYzdmODQwOTIzMTRkZTU5MzYyNmVlYTQwZjk1MjkwMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDlkNzE1MjZiZTIxYWJlNjhkZDhjYTNhNWEyMTk0NDU4NTFiYmMyZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzI1XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKK1N1YmplY3Q6IFtQQVRDSCAyMy8yN10gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCiAKIFRoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKIENlbnRPcyA1LlggbWFjaGluZQpAQCAtMTQsNyArMTQsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotaW5kZXggNWI0MTZiZTBkOC4uNzllNjZlZWQ1ZSAxMDA2NDQKK2luZGV4IDk5NTZjZDg0NDYuLjA0MzQyZjM2NDQgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAogQEAgLTE5LDYgKzE5LDkgQEAKQEAgLTI4LDUgKzI4LDUgQEAKICAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCiAgI2lmbmRlZiBWRVJTSU9OCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCmluZGV4IDBiNTkzNTIuLjQyZmY2NjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYTc4NDc0MjczOWM5MGVlYTBkNGNjYmJkMDczYTA2N2Q1NWNhOTVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDM4NzNhZjI4NmYxZGFiMTA2MmY1OThkNmRlYjc3NGNlNTEzNDIxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMTggQXVnIDIwMTYgMTQ6MDc6NTggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yNV0gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAorU3ViamVjdDogW1BBVENIIDI0LzI3XSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CiAKIEFjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246CiAKQEAgLTI0LDEwICsyNCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKLWluZGV4IDFiOGJhYzY1OTMuLmM2MTY4MDhmMzEgMTAwNjQ0CitpbmRleCBjOTc1ZmNmZmQ3Li42ZWU1OGM3NGUwIDEwMDY0NAogLS0tIGEvZWxmL2RsLWRlcHMuYwogKysrIGIvZWxmL2RsLWRlcHMuYwotQEAgLTczLDEzICs3MywxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQorQEAgLTcyLDEzICs3MiwxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQogIHsKICAgIHN0cnVjdCBsaW5rX21hcCAqKnAgPSBsaXN0OwogICAgc3RydWN0IGxpbmtfbWFwICoqcTsKQEAgLTUyLDUgKzUyLDUgQEAKICB9CiAgCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCmluZGV4IDA5YWQwNGEuLjdmNWQxNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjNhNjcwNDk2YzhmZTZkNGFjZjA0NWY1YjE2N2ExOWNmNDFiMDQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTZkYWIwMjQ3NTE5NDFjMDdlYjQ3OWY0N2VmNjY4MmUyMTY4Yzg2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ID0/VVRGLTg/cT9KPUMzPUE5cj1DMz1BOW15PTIwUm9zZW4/PSA8amVyZW15LnJvc2VuQHNtaWxlLmZyPgogRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNjowOToyNSArMDIwMAotU3ViamVjdDogW1BBVENIIDI1LzI1XSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKK1N1YmplY3Q6IFtQQVRDSCAyNS8yN10gbG9jYWxlOiBmaXggaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gZ2NjIC1FCiAKIFdoZW4gbmV3IHZlcnNpb24gb2YgY29tcGlsZXJzIGFyZSBwdWJsaXNoZWQsIHRoZXkgbWF5IG5vdCBiZSBjb21wYXRpYmxlIHdpdGgKIG9sZGVyIHZlcnNpb25zIG9mIHNvZnR3YXJlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBjb21tb24gd2hlbiBzb2Z0d2FyZSBpcyBidWlsdApAQCAtMzQsNSArMzQsNSBAQAogIAogIHN1YiBjc3RybGVuIHsKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYmI5NmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLUZyb20gMDM3MjgzY2JjNzQ3MzliNzJmMzZkZmVjODI3ZDEyMGZhYTI0MzQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyIGF0IHJlZGhhdCBkb3QgY29tPgotRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDExOjUwOjU1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIGFzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50Ci0gZXhwcmVzc2lvbiBbQlojIDIxMjQyXQotCi1PbiAwNy8wNS8yMDE3IDEwOjE1IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgotPiBPbiBXZWQsIEp1bCA1LCAyMDE3IGF0IDExOjUxIEFNLCBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPiB3cm90ZToKLT4+IE9uIDA3LzA1LzIwMTcgMDU6NDYgUE0sIFphY2sgV2VpbmJlcmcgd3JvdGU6Ci0+Pj4gQSBwcm9ibGVtIG9jY3VycyB0byBtZTogZXhwcmVzc2lvbnMgaW52b2x2aW5nIFZMQXMgX2FyZV8gZXZhbHVhdGVkCi0+Pj4gaW5zaWRlIHNpemVvZi4KLT4+Ci0+PiBUaGUgdHlwZSBvZiB0aGUgc2l6ZW9mIGFyZ3VtZW50IHdvdWxkIHN0aWxsIGJlIGludCAoZHVlIHRvIHRoZQotPj4gY29tcGFyaXNvbiBhZ2FpbnN0IDApLCBzbyB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgb2NjdXIuCi0+Ci0+IEkgcmVjaGVja2VkIHdoYXQgQzk5IHNheXMgYWJvdXQgc2l6ZW9mIGFuZCBWTEFzLCBhbmQgeW91J3JlIHJpZ2h0IC0KLT4gdGhlIG9wZXJhbmQgb2Ygc2l6ZW9mIGlzIG9ubHkgZXZhbHVhdGVkIHdoZW4gc2l6ZW9mIGlzIF9kaXJlY3RseV8KLT4gYXBwbGllZCB0byBhIFZMQS4gIFNvIHRoaXMgaXMgaW5kZWVkIHNhZmUsIGJ1dCBJIHRoaW5rIHRoaXMgd3JpbmtsZQotPiBzaG91bGQgYmUgbWVudGlvbmVkIGluIHRoZSBjb21tZW50LiAgUGVyaGFwcwotPgotPiAvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCi0+ICAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXwotPiAgICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIGV4cGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCB6ZXJvCi0+ICAgIGVuc3VyZXMgdGhhdCBzaXplb2YgaXMgbm90IGRpcmVjdGx5IGFwcGxpZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIG9yCi0+ICAgIGJpdC1maWVsZCAod2hpY2ggd291bGQgYmUgaWxsLWZvcm1lZCkgb3IgVkxBICh3aGljaCB3b3VsZCBiZSBldmFsdWF0ZWQpLiAgKi8KLT4KLT4gencKLQotV2hhdCBhYm91dCB0aGUgYXR0YWNoZWQgcGF0Y2g/Ci0KLVNpZGRoZXNoLCBpcyB0aGlzIG9rYXkgZHVyaW5nIHRoZSBmcmVlemU/ICBJJ2QgbGlrZSB0byBiYWNrcG9ydCBpdCB0bwotMi4yNSBhcyB3ZWxsLgotCi1UaGFua3MsCi1GbG9yaWFuCi0KLWFzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50IGV4cHJlc3Npb24KLQotMjAxNy0wNy0wNiAgRmxvcmlhbiBXZWltZXIgIDxmd2VpbWVyQHJlZGhhdC5jb20+Ci0KLQlbQlogIzIxMjQyXQotCSogYXNzZXJ0L2Fzc2VydC5oIFtfX0dOVUNfXyAmJiAhX19TVFJJQ1RfQU5TSV9fXSAoYXNzZXJ0KToKLQlTdXBwcmVzcyBwZWRhbnRpYyB3YXJuaW5nIHJlc3VsdGluZyBmcm9tIHN0YXRlbWVudCBleHByZXNzaW9uLgotCShfX0FTU0VSVF9GVU5DVElPTik6IEFkZCBtaXNzaW5nIF9fZXh0ZW5kc2lvbl9fLgotLS0tCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gYXNzZXJ0L2Fzc2VydC5oIHwgMTIgKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Fzc2VydC9hc3NlcnQuaCBiL2Fzc2VydC9hc3NlcnQuaAotaW5kZXggMjJmMDE5NTM3Yy4uNjgwMWNmZWIxMCAxMDA2NDQKLS0tLSBhL2Fzc2VydC9hc3NlcnQuaAotKysrIGIvYXNzZXJ0L2Fzc2VydC5oCi1AQCAtOTEsMTMgKzkxLDE5IEBAIF9fRU5EX0RFQ0xTCi0gICAgICA/IF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkJCQkJCQlcCi0gICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkKLSAjIGVsc2UKLSsvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCi0rICAgYnV0IHdpbGwgdHJpZ2dlciBhbnkgcGVkYW50aWMgd2FybmluZ3MgbWFza2VkIGJ5IHRoZSBfX2V4dGVuc2lvbl9fCi0rICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybyBpcwotKyAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcwotKyAgIGNvbnRleHQsIGFuZCB0byBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGgKLSsgICBhcnJheXMuICAqLwotICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAotLSAgICAoewkJCQkJCQkJCVwKLSsgICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPT0gMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCi0gICAgICAgaWYgKGV4cHIpCQkJCQkJCQlcCi0gICAgICAgICA7IC8qIGVtcHR5ICovCQkJCQkJCVwKLSAgICAgICBlbHNlCQkJCQkJCQlcCi0gICAgICAgICBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTik7CVwKLS0gICAgfSkKLSsgICAgfSkpCi0gIyBlbmRpZgotIAotICMgaWZkZWYJX19VU0VfR05VCi1AQCAtMTEzLDcgKzExOSw3IEBAIF9fRU5EX0RFQ0xTCi0gICAgQzl4IGhhcyBhIHNpbWlsYXIgdmFyaWFibGUgY2FsbGVkIF9fZnVuY19fLCBidXQgcHJlZmVyIHRoZSBHQ0Mgb25lIHNpbmNlCi0gICAgaXQgZGVtYW5nbGVzIEMrKyBmdW5jdGlvbiBuYW1lcy4gICovCi0gIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzID8gX19HTlVDX1BSRVJFUSAoMiwgNikgOiBfX0dOVUNfUFJFUkVRICgyLCA0KQotLSMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19QUkVUVFlfRlVOQ1RJT05fXwotKyMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19leHRlbnNpb25fXyBfX1BSRVRUWV9GVU5DVElPTl9fCi0gIyBlbHNlCi0gIyAgaWYgZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAotICMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19mdW5jX18KLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhMTE5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gODQ3ZDM3ZDVhMzRlNGJmMjk0ZGU0YmE5OGRlMzY2ODk1MGUyOGJjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEwOjA1OjA3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMjddIHJlc2V0IGRsX2xvYWRfd3JpdGVfbG9jayBhZnRlciBmb3JraW5nCisKK1RoZSBwYXRjaCBpbiB0aGlzIEJ1Z3ppbGxhIGVudHJ5IHdhcyByZXF1ZXN0ZWQgYnkgYSBjdXN0b21lcjoKKworICBodHRwczovL3d3dy5zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTkyODIKKworVGhlIF9fbGliY19mb3JrKCkgY29kZSByZXNldCBkbF9sb2FkX2xvY2ssIGJ1dCBpdCBhbHNvIG5lZWRlZCB0byByZXNldAorZGxfbG9hZF93cml0ZV9sb2NrLiAgVGhlIHBhdGNoIGhhcyBub3QgeWV0IGJlZW4gaW50ZWdyYXRlZCB1cHN0cmVhbS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgTm8gQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogRGFtb2RhciBTb25vbmUgPGRhbW9kYXIuc29ub25lQGtwaXQuY29tPgorU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9ucHRsL2ZvcmsuYyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKK2luZGV4IDg0NmZhNDllZjIuLmY4NzUwNmYzOTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL25wdGwvZm9yay5jCisrKysgYi9zeXNkZXBzL25wdGwvZm9yay5jCitAQCAtMTk0LDkgKzE5NCw5IEBAIF9fbGliY19mb3JrICh2b2lkKQorIAkgIF9JT19saXN0X3Jlc2V0bG9jayAoKTsKKyAJfQorIAorLSAgICAgIC8qIFJlc2V0IHRoZSBsb2NrIHRoZSBkeW5hbWljIGxvYWRlciB1c2VzIHRvIHByb3RlY3QgaXRzIGRhdGEuICAqLworKyAgICAgIC8qIFJlc2V0IHRoZSBsb2NrcyB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KKyAgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX2xvY2spKTsKKy0KKysgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKyAgICAgICAvKiBSdW4gdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBjaGlsZC4gICovCisgICAgICAgd2hpbGUgKGFsbHAgIT0gTlVMTCkKKyAJeworLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjMjM0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA5NDIyNWFiNGJjYzE2MTM1MzE1NThhNjMyMjcwYjVlZGNlNzc5YmM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjcgSmFuIDIwMTggMTA6MDg6MDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8yN10gQWNxdWlyZSBsZC5zbyBsb2NrIGJlZm9yZSBzd2l0Y2hpbmcgdG8gbWFsbG9jX2F0Zm9yaworCitUaGUgcGF0Y2ggaXMgZnJvbQorICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NTc4CisKK0lmIGEgdGhyZWFkIGhhcHBlbnMgdG8gaG9sZCBkbF9sb2FkX2xvY2sgYW5kIGhhdmUgcl9zdGF0ZSBzZXQgdG8gUlRfQUREIG9yCitSVF9ERUxFVEUgYXQgdGhlIHRpbWUgYW5vdGhlciB0aHJlYWQgY2FsbHMgZm9yaygpLCB0aGVuIHRoZSBjaGlsZCBleGl0IGNvZGUKK2Zyb20gZm9yayAoaW4gbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9mb3JrLmMgaW4gb3VyIGNhc2UpIHJlLWluaXRpYWxpemVzCitkbF9sb2FkX2xvY2sgYnV0IGRvZXMgbm90IHJlc3RvcmUgcl9zdGF0ZSB0byBSVF9DT05TSVNURU5ULiBJZiB0aGUgY2hpbGQKK3N1YnNlcXVlbnRseSByZXF1aXJlcyBsZC5zbyBmdW5jdGlvbmFsaXR5IGJlZm9yZSBjYWxsaW5nIGV4ZWMoKSwgdGhlbiB0aGUKK2Fzc2VydGlvbiB3aWxsIGZpcmUuCisKK1RoZSBwYXRjaCBhY3F1aXJlcyBkbF9sb2FkX2xvY2sgb24gZW50cnkgdG8gZm9yaygpIGFuZCByZWxlYXNlcyBpdCBvbiBleGl0Citmcm9tIHRoZSBwYXJlbnQgcGF0aC4gIFRoZSBjaGlsZCBwYXRoIGlzIGluaXRpYWxpemVkIGFzIGN1cnJlbnRseSBkb25lLgorVGhpcyBpcyBlc3NlbnRpYWxseSBwdGhyZWFkc19hdGZvcmssIGJ1dCBmb3JjZWQgdG8gYmUgZmlyc3QgYmVjYXVzZSB0aGUKK2FjcXVpc2l0aW9uIG9mIGRsX2xvYWRfbG9jayBtdXN0IGhhcHBlbiBiZWZvcmUgbWFsbG9jX2F0Zm9yayBpcyBhY3RpdmUKK3RvIGF2b2lkIGEgZGVhZGxvY2suCisKK1RoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vdCBBdXRob3IgU2VlIGJ1Z3ppbGxhXQorCitTaWduZWQtb2ZmLWJ5OiBSYWdodW5hdGggTG9sdXIgPFJhZ2h1bmF0aC5Mb2x1ckBrcGl0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9ucHRsL2ZvcmsuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9ucHRsL2ZvcmsuYyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKK2luZGV4IGY4NzUwNmYzOTguLjIyNWU3YjUxZjggMTAwNjQ0CistLS0gYS9zeXNkZXBzL25wdGwvZm9yay5jCisrKysgYi9zeXNkZXBzL25wdGwvZm9yay5jCitAQCAtMjUsNiArMjUsNyBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSA8aHAtdGltaW5nLmg+CisgI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrI2luY2x1ZGUgPGxpYmMtbG9jay5oPgorICNpbmNsdWRlIDxzdGRpby1sb2NrLmg+CisgI2luY2x1ZGUgPGF0b21pYy5oPgorICNpbmNsdWRlIDxucHRsL3B0aHJlYWRQLmg+CitAQCAtNjAsNiArNjEsMTAgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgICAgICBidXQgb3VyIGN1cnJlbnQgZm9yayBpbXBsZW1lbnRhdGlvbiBpcyBub3QuICAqLworICAgYm9vbCBtdWx0aXBsZV90aHJlYWRzID0gVEhSRUFEX0dFVE1FTSAoVEhSRUFEX1NFTEYsIGhlYWRlci5tdWx0aXBsZV90aHJlYWRzKTsKKyAKKysgIC8qIGdyYWIgbGQuc28gbG9jayBCRUZPUkUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsgKi8KKysgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKKysgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKysKKyAgIC8qIFJ1biBhbGwgdGhlIHJlZ2lzdGVyZWQgcHJlcGFyYXRpb24gaGFuZGxlcnMuICBJbiByZXZlcnNlIG9yZGVyLgorICAgICAgV2hpbGUgZG9pbmcgdGhpcyB3ZSBidWlsZCB1cCBhIGxpc3Qgb2YgYWxsIHRoZSBlbnRyaWVzLiAgKi8KKyAgIHN0cnVjdCBmb3JrX2hhbmRsZXIgKnJ1bnA7CitAQCAtMjQ2LDYgKzI1MSwxMCBAQCBfX2xpYmNfZm9yayAodm9pZCkKKyAKKyAJICBhbGxwID0gYWxscC0+bmV4dDsKKyAJfQorKworKyAgICAgIC8qIHVubG9jayBsZC5zbyBsYXN0LCBiZWNhdXNlIHdlIGxvY2tlZCBpdCBmaXJzdCAqLworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOworICAgICB9CisgCisgICByZXR1cm4gcGlkOworLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc3YjI1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gYTZiYjczZDFjZmQyMGE3M2ZiYmU2MDc2MDA4Mzc2ZmI4Nzg3OWQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTggQXVnIDIwMTYgMTc6NTk6MTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVzZXQgZGxfbG9hZF93cml0ZV9sb2NrIGFmdGVyIGZvcmtpbmcKLQotVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgotCi0gIGh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xOTI4MgotCi1UaGUgX19saWJjX2ZvcmsoKSBjb2RlIHJlc2V0IGRsX2xvYWRfbG9jaywgYnV0IGl0IGFsc28gbmVlZGVkIHRvIHJlc2V0Ci1kbF9sb2FkX3dyaXRlX2xvY2suICBUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KLQotU2lnbmVkLW9mZi1ieTogRGFtb2RhciBTb25vbmUgPGRhbW9kYXIuc29ub25lQGtwaXQuY29tPgotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3lzZGVwcy9ucHRsL2ZvcmsuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9ucHRsL2ZvcmsuYyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKLWluZGV4IDJiOWFlNGIuLjNkMGI4ZGEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25wdGwvZm9yay5jCi0rKysgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1AQCAtMTc0LDggKzE3NCw5IEBAIF9fbGliY19mb3JrICh2b2lkKQotICAgICAgIC8qIFJlc2V0IGxvY2tzIGluIHRoZSBJL08gY29kZS4gICovCi0gICAgICAgX0lPX2xpc3RfcmVzZXRsb2NrICgpOwotIAotLSAgICAgIC8qIFJlc2V0IHRoZSBsb2NrIHRoZSBkeW5hbWljIGxvYWRlciB1c2VzIHRvIHByb3RlY3QgaXRzIGRhdGEuICAqLwotKyAgICAgIC8qIFJlc2V0IHRoZSBsb2NrcyB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KLSAgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX2xvY2spKTsKLSsgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKLSAKLSAgICAgICAvKiBSdW4gdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBjaGlsZC4gICovCi0gICAgICAgd2hpbGUgKGFsbHAgIT0gTlVMTCkKLS0tIAotMS45LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYyMzdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1UaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6Ci0gIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ1NzgKLQotSWYgYSB0aHJlYWQgaGFwcGVucyB0byBob2xkIGRsX2xvYWRfbG9jayBhbmQgaGF2ZSByX3N0YXRlIHNldCB0byBSVF9BREQgb3IKLVJUX0RFTEVURSBhdCB0aGUgdGltZSBhbm90aGVyIHRocmVhZCBjYWxscyBmb3JrKCksIHRoZW4gdGhlIGNoaWxkIGV4aXQgY29kZQotZnJvbSBmb3JrIChpbiBucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2ZvcmsuYyBpbiBvdXIgY2FzZSkgcmUtaW5pdGlhbGl6ZXMKLWRsX2xvYWRfbG9jayBidXQgZG9lcyBub3QgcmVzdG9yZSByX3N0YXRlIHRvIFJUX0NPTlNJU1RFTlQuIElmIHRoZSBjaGlsZAotc3Vic2VxdWVudGx5IHJlcXVpcmVzIGxkLnNvIGZ1bmN0aW9uYWxpdHkgYmVmb3JlIGNhbGxpbmcgZXhlYygpLCB0aGVuIHRoZQotYXNzZXJ0aW9uIHdpbGwgZmlyZS4KLQotVGhlIHBhdGNoIGFjcXVpcmVzIGRsX2xvYWRfbG9jayBvbiBlbnRyeSB0byBmb3JrKCkgYW5kIHJlbGVhc2VzIGl0IG9uIGV4aXQKLWZyb20gdGhlIHBhcmVudCBwYXRoLiAgVGhlIGNoaWxkIHBhdGggaXMgaW5pdGlhbGl6ZWQgYXMgY3VycmVudGx5IGRvbmUuCi1UaGlzIGlzIGVzc2VudGlhbGx5IHB0aHJlYWRzX2F0Zm9yaywgYnV0IGZvcmNlZCB0byBiZSBmaXJzdCBiZWNhdXNlIHRoZQotYWNxdWlzaXRpb24gb2YgZGxfbG9hZF9sb2NrIG11c3QgaGFwcGVuIGJlZm9yZSBtYWxsb2NfYXRmb3JrIGlzIGFjdGl2ZQotdG8gYXZvaWQgYSBkZWFkbG9jay4KLVRoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vdCBBdXRob3IgU2VlIGJ1Z3ppbGxhXQotCi1TaWduZWQtb2ZmLWJ5OiBSYWdodW5hdGggTG9sdXIgPFJhZ2h1bmF0aC5Mb2x1ckBrcGl0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBnaXQvc3lzZGVwcy9ucHRsL2ZvcmsuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3N5c2RlcHMvbnB0bC9mb3JrLmMgICAgICAgMjAxNy0wOC0wMyAxNjowMjoxNS42NzQ3MDQwODAgKzA4MDAKLSsrKyBnaXQvc3lzZGVwcy9ucHRsL2ZvcmsuYyAgICAyMDE3LTA4LTA0IDE4OjE1OjAyLjQ2MzM2MjAxNSArMDgwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSA8dGxzLmg+Ci0gI2luY2x1ZGUgPGhwLXRpbWluZy5oPgotICNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKyNpbmNsdWRlIDxsaWJjLWxvY2suaD4KLSAjaW5jbHVkZSA8c3RkaW8tbG9jay5oPgotICNpbmNsdWRlIDxhdG9taWMuaD4KLSAjaW5jbHVkZSA8bnB0bC9wdGhyZWFkUC5oPgotQEAgLTYwLDYgKzYxLDEwIEBACi0gICAgICBidXQgb3VyIGN1cnJlbnQgZm9yayBpbXBsZW1lbnRhdGlvbiBpcyBub3QuICAqLwotICAgYm9vbCBtdWx0aXBsZV90aHJlYWRzID0gVEhSRUFEX0dFVE1FTSAoVEhSRUFEX1NFTEYsIGhlYWRlci5tdWx0aXBsZV90aHJlYWRzKTsKLSAKLSsgIC8qIGdyYWIgbGQuc28gbG9jayBCRUZPUkUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsgKi8KLSsgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKLSsgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKLSsKLSAgIC8qIFJ1biBhbGwgdGhlIHJlZ2lzdGVyZWQgcHJlcGFyYXRpb24gaGFuZGxlcnMuICBJbiByZXZlcnNlIG9yZGVyLgotICAgICAgV2hpbGUgZG9pbmcgdGhpcyB3ZSBidWlsZCB1cCBhIGxpc3Qgb2YgYWxsIHRoZSBlbnRyaWVzLiAgKi8KLSAgIHN0cnVjdCBmb3JrX2hhbmRsZXIgKnJ1bnA7Ci1AQCAtMjQ3LDYgKzI1MiwxMCBAQAotIAotIAkgIGFsbHAgPSBhbGxwLT5uZXh0OwotIAl9Ci0rCi0rICAgICAgLyogdW5sb2NrIGxkLnNvIGxhc3QsIGJlY2F1c2Ugd2UgbG9ja2VkIGl0IGZpcnN0ICovCi0rICAgICAgX19ydGxkX2xvY2tfdW5sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0rICAgICAgX19ydGxkX2xvY2tfdW5sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7Ci0gICAgIH0KLSAKLSAgIHJldHVybiBwaWQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY2NweS10by1maXgtV3N0cmluZ29wLXRydW5jYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEyOWY0MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAxMTNlMDUxNmZiZDNjZTE4MjUzZjA0MjM3NjI0MTZkNGM0YjM4ZmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMTc6NTc6MzcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8yOV0gUmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtY2NweSB0byBmaXgKKyAtV3N0cmluZ29wLXRydW5jYXRpb24uCisKKwkqIG5pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jOiBSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jcHkgdG8KKwlhdm9pZCAtV3N0cmluZ29wLXRydW5jYXRpb24uCistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTgtMDMvbXNnMDA1MzEuaHRtbF0KKworIG5pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jIGIvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKK2luZGV4IDhkYzAyMWU3M2QuLmI1MzI4NGY4ODkgMTAwNjQ0CistLS0gYS9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYworKysrIGIvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKK0BAIC04Nyw3ICs4Nyw3IEBAIF9uc3NfbmlzcGx1c19wYXJzZV9wd2VudCAobmlzX3Jlc3VsdCAqcmVzdWx0LCBzdHJ1Y3QgcGFzc3dkICpwdywKKyAgICAgICBpZiAobGVuID49IHJvb21fbGVmdCkKKyAJZ290byBub19tb3JlX3Jvb207CisgCistICAgICAgc3RybmNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisrICAgICAgbWVtY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKKyAgICAgICBmaXJzdF91bnVzZWRbbGVuXSA9ICdcMCc7CisgICAgICAgbnVtc3RyID0gZmlyc3RfdW51c2VkOworICAgICB9CitAQCAtMTAzLDcgKzEwMyw3IEBAIF9uc3NfbmlzcGx1c19wYXJzZV9wd2VudCAobmlzX3Jlc3VsdCAqcmVzdWx0LCBzdHJ1Y3QgcGFzc3dkICpwdywKKyAgICAgICBpZiAobGVuID49IHJvb21fbGVmdCkKKyAJZ290byBub19tb3JlX3Jvb207CisgCistICAgICAgc3RybmNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisrICAgICAgbWVtY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKKyAgICAgICBmaXJzdF91bnVzZWRbbGVuXSA9ICdcMCc7CisgICAgICAgbnVtc3RyID0gZmlyc3RfdW51c2VkOworICAgICB9CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzcwNTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotKiBmaXhlcyAibGFtYmRhLWV4cHJlc3Npb24gaW4gdW5ldmFsdWF0ZWQgY29udGV4dCIgY29tcGlsZSBmYWlsdXJlcyBzdWNoIGFzCi0gIGh0dHBzOi8vZ2l0aHViLmNvbS9ubG9obWFubi9qc29uL2lzc3Vlcy83MDUKLQotKiBmaXhlcyAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcj09IiBjb21waWxlIGZhaWx1cmVzIHN1Y2ggYXMKLSAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNDgyOTkwCi0KLSogQ2hhbmdlbG9nIGVkaXQgd2FzIHJlbW92ZWQgZnJvbSB1cHN0cmVhbSBjb21taXQgYmVjYXVzZSBpdCBjYXVzZWQgY29uZmxpY3QKLQotU2lnbmVkLW9mZi1ieTogUy4gTG9ja3dvb2QtQ2hpbGRzIDxzamxAdmN0bGFicy5jb20+Ci0KLUZyb20gYjU4ODlkMjVlOWJmOTQ0YTg5ZmRkN2JjYWJmM2I2YzZmNmJiNmY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIxIEF1ZyAyMDE3IDEzOjAzOjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFzc2VydDogU3VwcG9ydCB0eXBlcyB3aXRob3V0IG9wZXJhdG9yPT0gKGludCkgW0JaICMyMTk3Ml0KLQotLS0tCi0gYXNzZXJ0L01ha2VmaWxlICAgICAgICAgIHwgMTEgKysrKysrLQotIGFzc2VydC9hc3NlcnQuaCAgICAgICAgICB8IDE2ICsrKysrKy0tLS0KLSBhc3NlcnQvdHN0LWFzc2VydC1jKysuY2MgfCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBhc3NlcnQvdHN0LWFzc2VydC1nKysuY2MgfCAxOSArKysrKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBhc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCi0KLWRpZmYgLS1naXQgYS9hc3NlcnQvTWFrZWZpbGUgYi9hc3NlcnQvTWFrZWZpbGUKLWluZGV4IDFjM2JlOWIuLjllYzFiZTggMTAwNjQ0Ci0tLS0gYS9hc3NlcnQvTWFrZWZpbGUKLSsrKyBiL2Fzc2VydC9NYWtlZmlsZQotQEAgLTI1LDYgKzI1LDE1IEBAIGluY2x1ZGUgLi4vTWFrZWNvbmZpZwotIGhlYWRlcnMJOj0gYXNzZXJ0LmgKLSAKLSByb3V0aW5lcyA6PSBhc3NlcnQgYXNzZXJ0LXBlcnIgX19hc3NlcnQKLS10ZXN0cyA6PSB0ZXN0LWFzc2VydCB0ZXN0LWFzc2VydC1wZXJyCi0rdGVzdHMgOj0gdGVzdC1hc3NlcnQgdGVzdC1hc3NlcnQtcGVyciB0c3QtYXNzZXJ0LWMrKyB0c3QtYXNzZXJ0LWcrKwotIAotIGluY2x1ZGUgLi4vUnVsZXMKLSsKLStpZmVxICgkKGhhdmUtY3h4LXRocmVhZF9sb2NhbCkseWVzKQotK0NGTEFHUy10c3QtYXNzZXJ0LWMrKy5vID0gLXN0ZD1jKysxMQotK0xETElCUy10c3QtYXNzZXJ0LWMrKyA9IC1sc3RkYysrCi0rQ0ZMQUdTLXRzdC1hc3NlcnQtZysrLm8gPSAtc3RkPWdudSsrMTEKLStMRExJQlMtdHN0LWFzc2VydC1nKysgPSAtbHN0ZGMrKwotK2Vsc2UKLSt0ZXN0cy11bnN1cHBvcnRlZCArPSB0c3QtYXNzZXJ0LWMrKyB0c3QtYXNzZXJ0LWcrKwotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvYXNzZXJ0L2Fzc2VydC5oIGIvYXNzZXJ0L2Fzc2VydC5oCi1pbmRleCA2ODAxY2ZlLi42NDBjOTVjIDEwMDY0NAotLS0tIGEvYXNzZXJ0L2Fzc2VydC5oCi0rKysgYi9hc3NlcnQvYXNzZXJ0LmgKLUBAIC04NSw3ICs4NSwxMiBAQCBfX0VORF9ERUNMUwotIC8qIFdoZW4gcG9zc2libGUsIGRlZmluZSBhc3NlcnQgc28gdGhhdCBpdCBkb2VzIG5vdCBhZGQgZXh0cmEKLSAgICBwYXJlbnRoZXNlcyBhcm91bmQgRVhQUi4gIE90aGVyd2lzZSwgdGhvc2UgYWRkZWQgcGFyZW50aGVzZXMgd291bGQKLSAgICBzdXBwcmVzcyB3YXJuaW5ncyB3ZSdkIGV4cGVjdCB0byBiZSBkZXRlY3RlZCBieSBnY2MncyAtV3BhcmVudGhlc2VzLiAgKi8KLS0jIGlmICFkZWZpbmVkIF9fR05VQ19fIHx8IGRlZmluZWQgX19TVFJJQ1RfQU5TSV9fCi0rIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCi0rIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCi0rICAgICAoc3RhdGljX2Nhc3QgPGJvb2w+IChleHByKQkJCQkJCVwKLSsgICAgICA/IHZvaWQgKDApCQkJCQkJCVwKLSsgICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkKLSsjIGVsaWYgIWRlZmluZWQgX19HTlVDX18gfHwgZGVmaW5lZCBfX1NUUklDVF9BTlNJX18KLSAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKLSAgICAgKChleHByKQkJCQkJCQkJXAotICAgICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAotQEAgLTkzLDEyICs5OCwxMSBAQCBfX0VORF9ERUNMUwotICMgZWxzZQotIC8qIFRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIEVYUFIgaXMgbm90IGV2YWx1YXRlZCBkdWUgdG8gdGhlIHNpemVvZiwKLSAgICBidXQgd2lsbCB0cmlnZ2VyIGFueSBwZWRhbnRpYyB3YXJuaW5ncyBtYXNrZWQgYnkgdGhlIF9fZXh0ZW5zaW9uX18KLS0gICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIGV4cGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCB6ZXJvIGlzCi0tICAgcmVxdWlyZWQgdG8gc3VwcG9ydCBmdW5jdGlvbiBwb2ludGVycyBhbmQgYml0IGZpZWxkcyBpbiB0aGlzCi0tICAgY29udGV4dCwgYW5kIHRvIHN1cHByZXNzIHRoZSBldmFsdWF0aW9uIG9mIHZhcmlhYmxlIGxlbmd0aAotLSAgIGFycmF5cy4gICovCi0rICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yIGlzIHJlcXVpcmVkIHRvCi0rICAgc3VwcG9ydCBmdW5jdGlvbiBwb2ludGVycyBhbmQgYml0IGZpZWxkcyBpbiB0aGlzIGNvbnRleHQsIGFuZCB0bwotKyAgIHN1cHByZXNzIHRoZSBldmFsdWF0aW9uIG9mIHZhcmlhYmxlIGxlbmd0aCBhcnJheXMuICAqLwotICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAotLSAgKCh2b2lkKSBzaXplb2YgKChleHByKSA9PSAwKSwgX19leHRlbnNpb25fXyAoewkJCVwKLSsgICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPyAxIDogMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCi0gICAgICAgaWYgKGV4cHIpCQkJCQkJCQlcCi0gICAgICAgICA7IC8qIGVtcHR5ICovCQkJCQkJCVwKLSAgICAgICBlbHNlCQkJCQkJCQlcCi1kaWZmIC0tZ2l0IGEvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjIGIvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTJhNWU2OQotLS0tIC9kZXYvbnVsbAotKysrIGIvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCi1AQCAtMCwwICsxLDc4IEBACi0rLyogVGVzdHMgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIEMrKyBhbmQgYXNzZXJ0LgotKyAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQotKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotKwotKy8qIFRoZSBDKysgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBpZiB0aGUgYXNzZXJ0IGFyZ3VtZW50IGlzIGEgY29uc3RhbnQKLSsgICBzdWJleHByZXNzaW9uLCB0aGVuIHRoZSBhc3NlcnQgaXRzZWxmIGlzIG9uZSwgdG9vLiAgKi8KLStjb25zdGV4cHIgaW50Ci0rY2hlY2tfY29uc3RleHByICgpCi0rewotKyAgcmV0dXJuIChhc3NlcnQgKHRydWUpLCAxKTsKLSt9Ci0rCi0rLyogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbiBiZSBjb250ZXh0dWFsbHkgY29udmVydGVkIHRvIGJvb2wsIGJ1dAotKyAgIGNhbm5vdCBiZSBjb21wYXJlZCB0byBpbnQuICAqLwotK3N0cnVjdCBub19pbnQKLSt7Ci0rICBub19pbnQgKCkgPSBkZWZhdWx0OwotKyAgbm9faW50IChjb25zdCBub19pbnQgJikgPSBkZWxldGU7Ci0rCi0rICBleHBsaWNpdCBvcGVyYXRvciBib29sICgpIGNvbnN0Ci0rICB7Ci0rICAgIHJldHVybiB0cnVlOwotKyAgfQotKwotKyAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLwotKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3I9PSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLwotKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3IhPSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLwotK307Ci0rCi0rLyogVGhpcyBjbGFzcyB0ZXN0cyB0aGF0IG9wZXJhdG9yPT0gaXMgbm90IHVzZWQgYnkgYXNzZXJ0LiAgKi8KLStzdHJ1Y3QgYm9vbF9hbmRfaW50Ci0rewotKyAgYm9vbF9hbmRfaW50ICgpID0gZGVmYXVsdDsKLSsgIGJvb2xfYW5kX2ludCAoY29uc3Qgbm9faW50ICYpID0gZGVsZXRlOwotKwotKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCAoKSBjb25zdAotKyAgewotKyAgICByZXR1cm4gdHJ1ZTsKLSsgIH0KLSsKLSsgIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yPT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yIT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSt9OwotKwotK3N0YXRpYyBpbnQKLStkb190ZXN0ICgpCi0rewotKyAgewotKyAgICBub19pbnQgdmFsdWU7Ci0rICAgIGFzc2VydCAodmFsdWUpOwotKyAgfQotKwotKyAgewotKyAgICBib29sX2FuZF9pbnQgdmFsdWU7Ci0rICAgIGFzc2VydCAodmFsdWUpOwotKyAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmM+Ci1kaWZmIC0tZ2l0IGEvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjIGIvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGMwNjQwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCi1AQCAtMCwwICsxLDE5IEBACi0rLyogVGVzdHMgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIEMrKyBhbmQgYXNzZXJ0LiAgR05VIEMrKzExIHZlcnNpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCi0rICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8dHN0LWFzc2VydC1jKysuY2M+Ci0tLSAKLTEuOS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLXBsdXJhbF9jX25vX3ByZXByb2Nlc3Nvcl9saW5lcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLXBsdXJhbF9jX25vX3ByZXByb2Nlc3Nvcl9saW5lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjAzZTFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0ltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OgorRG8gbm90IHB1dCBhbnkgI2xpbmUgcHJlcHJvY2Vzc29yIGNvbW1hbmRzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcy4KK1RoZXNlIGxpbmVzIGNvbnRhaW4gYWJzb2x1dGUgcGF0aHMgY29udGFpbmluZyBmaWxlIGxvY2F0aW9ucyBvbgordGhlIGhvc3QgYnVpbGQgbWFjaGluZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvaW50bC9NYWtlZmlsZSBiL2ludGwvTWFrZWZpbGUKK2luZGV4IDIyMTk3MTcuLmEyMDM3ODAgMTAwNjQ0CistLS0gYS9pbnRsL01ha2VmaWxlCisrKysgYi9pbnRsL01ha2VmaWxlCitAQCAtMTUxLDcgKzE1MSw3IEBAICQob2JqcGZ4KXRzdC1nZXR0ZXh0Ni5vdXQ6ICQob2JqcGZ4KXRzdC1nZXR0ZXh0Lm91dAorIAorIENQUEZMQUdTICs9IC1EJ0xPQ0FMRURJUj0iJChsb2NhbGVkaXIpIicgXAorIAkgICAgLUQnTE9DQUxFX0FMSUFTX1BBVEg9IiQobG9jYWxlZGlyKSInCistQklTT05GTEFHUyA9IC0teWFjYyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorK0JJU09ORkxBR1MgPSAtLXlhY2MgLS1uby1saW5lcyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorIAorICQoaW5zdF9sb2NhbGVkaXIpL2xvY2FsZS5hbGlhczogbG9jYWxlLmFsaWFzICQoK2ZvcmNlKQorIAkkKGRvLWluc3RhbGwpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1uYXRpdmVzZGstZGVwcmVjYXRlLWxpYmNyeXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTEzMmVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaApAQCAtMCwwICsxLDQxOSBAQAorQmFja2dyb3VuZCBpbmZvcm1hdGlvbjoKKworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTctMDgvbXNnMDEyNTcuaHRtbAoraHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvUmVwbGFjZV9nbGliY19saWJjcnlwdF93aXRoX2xpYnhjcnlwdAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitGcm9tOiBaYWNrIFdlaW5iZXJnIDx6YWNrd0BwYW5peC5jb20+CitTdWJqZWN0OiBbUEFUQ0hdIERlcHJlY2F0ZSBsaWJjcnlwdCBhbmQgZG9uJ3QgYnVpbGQgaXQgYnkgZGVmYXVsdAorCitCYWNrIGluIEp1bmUsIEJqw7ZybiBFc3NlciBwcm9wb3NlZCB0byBhZGQgT3BlbkJTRC1jb21wYXRpYmxlIGJjcnlwdAorc3VwcG9ydCB0byBvdXIgaW1wbGVtZW50YXRpb24gb2YgY3J5cHQoMyksIGFuZCBaYWNrIFdlaW5iZXJnIHJlcGxpZWQKK3RoYXQgaXQgbWlnaHQgYWN0dWFsbHkgbWFrZSBtb3JlIHNlbnNlIHRvIF9yZW1vdmVfIGxpYmNyeXB0IGZyb20KK2dsaWJjLCBmcmVlaW5nIHVwIGxpYmNyeXB0LnNvLjEgYW5kIGNyeXB0LmggdG8gYmUgcHJvdmlkZWQgYnkgYQorc2VwYXJhdGUgcHJvamVjdCB0aGF0IGNvdWxkIG1vdmUgZmFzdGVyLiAgKEZvciBpbnN0YW5jZSwgbGlieGNyeXB0OgoraHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCkKKworVGhpcyBwYXRjaCBkaXNhYmxlcyBidWlsZCBhbmQgaW5zdGFsbGF0aW9uIG9mIGxpYmNyeXB0IGJ5IGRlZmF1bHQuICBJdAorY2FuIGJlIHJlLWVuYWJsZWQgd2l0aCAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCB0byBjb25maWd1cmUuICBVbmxpa2UKK2xpYm5zbCwgd2UgZG8gKm5vdCogaW5zdGFsbCBhIHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnk7IHRoYXQncyBsZWZ0IHRvCit0aGUgcmVwbGFjZW1lbnQuICAoVW5saWtlIHRoZSBTdW5SUEMgc2l0dWF0aW9uLCBJIHRoaW5rIHdlIGNhbgorcHJvYmFibHkgZHJvcCB0aGlzIGNvZGUgYWx0b2dldGhlciBpbiBhIHJlbGVhc2Ugb3IgdHdvLikKKworVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIGNyeXB0IGFuZCBlbmNyeXB0IGFyZSByZW1vdmVkIGZyb20KK3VuaXN0ZC5oLCBhbmQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3Igc2V0a2V5IGlzIHJlbW92ZWQgZnJvbQorc3RkbGliLmg7IHRoZXkgZG8gKm5vdCogY29tZSBiYWNrIHdpdGggLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQuICBUaGlzCittZWFucyBnbGliYyBubyBsb25nZXIgcHJvdmlkZXMgdGhlIFBPU0lYIENSWVBUIG9wdGlvbiwgYW5kIHRoZSBtYWNybworX1hPUEVOX0NSWVBUIGlzIGFsc28gcmVtb3ZlZCBmcm9tIHVuaXN0ZC5oIHRvIGluZGljYXRlIHRoYXQuCisoX1NDX1hPUEVOX0NSWVBUIGlzIHN0aWxsIGRlZmluZWQsIGJ1dCBzeXNjb25mKF9TQ19YT1BFTl9DUllQVCkgd2lsbAorcmV0dXJuIC0xIGF0IHJ1bnRpbWUuKSAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVuY29uZGl0aW9uYWxseQorcmVtb3ZlZCBmcm9tIGNvbmZvcm0vZGF0YS97c3RkbGliLHVuaXN0ZH0uaC1kYXRhLgorCisJKiBwb3NpeC91bmlzdGQuaCAoX1hPUEVOX0NSWVBULCBjcnlwdCwgZW5jcnlwdCk6IERvbid0IGRlY2xhcmUuCisJKiBzdGRsaWIvc3RkbGliLmggKHNldGtleSk6IERvbid0IGRlY2xhcmUuCisKKwkqIGNvbmZpZ3VyZS5hYyAoLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQpOiBOZXcgY29uZmlndXJlIG9wdGlvbi4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZy5tYWtlLmluIChidWlsZC1vYnNvbGV0ZS1jcnlwdCk6IE5ldyBtYWtlZmlsZSB2YXJpYWJsZS4KKwkqIGNyeXB0L0Jhbm5lcjogRGVsZXRlIGZpbGUuCisJKiBjcnlwdC9NYWtlZmlsZTogRG9uJ3QgYnVpbGQgYW55dGhpbmcgdW5sZXNzCisJJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCisJKiBzeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGU6IE9ubHkgYWRkIHRoaW5ncworCXRvIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyB3aGVuICQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgorCSogc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZTogTGlrZXdpc2UuCisJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGU6IExpa2V3aXNlLgorCisJKiBjb25mb3JtL01ha2VmaWxlOiBPbmx5IGluY2x1ZGUgbGliY3J5cHQuYSBpbiBsaW5rbmFtZXNwYWNlIHRlc3RzCisJd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KKwkqIGNvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhIChzZXRrZXkpOiBEb24ndCBleHBlY3QuCisJKiBjb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YSAoY3J5cHQsIGVuY3J5cHQpOiBEb24ndCBleHBlY3QuCisJKiBlbGYvTWFrZWZpbGU6IE9ubHkgcGVyZm9ybSB2YXJpb3VzIHRlc3RzIG9mIGxpYmNyeXB0LnNvL2xpYmNyeXB0LmEKKwl3aGVuICQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgorCSogZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jOiBEb24ndCBpbmNsdWRlIGNyeXB0Lmggd2hlbiBVU0VfQ1JZUFQKKwlpcyBmYWxzZS4KKy0tLQorIE5FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKworIGNvbmZpZy5tYWtlLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrKysKKyBjb25mb3JtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKysrLS0tLQorIGNvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhICAgICAgICAgICAgICAgICAgICAgICB8ICAzIC0tLQorIGNvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhICAgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQorIGNyeXB0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCisgZWxmL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysrLS0tLQorIGVsZi90c3QtbGlua2FsbC1zdGF0aWMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCisgcG9zaXgvdW5pc3RkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgLS0tLS0tLS0tLS0tLS0tLQorIHN0ZGxpYi9zdGRsaWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQorIHN5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZSB8ICAyICsrCisgc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZSAgICAgICAgIHwgIDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgMiArKworIDE1IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlnLm1ha2UuaW4gYi9jb25maWcubWFrZS5pbgoraW5kZXggOWU1ZTI0YjJjNi4uOGZlNjEwZDA0ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZy5tYWtlLmluCisrKysgYi9jb25maWcubWFrZS5pbgorQEAgLTgyLDYgKzgyLDcgQEAgbWFjaC1pbnRlcmZhY2UtbGlzdCA9IEBtYWNoX2ludGVyZmFjZV9saXN0QAorIAorIGV4cGVyaW1lbnRhbC1tYWxsb2MgPSBAZXhwZXJpbWVudGFsX21hbGxvY0AKKyAKKytidWlsZC1vYnNvbGV0ZS1jcnlwdCA9IEBidWlsZF9vYnNvbGV0ZV9jcnlwdEAKKyBuc3MtY3J5cHQgPSBAbGliY19jdl9uc3NfY3J5cHRACisgc3RhdGljLW5zcy1jcnlwdCA9IEBsaWJjX2N2X3N0YXRpY19uc3NfY3J5cHRACisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA3YThiZDNmODE3Li40NmY2YmQ3Zjg2IDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC02NzIsNiArNjcyLDcgQEAgYmFzZV9tYWNoaW5lCisgaGF2ZV90dW5hYmxlcworIGJ1aWxkX3B0X2Nob3duCisgYnVpbGRfbnNjZAorK2J1aWxkX29ic29sZXRlX2NyeXB0CisgYnVpbGRfb2Jzb2xldGVfbnNsCisgbGlua19vYnNvbGV0ZV9ycGMKKyBsaWJjX2N2X3N0YXRpY19uc3NfY3J5cHQKK0BAIC03ODIsNiArNzgzLDcgQEAgZW5hYmxlX2V4cGVyaW1lbnRhbF9tYWxsb2MKKyBlbmFibGVfbnNzX2NyeXB0CisgZW5hYmxlX29ic29sZXRlX3JwYworIGVuYWJsZV9vYnNvbGV0ZV9uc2wKKytlbmFibGVfb2Jzb2xldGVfY3J5cHQKKyBlbmFibGVfc3lzdGVtdGFwCisgZW5hYmxlX2J1aWxkX25zY2QKKyBlbmFibGVfbnNjZAorQEAgLTE0NTMsNiArMTQ1NSw3IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay10aW1lIHVzYWdlCisgICAtLWVuYWJsZS1vYnNvbGV0ZS1uc2wgICBidWlsZCBhbmQgaW5zdGFsbCB0aGUgb2Jzb2xldGUgbGlibnNsIGxpYnJhcnkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgTlNTIG1vZHVsZXMKKysgIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0IGJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBvYnNvbGV0ZSBsaWJjcnlwdCBsaWJyYXJ5CisgICAtLWVuYWJsZS1zeXN0ZW10YXAgICAgICBlbmFibGUgc3lzdGVtdGFwIHN0YXRpYyBwcm9iZSBwb2ludHMgW2RlZmF1bHQ9bm9dCisgICAtLWRpc2FibGUtYnVpbGQtbnNjZCAgICBkaXNhYmxlIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBuc2NkIGRhZW1vbgorICAgLS1kaXNhYmxlLW5zY2QgICAgICAgICAgbGlicmFyeSBmdW5jdGlvbnMgd2lsbCBub3QgY29udGFjdCB0aGUgbnNjZCBkYWVtb24KK0BAIC0zNjMyLDYgKzM2MzUsMTYgQEAgaWYgdGVzdCAiJGJ1aWxkX29ic29sZXRlX25zbCIgPSB5ZXM7IHRoZW4KKyAKKyBmaQorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfb2Jzb2xldGVfY3J5cHQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfb2Jzb2xldGVfY3J5cHQ7IGJ1aWxkX29ic29sZXRlX2NyeXB0PSRlbmFibGV2YWwKKytlbHNlCisrICBidWlsZF9vYnNvbGV0ZV9jcnlwdD1ubworK2ZpCisrCisrCisrCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN5c3RlbXRhcCB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfc3lzdGVtdGFwK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX3N5c3RlbXRhcDsgc3lzdGVtdGFwPSRlbmFibGV2YWwKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNhMTI4MmE2YjMuLjAxNDIzNTM3NDAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM3OCw2ICszNzgsMTQgQEAgaWYgdGVzdCAiJGJ1aWxkX29ic29sZXRlX25zbCIgPSB5ZXM7IHRoZW4KKyAgIEFDX0RFRklORShMSU5LX09CU09MRVRFX05TTCkKKyBmaQorIAorK0FDX0FSR19FTkFCTEUoW29ic29sZXRlLWNyeXB0XSwKKysgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVpbGQgYW5kIGluc3RhbGwgdGhlIG9ic29sZXRlIGxpYmNyeXB0IGxpYnJhcnldKSwKKysgICAgICAgICAgICAgIFtidWlsZF9vYnNvbGV0ZV9jcnlwdD0kZW5hYmxldmFsXSwKKysgICAgICAgICAgICAgIFtidWlsZF9vYnNvbGV0ZV9jcnlwdD1ub10pCisrQUNfU1VCU1QoYnVpbGRfb2Jzb2xldGVfY3J5cHQpCisrCisrCisgQUNfQVJHX0VOQUJMRShbc3lzdGVtdGFwXSwKKyAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtc3lzdGVtdGFwXSwKKyAJICAgICAgIFtlbmFibGUgc3lzdGVtdGFwIHN0YXRpYyBwcm9iZSBwb2ludHMgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAorZGlmZiAtLWdpdCBhL2NvbmZvcm0vTWFrZWZpbGUgYi9jb25mb3JtL01ha2VmaWxlCitpbmRleCA4NjRmZGVjYTIxLi41ZWY0NzRmYjI0IDEwMDY0NAorLS0tIGEvY29uZm9ybS9NYWtlZmlsZQorKysrIGIvY29uZm9ybS9NYWtlZmlsZQorQEAgLTE5MywyMiArMTkzLDI4IEBAIGxpbmtuYW1lc3BhY2UtbGlicy10aHIgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKSBcCisgCQkJICQoY29tbW9uLW9ianBmeClydC9saWJydC5hICQoc3RhdGljLXRocmVhZC1saWJyYXJ5KQorIGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCA9ICQobGlua25hbWVzcGFjZS1saWJzLXRocikgXAorIAkJCSAgICQoY29tbW9uLW9ianBmeClkbGZjbi9saWJkbC5hCistbGlua25hbWVzcGFjZS1saWJzLXhzaSA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KSBcCistCQkJICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCisrbGlua25hbWVzcGFjZS1saWJzLXhzaSA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KQorIGxpbmtuYW1lc3BhY2UtbGlicy1JU08gPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQorIGxpbmtuYW1lc3BhY2UtbGlicy1JU085OSA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCisgbGlua25hbWVzcGFjZS1saWJzLUlTTzExID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKKy1saW5rbmFtZXNwYWNlLWxpYnMtWFBHNCA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpIFwKKy0JCQkgICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCisrbGlua25hbWVzcGFjZS1saWJzLVhQRzQgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQorIGxpbmtuYW1lc3BhY2UtbGlicy1YUEc0MiA9ICQobGlua25hbWVzcGFjZS1saWJzLVhQRzQpCisgbGlua25hbWVzcGFjZS1saWJzLVBPU0lYID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtdGhyKQorIGxpbmtuYW1lc3BhY2UtbGlicy1VTklYOTggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCisgbGlua25hbWVzcGFjZS1saWJzLVhPUEVOMksgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCisgbGlua25hbWVzcGFjZS1saWJzLVBPU0lYMjAwOCA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KQorIGxpbmtuYW1lc3BhY2UtbGlicy1YT1BFTjJLOCA9ICQobGlua25hbWVzcGFjZS1saWJzLXhzaSkKKysKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrbGlua25hbWVzcGFjZS1saWJzLXhzaSArPSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2xpbmtuYW1lc3BhY2UtbGlicy1YUEc0ICs9ICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCisrZW5kaWYKKysKKyBsaW5rbmFtZXNwYWNlLWxpYnMgPSAkKGZvcmVhY2ggc3RkLCQoY29uZm9ybXRlc3Qtc3RhbmRhcmRzKSxcCisgCQkJCSAgICQobGlua25hbWVzcGFjZS1saWJzLSQoc3RkKSkpCisgCisrCisrCisgJChsaW5rbmFtZXNwYWNlLXN5bWxpc3Qtc3RkbGlicy10ZXN0cyk6ICQob2JqcGZ4KXN5bWxpc3Qtc3RkbGlicy0lOiBcCisgCQkJCQkkKGxpbmtuYW1lc3BhY2UtbGlicykKKyAJTENfQUxMPUMgJChSRUFERUxGKSAtVyAtcyAkKGxpbmtuYW1lc3BhY2UtbGlicy0kKikgPiAkQDsgXAorZGlmZiAtLWdpdCBhL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhIGIvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKK2luZGV4IGQ4ZmNjY2MyZmIuLjY5MTM4MjgxOTYgMTAwNjQ0CistLS0gYS9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YQorKysrIGIvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKK0BAIC0xNDksOSArMTQ5LDYgQEAgZnVuY3Rpb24ge3Vuc2lnbmVkIHNob3J0IGludCp9IHNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50WzNdKQorICNpZiAhZGVmaW5lZCBJU08gJiYgIWRlZmluZWQgSVNPOTkgJiYgIWRlZmluZWQgSVNPMTEgJiYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgWFBHNCAmJiAhZGVmaW5lZCBYUEc0MiAmJiAhZGVmaW5lZCBVTklYOTgKKyBmdW5jdGlvbiBpbnQgc2V0ZW52IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGludCkKKyAjZW5kaWYKKy0jaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorLWZ1bmN0aW9uIHZvaWQgc2V0a2V5IChjb25zdCBjaGFyKikKKy0jZW5kaWYKKyAjaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFhQRzQgJiYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4CisgZnVuY3Rpb24ge2NoYXIqfSBzZXRzdGF0ZSAoY2hhciopCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEgYi9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQoraW5kZXggZGRmNGYyNTEzMi4uYWEwNzA1MjhlOCAxMDA2NDQKKy0tLSBhL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhCisrKysgYi9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQorQEAgLTQzNyw5ICs0MzcsNiBAQCBmdW5jdGlvbiBpbnQgY2hyb290IChjb25zdCBjaGFyKikKKyBmdW5jdGlvbiBpbnQgY2hvd24gKGNvbnN0IGNoYXIqLCB1aWRfdCwgZ2lkX3QpCisgZnVuY3Rpb24gaW50IGNsb3NlIChpbnQpCisgZnVuY3Rpb24gc2l6ZV90IGNvbmZzdHIgKGludCwgY2hhciosIHNpemVfdCkKKy0jaWYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4CistZnVuY3Rpb24ge2NoYXIqfSBjcnlwdCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQorLSNlbmRpZgorICNpZiBkZWZpbmVkIFhQRzQgfHwgZGVmaW5lZCBYUEc0MiB8fCBkZWZpbmVkIFVOSVg5OAorIGZ1bmN0aW9uIHtjaGFyKn0gY3Rlcm1pZCAoY2hhciopCisgZnVuY3Rpb24ge2NoYXIqfSBjdXNlcmlkIChjaGFyKikKK0BAIC00NDksOSArNDQ2LDYgQEAgYWxsb3cgY3VzZXJpZAorICNlbmRpZgorIGZ1bmN0aW9uIGludCBkdXAgKGludCkKKyBmdW5jdGlvbiBpbnQgZHVwMiAoaW50LCBpbnQpCistI2lmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorLWZ1bmN0aW9uIHZvaWQgZW5jcnlwdCAoY2hhcls2NF0sIGludCkKKy0jZW5kaWYKKyBmdW5jdGlvbiBpbnQgZXhlY2wgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQorIGZ1bmN0aW9uIGludCBleGVjbGUgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQorIGZ1bmN0aW9uIGludCBleGVjbHAgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQorZGlmZiAtLWdpdCBhL2NyeXB0L01ha2VmaWxlIGIvY3J5cHQvTWFrZWZpbGUKK2luZGV4IDMwMzgwMGRmNzMuLjAyNGVjMmM2YWIgMTAwNjQ0CistLS0gYS9jcnlwdC9NYWtlZmlsZQorKysrIGIvY3J5cHQvTWFrZWZpbGUKK0BAIC0yMiw2ICsyMiw4IEBAIHN1YmRpcgk6PSBjcnlwdAorIAorIGluY2x1ZGUgLi4vTWFrZWNvbmZpZworIAorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKysKKyBoZWFkZXJzIDo9IGNyeXB0LmgKKyAKKyBleHRyYS1saWJzIDo9IGxpYmNyeXB0CitAQCAtNTIsOSArNTQsMTEgQEAgdGVzdHMgKz0gbWQ1dGVzdCBzaGEyNTZ0ZXN0IHNoYTUxMnRlc3QKKyAjIG1hY2hpbmUgb3ZlciBhIG1pbnV0ZS4KKyB4dGVzdHMgPSBtZDV0ZXN0LWdpYW50CisgZW5kaWYKKytlbmRpZgorIAorIGluY2x1ZGUgLi4vUnVsZXMKKyAKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgaWZuZXEgKCQobnNzLWNyeXB0KSx5ZXMpCisgbWQ1LXJvdXRpbmVzIDo9IG1kNSAkKGZpbHRlciBtZDUlLCQobGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzKSkKKyBzaGEyNTYtcm91dGluZXMgOj0gc2hhMjU2ICQoZmlsdGVyIHNoYTI1NiUsJChsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMpKQorQEAgLTcxLDMgKzc1LDQgQEAgJChhZGRwcmVmaXggJChvYmpwZngpLCQodGVzdHMpKTogJChvYmpwZngpbGliY3J5cHQuc28KKyBlbHNlCisgJChhZGRwcmVmaXggJChvYmpwZngpLCQodGVzdHMpKTogJChvYmpwZngpbGliY3J5cHQuYQorIGVuZGlmCisrZW5kaWYKK2RpZmYgLS1naXQgYS9lbGYvTWFrZWZpbGUgYi9lbGYvTWFrZWZpbGUKK2luZGV4IDJhNDMyZDhiZWUuLjM2NmY3YjgwZWMgMTAwNjQ0CistLS0gYS9lbGYvTWFrZWZpbGUKKysrKyBiL2VsZi9NYWtlZmlsZQorQEAgLTM4NSwxNSArMzg1LDE5IEBAICQob2JqcGZ4KXRzdC1fZGxfYWRkcl9pbnNpZGVfb2JqZWN0OiAkKG9ianBmeClkbC1hZGRyLW9iai5vcworIENGTEFHUy10c3QtX2RsX2FkZHJfaW5zaWRlX29iamVjdC5jICs9ICQoUElFLWNjZmxhZykKKyBlbmRpZgorIAorLSMgQnkgZGVmYXVsdCB0c3QtbGlua2FsbC1zdGF0aWMgc2hvdWxkIHRyeSB0byB1c2UgY3J5cHQgcm91dGluZXMgdG8gdGVzdAorLSMgc3RhdGljIGxpYmNyeXB0IHVzZS4KKy1DRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgKz0gLURVU0VfQ1JZUFQ9MQorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKysjIElmIHRoZSBsaWJjcnlwdCBsaWJyYXJ5IGlzIGJlaW5nIGJ1aWx0LCB0c3QtbGlua2FsbC1zdGF0aWMgc2hvdWxkCisrIyB0cnkgdG8gdXNlIGNyeXB0IHJvdXRpbmVzIHRvIHRlc3Qgc3RhdGljIGxpYmNyeXB0IHVzZS4KKytDRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgPSAtRFVTRV9DUllQVD0xCisgIyBIb3dldmVyLCBpZiB3ZSBhcmUgdXNpbmcgTlNTIGNyeXB0byBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHN0YXRpYworICMgbGlicmFyeSwgdGhlbiB3ZSBleGNsdWRlIHRoZSB1c2Ugb2YgY3J5cHQgZnVuY3Rpb25zIGluIHRoZSB0ZXN0LgorICMgV2Ugc2ltaWxhcmx5IGV4Y2x1ZGUgbGliY3J5cHQuYSBmcm9tIHRoZSBzdGF0aWMgbGluayAoc2VlIGJlbG93KS4KKyBpZmVxICh5ZXNubywkKG5zcy1jcnlwdCkkKHN0YXRpYy1uc3MtY3J5cHQpKQorIENGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyArPSAtVVVTRV9DUllQVCAtRFVTRV9DUllQVD0wCisgZW5kaWYKKytlbHNlCisrQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jID0gLURVU0VfQ1JZUFQ9MAorK2VuZGlmCisgCisgaW5jbHVkZSAuLi9SdWxlcworIAorQEAgLTExMTMsOCArMTExNywxMCBAQCBsb2NhbHBsdC1idWlsdC1kc28gOj0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSxcCisgCQkJCSAgcnQvbGlicnQuc28gXAorIAkJCQkgIGRsZmNuL2xpYmRsLnNvIFwKKyAJCQkJICByZXNvbHYvbGlicmVzb2x2LnNvIFwKKy0JCQkJICBjcnlwdC9saWJjcnlwdC5zbyBcCisgCQkgICAgICAgKQorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKytsb2NhbHBsdC1idWlsdC1kc28gKz0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSwgY3J5cHQvbGliY3J5cHQuc28pCisrZW5kaWYKKyBpZmVxICgkKGJ1aWxkLW1hdGh2ZWMpLHllcykKKyBsb2NhbHBsdC1idWlsdC1kc28gKz0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSwgbWF0aHZlYy9saWJtdmVjLnNvKQorIGVuZGlmCitAQCAtMTM5NSw2ICsxNDAxLDcgQEAgJChvYmpwZngpdHN0LWxpbmthbGwtc3RhdGljOiBcCisgICAkKGNvbW1vbi1vYmpwZngpcmVzb2x2L2xpYmFubC5hIFwKKyAgICQoc3RhdGljLXRocmVhZC1saWJyYXJ5KQorIAorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKyAjIElmIHdlIGFyZSB1c2luZyBOU1MgY3J5cHRvIGFuZCB3ZSBoYXZlIHRoZSBhYmlsaXR5IHRvIGxpbmsgc3RhdGljYWxseQorICMgdGhlbiB3ZSBpbmNsdWRlIGxpYmNyeXB0LmEsIG90aGVyd2lzZSB3ZSBsZWF2ZSBvdXQgbGliY3J5cHQuYSBhbmQKKyAjIGxpbmsgYXMgbXVjaCBhcyB3ZSBjYW4gaW50byB0aGUgdHN0LWxpbmthbGwtc3RhdGljIHRlc3QuICBUaGlzIGFzc3VtZXMKK0BAIC0xNDEwLDYgKzE0MTcsNyBAQCBpZmVxIChubywkKG5zcy1jcnlwdCkpCisgJChvYmpwZngpdHN0LWxpbmthbGwtc3RhdGljOiBcCisgICAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorIGVuZGlmCisrZW5kaWYKKyAKKyAjIFRoZSBhcHBsaWNhdGlvbiBkZXBlbmRzIG9uIHRoZSBEU08sIGFuZCB0aGUgRFNPIGxvYWRzIHRoZSBwbHVnaW4uCisgIyBUaGUgcGx1Z2luIGFsc28gZGVwZW5kcyBvbiB0aGUgRFNPLiBUaGlzIGNyZWF0ZXMgdGhlIGNpcmN1bGFyCitkaWZmIC0tZ2l0IGEvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jIGIvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCitpbmRleCBlOGRmMzhmNzRlLi4wZmZhZTdjNzIzIDEwMDY0NAorLS0tIGEvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCisrKysgYi9lbGYvdHN0LWxpbmthbGwtc3RhdGljLmMKK0BAIC0xOCw3ICsxOCw5IEBACisgCisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNpZiBVU0VfQ1JZUFQKKyAjaW5jbHVkZSA8Y3J5cHQuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8cmVzb2x2Lmg+CisgI2luY2x1ZGUgPGRsZmNuLmg+CisgI2luY2x1ZGUgPHV0bXAuaD4KK2RpZmYgLS1naXQgYS9wb3NpeC91bmlzdGQuaCBiL3Bvc2l4L3VuaXN0ZC5oCitpbmRleCA0ZDE0OWY5OTQ1Li5lNzVjZTRkNGVjIDEwMDY0NAorLS0tIGEvcG9zaXgvdW5pc3RkLmgKKysrKyBiL3Bvc2l4L3VuaXN0ZC5oCitAQCAtMTA3LDkgKzEwNyw2IEBAIF9fQkVHSU5fREVDTFMKKyAvKiBUaGUgWC9PcGVuIFVuaXggZXh0ZW5zaW9ucyBhcmUgYXZhaWxhYmxlLiAgKi8KKyAjZGVmaW5lIF9YT1BFTl9VTklYCTEKKyAKKy0vKiBFbmNyeXB0aW9uIGlzIHByZXNlbnQuICAqLworLSNkZWZpbmUJX1hPUEVOX0NSWVBUCTEKKy0KKyAvKiBUaGUgZW5oYW5jZWQgaW50ZXJuYXRpb25hbGl6YXRpb24gY2FwYWJpbGl0aWVzIGFjY29yZGluZyB0byBYUEc0LjIKKyAgICBhcmUgcHJlc2VudC4gICovCisgI2RlZmluZQlfWE9QRU5fRU5IX0kxOE4JMQorQEAgLTExMTgsMjAgKzExMTUsNyBAQCBzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZSAoaW50IF9faW5mZCwgX19vZmY2NF90ICpfX3Bpbm9mZiwKKyBleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKTsKKyAjZW5kaWYgLyogVXNlIFBPU0lYMTk5MzA5ICovCisgCistCistLyogWFBHNC4yIHNwZWNpZmllcyB0aGF0IHByb3RvdHlwZXMgZm9yIHRoZSBlbmNyeXB0aW9uIGZ1bmN0aW9ucyBtdXN0CistICAgYmUgZGVmaW5lZCBoZXJlLiAgKi8KKyAjaWZkZWYJX19VU0VfWE9QRU4KKy0vKiBFbmNyeXB0IGF0IG1vc3QgOCBjaGFyYWN0ZXJzIGZyb20gS0VZIHVzaW5nIHNhbHQgdG8gcGVydHVyYiBERVMuICAqLworLWV4dGVybiBjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqX19rZXksIGNvbnN0IGNoYXIgKl9fc2FsdCkKKy0gICAgIF9fVEhST1cgX19ub25udWxsICgoMSwgMikpOworLQorLS8qIEVuY3J5cHQgZGF0YSBpbiBCTE9DSyBpbiBwbGFjZSBpZiBFREZMQUcgaXMgemVybzsgb3RoZXJ3aXNlIGRlY3J5cHQKKy0gICBibG9jayBpbiBwbGFjZS4gICovCistZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19nbGliY19ibG9jaywgaW50IF9fZWRmbGFnKQorLSAgICAgX19USFJPVyBfX25vbm51bGwgKCgxKSk7CistCistCisgLyogU3dhYiBwYWlycyBieXRlcyBpbiB0aGUgZmlyc3QgTiBieXRlcyBvZiB0aGUgYXJlYSBwb2ludGVkIHRvIGJ5CisgICAgRlJPTSBhbmQgY29weSB0aGUgcmVzdWx0IHRvIFRPLiAgVGhlIHZhbHVlIG9mIFRPIG11c3Qgbm90IGJlIGluIHRoZQorICAgIHJhbmdlIFtGUk9NIC0gTiArIDEsIEZST00gLSAxXS4gIElmIE4gaXMgb2RkIHRoZSBmaXJzdCBieXRlIGluIEZST00KK2RpZmYgLS1naXQgYS9zdGRsaWIvc3RkbGliLmggYi9zdGRsaWIvc3RkbGliLmgKK2luZGV4IDZiMWVhZDMxZTAuLjhlMjNlOTM1NTcgMTAwNjQ0CistLS0gYS9zdGRsaWIvc3RkbGliLmgKKysrKyBiL3N0ZGxpYi9zdGRsaWIuaAorQEAgLTk1OCwxMiArOTU4LDYgQEAgZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKKyAjZW5kaWYKKyAKKyAKKy0jaWZkZWYgX19VU0VfWE9QRU4KKy0vKiBTZXR1cCBERVMgdGFibGVzIGFjY29yZGluZyBLRVkuICAqLworLWV4dGVybiB2b2lkIHNldGtleSAoY29uc3QgY2hhciAqX19rZXkpIF9fVEhST1cgX19ub25udWxsICgoMSkpOworLSNlbmRpZgorLQorLQorIC8qIFgvT3BlbiBwc2V1ZG8gdGVybWluYWwgaGFuZGxpbmcuICAqLworIAorICNpZmRlZiBfX1VTRV9YT1BFTjJLWFNJCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCitpbmRleCBhNmQwOGYzYTAwLi5kOGI4Mjk3ZmIwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCisrKysgYi9zeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUKK0BAIC0xLDYgKzEsOCBAQAorIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IG1kNS1jcm9wIHNoYTI1Ni1jcm9wIHNoYTUxMi1jcm9wCisgZW5kaWYKKytlbmRpZgorIAorIGlmZXEgKCQoc3ViZGlyKSxsb2NhbGUpCisgbG9jYWxlZGVmLWF1eCArPSBtZDUtY3JvcAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUgYi9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlCitpbmRleCBlYWY3NThlN2FhLi4wMTk4Zjk4ODZmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQorQEAgLTEsNiArMSw4IEBACisgaWZlcSAoJChzdWJkaXIpLGNyeXB0KQorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKyBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgKz0gbWQ1LWNyb3Agc2hhMjU2LWNyb3Agc2hhNTEyLWNyb3AKKyBlbmRpZgorK2VuZGlmCisgCisgaWZlcSAoJChzdWJkaXIpLGxvY2FsZSkKKyBsb2NhbGVkZWYtYXV4ICs9IG1kNS1jcm9wCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCitpbmRleCA0YWRjMzVkZTA0Li42Y2FiNGYzYTMxIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUKK0BAIC0xOSw4ICsxOSwxMCBAQCBlbmRpZgorICMgQWRkIGEgc3lzY2FsbCBmdW5jdGlvbiB0byBlYWNoIGxpYnJhcnkgdGhhdCBuZWVkcyBvbmUuCisgCisgaWZlcSAoJChzdWJkaXIpLGNyeXB0KQorK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKKyBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgKz0gbGliYy1kby1zeXNjYWxsCisgZW5kaWYKKytlbmRpZgorIAorIGlmZXEgKCQoc3ViZGlyKSxydCkKKyBsaWJydC1zeXNkZXBfcm91dGluZXMgKz0gbGliYy1kby1zeXNjYWxsCistLSAKKzIuMTYuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMDUwYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSBhNzYzNzZkZjdjMDdlNTc3YTk1MTVjM2ZhYTVkYmQ1MGJkYTVkYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IEZyaSwgMjAgT2N0IDIwMTcgMTg6NDE6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTU2NzA6IGdsb2I6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdyBbQlogIzIyMzIwXQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjMzY5ZDY2ZTU0MjZhMzBlNDcyNWIxMDBkNWNkMjhlMzcyNzU0ZjkwKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE1NjcwCi1BZmZlY3RzOiBnbGliYyA8IDIuMjcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBDaGFuZ2VMb2cgICAgfCA2ICsrKysrKwotIE5FV1MgICAgICAgICB8IDUgKysrKysKLSBwb3NpeC9nbG9iLmMgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL05FV1MKLSsrKyBnaXQvTkVXUwotQEAgLTIwNiw2ICsyMDYsMTEgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgotICogQSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IGluIGNsbnR1ZHBfY2FsbCBpbiB0aGUgU3VuIFJQQyBzeXN0ZW0gaGFzIGJlZW4KLSAgIGZpeGVkIChDVkUtMjAxNy0xMjEzMykuCi0gCi0rICBDVkUtMjAxNy0xNTY3MDogVGhlIGdsb2IgZnVuY3Rpb24sIHdoZW4gaW52b2tlZCB3aXRoIEdMT0JfVElMREUsCi0rICBzdWZmZXJlZCBmcm9tIGEgb25lLWJ5dGUgb3ZlcmZsb3cgZHVyaW5nIH4gb3BlcmF0b3IgcHJvY2Vzc2luZyAoZWl0aGVyCi0rICBvbiB0aGUgc3RhY2sgb3IgdGhlIGhlYXAsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSB1c2VyIG5hbWUpLgotKyAgUmVwb3J0ZWQgYnkgVGltIFLDvGhzZW4uCi0rCi0gVGhlIGZvbGxvd2luZyBidWdzIGFyZSByZXNvbHZlZCB3aXRoIHRoaXMgcmVsZWFzZToKLSAKLSAgIFs5ODRdIG5ldHdvcms6IFJlc3BvbmQgdG8gY2hhbmdlZCByZXNvbHYuY29uZiBpbiBnZXRob3N0YnluYW1lCi1JbmRleDogZ2l0L3Bvc2l4L2dsb2IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Bvc2l4L2dsb2IuYwotKysrIGdpdC9wb3NpeC9nbG9iLmMKLUBAIC04NDMsNyArODQzLDcgQEAgZ2xvYiAoY29uc3QgY2hhciAqcGF0dGVybiwgaW50IGZsYWdzLCBpbgotIAkJICAqcCA9ICdcMCc7Ci0gCQl9Ci0gCSAgICAgIGVsc2UKLS0JCSooKGNoYXIgKikgbWVtcGNweSAobmV3cCwgZGlybmFtZSArIDEsIGVuZF9uYW1lIC0gZGlybmFtZSkpCi0rCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUgLSAxKSkKLSAJCSAgPSAnXDAnOwotIAkgICAgICB1c2VyX25hbWUgPSBuZXdwOwotIAkgICAgfQotSW5kZXg6IGdpdC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKLSsrKyBnaXQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTEwLTIwICBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotKwotKyAgICAgICBbQlogIzIyMzIwXQotKyAgICAgICBDVkUtMjAxNy0xNTY3MAotKyAgICAgICAqIHBvc2l4L2dsb2IuYyAoX19nbG9iKTogRml4IG9uZS1ieXRlIG92ZXJmbG93LgotKwotIDIwMTctMDgtMDIgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHNvdXJjZXdhcmUub3JnPgotIAotIAkqIHZlcnNpb24uaCAoUkVMRUFTRSk6IFNldCB0byAic3RhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxZTYzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNSRVYgPz0gImQzMDAwNDFjNTMzYTNkODM3YzlmMzdhMDk5YmNjOTU0NjY4NjBlOTgiCi0KLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCi0KLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGZpbGU6Ly9ldGMvbGQuc28uY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgXAotICAgICAgICAgICBcCi0gICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoIFwKLSIKLQotTkFUSVZFU0RLRklYRVMgPz0gIiIKLU5BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiIgotCi0jIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLUdMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKLSMKLSMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZ2xpYmMgd2hlbiB0YXJnZXQgc3lzdGVtIEMgbGlicmFyeSBzZWxlY3Rpb24gaXMgbm90IGdsaWJjCi0jIHRoaXMgaGVscHMgaW4gZWFzaW5nIG91dCBwYXJzaW5nIGZvciBub24tZ2xpYmMgc3lzdGVtIGxpYnJhcmllcwotIwotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIC0tZGlzYWJsZS1wcm9maWxlIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYWRkLW9ucz1saWJpZG4gXAotICAgICAgICAgICAgICAgIC0td2l0aC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtcnBjIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1uc2wgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXR1bmFibGVzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1iaW5kLW5vdyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2stcHJvdGVjdG9yPXN0cm9uZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2tndWFyZC1yYW5kb21pemF0aW9uIFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLWluZXQtYW5sJywgJy0tZW5hYmxlLW5zY2QnLCAnLS1kaXNhYmxlLW5zY2QnLCBkKX0iCi0KLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCi19Ci0KLWRvX2ZpeF9yZWFkbGliX2MgKCkgewotCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCi19Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0jIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgotIyBjYWxscyBmb3Igbm93Ci0jIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKLSMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCi0gICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCi0gICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCi0gICAgICAgICMgInBsdXJhbC5jIiBtYXkgb3IgbWF5IG5vdCBnZXQgcmVnZW5lcmF0ZWQgZnJvbSAicGx1cmFsLnkiIHNvIHdlCi0gICAgICAgICMgdG91Y2ggInBsdXJhbC55IiB0byBtYWtlIHN1cmUgaXQgZG9lcy4gKFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKLSAgICAgICAgIyBmb3IgZ2xpYmMgdmVyc2lvbiAyLjI2KykKLSAgICAgICAgZmluZCAke1N9L2ludGwgLW5hbWUgInBsdXJhbC55IiB8IHhhcmdzIHRvdWNoCi0gICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKLX0KLQotcnBjc3ZjID0gImJvb3RwYXJhbV9wcm90LnggbmxtX3Byb3QueCByc3RhdC54IFwKLQkgIHlwcGFzc3dkLngga2xtX3Byb3QueCByZXgueCBzbV9pbnRlci54IG1vdW50LnggXAotCSAgcnVzZXJzLnggc3ByYXkueCBuZnNfcHJvdC54IHJxdW90YS54IGtleV9wcm90LngiCi0KLWRvX2NvbXBpbGUgKCkgewotCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCi0JdW5zZXQgTERGTEFHUwotCWJhc2VfZG9fY29tcGlsZQotCSgKLQkJY2QgJHtTfS9zdW5ycGMvcnBjc3ZjCi0JCWZvciByIGluICR7cnBjc3ZjfTsgZG8KLQkJCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAotCQkJcm0gLWYgJGgKLQkJCSR7Qn0vc3VucnBjL2Nyb3NzLXJwY2dlbiAtaCAkciAtbyAkaCB8fCBiYndhcm4gIiR7UE59OiB1bmFibGUgdG8gZ2VuZXJhdGUgaGVhZGVyIGZvciAkciIKLQkJZG9uZQotCSkKLQllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKLQlpZiBbIC1uICIke1JUTERMSVNUfSIgXQotCXRoZW4KLQkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAotCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCi0JCXRoZW4KLQkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKLQkJZmkKLQlmaQotCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MTQ3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYgpAQCAtMCwwICsxLDE0NiBAQAorcmVxdWlyZSBnbGliYy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDUkVWID89ICJkZjNmZjRlNDlkNGVlM2NiYmRhZWIwYjFjYjVkYzIzNDRjMDhiZTk4IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC4oPyE5MClcZCspKikiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2ggXAorIgorCitOQVRJVkVTREtGSVhFUyA/PSAiIgorTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUtbG9jYWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiIgorCisjIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK0dMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKKyMKKyMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZ2xpYmMgd2hlbiB0YXJnZXQgc3lzdGVtIEMgbGlicmFyeSBzZWxlY3Rpb24gaXMgbm90IGdsaWJjCisjIHRoaXMgaGVscHMgaW4gZWFzaW5nIG91dCBwYXJzaW5nIGZvciBub24tZ2xpYmMgc3lzdGVtIGxpYnJhcmllcworIworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKKworR0xJQkNQSUUgPz89ICIiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCisgICAgICAgICAgICAgICAgJHtHTElCQ1BJRX0gXAorICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKKworCitkb19wYXRjaF9hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKK30KKworZG9fZml4X3JlYWRsaWJfYyAoKSB7CisJc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKK30KKworZG9fY29uZmlndXJlICgpIHsKKyMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCisjIGNhbGxzIGZvciBub3cKKyMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycworIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKKyAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKKyAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgorfQorCitycGNzdmMgPSAiYm9vdHBhcmFtX3Byb3QueCBubG1fcHJvdC54IHJzdGF0LnggXAorCSAgeXBwYXNzd2QueCBrbG1fcHJvdC54IHJleC54IHNtX2ludGVyLnggbW91bnQueCBcCisJICBydXNlcnMueCBzcHJheS54IG5mc19wcm90LnggcnF1b3RhLngga2V5X3Byb3QueCIKKworZG9fY29tcGlsZSAoKSB7CisJIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKKwl1bnNldCBMREZMQUdTCisJYmFzZV9kb19jb21waWxlCisJKAorCQljZCAke1N9L3N1bnJwYy9ycGNzdmMKKwkJZm9yIHIgaW4gJHtycGNzdmN9OyBkbworCQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCisJCQlybSAtZiAkaAorCQkJJHtCfS9zdW5ycGMvY3Jvc3MtcnBjZ2VuIC1oICRyIC1vICRoIHx8IGJid2FybiAiJHtQTn06IHVuYWJsZSB0byBnZW5lcmF0ZSBoZWFkZXIgZm9yICRyIgorCQlkb25lCisJKQorCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgorCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCisJdGhlbgorCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCisJCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KKwkJdGhlbgorCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgorCQlmaQorCWZpCisKK30KKworcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL3NpdGVfY29uZmlnL2hlYWRlcnMKaW5kZXggNjA5YWI1My4uNjlmZWRlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL3NpdGVfY29uZmlnL2hlYWRlcnMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL3NpdGVfY29uZmlnL2hlYWRlcnMKQEAgLTksNyArOSw2IEBACiBhc20vdHlwZXMuaAogYXNzZXJ0LmgKIGJ5dGVzd2FwLmgKLWNyeXB0LmgKIGN0eXBlLmgKIGRpcmVudC5oCiBkbGZjbi5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4xNi5iYgppbmRleCA1NjU0NTI4Li5lOWYzYTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjE2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMTYuYmIKQEAgLTYsNyArNiw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2dpdC9jb2xsYWItbWFpbnQvaWZ1cGRvd24uZ2l0IFwKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vaWZ1cGRvd24uZ2l0O3Byb3RvY29sPWh0dHBzIFwKIAkgICBmaWxlOi8vZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaCBcCiAJICAgZmlsZTovL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaCBcCiAJICAgZmlsZTovLzk5X25ldHdvcmsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IGJkNDQxYWUuLmRiMmY1OGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKQEAgLTIyLDggKzIyLDggQEAKIAogaW5oZXJpdCBjb3JlLWltYWdlIG1vZHVsZS1iYXNlIHNldHVwdG9vbHMzCiAKLVNSQ1JFViA/PSAiYTk1ODg2NDZmY2VjMTdlNTMxOTllMWVhN2U3YjhkY2NmMTQwODE3ZSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9cm9ja28gXAorU1JDUkVWID89ICIxNGQ2MmQ1YzE0ZTM1NTJmMmFlYWJkYmQ4MGQxNTA0YmIyYzZlZDY0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1zdW1vIFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXggXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteGYgXAogICAgICAgICAgICBmaWxlOi8vUkVBRE1FX1ZpcnR1YWxCb3hfR3Vlc3RfQWRkaXRpb25zLnR4dCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKaW5kZXggYzQ0NmU4Ny4uNmRlODYwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgpAQCAtMyw3ICszLDE1IEBACiB0aGUgTWluaW1hbCBSQU0tYmFzZWQgSW5pdGlhbCBSb290IEZpbGVzeXN0ZW0gKGluaXRyYW1mcyksIHdoaWNoIGZpbmRzIHRoZSBcCiBmaXJzdCAnaW5pdCcgcHJvZ3JhbSBtb3JlIGVmZmljaWVudGx5LiIKIAotUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1saXZlLWJvb3QgaW5pdHJhbWZzLWxpdmUtaW5zdGFsbCBpbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSB1ZGV2IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKK0lOSVRSQU1GU19TQ1JJUFRTID89ICJcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIFwKKyAgICAgICAgICAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXNldHVwLWxpdmUgXAorICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtdWRldiBcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpIFwKKyAgICAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRV9JTlNUQUxMID0gIiR7SU5JVFJBTUZTX1NDUklQVFN9ICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IHVkZXYgYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgogCiAjIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKIElNQUdFX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgppbmRleCAxNjk5NWU2Li41MWQwOGEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCkBAIC01LDcgKzUsNyBAQAogYWN0dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UgYnV0IHJhdGhlciBnZW5lcmF0ZXMgYm9vdCBhbmQgcm9vdGZzIGFydGlmYWN0cyBcCiB0aGF0IGNhbiBzdWJzZXF1ZW50bHkgYmUgcGlja2VkIHVwIGJ5IGV4dGVybmFsIGltYWdlIGdlbmVyYXRpb24gdG9vbHMgc3VjaCBhcyB3aWMuIgogCi1QQUNLQUdFX0lOU1RBTEwgPSAiaW5pdHJhbWZzLWxpdmUtYm9vdCBwYWNrYWdlZ3JvdXAtY29yZS1ib290IGRyb3BiZWFyICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IHVkZXYgYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgorUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1saXZlLWJvb3QtdGlueSBwYWNrYWdlZ3JvdXAtY29yZS1ib290IGRyb3BiZWFyICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9ICR7VklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyfSBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCiAKICMgRG8gbm90IHBvbGx1dGUgdGhlIGluaXRyZCBpbWFnZSB3aXRoIHJvb3RmcyBmZWF0dXJlcwogSU1BR0VfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKaW5kZXggNzA2NDE4Zi4uODJiMGFhOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCkBAIC04LDggKzgsMTkgQEAKIAogUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgogCi0jIFdlIG5lZWQgMjAgTWIgZm9yIHRoZSBib290IHBhcnRpdGlvbgotYm9vdF9zaXplPTIwCisjIGZpZ3VyZSBvdXQgaG93IGJpZyBvZiBhIGJvb3QgcGFydGl0aW9uIHdlIG5lZWQKK2Jvb3Rfc2l6ZT0kKGR1IC1tcyAvcnVuL21lZGlhLyQxLyB8IGF3ayAne3ByaW50ICQxfScpCisjIHJlbW92ZSByb290ZnMuaW1nICgkMikgZnJvbSB0aGUgc2l6ZSBpZiBpdCBleGlzdHMsIGFzIGl0cyBub3QgaW5zdGFsbGVkIHRvIC9ib290CitpZiBbIC1lIC9ydW4vbWVkaWEvJDEvJDIgXTsgdGhlbgorICAgIGJvb3Rfc2l6ZT0kKCggYm9vdF9zaXplIC0gJCggZHUgLW1zIC9ydW4vbWVkaWEvJDEvJDIgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgcmVtb3ZlIGluaXRyZCBmcm9tIHNpemUgc2luY2UgaXRzIG5vdCBjdXJyZW50bHkgaW5zdGFsbGVkCitpZiBbIC1lIC9ydW4vbWVkaWEvJDEvaW5pdHJkIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxL2luaXRyZCB8IGF3ayAne3ByaW50ICQxfScpICkpCitmaQorIyBhZGQgMTBNIHRvIHByb3ZpZGUgc29tZSBleHRyYSBzcGFjZSBmb3IgdXNlcnMgYW5kIGFjY291bnQKKyMgZm9yIHJvdW5kaW5nIGluIHRoZSBhYm92ZSBzdWJ0cmFjdGlvbnMKK2Jvb3Rfc2l6ZT0kKCggYm9vdF9zaXplICsgMTAgKSkKIAogIyA1JSBmb3Igc3dhcAogc3dhcF9yYXRpbz01CkBAIC0xNzksNyArMTkwLDcgQEAKIHBhcnRlZCAke2RldmljZX0gc2V0IDEgYm9vdCBvbgogCiBlY2hvICJDcmVhdGluZyByb290ZnMgcGFydGl0aW9uIG9uICRyb290ZnMiCi1wYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCByb290IGV4dDMgJHJvb3Rmc19zdGFydCAkcm9vdGZzX2VuZAorcGFydGVkICR7ZGV2aWNlfSBta3BhcnQgcm9vdCBleHQ0ICRyb290ZnNfc3RhcnQgJHJvb3Rmc19lbmQKIAogZWNobyAiQ3JlYXRpbmcgc3dhcCBwYXJ0aXRpb24gb24gJHN3YXAiCiBwYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCBzd2FwIGxpbnV4LXN3YXAgJHN3YXBfc3RhcnQgMTAwJQpAQCAtMTk2LDggKzIwNyw4IEBACiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gdmZhdC4uLiIKIG1rZnMudmZhdCAkYm9vdGZzCiAKLWVjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQzLi4uIgotbWtmcy5leHQzICRyb290ZnMKK2VjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQ0Li4uIgorbWtmcy5leHQ0ICRyb290ZnMKIAogZWNobyAiRm9ybWF0dGluZyBzd2FwIHBhcnRpdGlvbi4uLigkc3dhcCkiCiBta3N3YXAgJHN3YXAKQEAgLTI0NCwxMCArMjU1LDkgQEAKICAgICBzZWQgLWkgIi9pbml0cmQgL2QiICRHUlVCQ0ZHCiAgICAgIyBEZWxldGUgYW55IExBQkVMPSBzdHJpbmdzCiAgICAgc2VkIC1pICJzLyBMQUJFTD1bXiBdKi8gLyIgJEdSVUJDRkcKLSAgICAjIERlbGV0ZSBhbnkgcm9vdD0gc3RyaW5ncwotICAgIHNlZCAtaSAicy8gcm9vdD1bXiBdKi8gL2ciICRHUlVCQ0ZHCi0gICAgIyBBZGQgdGhlIHJvb3Q9IGFuZCBvdGhlciBzdGFuZGFyZCBib290IG9wdGlvbnMKLSAgICBzZWQgLWkgInNAbGludXggL3ZtbGludXogKkBsaW51eCAvdm1saW51eiByb290PVBBUlRVVUlEPSRyb290X3BhcnRfdXVpZCBydyAkcm9vdHdhaXQgcXVpZXQgQCIgJEdSVUJDRkcKKyAgICAjIFJlcGxhY2Ugcm9vdD0gYW5kIGFkZCBhZGRpdGlvbmFsIHN0YW5kYXJkIGJvb3Qgb3B0aW9ucworICAgICMgV2UgdXNlIHJvb3QgYXMgYSBzZW50aW5lbCB2YWx1ZSwgYXMgdm1saW51eiBpcyBubyBsb25nZXIgZ3VhcmFudGVlZAorICAgIHNlZCAtaSAicy8gcm9vdD1bXiBdKi8gcm9vdD1QQVJUVVVJRD0kcm9vdF9wYXJ0X3V1aWQgcncgJHJvb3R3YWl0IHF1aWV0IC9nIiAkR1JVQkNGRwogZmkKIAogaWYgWyAtZCAvcnVuL21lZGlhLyQxL2xvYWRlciBdOyB0aGVuCkBAIC0yNjksNyArMjc5LDEzIEBACiAKIHVtb3VudCAvdGd0X3Jvb3QKIAotY3AgL3J1bi9tZWRpYS8kMS92bWxpbnV6IC9ib290CisjIENvcHkga2VybmVsIGFydGlmYWN0cy4gVG8gYWRkIG1vcmUgYXJ0aWZhY3RzIGp1c3QgYWRkIHRvIHR5cGVzCisjIEZvciBub3cganVzdCBzdXBwb3J0IGtlcm5lbCB0eXBlcyBhbHJlYWR5IGJlaW5nIHVzZWQgYnkgc29tZXRoaW5nIGluIE9FLWNvcmUKK2ZvciB0eXBlcyBpbiBiekltYWdlIHpJbWFnZSB2bWxpbnV4IHZtbGludXogZml0SW1hZ2U7IGRvCisgICAgZm9yIGtlcm5lbCBpbiBgZmluZCAvcnVuL21lZGlhLyQxLyAtbmFtZSAkdHlwZXMqYDsgZG8KKyAgICAgICAgY3AgJGtlcm5lbCAvYm9vdAorICAgIGRvbmUKK2RvbmUKIAogdW1vdW50IC9ib290CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaAppbmRleCBkYWRlMDU5Li4yOGU4ZjA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCkBAIC03LDggKzcsMTkgQEAKIAogUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgogCi0jIFdlIG5lZWQgMjAgTWIgZm9yIHRoZSBib290IHBhcnRpdGlvbgotYm9vdF9zaXplPTIwCisjIGZpZ3VyZSBvdXQgaG93IGJpZyBvZiBhIGJvb3QgcGFydGl0aW9uIHdlIG5lZWQKK2Jvb3Rfc2l6ZT0kKGR1IC1tcyAvcnVuL21lZGlhLyQxLyB8IGF3ayAne3ByaW50ICQxfScpCisjIHJlbW92ZSByb290ZnMuaW1nICgkMikgZnJvbSB0aGUgc2l6ZSBpZiBpdCBleGlzdHMsIGFzIGl0cyBub3QgaW5zdGFsbGVkIHRvIC9ib290CitpZiBbIC1lIC9ydW4vbWVkaWEvJDEvJDIgXTsgdGhlbgorICAgIGJvb3Rfc2l6ZT0kKCggYm9vdF9zaXplIC0gJCggZHUgLW1zIC9ydW4vbWVkaWEvJDEvJDIgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgcmVtb3ZlIGluaXRyZCBmcm9tIHNpemUgc2luY2UgaXRzIG5vdCBjdXJyZW50bHkgaW5zdGFsbGVkCitpZiBbIC1lIC9ydW4vbWVkaWEvJDEvaW5pdHJkIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxL2luaXRyZCB8IGF3ayAne3ByaW50ICQxfScpICkpCitmaQorIyBhZGQgMTBNIHRvIHByb3ZpZGUgc29tZSBleHRyYSBzcGFjZSBmb3IgdXNlcnMgYW5kIGFjY291bnQKKyMgZm9yIHJvdW5kaW5nIGluIHRoZSBhYm92ZSBzdWJ0cmFjdGlvbnMKK2Jvb3Rfc2l6ZT0kKCggYm9vdF9zaXplICsgMTAgKSkKIAogIyA1JSBmb3IgdGhlIHN3YXAKIHN3YXBfcmF0aW89NQpAQCAtMjAzLDcgKzIxNCw3IEBACiAKIGVjaG8gIkNyZWF0aW5nIHJvb3RmcyBwYXJ0aXRpb24gb24gJHJvb3RmcyIKIFsgJGdydWJfdmVyc2lvbiAtZXEgMCBdICYmIHBuYW1lPSdwcmltYXJ5JyB8fCBwbmFtZT0ncm9vdCcKLXBhcnRlZCAke2RldmljZX0gbWtwYXJ0ICRwbmFtZSBleHQzICRyb290ZnNfc3RhcnQgJHJvb3Rmc19lbmQKK3BhcnRlZCAke2RldmljZX0gbWtwYXJ0ICRwbmFtZSBleHQ0ICRyb290ZnNfc3RhcnQgJHJvb3Rmc19lbmQKIAogZWNobyAiQ3JlYXRpbmcgc3dhcCBwYXJ0aXRpb24gb24gJHN3YXAiCiBbICRncnViX3ZlcnNpb24gLWVxIDAgXSAmJiBwbmFtZT0ncHJpbWFyeScgfHwgcG5hbWU9J3N3YXAnCkBAIC0yMjEsOCArMjMyLDggQEAKIGVjaG8gIkZvcm1hdHRpbmcgJGJvb3RmcyB0byBleHQzLi4uIgogbWtmcy5leHQzICRib290ZnMKIAotZWNobyAiRm9ybWF0dGluZyAkcm9vdGZzIHRvIGV4dDMuLi4iCi1ta2ZzLmV4dDMgJHJvb3RmcworZWNobyAiRm9ybWF0dGluZyAkcm9vdGZzIHRvIGV4dDQuLi4iCitta2ZzLmV4dDQgJHJvb3RmcwogCiBlY2hvICJGb3JtYXR0aW5nIHN3YXAgcGFydGl0aW9uLi4uKCRzd2FwKSIKIG1rc3dhcCAkc3dhcApAQCAtMjU2LDkgKzI2NywzNCBAQAogdW1vdW50IC90Z3Rfcm9vdAogdW1vdW50IC9zcmNfcm9vdAogCitlY2hvICJMb29raW5nIGZvciBrZXJuZWxzIHRvIHVzZSBhcyBib290IHRhcmdldC4uIgorIyBGaW5kIGtlcm5lbCB0byBib290IHRvCisjIEdpdmUgdXNlciBvcHRpb25zIGlmIG11bHRpcGxlIGFyZSBmb3VuZAora2VybmVscz0iJChmaW5kIC9ydW4vbWVkaWEvJDEvIC10eXBlIGYgIFwKKyAgICAgICAgICAgLW5hbWUgYnpJbWFnZSogLW8gLW5hbWUgekltYWdlKiBcCisgICAgICAgICAgIC1vIC1uYW1lIHZtbGludXgqIC1vIC1uYW1lIHZtbGludXoqIFwKKyAgICAgICAgICAgLW8gLW5hbWUgZml0SW1hZ2UqIFwKKyAgICAgICAgICAgfCBzZWQgczouKi86OikiCitpZiBbIC1uICIkKGVjaG8gJGtlcm5lbHMpIiBdOyB0aGVuCisgICAgIyBvbmx5IG9uZSBrZXJuZWwgZW50cnkgaWYgbm8gc3BhY2UKKyAgICBpZiBbIC16ICIkKGVjaG8gJGtlcm5lbHMgfCBncmVwICIgIikiIF07IHRoZW4KKyAgICAgICAga2VybmVsPSRrZXJuZWxzCisgICAgICAgIGVjaG8gIiRrZXJuZWwgd2lsbCBiZSB1c2VkIGFzIHRoZSBib290IHRhcmdldCIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIldoaWNoIGtlcm5lbCBkbyB3ZSB3YW50IHRvIGJvb3QgYnkgZGVmYXVsdD8gVGhlIGZvbGxvd2luZyBrZXJuZWxzIHdlcmUgZm91bmQ6IgorICAgICAgICBlY2hvICRrZXJuZWxzCisgICAgICAgIHJlYWQgYW5zd2VyCisgICAgICAgIGtlcm5lbD0kYW5zd2VyCisgICAgZmkKK2Vsc2UKKyAgICBlY2hvICJObyBrZXJuZWxzIGZvdW5kLCBleGl0aW5nLi4uIgorICAgIGV4aXQgMQorZmkKKwogIyBIYW5kbGluZyBvZiB0aGUgdGFyZ2V0IGJvb3QgcGFydGl0aW9uCiBtb3VudCAkYm9vdGZzIC9ib290CiBlY2hvICJQcmVwYXJpbmcgYm9vdCBwYXJ0aXRpb24uLi4iCisKIGlmIFsgLWYgL2V0Yy9ncnViLmQvMDBfaGVhZGVyIC1hICRncnViX3ZlcnNpb24gLW5lIDAgXSA7IHRoZW4KICAgICBlY2hvICJQcmVwYXJpbmcgY3VzdG9tIGdydWIyIG1lbnUuLi4iCiAgICAgcm9vdF9wYXJ0X3V1aWQ9JChibGtpZCAtbyB2YWx1ZSAtcyBQQVJUVVVJRCAke3Jvb3Rmc30pCkBAIC0yNjgsNyArMzA0LDcgQEAKICAgICBjYXQgPiRHUlVCQ0ZHIDw8X0VPRgogbWVudWVudHJ5ICJMaW51eCIgewogICAgIHNlYXJjaCAtLW5vLWZsb3BweSAtLWZzLXV1aWQgJGJvb3RfdXVpZCAtLXNldCByb290Ci0gICAgbGludXggL3ZtbGludXogcm9vdD1QQVJUVVVJRD0kcm9vdF9wYXJ0X3V1aWQgJHJvb3R3YWl0IHJ3ICQ1ICQzICQ0IHF1aWV0CisgICAgbGludXggLyRrZXJuZWwgcm9vdD1QQVJUVVVJRD0kcm9vdF9wYXJ0X3V1aWQgJHJvb3R3YWl0IHJ3ICQ1ICQzICQ0IHF1aWV0CiB9CiBfRU9GCiAgICAgY2htb2QgMDQ0NCAkR1JVQkNGRwpAQCAtMjgyLDEwICszMTgsMTYgQEAKICAgICBlY2hvICJ0aW1lb3V0IDMwIiA+PiAvYm9vdC9ncnViL21lbnUubHN0CiAgICAgZWNobyAidGl0bGUgTGl2ZSBCb290L0luc3RhbGwtSW1hZ2UiID4+IC9ib290L2dydWIvbWVudS5sc3QKICAgICBlY2hvICJyb290ICAoaGQwLDApIiA+PiAvYm9vdC9ncnViL21lbnUubHN0Ci0gICAgZWNobyAia2VybmVsIC92bWxpbnV6IHJvb3Q9JHJvb3RmcyBydyAkMyAkNCBxdWlldCIgPj4gL2Jvb3QvZ3J1Yi9tZW51LmxzdAorICAgIGVjaG8gImtlcm5lbCAvJGtlcm5lbCByb290PSRyb290ZnMgcncgJDMgJDQgcXVpZXQiID4+IC9ib290L2dydWIvbWVudS5sc3QKIGZpCiAKLWNwIC9ydW4vbWVkaWEvJDEvdm1saW51eiAvYm9vdC8KKyMgQ29weSBrZXJuZWwgYXJ0aWZhY3RzLiBUbyBhZGQgbW9yZSBhcnRpZmFjdHMganVzdCBhZGQgdG8gdHlwZXMKKyMgRm9yIG5vdyBqdXN0IHN1cHBvcnQga2VybmVsIHR5cGVzIGFscmVhZHkgYmVpbmcgdXNlZCBieSBzb21ldGhpbmcgaW4gT0UtY29yZQorZm9yIHR5cGVzIGluIGJ6SW1hZ2UgekltYWdlIHZtbGludXggdm1saW51eiBmaXRJbWFnZTsgZG8KKyAgICBmb3Iga2VybmVsIGluIGBmaW5kIC9ydW4vbWVkaWEvJDEvIC1uYW1lICR0eXBlcypgOyBkbworICAgICAgICBjcCAka2VybmVsIC9ib290CisgICAgZG9uZQorZG9uZQogCiB1bW91bnQgL2Jvb3QKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9leGVjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9leGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTI0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL2V4ZWMKQEAgLTAsMCArMSwyOSBAQAorIyEvYmluL3NoCisjIENvcHlyaWdodCAoQykgMjAxNyBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKyMgTGljZW5zZWQgb24gTUlUCisKK0VYRUNfRElSPS9leGVjLmQgICMgcGxhY2UgdG8gbG9vayBmb3IgbW9kdWxlcworCitleGVjX2VuYWJsZWQoKSB7CisJcmV0dXJuIDAKK30KKworZXhlY19ydW4oKSB7CisJaWYgWyAhIC1kICRFWEVDX0RJUiBdOyB0aGVuCisJCW1zZyAiTm8gY29udGVudHMgdG8gZXhlYyBpbiAkRVhFQ19ESVIuIFN0YXJ0aW5nIHNoZWxsIC4uLiIKKwkJc2gKKwlmaQorCisJIyBMb2FkIGFuZCBydW4gbW9kdWxlcworCWZvciBtIGluICRFWEVDX0RJUi8qOyBkbworCQkjIFNraXAgYmFja3VwIGZpbGVzCisJCWlmIFsgImBlY2hvICRtIHwgc2VkIC1lICdzL1x+JC8vJ2AiICE9ICIkbSIgXTsgdGhlbgorCQkJY29udGludWUKKwkJZmkKKworCQlkZWJ1ZyAiU3RhcnRpbmcgJG0iCisKKwkJIyBwcm9jZXNzIG1vZHVsZQorCQkuLyRtCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3Jvb3RmcwppbmRleCAxNDc2OGYxLi43NmZhODRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3Jvb3RmcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3Jvb3RmcwpAQCAtMzEsNiArMzEsMTEgQEAKIAkJCQlib290cGFyYW1fcm9vdD0iL2Rldi9kaXNrL2J5LXBhcnR1dWlkLyRyb290X3V1aWQiCiAJCQlmaQogCisJCQlpZiBbICJgZWNobyAke2Jvb3RwYXJhbV9yb290fSB8IGN1dCAtYzEtNmAiID0gIkxBQkVMPSIgXTsgdGhlbgorCQkJCXJvb3RfbGFiZWw9YGVjaG8gJGJvb3RwYXJhbV9yb290IHwgY3V0IC1jNy1gCisJCQkJYm9vdHBhcmFtX3Jvb3Q9Ii9kZXYvZGlzay9ieS1sYWJlbC8kcm9vdF9sYWJlbCIKKwkJCWZpCisKIAkJCWlmIFsgLWUgIiRib290cGFyYW1fcm9vdCIgXTsgdGhlbgogCQkJCWZsYWdzPSIiCiAJCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9ybyIgXSAmJiAhIGVjaG8gIiRib290cGFyYW1fcm9vdGZsYWdzIiB8IGdyZXAgLXcgLXEgInJvIjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgppbmRleCAyYWZjMzdlLi43NWQ5NjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgpAQCAtOCw2ICs4LDcgQEAKIGluaGVyaXQgYWxsYXJjaAogCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2V4ZWMgXAogICAgICAgICAgICBmaWxlOi8vcm9vdGZzIFwKICAgICAgICAgICAgZmlsZTovL2ZpbmlzaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKQEAgLTI2LDYgKzI3LDkgQEAKICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9yb290ZnMgJHtEfS9pbml0LmQvOTAtcm9vdGZzCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZmluaXNoICR7RH0vaW5pdC5kLzk5LWZpbmlzaAogCisJIyBleGVjCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZXhlYyAke0R9L2luaXQuZC84OS1leGVjCisKICAgICAjIG1kZXYKICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tZGV2ICR7RH0vaW5pdC5kLzAxLW1kZXYKIApAQCAtNDUsNiArNDksNyBAQAogfQogCiBQQUNLQUdFUyA9ICIke1BOfS1iYXNlIFwKKyAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZXhlYyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLW1kZXYgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS11ZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZTJmcyBcCkBAIC02Miw2ICs2NywxMCBAQAogIyBhbmQgbW91bnRzIHRoZSByb290ZnMuIFRoZW4gOTAtcm9vdGZzIHdpbGwgcHJvY2VlZCBpbW1lZGlhdGVseS4KIFJSRUNPTU1FTkRTXyR7UE59LWJhc2UgKz0gImluaXRyYW1mcy1tb2R1bGUtcm9vdGZzIgogCitTVU1NQVJZX2luaXRyYW1mcy1tb2R1bGUtZXhlYyA9ICJpbml0cmFtZnMgc3VwcG9ydCBmb3IgZWFzeSBleGVjdXRpb24gb2YgYXBwbGljYXRpb25zIgorUkRFUEVORFNfaW5pdHJhbWZzLW1vZHVsZS1leGVjID0gIiR7UE59LWJhc2UiCitGSUxFU19pbml0cmFtZnMtbW9kdWxlLWV4ZWMgPSAiL2luaXQuZC84OS1leGVjIgorCiBTVU1NQVJZX2luaXRyYW1mcy1tb2R1bGUtbWRldiA9ICJpbml0cmFtZnMgc3VwcG9ydCBmb3IgbWRldiIKIFJERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtbWRldiA9ICIke1BOfS1iYXNlIGJ1c3lib3gtbWRldiIKIEZJTEVTX2luaXRyYW1mcy1tb2R1bGUtbWRldiA9ICIvaW5pdC5kLzAxLW1kZXYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1ib290LXRpbnlfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtYm9vdC10aW55XzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTlhOGVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtYm9vdC10aW55XzEuMC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkxpdmUgaW1hZ2UgaW5pdCBzY3JpcHQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKK1JERVBFTkRTXyR7UE59ID0gImJ1c3lib3gtbWRldiIKK1NSQ19VUkkgPSAiZmlsZTovL2luaXQtbGl2ZS5zaCIKKworUFIgPSAicjEyIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtbGl2ZS5zaCAke0R9L2luaXQKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L2RldgorICAgICAgICBta25vZCAtbSA2MjIgJHtEfS9kZXYvY29uc29sZSBjIDUgMQorfQorCitGSUxFU18ke1BOfSArPSAiIC9pbml0IC9kZXYgIgorCisjIER1ZSB0byBrZXJuZWwgZGVwZW5kZW5jeQorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgppbmRleCAyYTdmODRkLi5mNTg4YTEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCkBAIC01LDcgKzUsNyBAQAogCiBQUiA9ICJyMSIKIAotUkRFUEVORFNfJHtQTn0gPSAicGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgZG9zZnN0b29scyB1dGlsLWxpbnV4LWJsa2lkIgorUkRFUEVORFNfJHtQTn0gPSAicGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgZG9zZnN0b29scyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCiBTID0gIiR7V09SS0RJUn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIKaW5kZXggYTU1M2EwZC4uOTIyMmQ1NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIKQEAgLTcsNyArNyw3IEBACiAKIFMgPSAiJHtXT1JLRElSfSIKIAotUkRFUEVORFNfJHtQTn0gPSAiZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkIgorUkRFUEVORFNfJHtQTn0gPSAiZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCiBkb19pbnN0YWxsKCkgewogICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWluc3RhbGwuc2ggJHtEfS9pbnN0YWxsLnNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCmluZGV4IDFlN2Y3NmYuLjc4YTYxY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgRUZJIGluc3RhbGxhdGlvbiBvcHRpb24iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIHBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCIKK1JERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyBkb3Nmc3Rvb2xzIHV0aWwtbGludXgtYmxraWQgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30iCiAKIFBSID0gInI0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgppbmRleCAwMmI2OWYzLi4wNGU5MGNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gImluaXRyYW1mcy1mcmFtZXdvcmsgbW9kdWxlIGZvciBpbnN0YWxsYXRpb24gb3B0aW9uIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLVJERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBncnViIHBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIHV0aWwtbGludXgtYmxraWQiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCiAjIFRoZSBzYW1lIHJlc3RyaWN0aW9uIGFzIGdydWIKIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCmluZGV4IDI3ZDZmNDIuLmE5YTNhYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaApAQCAtMTMsMTAgKzEzLDEwIEBACiAKIFNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMTk3NjMzMy4uYjM2YWVmMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCisrKysga2JkLTIuMC40L3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw3ICsxLDcgQEAKICBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKHNyY2RpcikvLi4vc3JjL2xpYmtleW1hcCBcCkBAIC0yNSwxMSArMjUsMTEgQEAKICsJLUREQVRBRElSPVwiLlwiIC1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCiAgCiAgQU1fQ0ZMQUdTID0gJChDSEVDS19DRkxBR1MpCi0gTERBREQgID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJrZXltYXAvbGlia2V5bWFwLmxhICQoQ0hFQ0tfTElCUykKLWRpZmYgLS1naXQgYS90ZXN0cy9hbHQtaXMtbWV0YS5pbiBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCi1pbmRleCBkZGQ1ZWQ4Li43NzJmYjUxIDEwMDc1NQotLS0tIGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLSsrKyBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCisgTERBREQgID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJrZXltYXAvbGlia2V5bWFwLmxhICQoQ0hFQ0tfTElCUykgQElOVExMSUJTQAorSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9hbHQtaXMtbWV0YS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL2FsdC1pcy1tZXRhLmluCisrKysga2JkLTIuMC40L3Rlc3RzL2FsdC1pcy1tZXRhLmluCiBAQCAtNyw4ICs3LDggQEAgY2QgIiRjd2QiCiAgcmM9MAogIHRlbXA9IiQobWt0ZW1wICJAQlVJTERESVJAL3RlbXAuWFhYWFhYWFhYIikiCkBAIC00MSwxMCArNDEsMTAgQEAKICAKICBpZiBbICIkcmMiICE9IDAgXTsgdGhlbgogIAlwcmludGYgJ2ZhaWxlZFxuJwotZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbiBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgotaW5kZXggN2M4NTZlNS4uMTRkOTJjMSAxMDA3NTUKLS0tLSBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgotKysrIGIvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCitJbmRleDoga2JkLTIuMC40L3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorKysrIGtiZC0yLjAuNC90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KIEBAIC01LDcgKzUsNyBAQCBjd2Q9IiQocmVhZGxpbmsgLWV2ICIkezAlLyp9IikiCiAgY2QgIiRjd2QiCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCmluZGV4IDQyM2I0N2EuLjRhZjMyNTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCkBAIC0zLDcgKzMsNiBAQAogIyBldmVyeXRoaW5nIG1pbnVzIGNvbnNvbGUtZm9udHMgaXMgR1BMdjIrCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1ZmNjMzYxMjFkOTNlMWY2OWQ5NmEzMTMwNzhjOGI1IgotREVQRU5EUyA9ICJsaWJjaGVjayIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdCBwa2djb25maWcKIApAQCAtMTksOCArMTgsMTIgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjMTYzNWE1YTgzYjYzYWNhN2Y5N2EzZWFiMzllYmFhNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmQ5MGFmNmJlYjIyNWE5YmI5YjlmYjQxNGMwOTBmYmE1M2M5YTU1NzkzZTE3MmY1MDhjZDQzNjUyZTU5YTg4IgogCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAiCisKIFBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS12bG9jaywgLS1kaXNhYmxlLXZsb2NrLCBsaWJwYW0sIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsIC0tZGlzYWJsZS10ZXN0cywgbGliY2hlY2siCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAgICAgb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIGR1bXBrZXlzLWZ1bGx0YWJsZSBhbHQtaXMtbWV0YQpAQCAtMjksNiArMzIsMTMgQEAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAgICAgaW5zdGFsbCAtRCAke0J9L3Rlc3RzL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCiAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCS1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKwktZSAnczoke0RFQlVHX1BSRUZJWF9NQVB9OjpnJyBcCisJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCS1lICdzOiR7U30vY29uZmlnL21pc3Npbmc6OmcnIFwKKwktZSAnczoke1dPUktESVJ9OjpnJyBcCiAJLWUgJy9saWJrZXltYXBfLipfU09VUkNFUyA9L2QnIC1lICcvJChFWEVFWFQpOi8sL14kL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCiAKICAgICBmaW5kICR7Qn0vdGVzdHMgLWV4ZWN1dGFibGUgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOwpAQCAtNDgsNyArNTgsNyBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotQUxURVJOQVRJVkVfJHtQTn0gPSAiY2h2dCBkZWFsbG9jdnQgZmdjb25zb2xlIG9wZW52dCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQgc2hvd2tleSIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgppbmRleCBlNGIxNzgyLi43ZGRjODFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKQEAgLTksNyArOSw3IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbGliY2cvJHtCUE59L3YwLjQxLyR7QlBOfS0ke1BWfS50YXIuYnoyIgogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1kZWNscy1jb21wYXQucGF0Y2giCkBAIC0yMCw5ICsyMCwxMCBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGliY2cvZmlsZXMvbGliY2dyb3VwLyIKIAogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiTElCUz0tbGZ0cyIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJTPS1sZnRzIgogCi1FWFRSQV9PRUNPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtLW1vZHVsZS1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgLS1lbmFibGUtcGFtPXllcycsICctLWVuYWJsZS1wYW09bm8nLCBkKX0iCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0tbW9kdWxlLWRpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSAtLWVuYWJsZS1wYW09eWVzLC0tZW5hYmxlLXBhbT1ubyxsaWJwYW0iCiAKIFBBQ0tBR0VTID0rICJjZ3JvdXBzLXBhbS1wbHVnaW4iCiBGSUxFU19jZ3JvdXBzLXBhbS1wbHVnaW4gPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX2Nncm91cC5zbyoiCkBAIC0zMyw4ICszNCw4IEBACiAJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCiAJCW1rZGlyIC1wICR7RH0vJHtiYXNlX2xpYmRpcn0vCiAJCW12IC1mICR7RH0ke2xpYmRpcn0vbGliY2dyb3VwLnNvLiogJHtEfSR7YmFzZV9saWJkaXJ9LwotCQlyZWxfbGliX3ByZWZpeD1gZWNobyAke2xpYmRpcn0gfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZydgCi0JCWxuIC1zZiAke3JlbF9saWJfcHJlZml4fSR7YmFzZV9saWJkaXJ9L2xpYmNncm91cC5zby4xICR7RH0ke2xpYmRpcn0vbGliY2dyb3VwLnNvCisJCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliY2dyb3VwLnNvCisJCWxuciAke0R9JHtiYXNlX2xpYmRpcn0vbGliY2dyb3VwLnNvLjEgJHtEfSR7bGliZGlyfS9saWJjZ3JvdXAuc28KIAlmaQogCSMgcGFtIG1vZHVsZXMgaW4gJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvIHNob3VsZCBiZSBiaW5hcnkgLnNvIGZpbGVzLCBub3Qgc3ltbGlua3MuCiAJaWYgWyAtZiAke0R9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX2Nncm91cC5zby4wLjAuMCBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZDY3YTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCitERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT1kMWNjMThmNTEyZGVkM2JkNjAwMGYzNzI5ZjMxYmUwOCBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDUkVWID89ICIwODk0NzliYjI0YWNkMTY4NjEzNzU3YTZmMTJkNjNjYWE5NTQxNmI0IgorU1JDQlJBTkNIID89ICJtYXN0ZXIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAorICAgICAgICAgICAiCisKK1BST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjcnlwdCouc28uKiAke2xpYmRpcn0vbGliY3J5cHQtKi5zbyAke2xpYmRpcn0vbGlib3djcnlwdCouc28uKiAke2xpYmRpcn0vbGlib3djcnlwdC0qLnNvIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSAtc3RkPWdudTk5IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKKworcHl0aG9uICgpIHsKKyAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlJlY2lwZSBvbmx5IGFwcGxpZXMgaW4gbmF0aXZlc2RrIGNhc2UgZm9yIG5vdyIpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKaW5kZXggZDFhZDU1MS4uMmI5MmRiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCkBAIC0xNSwxMiArMTUsMTIgQEAKICBweXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5IHwgIDIgKy0KICA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBlMTgxZWUwLi43OTYwZTdkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCitJbmRleDogbGlieG1sMi0yLjkuNy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnhtbDItMi45Ljcub3JpZy9NYWtlZmlsZS5hbQorKysrIGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KIEBAIC0yMDcsOSArMjA3LDkgQEAgaW5zdGFsbC1wdGVzdDoKLSAJaW5zdGFsbCAkKG5vaW5zdF9QUk9HUkFNUykgJChERVNURElSKSkKKyAJaW5zdGFsbCAkKGNoZWNrX1BST0dSQU1TKSAkKERFU1RESVIpKQogIAljcCAtciAkKHNyY2RpcikvdGVzdCAkKERFU1RESVIpCiAgCWNwIC1yICQoc3JjZGlyKS9yZXN1bHQgJChERVNURElSKQogLQljcCAtciAkKHNyY2RpcikvcHl0aG9uICQoREVTVERJUikKQEAgLTI4LDEzICsyOCwxMyBAQAogIAlzZWQgLWkgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgJChERVNURElSKS9NYWtlZmlsZQogKwkkKE1BS0UpIC1DIHB5dGhvbiBpbnN0YWxsLXB0ZXN0CiAgCi0gcnVudGVzdHM6Ci0gCVsgLWQgdGVzdCAgIF0gfHwgJChMTl9TKSAkKHNyY2RpcikvdGVzdCAgIC4KLWRpZmYgLS1naXQgYS9weXRob24vTWFrZWZpbGUuYW0gYi9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IDM0YWVkOTYuLmJhM2VjNmEgMTAwNjQ0Ci0tLS0gYS9weXRob24vTWFrZWZpbGUuYW0KLSsrKyBiL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTQ4LDcgKzQ4LDE2IEBAIEdFTkVSQVRFRCA9IGxpYnhtbDJjbGFzcy5weSBsaWJ4bWwyY2xhc3MudHh0ICQoQlVJTFRfU09VUkNFUykKKyBydW50ZXN0czogcnVudGVzdCQoRVhFRVhUKSB0ZXN0cmVjdXJzZSQoRVhFRVhUKSB0ZXN0YXBpJChFWEVFWFQpIFwKKyAgICAgICAgICAgdGVzdGNoYXIkKEVYRUVYVCkgdGVzdGRpY3QkKEVYRUVYVCkgcnVueG1sY29uZiQoRVhFRVhUKQorSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi9NYWtlZmlsZS5hbQorKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtNDgsNyArNDgsMTYgQEAgR0VORVJBVEVEID0gbGlieG1sMmNsYXNzLnB5IGxpYnhtbDJjbGFzcwogIAogICQoR0VORVJBVEVEKTogJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKEFQSV9ERVNDKQogIAkkKFBZVEhPTikgJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKHNyY2RpcikKQEAgLTUxLDEwICs1MSwxMCBAQAogKy5QSE9OWTogdGVzdHMgdGVzdAogIHRlc3RzIHRlc3Q6IGFsbAogIAljZCB0ZXN0cyAmJiAkKE1BS0UpIHRlc3RzCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA5NWViZWFkLi40MThlMjFlIDEwMDY0NAotLS0tIGEvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTU5LDYgKzU5LDExIEBAIFhNTFM9CQlcCiAgQ0xFQU5GSUxFUyA9IGNvcmUgdG1wLnhtbCAqLnB5YwogIApAQCAtODEsMTAgKzgxLDEwIEBACiArCiAgdGVzdHM6CiAgZW5kaWYKLWRpZmYgLS1naXQgYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5IGIvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQotaW5kZXggZDVmOWJlNy4uM2U1YmVmOCAxMDA3NTUKLS0tLSBhL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKLSsrKyBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKK0luZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQorKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQogQEAgLTI1LDcgKzI1LDcgQEAgY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgd2hlbiB0aGUgZXhjZXB0aW9uIGlzIHJhaXNlZCwgY2hlY2sgdGhlIGxpYnhtbDIubGFzdEVycm9yIGZvcgogICAgICAgICAgZXhwZWN0ZWQgdmFsdWVzLiIiIgpAQCAtOTQsNiArOTQsMyBAQAogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIGYoKmFyZ3MpCiAgICAgICAgICBleGNlcHQgZXhjOgotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYTllMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorTWFrZSBzdXJlIHRoYXQgTWFrZWZpbGUgZG9lc24ndCB0cnkgdG8gY29tcGlsZSB0aGVzZSB0ZXN0cyBhZ2Fpbgorb24gdGhlIHRhcmdldCB3aGVyZSB0aGUgc291cmNlIGRlcGVuZGVuY2llcyB3b24ndCBiZSBhdmFpbGFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MtY29tcGlsZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworSW5kZXg6IGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCitAQCAtMjExLDggKzIxMSw3IEBAIGluc3RhbGwtcHRlc3Q6CisgCXNlZCAtaSAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyAkKERFU1RESVIpL01ha2VmaWxlCisgCSQoTUFLRSkgLUMgcHl0aG9uIGluc3RhbGwtcHRlc3QKKyAKKy1ydW50ZXN0czogcnVudGVzdCQoRVhFRVhUKSB0ZXN0cmVjdXJzZSQoRVhFRVhUKSB0ZXN0YXBpJChFWEVFWFQpIFwKKy0gICAgICAgICAgdGVzdGNoYXIkKEVYRUVYVCkgdGVzdGRpY3QkKEVYRUVYVCkgcnVueG1sY29uZiQoRVhFRVhUKQorK3J1bnRlc3RzOgorIAlbIC1kIHRlc3QgICBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Rlc3QgICAuCisgCVsgLWQgcmVzdWx0IF0gfHwgJChMTl9TKSAkKHNyY2RpcikvcmVzdWx0IC4KKyAJJChDSEVDS0VSKSAuL3J1bnRlc3QkKEVYRUVYVCkgJiYgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoCmluZGV4IDMyNzcxNjUuLmQ5ZWQxNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2gKQEAgLTE4Myw3ICsxODMsNyBAQAogLSAgICAgICAgICBlY2hvICIqKiogSWYgeW91IGhhdmUgYW4gb2xkIHZlcnNpb24gaW5zdGFsbGVkLCBpdCBpcyBiZXN0IHRvIHJlbW92ZSBpdCwgYWx0aG91Z2giCiAtICAgICAgICAgIGVjaG8gIioqKiB5b3UgbWF5IGFsc28gYmUgYWJsZSB0byBnZXQgdGhpbmdzIHRvIHdvcmsgYnkgbW9kaWZ5aW5nIExEX0xJQlJBUllfUEFUSCIgXSwKIC0gICAgICAgIFsgZWNobyAiKioqIFRoZSB0ZXN0IHByb2dyYW0gZmFpbGVkIHRvIGNvbXBpbGUgb3IgbGluay4gU2VlIHRoZSBmaWxlIGNvbmZpZy5sb2cgZm9yIHRoZSIKLS0gICAgICAgICAgZWNobyAiKioqIGV4YWN0IGVycm9yIHRoYXQgb2NjdXJlZC4gVGhpcyB1c3VhbGx5IG1lYW5zIExJQlhNTCB3YXMgaW5jb3JyZWN0bHkgaW5zdGFsbGVkIgorLSAgICAgICAgICBlY2hvICIqKiogZXhhY3QgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVGhpcyB1c3VhbGx5IG1lYW5zIExJQlhNTCB3YXMgaW5jb3JyZWN0bHkgaW5zdGFsbGVkIgogLSAgICAgICAgICBlY2hvICIqKiogb3IgdGhhdCB5b3UgaGF2ZSBtb3ZlZCBMSUJYTUwgc2luY2UgaXQgd2FzIGluc3RhbGxlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCB5b3UiCiAtICAgICAgICAgIGVjaG8gIioqKiBtYXkgd2FudCB0byBlZGl0IHRoZSB4bWwyLWNvbmZpZyBzY3JpcHQ6ICRYTUwyX0NPTkZJRyIgXSkKIC0gICAgICAgICAgQ1BQRkxBR1M9IiRhY19zYXZlX0NQUEZMQUdTIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNTVlZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi1saWJ4bWwyLTIuOS40OiBGaXggQ1ZFLTIwMTYtNDY1OAotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9Q1ZFLTIwMTYtNDY1OAotCi14cG9pbnRlcjogRGlzYWxsb3cgbmFtZXNwYWNlIG5vZGVzIGluIFhQb2ludGVyIHBvaW50cyBhbmQgcmFuZ2VzCi0KLU5hbWVzcGFjZSBub2RlcyBtdXN0IGJlIGNvcGllZCB0byBhdm9pZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMuCi1CdXQgdGhleSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIGEgcGh5c2ljYWwgcmVwcmVzZW50YXRpb24gaW4gYQotZG9jdW1lbnQsIHNvIHNpbXBseSBkaXNhbGxvdyB0aGVtIGluIFhQb2ludGVyIHJhbmdlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWMxZDFmNzEyMTE5NDAzNjYwOGJmNTU1ZjA4ZDMwNjJhMzZmZDM0NGJdCi0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9M2Y4YTkxMDM2ZDMzOGU1MWMwNTlkNTQzOTdhNDJkNjQ1ZjAxOWM2NV0KLUNWRTogQ1ZFLTIwMTYtNDY1OAotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS94cG9pbnRlci5jIGIveHBvaW50ZXIuYwotaW5kZXggNjc2YzUxMC4uOTExNjgwZCAxMDA2NDQKLS0tLSBhL3hwb2ludGVyLmMKLSsrKyBiL3hwb2ludGVyLmMKLUBAIC0zMjAsNiArMzIwLDQ1IEBAIHhtbFhQdHJSYW5nZXNFcXVhbCh4bWxYUGF0aE9iamVjdFB0ciByYW5nZTEsIHhtbFhQYXRoT2JqZWN0UHRyIHJhbmdlMikgewotIH0KLSAKLSAvKioKLSsgKiB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbDoKLSsgKiBAc3RhcnQ6ICB0aGUgc3RhcnRpbmcgbm9kZQotKyAqIEBzdGFydGluZGV4OiAgdGhlIHN0YXJ0IGluZGV4Ci0rICogQGVuZDogIHRoZSBlbmRpbmcgcG9pbnQKLSsgKiBAZW5kaW5kZXg6ICB0aGUgZW5kaW5nIGluZGV4Ci0rICoKLSsgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgeG1sWFBhdGhPYmplY3RQdHIgb2YgdHlwZSByYW5nZQotKyAqCi0rICogUmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCBvYmplY3QuCi0rICovCi0rc3RhdGljIHhtbFhQYXRoT2JqZWN0UHRyCi0reG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoeG1sTm9kZVB0ciBzdGFydCwgaW50IHN0YXJ0aW5kZXgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgeG1sTm9kZVB0ciBlbmQsIGludCBlbmRpbmRleCkgewotKyAgICB4bWxYUGF0aE9iamVjdFB0ciByZXQ7Ci0rCi0rICAgIC8qCi0rICAgICAqIE5hbWVzcGFjZSBub2RlcyBtdXN0IGJlIGNvcGllZCAoc2VlIHhtbFhQYXRoTm9kZVNldER1cE5zKS4KLSsgICAgICogRGlzYWxsb3cgdGhlbSBmb3Igbm93LgotKyAgICAgKi8KLSsgICAgaWYgKChzdGFydCAhPSBOVUxMKSAmJiAoc3RhcnQtPnR5cGUgPT0gWE1MX05BTUVTUEFDRV9ERUNMKSkKLSsJcmV0dXJuKE5VTEwpOwotKyAgICBpZiAoKGVuZCAhPSBOVUxMKSAmJiAoZW5kLT50eXBlID09IFhNTF9OQU1FU1BBQ0VfREVDTCkpCi0rCXJldHVybihOVUxMKTsKLSsKLSsgICAgcmV0ID0gKHhtbFhQYXRoT2JqZWN0UHRyKSB4bWxNYWxsb2Moc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0rICAgIGlmIChyZXQgPT0gTlVMTCkgewotKyAgICAgICAgeG1sWFB0ckVyck1lbW9yeSgiYWxsb2NhdGluZyByYW5nZSIpOwotKwlyZXR1cm4oTlVMTCk7Ci0rICAgIH0KLSsgICAgbWVtc2V0KHJldCwgMCwgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0rICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotKyAgICByZXQtPnVzZXIgPSBzdGFydDsKLSsgICAgcmV0LT5pbmRleCA9IHN0YXJ0aW5kZXg7Ci0rICAgIHJldC0+dXNlcjIgPSBlbmQ7Ci0rICAgIHJldC0+aW5kZXgyID0gZW5kaW5kZXg7Ci0rICAgIHJldHVybihyZXQpOwotK30KLSsKLSsvKioKLSAgKiB4bWxYUHRyTmV3UmFuZ2U6Ci0gICogQHN0YXJ0OiAgdGhlIHN0YXJ0aW5nIG5vZGUKLSAgKiBAc3RhcnRpbmRleDogIHRoZSBzdGFydCBpbmRleAotQEAgLTM0NCwxNyArMzgzLDcgQEAgeG1sWFB0ck5ld1JhbmdlKHhtbE5vZGVQdHIgc3RhcnQsIGludCBzdGFydGluZGV4LAotICAgICBpZiAoZW5kaW5kZXggPCAwKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gc3RhcnRpbmRleDsKLS0gICAgcmV0LT51c2VyMiA9IGVuZDsKLS0gICAgcmV0LT5pbmRleDIgPSBlbmRpbmRleDsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQsIHN0YXJ0aW5kZXgsIGVuZCwgZW5kaW5kZXgpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC0zODEsMTcgKzQxMCw4IEBAIHhtbFhQdHJOZXdSYW5nZVBvaW50cyh4bWxYUGF0aE9iamVjdFB0ciBzdGFydCwgeG1sWFBhdGhPYmplY3RQdHIgZW5kKSB7Ci0gICAgIGlmIChlbmQtPnR5cGUgIT0gWFBBVEhfUE9JTlQpCi0gCXJldHVybihOVUxMKTsKLSAKLS0gICAgcmV0ID0gKHhtbFhQYXRoT2JqZWN0UHRyKSB4bWxNYWxsb2Moc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIGlmIChyZXQgPT0gTlVMTCkgewotLSAgICAgICAgeG1sWFB0ckVyck1lbW9yeSgiYWxsb2NhdGluZyByYW5nZSIpOwotLQlyZXR1cm4oTlVMTCk7Ci0tICAgIH0KLS0gICAgbWVtc2V0KHJldCwgMCAsIChzaXplX3QpIHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICByZXQtPnR5cGUgPSBYUEFUSF9SQU5HRTsKLS0gICAgcmV0LT51c2VyID0gc3RhcnQtPnVzZXI7Ci0tICAgIHJldC0+aW5kZXggPSBzdGFydC0+aW5kZXg7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQtPnVzZXI7Ci0tICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQtPnVzZXIsIHN0YXJ0LT5pbmRleCwgZW5kLT51c2VyLAotKwkJCQkgIGVuZC0+aW5kZXgpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC00MTYsMTcgKzQzNiw3IEBAIHhtbFhQdHJOZXdSYW5nZVBvaW50Tm9kZSh4bWxYUGF0aE9iamVjdFB0ciBzdGFydCwgeG1sTm9kZVB0ciBlbmQpIHsKLSAgICAgaWYgKHN0YXJ0LT50eXBlICE9IFhQQVRIX1BPSU5UKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0LT51c2VyOwotLSAgICByZXQtPmluZGV4ID0gc3RhcnQtPmluZGV4OwotLSAgICByZXQtPnVzZXIyID0gZW5kOwotLSAgICByZXQtPmluZGV4MiA9IC0xOwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydC0+dXNlciwgc3RhcnQtPmluZGV4LCBlbmQsIC0xKTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtNDUzLDE3ICs0NjMsNyBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlUG9pbnQoeG1sTm9kZVB0ciBzdGFydCwgeG1sWFBhdGhPYmplY3RQdHIgZW5kKSB7Ci0gICAgIGlmIChlbmQtPnR5cGUgIT0gWFBBVEhfUE9JTlQpCi0gCXJldHVybihOVUxMKTsKLSAKLS0gICAgcmV0ID0gKHhtbFhQYXRoT2JqZWN0UHRyKSB4bWxNYWxsb2Moc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIGlmIChyZXQgPT0gTlVMTCkgewotLSAgICAgICAgeG1sWFB0ckVyck1lbW9yeSgiYWxsb2NhdGluZyByYW5nZSIpOwotLQlyZXR1cm4oTlVMTCk7Ci0tICAgIH0KLS0gICAgbWVtc2V0KHJldCwgMCAsIChzaXplX3QpIHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICByZXQtPnR5cGUgPSBYUEFUSF9SQU5HRTsKLS0gICAgcmV0LT51c2VyID0gc3RhcnQ7Ci0tICAgIHJldC0+aW5kZXggPSAtMTsKLS0gICAgcmV0LT51c2VyMiA9IGVuZC0+dXNlcjsKLS0gICAgcmV0LT5pbmRleDIgPSBlbmQtPmluZGV4OwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIGVuZC0+dXNlciwgZW5kLT5pbmRleCk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTQ4NiwxNyArNDg2LDcgQEAgeG1sWFB0ck5ld1JhbmdlTm9kZXMoeG1sTm9kZVB0ciBzdGFydCwgeG1sTm9kZVB0ciBlbmQpIHsKLSAgICAgaWYgKGVuZCA9PSBOVUxMKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQ7Ci0tICAgIHJldC0+aW5kZXgyID0gLTE7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LCAtMSwgZW5kLCAtMSk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTUxNiwxNyArNTA2LDcgQEAgeG1sWFB0ck5ld0NvbGxhcHNlZFJhbmdlKHhtbE5vZGVQdHIgc3RhcnQpIHsKLSAgICAgaWYgKHN0YXJ0ID09IE5VTEwpCi0gCXJldHVybihOVUxMKTsKLSAKLS0gICAgcmV0ID0gKHhtbFhQYXRoT2JqZWN0UHRyKSB4bWxNYWxsb2Moc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIGlmIChyZXQgPT0gTlVMTCkgewotLSAgICAgICAgeG1sWFB0ckVyck1lbW9yeSgiYWxsb2NhdGluZyByYW5nZSIpOwotLQlyZXR1cm4oTlVMTCk7Ci0tICAgIH0KLS0gICAgbWVtc2V0KHJldCwgMCAsIChzaXplX3QpIHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICByZXQtPnR5cGUgPSBYUEFUSF9SQU5HRTsKLS0gICAgcmV0LT51c2VyID0gc3RhcnQ7Ci0tICAgIHJldC0+aW5kZXggPSAtMTsKLS0gICAgcmV0LT51c2VyMiA9IE5VTEw7Ci0tICAgIHJldC0+aW5kZXgyID0gLTE7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LCAtMSwgTlVMTCwgLTEpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci0gCi1AQCAtNTQxLDYgKzUyMSw4IEBAIHhtbFhQdHJOZXdDb2xsYXBzZWRSYW5nZSh4bWxOb2RlUHRyIHN0YXJ0KSB7Ci0gICovCi0geG1sWFBhdGhPYmplY3RQdHIKLSB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotKyAgICB4bWxOb2RlUHRyIGVuZE5vZGU7Ci0rICAgIGludCBlbmRJbmRleDsKLSAgICAgeG1sWFBhdGhPYmplY3RQdHIgcmV0OwotIAotICAgICBpZiAoc3RhcnQgPT0gTlVMTCkKLUBAIC01NDksNyArNTMxLDEyIEBAIHhtbFhQdHJOZXdSYW5nZU5vZGVPYmplY3QoeG1sTm9kZVB0ciBzdGFydCwgeG1sWFBhdGhPYmplY3RQdHIgZW5kKSB7Ci0gCXJldHVybihOVUxMKTsKLSAgICAgc3dpdGNoIChlbmQtPnR5cGUpIHsKLSAJY2FzZSBYUEFUSF9QT0lOVDoKLSsJICAgIGVuZE5vZGUgPSBlbmQtPnVzZXI7Ci0rCSAgICBlbmRJbmRleCA9IGVuZC0+aW5kZXg7Ci0rCSAgICBicmVhazsKLSAJY2FzZSBYUEFUSF9SQU5HRToKLSsJICAgIGVuZE5vZGUgPSBlbmQtPnVzZXIyOwotKwkgICAgZW5kSW5kZXggPSBlbmQtPmluZGV4MjsKLSAJICAgIGJyZWFrOwotIAljYXNlIFhQQVRIX05PREVTRVQ6Ci0gCSAgICAvKgotQEAgLTU1NywzOSArNTQ0LDE1IEBAIHhtbFhQdHJOZXdSYW5nZU5vZGVPYmplY3QoeG1sTm9kZVB0ciBzdGFydCwgeG1sWFBhdGhPYmplY3RQdHIgZW5kKSB7Ci0gCSAgICAgKi8KLSAJICAgIGlmIChlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciA8PSAwKQotIAkJcmV0dXJuKE5VTEwpOwotKwkgICAgZW5kTm9kZSA9IGVuZC0+bm9kZXNldHZhbC0+bm9kZVRhYltlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciAtIDFdOwotKwkgICAgZW5kSW5kZXggPSAtMTsKLSAJICAgIGJyZWFrOwotIAlkZWZhdWx0OgotIAkgICAgLyogVE9ETyAqLwotIAkgICAgcmV0dXJuKE5VTEwpOwotICAgICB9Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHN3aXRjaCAoZW5kLT50eXBlKSB7Ci0tCWNhc2UgWFBBVEhfUE9JTlQ6Ci0tCSAgICByZXQtPnVzZXIyID0gZW5kLT51c2VyOwotLQkgICAgcmV0LT5pbmRleDIgPSBlbmQtPmluZGV4OwotLQkgICAgYnJlYWs7Ci0tCWNhc2UgWFBBVEhfUkFOR0U6Ci0tCSAgICByZXQtPnVzZXIyID0gZW5kLT51c2VyMjsKLS0JICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDI7Ci0tCSAgICBicmVhazsKLS0JY2FzZSBYUEFUSF9OT0RFU0VUOiB7Ci0tCSAgICByZXQtPnVzZXIyID0gZW5kLT5ub2Rlc2V0dmFsLT5ub2RlVGFiW2VuZC0+bm9kZXNldHZhbC0+bm9kZU5yIC0gMV07Ci0tCSAgICByZXQtPmluZGV4MiA9IC0xOwotLQkgICAgYnJlYWs7Ci0tCX0KLS0JZGVmYXVsdDoKLS0JICAgIFNUUkFOR0UKLS0JICAgIHJldHVybihOVUxMKTsKLS0gICAgfQotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIGVuZE5vZGUsIGVuZEluZGV4KTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtMTgzNSw4ICsxNzk4LDggQEAgeG1sWFB0clN0YXJ0UG9pbnRGdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0gCQljYXNlIFhQQVRIX1JBTkdFOiB7Ci0gCQkgICAgeG1sTm9kZVB0ciBub2RlID0gdG1wLT51c2VyOwotIAkJICAgIGlmIChub2RlICE9IE5VTEwpIHsKLS0JCQlpZiAobm9kZS0+dHlwZSA9PSBYTUxfQVRUUklCVVRFX05PREUpIHsKLS0JCQkgICAgLyogVE9ETzogTmFtZXNwYWNlIE5vZGVzID8/PyAqLwotKwkJCWlmICgobm9kZS0+dHlwZSA9PSBYTUxfQVRUUklCVVRFX05PREUpIHx8Ci0rCQkJICAgICAobm9kZS0+dHlwZSA9PSBYTUxfTkFNRVNQQUNFX0RFQ0wpKSB7Ci0gCQkJICAgIHhtbFhQYXRoRnJlZU9iamVjdChvYmopOwotIAkJCSAgICB4bWxYUHRyRnJlZUxvY2F0aW9uU2V0KG5ld3NldCk7Ci0gCQkJICAgIFhQX0VSUk9SKFhQVFJfU1lOVEFYX0VSUk9SKTsKLUBAIC0xOTMxLDggKzE4OTQsOCBAQCB4bWxYUHRyRW5kUG9pbnRGdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0gCQljYXNlIFhQQVRIX1JBTkdFOiB7Ci0gCQkgICAgeG1sTm9kZVB0ciBub2RlID0gdG1wLT51c2VyMjsKLSAJCSAgICBpZiAobm9kZSAhPSBOVUxMKSB7Ci0tCQkJaWYgKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB7Ci0tCQkJICAgIC8qIFRPRE86IE5hbWVzcGFjZSBOb2RlcyA/Pz8gKi8KLSsJCQlpZiAoKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB8fAotKwkJCSAgICAgKG5vZGUtPnR5cGUgPT0gWE1MX05BTUVTUEFDRV9ERUNMKSkgewotIAkJCSAgICB4bWxYUGF0aEZyZWVPYmplY3Qob2JqKTsKLSAJCQkgICAgeG1sWFB0ckZyZWVMb2NhdGlvblNldChuZXdzZXQpOwotIAkJCSAgICBYUF9FUlJPUihYUFRSX1NZTlRBWF9FUlJPUik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi01MTMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNTEzMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ0N2QwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi01MTMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLUZyb20gOWFiMDFhMjc3ZDcxZjU0ZDMxNDNjMmNmMzMzYzVjMmU5YWFlZGQ5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgV2VsbG5ob2ZlciA8d2VsbG5ob2ZlckBhZXZ1bS5kZT4KLURhdGU6IFR1ZSwgMjggSnVuIDIwMTYgMTQ6MjI6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IFhQb2ludGVyIHBhdGhzIGJlZ2lubmluZyB3aXRoIHJhbmdlLXRvCi0KLVRoZSBvbGQgY29kZSB3b3VsZCBpbnZva2UgdGhlIGJyb2tlbiB4bWxYUHRyUmFuZ2VUb0Z1bmN0aW9uLiByYW5nZS10bwotaXNuJ3QgcmVhbGx5IGEgZnVuY3Rpb24gYnV0IGEgc3BlY2lhbCBraW5kIG9mIGxvY2F0aW9uIHN0ZXAuIFJlbW92ZQotdGhpcyBmdW5jdGlvbiBhbmQgYWx3YXlzIGhhbmRsZSByYW5nZS10byBpbiB0aGUgWFBhdGggY29kZS4KLQotVGhlIG9sZCB4bWxYUHRyUmFuZ2VUb0Z1bmN0aW9uIGNvdWxkIGFsc28gYmUgYWJ1c2VkIHRvIHRyaWdnZXIgYQotdXNlLWFmdGVyLWZyZWUgZXJyb3Igd2l0aCB0aGUgcG90ZW50aWFsIGZvciByZW1vdGUgY29kZSBleGVjdXRpb24uCi0KLUZvdW5kIHdpdGggYWZsLWZ1enouCi0KLUZpeGVzIENWRS0yMDE2LTUxMzEuCi0KLUNWRTogQ1ZFLTIwMTYtNTEzMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OWFiMDFhMjc3ZDcxZjU0ZDMxNDNjMmNmMzMzYzVjMmU5YWFlZGQ5ZQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRpcnZlci5jb20+Ci0tLS0KLSByZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlIHwgMTMgKysrKysrKysKLSB0ZXN0L1hQYXRoL3hwdHIvdmlkYmFzZSAgIHwgIDEgKwotIHhwYXRoLmMgICAgICAgICAgICAgICAgICAgfCAgNyArKysrLQotIHhwb2ludGVyLmMgICAgICAgICAgICAgICAgfCA3NiArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9yZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlIGIvcmVzdWx0L1hQYXRoL3hwdHIvdmlkYmFzZQotaW5kZXggOGI5ZTkyZC4uZjE5MTkzZSAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGJhc2UKLSsrKyBiL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGJhc2UKLUBAIC0xNywzICsxNywxNiBAQCBPYmplY3QgaXMgYSBMb2NhdGlvbiBTZXQ6Ci0gICBUbyBub2RlCi0gICAgIEVMRU1FTlQgcAotIAotKwotKz09PT09PT09PT09PT09PT09PT09PT09PQotK0V4cHJlc3Npb246IHhwb2ludGVyKHJhbmdlLXRvKGlkKCdjaGFwdGVyMicpKSkKLStPYmplY3QgaXMgYSBMb2NhdGlvbiBTZXQ6Ci0rMSA6ICAgT2JqZWN0IGlzIGEgcmFuZ2UgOgotKyAgRnJvbSBub2RlCi0rICAgICAvCi0rICBUbyBub2RlCi0rICAgIEVMRU1FTlQgY2hhcHRlcgotKyAgICAgIEFUVFJJQlVURSBpZAotKyAgICAgICAgVEVYVAotKyAgICAgICAgICBjb250ZW50PWNoYXB0ZXIyCi0rCi1kaWZmIC0tZ2l0IGEvdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UgYi90ZXN0L1hQYXRoL3hwdHIvdmlkYmFzZQotaW5kZXggYjE0NjM4My4uODg0YjEwNiAxMDA2NDQKLS0tLSBhL3Rlc3QvWFBhdGgveHB0ci92aWRiYXNlCi0rKysgYi90ZXN0L1hQYXRoL3hwdHIvdmlkYmFzZQotQEAgLTEsMiArMSwzIEBACi0geHBvaW50ZXIoaWQoJ2NoYXB0ZXIxJykvcCkKLSB4cG9pbnRlcihpZCgnY2hhcHRlcjEnKS9wWzFdL3JhbmdlLXRvKGZvbGxvd2luZy1zaWJsaW5nOjpwWzJdKSkKLSt4cG9pbnRlcihyYW5nZS10byhpZCgnY2hhcHRlcjInKSkpCi1kaWZmIC0tZ2l0IGEveHBhdGguYyBiL3hwYXRoLmMKLWluZGV4IGQ5OTI4NDEuLjVhMDFiMWIgMTAwNjQ0Ci0tLS0gYS94cGF0aC5jCi0rKysgYi94cGF0aC5jCi1AQCAtMTA2OTEsMTMgKzEwNjkxLDE4IEBAIHhtbFhQYXRoQ29tcFBhdGhFeHByKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0KSB7Ci0gCQkgICAgbGMgPSAxOwotIAkJICAgIGJyZWFrOwotIAkJfSBlbHNlIGlmICgoTlhUKGxlbikgPT0gJygnKSkgewotLQkJICAgIC8qIE5vdGUgVHlwZSBvciBGdW5jdGlvbiAqLwotKwkJICAgIC8qIE5vZGUgVHlwZSBvciBGdW5jdGlvbiAqLwotIAkJICAgIGlmICh4bWxYUGF0aElzTm9kZVR5cGUobmFtZSkpIHsKLSAjaWZkZWYgREVCVUdfU1RFUAotIAkJICAgICAgICB4bWxHZW5lcmljRXJyb3IoeG1sR2VuZXJpY0Vycm9yQ29udGV4dCwKLSAJCQkJIlBhdGhFeHByOiBUeXBlIHNlYXJjaFxuIik7Ci0gI2VuZGlmCi0gCQkJbGMgPSAxOwotKyNpZmRlZiBMSUJYTUxfWFBUUl9FTkFCTEVECi0rICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN0eHQtPnhwdHIgJiYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sU3RyRXF1YWwobmFtZSwgQkFEX0NBU1QgInJhbmdlLXRvIikpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsYyA9IDE7Ci0rI2VuZGlmCi0gCQkgICAgfSBlbHNlIHsKLSAjaWZkZWYgREVCVUdfU1RFUAotIAkJICAgICAgICB4bWxHZW5lcmljRXJyb3IoeG1sR2VuZXJpY0Vycm9yQ29udGV4dCwKLWRpZmYgLS1naXQgYS94cG9pbnRlci5jIGIveHBvaW50ZXIuYwotaW5kZXggNjc2YzUxMC4uZDc0MTc0YSAxMDA2NDQKLS0tLSBhL3hwb2ludGVyLmMKLSsrKyBiL3hwb2ludGVyLmMKLUBAIC0xMzMyLDggKzEzMzIsNiBAQCB4bWxYUHRyTmV3Q29udGV4dCh4bWxEb2NQdHIgZG9jLCB4bWxOb2RlUHRyIGhlcmUsIHhtbE5vZGVQdHIgb3JpZ2luKSB7Ci0gICAgIHJldC0+aGVyZSA9IGhlcmU7Ci0gICAgIHJldC0+b3JpZ2luID0gb3JpZ2luOwotIAotLSAgICB4bWxYUGF0aFJlZ2lzdGVyRnVuYyhyZXQsICh4bWxDaGFyICopInJhbmdlLXRvIiwKLS0JICAgICAgICAgICAgICAgICB4bWxYUHRyUmFuZ2VUb0Z1bmN0aW9uKTsKLSAgICAgeG1sWFBhdGhSZWdpc3RlckZ1bmMocmV0LCAoeG1sQ2hhciAqKSJyYW5nZSIsCi0gCSAgICAgICAgICAgICAgICAgeG1sWFB0clJhbmdlRnVuY3Rpb24pOwotICAgICB4bWxYUGF0aFJlZ2lzdGVyRnVuYyhyZXQsICh4bWxDaGFyICopInJhbmdlLWluc2lkZSIsCi1AQCAtMjI0Myw3NiArMjI0MSwxNCBAQCB4bWxYUHRyUmFuZ2VJbnNpZGVGdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0gICogQG5hcmdzOiAgdGhlIG51bWJlciBvZiBhcmdzCi0gICoKLSAgKiBJbXBsZW1lbnQgdGhlIHJhbmdlLXRvKCkgWFBvaW50ZXIgZnVuY3Rpb24KLSsgKgotKyAqIE9ic29sZXRlLiByYW5nZS10byBpcyBub3QgYSByZWFsIGZ1bmN0aW9uIGJ1dCBhIHNwZWNpYWwgdHlwZSBvZiBsb2NhdGlvbgotKyAqIHN0ZXAgd2hpY2ggaXMgaGFuZGxlZCBpbiB4cGF0aC5jLgotICAqLwotIHZvaWQKLS14bWxYUHRyUmFuZ2VUb0Z1bmN0aW9uKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCBpbnQgbmFyZ3MpIHsKLS0gICAgeG1sWFBhdGhPYmplY3RQdHIgcmFuZ2U7Ci0tICAgIGNvbnN0IHhtbENoYXIgKmN1cjsKLS0gICAgeG1sWFBhdGhPYmplY3RQdHIgcmVzLCBvYmo7Ci0tICAgIHhtbFhQYXRoT2JqZWN0UHRyIHRtcDsKLS0gICAgeG1sTG9jYXRpb25TZXRQdHIgbmV3c2V0ID0gTlVMTDsKLS0gICAgeG1sTm9kZVNldFB0ciBvbGRzZXQ7Ci0tICAgIGludCBpOwotLQotLSAgICBpZiAoY3R4dCA9PSBOVUxMKSByZXR1cm47Ci0tICAgIENIRUNLX0FSSVRZKDEpOwotLSAgICAvKgotLSAgICAgKiBTYXZlIHRoZSBleHByZXNzaW9uIHBvaW50ZXIgc2luY2Ugd2Ugd2lsbCBoYXZlIHRvIGV2YWx1YXRlCi0tICAgICAqIGl0IG11bHRpcGxlIHRpbWVzLiBJbml0aWFsaXplIHRoZSBuZXcgc2V0LgotLSAgICAgKi8KLS0gICAgQ0hFQ0tfVFlQRShYUEFUSF9OT0RFU0VUKTsKLS0gICAgb2JqID0gdmFsdWVQb3AoY3R4dCk7Ci0tICAgIG9sZHNldCA9IG9iai0+bm9kZXNldHZhbDsKLS0gICAgY3R4dC0+Y29udGV4dC0+bm9kZSA9IE5VTEw7Ci0tCi0tICAgIGN1ciA9IGN0eHQtPmN1cjsKLS0gICAgbmV3c2V0ID0geG1sWFB0ckxvY2F0aW9uU2V0Q3JlYXRlKE5VTEwpOwotLQotLSAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2V0LT5ub2RlTnI7IGkrKykgewotLQljdHh0LT5jdXIgPSBjdXI7Ci0tCi0tCS8qCi0tCSAqIFJ1biB0aGUgZXZhbHVhdGlvbiB3aXRoIGEgbm9kZSBsaXN0IG1hZGUgb2YgYSBzaW5nbGUgaXRlbQotLQkgKiBpbiB0aGUgbm9kZXNldC4KLS0JICovCi0tCWN0eHQtPmNvbnRleHQtPm5vZGUgPSBvbGRzZXQtPm5vZGVUYWJbaV07Ci0tCXRtcCA9IHhtbFhQYXRoTmV3Tm9kZVNldChjdHh0LT5jb250ZXh0LT5ub2RlKTsKLS0JdmFsdWVQdXNoKGN0eHQsIHRtcCk7Ci0tCi0tCXhtbFhQYXRoRXZhbEV4cHIoY3R4dCk7Ci0tCUNIRUNLX0VSUk9SOwotLQotLQkvKgotLQkgKiBUaGUgcmVzdWx0IG9mIHRoZSBldmFsdWF0aW9uIG5lZWQgdG8gYmUgdGVzdGVkIHRvCi0tCSAqIGRlY2lkZWQgd2hldGhlciB0aGUgZmlsdGVyIHN1Y2NlZWRlZCBvciBub3QKLS0JICovCi0tCXJlcyA9IHZhbHVlUG9wKGN0eHQpOwotLQlyYW5nZSA9IHhtbFhQdHJOZXdSYW5nZU5vZGVPYmplY3Qob2xkc2V0LT5ub2RlVGFiW2ldLCByZXMpOwotLQlpZiAocmFuZ2UgIT0gTlVMTCkgewotLQkgICAgeG1sWFB0ckxvY2F0aW9uU2V0QWRkKG5ld3NldCwgcmFuZ2UpOwotLQl9Ci0tCi0tCS8qCi0tCSAqIENsZWFudXAKLS0JICovCi0tCWlmIChyZXMgIT0gTlVMTCkKLS0JICAgIHhtbFhQYXRoRnJlZU9iamVjdChyZXMpOwotLQlpZiAoY3R4dC0+dmFsdWUgPT0gdG1wKSB7Ci0tCSAgICByZXMgPSB2YWx1ZVBvcChjdHh0KTsKLS0JICAgIHhtbFhQYXRoRnJlZU9iamVjdChyZXMpOwotLQl9Ci0tCi0tCWN0eHQtPmNvbnRleHQtPm5vZGUgPSBOVUxMOwotLSAgICB9Ci0tCi0tICAgIC8qCi0tICAgICAqIFRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3IGV2YWx1YXRpb24gc2V0LgotLSAgICAgKi8KLS0gICAgeG1sWFBhdGhGcmVlT2JqZWN0KG9iaik7Ci0tICAgIGN0eHQtPmNvbnRleHQtPm5vZGUgPSBOVUxMOwotLSAgICBjdHh0LT5jb250ZXh0LT5jb250ZXh0U2l6ZSA9IC0xOwotLSAgICBjdHh0LT5jb250ZXh0LT5wcm94aW1pdHlQb3NpdGlvbiA9IC0xOwotLSAgICB2YWx1ZVB1c2goY3R4dCwgeG1sWFB0cldyYXBMb2NhdGlvblNldChuZXdzZXQpKTsKLSt4bWxYUHRyUmFuZ2VUb0Z1bmN0aW9uKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hcmdzIEFUVFJJQlVURV9VTlVTRUQpIHsKLSsgICAgWFBfRVJST1IoWFBBVEhfRVhQUl9FUlJPUik7Ci0gfQotIAotIC8qKgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy0wNjYzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctMDY2My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEwODI2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy0wNjYzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotbGlieG1sMjogRml4IENWRS0yMDE3LTA2NjMKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjI4Ci0KLXZhbGlkOiBGaXggdHlwZSBjb25mdXNpb24gaW4geG1sVmFsaWRhdGVPbmVOYW1lc3BhY2UKLQotQ29tbWVudCBvdXQgY29kZSB0aGF0IGNhc3RzIHhtbE5zUHRyIHRvIHhtbEF0dHJQdHIuIElEIHR5cGVzCi1vbiBuYW1lc3BhY2UgZGVjbGFyYXRpb25zIG1ha2Ugbm8gcHJhY3RpY2FsIHNlbnNlIGFueXdheS4KLQotRml4ZXMgYnVnIDc4MDIyOAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD05MmI5ZThjOGIzNzg3MDY4NTY1YTE4MjBiYTU3NWQwNDJmOWVlYzY2XQotQ1ZFOiBDVkUtMjAxNy0wNjYzCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3ZhbGlkLmMgYi92YWxpZC5jCi1pbmRleCAxOWY4NGI4Li5lMDNkMzVlIDEwMDY0NAotLS0tIGEvdmFsaWQuYwotKysrIGIvdmFsaWQuYwotQEAgLTQ2MjEsNiArNDYyMSwxMiBAQCB4bWxOb2RlUHRyIGVsZW0sIGNvbnN0IHhtbENoYXIgKnByZWZpeCwgeG1sTnNQdHIgbnMsIGNvbnN0IHhtbENoYXIgKnZhbHVlKSB7Ci0gCX0KLSAgICAgfQotIAotKyAgICAvKgotKyAgICAgKiBDYXN0aW5nIG5zIHRvIHhtbEF0dHJQdHIgaXMgd3JvbmcuIFdlJ2QgbmVlZCBzZXBhcmF0ZSBmdW5jdGlvbnMKLSsgICAgICogeG1sQWRkSUQgYW5kIHhtbEFkZFJlZiBmb3IgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucywgYnV0IGl0IG1ha2VzCi0rICAgICAqIG5vIHByYWN0aWNhbCBzZW5zZSB0byB1c2UgSUQgdHlwZXMgYW55d2F5LgotKyAgICAgKi8KLSsjaWYgMAotICAgICAvKiBWYWxpZGl0eSBDb25zdHJhaW50OiBJRCB1bmlxdWVuZXNzICovCi0gICAgIGlmIChhdHRyRGVjbC0+YXR5cGUgPT0gWE1MX0FUVFJJQlVURV9JRCkgewotICAgICAgICAgaWYgKHhtbEFkZElEKGN0eHQsIGRvYywgdmFsdWUsICh4bWxBdHRyUHRyKSBucykgPT0gTlVMTCkKLUBAIC00NjMyLDYgKzQ2MzgsNyBAQCB4bWxOb2RlUHRyIGVsZW0sIGNvbnN0IHhtbENoYXIgKnByZWZpeCwgeG1sTnNQdHIgbnMsIGNvbnN0IHhtbENoYXIgKnZhbHVlKSB7Ci0gICAgICAgICBpZiAoeG1sQWRkUmVmKGN0eHQsIGRvYywgdmFsdWUsICh4bWxBdHRyUHRyKSBucykgPT0gTlVMTCkKLSAJICAgIHJldCA9IDA7Ci0gICAgIH0KLSsjZW5kaWYKLSAKLSAgICAgLyogVmFsaWRpdHkgQ29uc3RyYWludDogTm90YXRpb24gQXR0cmlidXRlcyAqLwotICAgICBpZiAoYXR0ckRlY2wtPmF0eXBlID09IFhNTF9BVFRSSUJVVEVfTk9UQVRJT04pIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTU5NjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy01OTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzFiMDVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTU5NjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1saWJ4bWwyLTIuOS40OiBGaXggQ1ZFLTIwMTctNTk2OQotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg0MjIKLQotdmFsaWQ6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWYgaW4geG1sRHVtcEVsZW1lbnRDb250ZW50Ci0KLUNhbiBvbmx5IGJlIHRyaWdnZXJlZCBpbiByZWNvdmVyeSBtb2RlLgotCi1GaXhlcyBidWcgNzU4NDIyCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTQ2OTFkYzg4NGQxYThhZGEzOWYwNzM0MDhiNGJiOTJmZTdmZTg4Ml0KLUNWRTogQ1ZFLTIwMTctNTk2OQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS92YWxpZC5jIGIvdmFsaWQuYwotaW5kZXggMTlmODRiOC4uMGE4ZTU4YSAxMDA2NDQKLS0tLSBhL3ZhbGlkLmMKLSsrKyBiL3ZhbGlkLmMKLUBAIC0xMTcyLDI5ICsxMTcyLDMzIEBAIHhtbER1bXBFbGVtZW50Q29udGVudCh4bWxCdWZmZXJQdHIgYnVmLCB4bWxFbGVtZW50Q29udGVudFB0ciBjb250ZW50LCBpbnQgZ2xvYikKLSAJICAgIHhtbEJ1ZmZlcldyaXRlQ0hBUihidWYsIGNvbnRlbnQtPm5hbWUpOwotIAkgICAgYnJlYWs7Ci0gCWNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVE6Ci0tCSAgICBpZiAoKGNvbnRlbnQtPmMxLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpIHx8Ci0tCSAgICAgICAgKGNvbnRlbnQtPmMxLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSkKLSsJICAgIGlmICgoY29udGVudC0+YzEgIT0gTlVMTCkgJiYKLSsJICAgICAgICAoKGNvbnRlbnQtPmMxLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpIHx8Ci0rCSAgICAgICAgIChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkpKQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzEsIDEpOwotIAkgICAgZWxzZQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzEsIDApOwotICAgICAgICAgICAgIHhtbEJ1ZmZlcldyaXRlQ2hhcihidWYsICIgLCAiKTsKLS0JICAgIGlmICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLS0JICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSAmJgotLQkJIChjb250ZW50LT5jMi0+b2N1ciAhPSBYTUxfRUxFTUVOVF9DT05URU5UX09OQ0UpKSkKLSsJICAgIGlmICgoY29udGVudC0+YzIgIT0gTlVMTCkgJiYKLSsJICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpIHx8Ci0rCSAgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpICYmCi0rCQkgIChjb250ZW50LT5jMi0+b2N1ciAhPSBYTUxfRUxFTUVOVF9DT05URU5UX09OQ0UpKSkpCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMiwgMSk7Ci0gCSAgICBlbHNlCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMiwgMCk7Ci0gCSAgICBicmVhazsKLSAJY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX09SOgotLQkgICAgaWYgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotLQkgICAgICAgIChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMxICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotKwkgICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKSkKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAxKTsKLSAJICAgIGVsc2UKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAwKTsKLSAgICAgICAgICAgICB4bWxCdWZmZXJXcml0ZUNoYXIoYnVmLCAiIHwgIik7Ci0tCSAgICBpZiAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSB8fAotLQkgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgJiYKLS0JCSAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMyICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkgfHwKLSsJICAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSAmJgotKwkJICAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpKQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDEpOwotIAkgICAgZWxzZQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDApOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctODg3Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTg4NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2Nzc5YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctODg3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gZDJmODczYTU0MWM3MmIwZjY3ZTE1NTYyODE5YmY5OGI4ODRiMzBiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTY6MDQ6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IENWRS0yMDE3LTg4NzIKLQotdGhpcyBtYWtlcyB4bWxIYWx0UGFyc2VyICJlbXB0eSIgdGhlIGJ1ZmZlciwgYXMgaXQgcmVzZXRzIGN1ciBhbmQgYXZhCi1pbCB0b28gaGVyZS4KLQotdGhpcyBzZWVtcyB0byBjdXJlIHRoaXMgc3BlY2lmaWMgaXNzdWUsIGFuZCBhbHNvIHBhc3NlcyB0aGUgdGVzdHN1aXRlCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIwMAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MzU1NTI3JmFjdGlvbj1kaWZmXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcGFyc2VyLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCi1pbmRleCA5NTA2ZWFkLi42YzA3ZmZkIDEwMDY0NAotLS0tIGEvcGFyc2VyLmMKLSsrKyBiL3BhcnNlci5jCi1AQCAtMTI2NjQsNiArMTI2NjQsMTAgQEAgeG1sSGFsdFBhcnNlcih4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAJfQotIAljdHh0LT5pbnB1dC0+Y3VyID0gQkFEX0NBU1QiIjsKLSAJY3R4dC0+aW5wdXQtPmJhc2UgPSBjdHh0LT5pbnB1dC0+Y3VyOwotKwlpZiAoY3R4dC0+aW5wdXQtPmJ1ZikgewotKwkJeG1sQnVmRW1wdHkgKGN0eHQtPmlucHV0LT5idWYtPmJ1ZmZlcik7Ci0rCX0gZWxzZQotKwkJY3R4dC0+aW5wdXQtPmxlbmd0aCA9IDA7Ci0gICAgIH0KLSB9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDdfQ1ZFLTIwMTctOTA0OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDdfQ1ZFLTIwMTctOTA0OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIwMzQ1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ3X0NWRS0yMDE3LTkwNDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE3LTkwNDcgYW5kIENWRS0yMDE3LTkwNDgKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMzMzCi0gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTcwMQotCi12YWxpZDogRml4IGJ1ZmZlciBzaXplIGNoZWNrcyBpbiB4bWxTbnByaW50ZkVsZW1lbnRDb250ZW50Ci0KLXhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQgZmFpbGVkIHRvIGNvcnJlY3RseSBjaGVjayB0aGUgYXZhaWxhYmxlCi1idWZmZXIgc3BhY2UgaW4gdHdvIGxvY2F0aW9ucy4KLQotRml4ZXMgYnVnIDc4MTMzMyBhbmQgYnVnIDc4MTcwMQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD05MzJjYzk4OTZhYjQxNDc1ZDRhYTQyOWMyN2Q5YWZkMTc1OTU5ZDc0XQotQ1ZFOiBDVkUtMjAxNy05MDQ3IENWRS0yMDE3LTkwNDgKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjAxYmFmMTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sCi1AQCAtMCwwICsxLDUgQEAKLSs8P3htbCB2ZXJzaW9uPSIxLjAiPz4KLSs8IURPQ1RZUEUgYSBbCi0rPCFFTEVNRU5UIGEgKHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA6bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGwpPgotK10+Ci0rPGEvPgotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVyciBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVycgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIxNzYyMDAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVycgotQEAgLTAsMCArMSwzIEBACi0rLi90ZXN0L3ZhbGlkLzc4MTMzMy54bWw6NDogZWxlbWVudCBhOiB2YWxpZGl0eSBlcnJvciA6IEVsZW1lbnQgYSBjb250ZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgRFRELCBleHBlY3RpbmcgKCAuLi4sIGdvdCAKLSs8YS8+Ci0rICAgIF4KLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIucmRyIGIvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwuZXJyLnJkcgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjExOTVhMDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVyci5yZHIKLUBAIC0wLDAgKzEsNiBAQAotKy4vdGVzdC92YWxpZC83ODEzMzMueG1sOjQ6IGVsZW1lbnQgYTogdmFsaWRpdHkgZXJyb3IgOiBFbGVtZW50IGEgY29udGVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIERURCwgZXhwZWN0aW5nICggLi4uLCBnb3QgCi0rPGEvPgotKyAgICBeCi0rLi90ZXN0L3ZhbGlkLzc4MTMzMy54bWw6NTogZWxlbWVudCBhOiB2YWxpZGl0eSBlcnJvciA6IEVsZW1lbnQgYSBjb250ZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgRFRELCBFeHBlY3RpbmcgbW9yZSBjaGlsZAotKwotK14KLWRpZmYgLS1naXQgYS90ZXN0L3ZhbGlkLzc4MTMzMy54bWwgYi90ZXN0L3ZhbGlkLzc4MTMzMy54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iY2VhYzljCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L3ZhbGlkLzc4MTMzMy54bWwKLUBAIC0wLDAgKzEsNCBAQAotKzwhRE9DVFlQRSBhIFsKLSsgICAgPCFFTEVNRU5UIGEgKHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA6bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGwpPgotK10+Ci0rPGEvPgotZGlmZiAtLWdpdCBhL3ZhbGlkLmMgYi92YWxpZC5jCi1pbmRleCAxOWY4NGI4Li5hYWEzMGY2IDEwMDY0NAotLS0tIGEvdmFsaWQuYwotKysrIGIvdmFsaWQuYwotQEAgLTEyNjIsMjIgKzEyNjIsMjMgQEAgeG1sU25wcmludGZFbGVtZW50Q29udGVudChjaGFyICpidWYsIGludCBzaXplLCB4bWxFbGVtZW50Q29udGVudFB0ciBjb250ZW50LCBpbnQKLSAgICAgICAgIGNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9QQ0RBVEE6Ci0gICAgICAgICAgICAgc3RyY2F0KGJ1ZiwgIiNQQ0RBVEEiKTsKLSAJICAgIGJyZWFrOwotLQljYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfRUxFTUVOVDoKLSsJY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX0VMRU1FTlQ6IHsKLSsgICAgICAgICAgICBpbnQgcW5hbWVMZW4gPSB4bWxTdHJsZW4oY29udGVudC0+bmFtZSk7Ci0rCi0rCSAgICBpZiAoY29udGVudC0+cHJlZml4ICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgIHFuYW1lTGVuICs9IHhtbFN0cmxlbihjb250ZW50LT5wcmVmaXgpICsgMTsKLSsJICAgIGlmIChzaXplIC0gbGVuIDwgcW5hbWVMZW4gKyAxMCkgewotKwkJc3RyY2F0KGJ1ZiwgIiAuLi4iKTsKLSsJCXJldHVybjsKLSsJICAgIH0KLSAJICAgIGlmIChjb250ZW50LT5wcmVmaXggIT0gTlVMTCkgewotLQkJaWYgKHNpemUgLSBsZW4gPCB4bWxTdHJsZW4oY29udGVudC0+cHJlZml4KSArIDEwKSB7Ci0tCQkgICAgc3RyY2F0KGJ1ZiwgIiAuLi4iKTsKLS0JCSAgICByZXR1cm47Ci0tCQl9Ci0gCQlzdHJjYXQoYnVmLCAoY2hhciAqKSBjb250ZW50LT5wcmVmaXgpOwotIAkJc3RyY2F0KGJ1ZiwgIjoiKTsKLSAJICAgIH0KLS0JICAgIGlmIChzaXplIC0gbGVuIDwgeG1sU3RybGVuKGNvbnRlbnQtPm5hbWUpICsgMTApIHsKLS0JCXN0cmNhdChidWYsICIgLi4uIik7Ci0tCQlyZXR1cm47Ci0tCSAgICB9Ci0gCSAgICBpZiAoY29udGVudC0+bmFtZSAhPSBOVUxMKQotIAkJc3RyY2F0KGJ1ZiwgKGNoYXIgKikgY29udGVudC0+bmFtZSk7Ci0gCSAgICBicmVhazsKLSsJfQotIAljYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VROgotIAkgICAgaWYgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotIAkgICAgICAgIChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkpCi1AQCAtMTMxOSw2ICsxMzIwLDcgQEAgeG1sU25wcmludGZFbGVtZW50Q29udGVudChjaGFyICpidWYsIGludCBzaXplLCB4bWxFbGVtZW50Q29udGVudFB0ciBjb250ZW50LCBpbnQKLSAJCXhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQoYnVmLCBzaXplLCBjb250ZW50LT5jMiwgMCk7Ci0gCSAgICBicmVhazsKLSAgICAgfQotKyAgICBpZiAoc2l6ZSAtIHN0cmxlbihidWYpIDw9IDIpIHJldHVybjsKLSAgICAgaWYgKGVuZ2xvYikKLSAgICAgICAgIHN0cmNhdChidWYsICIpIik7Ci0gICAgIHN3aXRjaCAoY29udGVudC0+b2N1cikgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctOTA0OV9DVkUtMjAxNy05MDUwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctOTA0OV9DVkUtMjAxNy05MDUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTEwNzVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MSArMCwwIEBACi1saWJ4bWwyLTIuOS40OiBGaXggQ1ZFLTIwMTctOTA0OSBhbmQgQ1ZFLTIwMTctOTA1MAotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODEyMDUKLSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMzYxCi0KLXBhcnNlcjogRml4IGhhbmRsaW5nIG9mIHBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlcwotCi1UaGVyZSB3ZXJlIHR3byBidWdzIHdoZXJlIHBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlcyBjb3VsZCBsZWFkIHRvIGFuCi11bmV4cGVjdGVkIGNoYW5nZSBvZiB0aGUgaW5wdXQgYnVmZmVyIGluIHhtbFBhcnNlTmFtZUNvbXBsZXggYW5kCi14bWxEaWN0TG9va3VwIGJlaW5nIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgcG9pbnRlci4KLQotUGVyY2VudCBzaWduIGluIERURCBOYW1lcwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgTkVYVEwgbWFjcm8gdXNlZCB0byBjYWxsIHhtbFBhcnNlckhhbmRsZVBFUmVmZXJlbmNlLiBXaGVuIHBhcnNpbmcKLSJjb21wbGV4IiBuYW1lcyBpbnNpZGUgdGhlIERURCwgdGhpcyBjb3VsZCByZXN1bHQgaW4gZW50aXR5IGV4cGFuc2lvbgotd2hpY2ggY3JlYXRlZCBhIG5ldyBpbnB1dCBidWZmZXIuIFRoZSBmaXggaXMgdG8gc2ltcGx5IHJlbW92ZSB0aGUgY2FsbAotdG8geG1sUGFyc2VySGFuZGxlUEVSZWZlcmVuY2UgZnJvbSB0aGUgTkVYVEwgbWFjcm8uIFRoaXMgaXMgc2FmZSBiZWNhdXNlCi1ubyB1c2VycyBvZiB0aGUgbWFjcm8gcmVxdWlyZSBleHBhbnNpb24gb2YgcGFyYW1ldGVyIGVudGl0aWVzLgotCi0tIHhtbFBhcnNlTmFtZUNvbXBsZXgKLS0geG1sUGFyc2VOQ05hbWVDb21wbGV4Ci0tIHhtbFBhcnNlTm10b2tlbgotCi1UaGUgcGVyY2VudCBzaWduIGlzIG5vdCBhbGxvd2VkIGluIG5hbWVzLCB3aGljaCBhcmUgZ3JhbW1hdGljYWwgdG9rZW5zLgotCi0tIHhtbFBhcnNlRW50aXR5VmFsdWUKLQotUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzIGluIGVudGl0eSB2YWx1ZXMgYXJlIGV4cGFuZGVkIGJ1dCB0aGlzCi1oYXBwZW5zIGluIGEgc2VwYXJhdGUgc3RlcCBpbiB0aGlzIGZ1bmN0aW9uLgotCi0tIHhtbFBhcnNlU3lzdGVtTGl0ZXJhbAotCi1QYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgYXJlIGlnbm9yZWQgaW4gdGhlIHN5c3RlbSBsaXRlcmFsLgotCi0tIHhtbFBhcnNlQXR0VmFsdWVDb21wbGV4Ci0tIHhtbFBhcnNlQ2hhckRhdGFDb21wbGV4Ci0tIHhtbFBhcnNlQ29tbWVudENvbXBsZXgKLS0geG1sUGFyc2VQSQotLSB4bWxQYXJzZUNEU2VjdAotCi1QYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgYXJlIGlnbm9yZWQgb3V0c2lkZSB0aGUgRFRELgotCi0tIHhtbExvYWRFbnRpdHlDb250ZW50Ci0KLVRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZnJvbSB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcyBhbmQKLWVudGl0aWVzIGFyZSByZXBsYWNlZCBpbiBhIHNlcGFyYXRlIHN0ZXAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZ1bmN0aW9uCi1jYWxsLgotCi1UaGlzIGJ1ZyBjb3VsZCBhbHNvIGJlIHRyaWdnZXJlZCB3aXRoIGFuIGludGVybmFsIHN1YnNldCBhbmQgZG91YmxlCi1lbnRpdHkgZXhwYW5zaW9uLgotCi1UaGlzIGZpeGVzIGJ1ZyA3NjY5NTYgaW5pdGlhbGx5IHJlcG9ydGVkIGJ5IFdlaSBMZWkgYW5kIGluZGVwZW5kZW50bHkgYnkKLUNocm9taXVtJ3MgQ2x1c3RlckZ1enosIEhhbm5vIELDtmNrLCBhbmQgTWFyY28gR3Jhc3NpLiBUaGFua3MgdG8gZXZlcnlvbmUKLWludm9sdmVkLgotCi14bWxQYXJzZU5hbWVDb21wbGV4IHdpdGggWE1MX1BBUlNFX09MRDEwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVdoZW4gcGFyc2luZyBOYW1lcyBpbnNpZGUgYW4gZXhwYW5kZWQgcGFyYW1ldGVyIGVudGl0eSB3aXRoIHRoZQotWE1MX1BBUlNFX09MRDEwIG9wdGlvbiwgeG1sUGFyc2VOYW1lQ29tcGxleCB3b3VsZCBjYWxsIHhtbEdST1cgdmlhIHRoZQotR1JPVyBtYWNybyBpZiB0aGUgaW5wdXQgYnVmZmVyIHdhcyBleGhhdXN0ZWQuIEF0IHRoZSBlbmQgb2YgdGhlCi1wYXJhbWV0ZXIgZW50aXR5J3MgcmVwbGFjZW1lbnQgdGV4dCwgdGhpcyBmdW5jdGlvbiB3b3VsZCB0aGVuIGNhbGwKLXhtbFBvcElucHV0IHdoaWNoIGludmFsaWRhdGVkIHRoZSBpbnB1dCBidWZmZXIuCi0KLVRoZXJlIHNob3VsZCBiZSBubyBuZWVkIHRvIGludm9rZSBHUk9XIGluIHRoaXMgc2l0dWF0aW9uIGJlY2F1c2UgdGhlCi1idWZmZXIgaXMgZ3Jvd24gcGVyaW9kaWNhbGx5IGV2ZXJ5IFhNTF9QQVJTRVJfQ0hVTktfU0laRSBjaGFyYWN0ZXJzIGFuZCwKLWF0IGxlYXN0IGZvciBVVEYtOCwgaW4geG1sQ3VycmVudENoYXIuIFRoaXMgYWxzbyBtYXRjaGVzIHRoZSBjb2RlIHBhdGgKLWV4ZWN1dGVkIHdoZW4gWE1MX1BBUlNFX09MRDEwIGlzIG5vdCBzZXQuCi0KLVRoaXMgZml4ZXMgYnVncyA3ODEyMDUgKENWRS0yMDE3LTkwNDkpIGFuZCA3ODEzNjEgKENWRS0yMDE3LTkwNTApLgotVGhhbmtzIHRvIE1hcmNlbCBCw7ZobWUgYW5kIFRodWFuIFBoYW0gZm9yIHRoZSByZXBvcnQuCi0KLUFkZGl0aW9uYWwgaGFyZGVuaW5nCi09PT09PT09PT09PT09PT09PT09PQotCi1BIHNlcGFyYXRlIGNoZWNrIHdhcyBhZGRlZCBpbiB4bWxQYXJzZU5hbWVDb21wbGV4IHRvIHZhbGlkYXRlIHRoZQotYnVmZmVyIHNpemUuCi0KLUZpeGVzIGJ1ZyA3ODEyMDUgYW5kIGJ1ZyA3ODEzNjEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTMyY2M5ODk2YWI0MTQ3NWQ0YWE0MjljMjdkOWFmZDE3NTk1OWQ3NF0KLUNWRTogQ1ZFLTIwMTctOTA0OSBDVkUtMjAxNy05MDUwCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDlmOTg4YjAuLmRhYjE1YTQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00MjIsNiArNDIyLDI0IEBAIEVycnRlc3RzIDogeG1sbGludCQoRVhFRVhUKQotIAkgICAgICBpZiBbIC1uICIkJGxvZyIgXSA7IHRoZW4gZWNobyAkJG5hbWUgcmVzdWx0IDsgZWNobyAkJGxvZyA7IGZpIDsgXAotIAkgICAgICBybSByZXN1bHQuJCRuYW1lIGVycm9yLiQkbmFtZSA7IFwKLSAJICBmaSA7IGZpIDsgZG9uZSkKLSsJQGVjaG8gIiMjIEVycm9yIGNhc2VzIHJlZ3Jlc3Npb24gdGVzdHMgKG9sZCAxLjApIgotKwktQChmb3IgaSBpbiAkKHNyY2RpcikvdGVzdC9lcnJvcnMxMC8qLnhtbCA7IGRvIFwKLSsJICBuYW1lPWBiYXNlbmFtZSAkJGlgOyBcCi0rCSAgaWYgWyAhIC1kICQkaSBdIDsgdGhlbiBcCi0rCSAgaWYgWyAhIC1mICQoc3JjZGlyKS9yZXN1bHQvZXJyb3JzMTAvJCRuYW1lIF0gOyB0aGVuIFwKLSsJICAgICAgZWNobyBOZXcgdGVzdCBmaWxlICQkbmFtZSA7IFwKLSsJICAgICAgJChDSEVDS0VSKSAkKHRvcF9idWlsZGRpcikveG1sbGludCAtLW9sZHhtbDEwICQkaSBcCi0rCSAgICAgICAgIDI+ICQoc3JjZGlyKS9yZXN1bHQvZXJyb3JzMTAvJCRuYW1lLmVyciBcCi0rCQkgPiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZSA7IFwKLSsJICAgICAgZ3JlcCAiTU9SWSBBTExPIiAubWVtZHVtcCAgfCBncmVwIC12ICJNRU1PUlkgQUxMT0NBVEVEIDogMCI7IFwKLSsJICBlbHNlIFwKLSsJICAgICAgbG9nPWAkKENIRUNLRVIpICQodG9wX2J1aWxkZGlyKS94bWxsaW50IC0tb2xkeG1sMTAgJCRpIDI+IGVycm9yLiQkbmFtZSA+IHJlc3VsdC4kJG5hbWUgOyBcCi0rCSAgICAgIGdyZXAgIk1PUlkgQUxMTyIgLm1lbWR1bXAgIHwgZ3JlcCAtdiAiTUVNT1JZIEFMTE9DQVRFRCA6IDAiOyBcCi0rCSAgICAgIGRpZmYgJChzcmNkaXIpL3Jlc3VsdC9lcnJvcnMxMC8kJG5hbWUgcmVzdWx0LiQkbmFtZSA7IFwKLSsJICAgICAgZGlmZiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZS5lcnIgZXJyb3IuJCRuYW1lYCA7IFwKLSsJICAgICAgaWYgWyAtbiAiJCRsb2ciIF0gOyB0aGVuIGVjaG8gJCRuYW1lIHJlc3VsdCA7IGVjaG8gIiQkbG9nIiA7IGZpIDsgXAotKwkgICAgICBybSByZXN1bHQuJCRuYW1lIGVycm9yLiQkbmFtZSA7IFwKLSsJICBmaSA7IGZpIDsgZG9uZSkKLSAJQGVjaG8gIiMjIEVycm9yIGNhc2VzIHN0cmVhbSByZWdyZXNzaW9uIHRlc3RzIgotIAktQChmb3IgaSBpbiAkKHNyY2RpcikvdGVzdC9lcnJvcnMvKi54bWwgOyBkbyBcCi0gCSAgbmFtZT1gYmFzZW5hbWUgJCRpYDsgXAotZGlmZiAtLWdpdCBhL3BhcnNlci5jIGIvcGFyc2VyLmMKLWluZGV4IDYwOWEyNzAuLjhlMTFjMTIgMTAwNjQ0Ci0tLS0gYS9wYXJzZXIuYwotKysrIGIvcGFyc2VyLmMKLUBAIC0yMTE1LDcgKzIxMTUsNiBAQCBzdGF0aWMgdm9pZCB4bWxHUk9XICh4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAJY3R4dC0+aW5wdXQtPmxpbmUrKzsgY3R4dC0+aW5wdXQtPmNvbCA9IDE7CQkJXAotICAgICB9IGVsc2UgY3R4dC0+aW5wdXQtPmNvbCsrOwkJCQkJCVwKLSAgICAgY3R4dC0+aW5wdXQtPmN1ciArPSBsOwkJCQlcCi0tICAgIGlmICgqY3R4dC0+aW5wdXQtPmN1ciA9PSAnJScpIHhtbFBhcnNlckhhbmRsZVBFUmVmZXJlbmNlKGN0eHQpOwlcCi0gICB9IHdoaWxlICgwKQotIAotICNkZWZpbmUgQ1VSX0NIQVIobCkgeG1sQ3VycmVudENoYXIoY3R4dCwgJmwpCi1AQCAtMzQwNiwxMyArMzQwNSw2IEBAIHhtbFBhcnNlTmFtZUNvbXBsZXgoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCSAgICBsZW4gKz0gbDsKLSAJICAgIE5FWFRMKGwpOwotIAkgICAgYyA9IENVUl9DSEFSKGwpOwotLQkgICAgaWYgKGMgPT0gMCkgewotLQkJY291bnQgPSAwOwotLQkJR1JPVzsKLS0gICAgICAgICAgICAgICAgaWYgKGN0eHQtPmluc3RhdGUgPT0gWE1MX1BBUlNFUl9FT0YpCi0tICAgICAgICAgICAgICAgICAgICByZXR1cm4oTlVMTCk7Ci0tCQljID0gQ1VSX0NIQVIobCk7Ci0tCSAgICB9Ci0gCX0KLSAgICAgfQotICAgICBpZiAoKGxlbiA+IFhNTF9NQVhfTkFNRV9MRU5HVEgpICYmCi1AQCAtMzQyMCw2ICszNDEyLDE2IEBAIHhtbFBhcnNlTmFtZUNvbXBsZXgoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gICAgICAgICB4bWxGYXRhbEVycihjdHh0LCBYTUxfRVJSX05BTUVfVE9PX0xPTkcsICJOYW1lIik7Ci0gICAgICAgICByZXR1cm4oTlVMTCk7Ci0gICAgIH0KLSsgICAgaWYgKGN0eHQtPmlucHV0LT5jdXIgLSBjdHh0LT5pbnB1dC0+YmFzZSA8IGxlbikgewotKyAgICAgICAgLyoKLSsgICAgICAgICAqIFRoZXJlIHdlcmUgYSBjb3VwbGUgb2YgYnVncyB3aGVyZSBQRVJlZnMgbGVhZCB0byB0byBhIGNoYW5nZQotKyAgICAgICAgICogb2YgdGhlIGJ1ZmZlci4gQ2hlY2sgdGhlIGJ1ZmZlciBzaXplIHRvIGF2b2lkIHBhc3NpbmcgYW4gaW52YWxpZAotKyAgICAgICAgICogcG9pbnRlciB0byB4bWxEaWN0TG9va3VwLgotKyAgICAgICAgICovCi0rICAgICAgICB4bWxGYXRhbEVycihjdHh0LCBYTUxfRVJSX0lOVEVSTkFMX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgY2hhbmdlIG9mIGlucHV0IGJ1ZmZlciIpOwotKyAgICAgICAgcmV0dXJuIChOVUxMKTsKLSsgICAgfQotICAgICBpZiAoKCpjdHh0LT5pbnB1dC0+Y3VyID09ICdcbicpICYmIChjdHh0LT5pbnB1dC0+Y3VyWy0xXSA9PSAnXHInKSkKLSAgICAgICAgIHJldHVybih4bWxEaWN0TG9va3VwKGN0eHQtPmRpY3QsIGN0eHQtPmlucHV0LT5jdXIgLSAobGVuICsgMSksIGxlbikpOwotICAgICByZXR1cm4oeG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBjdHh0LT5pbnB1dC0+Y3VyIC0gbGVuLCBsZW4pKTsKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbCBiL3Jlc3VsdC9lcnJvcnMxMC83ODEyMDUueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMxMC83ODEyMDUueG1sLmVyciBiL3Jlc3VsdC9lcnJvcnMxMC83ODEyMDUueG1sLmVycgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRhMTVjM2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC9lcnJvcnMxMC83ODEyMDUueG1sLmVycgotQEAgLTAsMCArMSwyMSBAQAotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBpbnRlcm5hbCBlcnJvcjogeG1sUGFyc2VJbnRlcm5hbFN1YnNldDogZXJyb3IgZGV0ZWN0ZWQgaW4gTWFya3VwIGRlY2xhcmF0aW9uCi0rCi0rICVhOyAKLSsgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSs8OjAwMDAKLSteCi0rRW50aXR5OiBsaW5lIDE6IHBhcnNlciBlcnJvciA6IERPQ1RZUEUgaW1wcm9wZXJseSB0ZXJtaW5hdGVkCi0rICVhOyAKLSsgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSs8OjAwMDAKLSteCi0rbmFtZXNwYWNlIGVycm9yIDogRmFpbGVkIHRvIHBhcnNlIFFOYW1lICc6MDAwMCcKLSsgJWE7IAotKyAgICBeCi0rPDowMDAwCi0rICAgICAgXgotKy4vdGVzdC9lcnJvcnMxMC83ODEyMDUueG1sOjQ6IHBhcnNlciBlcnJvciA6IENvdWxkbid0IGZpbmQgZW5kIG9mIFN0YXJ0IFRhZyA6MDAwMCBsaW5lIDEKLSsKLSteCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMzYxLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzMTAvNzgxMzYxLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMzYxLnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NTVmNDFhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMzYxLnhtbC5lcnIKLUBAIC0wLDAgKzEsMTMgQEAKLSsuL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbDo0OiBwYXJzZXIgZXJyb3IgOiB4bWxQYXJzZUVsZW1lbnREZWNsOiAnRU1QVFknLCAnQU5ZJyBvciAnKCcgZXhwZWN0ZWQKLSsKLSteCi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogaW50ZXJuYWwgZXJyb3I6IHhtbFBhcnNlSW50ZXJuYWxTdWJzZXQ6IGVycm9yIGRldGVjdGVkIGluIE1hcmt1cCBkZWNsYXJhdGlvbgotKwotKwotK14KLSsuL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbDo0OiBwYXJzZXIgZXJyb3IgOiBET0NUWVBFIGltcHJvcGVybHkgdGVybWluYXRlZAotKwotK14KLSsuL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbDo0OiBwYXJzZXIgZXJyb3IgOiBTdGFydCB0YWcgZXhwZWN0ZWQsICc8JyBub3QgZm91bmQKLSsKLSteCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwgYi9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIgYi9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zNGIxZGFlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIKLUBAIC0wLDAgKzEsOSBAQAotK3Rlc3QvdmFsaWQvZHRkcy83NjY5NTYuZHRkOjI6IHBhcnNlciBlcnJvciA6IFBFUmVmZXJlbmNlOiBleHBlY3RpbmcgJzsnCi0rJcOkJWVudDsKLSsgICBeCi0rRW50aXR5OiBsaW5lIDE6IHBhcnNlciBlcnJvciA6IENvbnRlbnQgZXJyb3IgaW4gdGhlIGV4dGVybmFsIHN1YnNldAotKyAlZW50OyAKLSsgICAgICBeCi0rRW50aXR5OiBsaW5lIDE6IAotK3ZhbHVlCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83NjY5NTYueG1sLmVyci5yZHIgYi9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIucmRyCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzc2MDM0NgotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyLnJkcgotQEAgLTAsMCArMSwxMCBAQAotK3Rlc3QvdmFsaWQvZHRkcy83NjY5NTYuZHRkOjI6IHBhcnNlciBlcnJvciA6IFBFUmVmZXJlbmNlOiBleHBlY3RpbmcgJzsnCi0rJcOkJWVudDsKLSsgICBeCi0rRW50aXR5OiBsaW5lIDE6IHBhcnNlciBlcnJvciA6IENvbnRlbnQgZXJyb3IgaW4gdGhlIGV4dGVybmFsIHN1YnNldAotKyAlZW50OyAKLSsgICAgICBeCi0rRW50aXR5OiBsaW5lIDE6IAotK3ZhbHVlCi0rXgotKy4vdGVzdC92YWxpZC83NjY5NTYueG1sIDogZmFpbGVkIHRvIHBhcnNlCi1kaWZmIC0tZ2l0IGEvcnVudGVzdC5jIGIvcnVudGVzdC5jCi1pbmRleCBiYjc0ZDJhLi42M2U4YzIwIDEwMDY0NAotLS0tIGEvcnVudGVzdC5jCi0rKysgYi9ydW50ZXN0LmMKLUBAIC00MjAyLDYgKzQyMDIsOSBAQCB0ZXN0RGVzYyB0ZXN0RGVzY3JpcHRpb25zW10gPSB7Ci0gICAgIHsgIkVycm9yIGNhc2VzIHJlZ3Jlc3Npb24gdGVzdHMiLAotICAgICAgIGVyclBhcnNlVGVzdCwgIi4vdGVzdC9lcnJvcnMvKi54bWwiLCAicmVzdWx0L2Vycm9ycy8iLCAiIiwgIi5lcnIiLAotICAgICAgIDAgfSwKLSsgICAgeyAiRXJyb3IgY2FzZXMgcmVncmVzc2lvbiB0ZXN0cyAob2xkIDEuMCkiLAotKyAgICAgIGVyclBhcnNlVGVzdCwgIi4vdGVzdC9lcnJvcnMxMC8qLnhtbCIsICJyZXN1bHQvZXJyb3JzMTAvIiwgIiIsICIuZXJyIiwKLSsgICAgICBYTUxfUEFSU0VfT0xEMTAgfSwKLSAjaWZkZWYgTElCWE1MX1JFQURFUl9FTkFCTEVECi0gICAgIHsgIkVycm9yIGNhc2VzIHN0cmVhbSByZWdyZXNzaW9uIHRlc3RzIiwKLSAgICAgICBzdHJlYW1QYXJzZVRlc3QsICIuL3Rlc3QvZXJyb3JzLyoueG1sIiwgInJlc3VsdC9lcnJvcnMvIiwgTlVMTCwgIi5zdHIiLAotZGlmZiAtLWdpdCBhL3Rlc3QvZXJyb3JzMTAvNzgxMjA1LnhtbCBiL3Rlc3QvZXJyb3JzMTAvNzgxMjA1LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ5ZTllODMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvZXJyb3JzMTAvNzgxMjA1LnhtbAotQEAgLTAsMCArMSwzIEBACi0rPCFET0NUWVBFIEQgWwotKyAgPCFFTlRJVFkgJSBhICI8OjAwMDAiPgotKyAgJWE7Ci1kaWZmIC0tZ2l0IGEvdGVzdC9lcnJvcnMxMC83ODEzNjEueG1sIGIvdGVzdC9lcnJvcnMxMC83ODEzNjEueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjc0NzZiYwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC9lcnJvcnMxMC83ODEzNjEueG1sCi1AQCAtMCwwICsxLDMgQEAKLSs8IURPQ1RZUEUgZG9jIFsKLSsgIDwhRU5USVRZICUgZWxlbSAiPCFFTEVNRU5UIGUwMDAwMDAwMDAwIj4KLSsgICVlbGVtOwotZGlmZiAtLWdpdCBhL3Rlc3QvdmFsaWQvNzY2OTU2LnhtbCBiL3Rlc3QvdmFsaWQvNzY2OTU2LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE5YTk1YTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvdmFsaWQvNzY2OTU2LnhtbAotQEAgLTAsMCArMSwyIEBACi0rPCFET0NUWVBFIHRlc3QgU1lTVEVNICJkdGRzLzc2Njk1Ni5kdGQiPgotKzx0ZXN0Lz4KLWRpZmYgLS1naXQgYS90ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZCBiL3Rlc3QvdmFsaWQvZHRkcy83NjY5NTYuZHRkCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGRkZGU2OAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC92YWxpZC9kdGRzLzc2Njk1Ni5kdGQKLUBAIC0wLDAgKzEsMiBAQAotKzwhRU5USVRZICUgZW50ICJ2YWx1ZSI+Ci0rJcOkJWVudDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X05VTExfcG9pbnRlcl9kZXJlZnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MGUzMmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X05VTExfcG9pbnRlcl9kZXJlZnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1saWJ4bWwyLTIuOS40OiBGaXggbW9yZSBOVUxMIHBvaW50ZXIgZGVyZWZzCi0KLXhwb2ludGVyOiBGaXggbW9yZSBOVUxMIHBvaW50ZXIgZGVyZWZzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWU5MDVmMDgxMjNlNGE2ZTc3MzE1NDllNmYwOWRhZGZmNGNhYjY1YmRdCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3hwb2ludGVyLmMgYi94cG9pbnRlci5jCi1pbmRleCA2NzZjNTEwLi4wNzRkYjI0IDEwMDY0NAotLS0tIGEveHBvaW50ZXIuYwotKysrIGIveHBvaW50ZXIuYwotQEAgLTU1NSw3ICs1NTUsNyBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotIAkgICAgLyoKLSAJICAgICAqIEVtcHR5IHNldCAuLi4KLSAJICAgICAqLwotLQkgICAgaWYgKGVuZC0+bm9kZXNldHZhbC0+bm9kZU5yIDw9IDApCi0rCSAgICBpZiAoKGVuZC0+bm9kZXNldHZhbCA9PSBOVUxMKSB8fCAoZW5kLT5ub2Rlc2V0dmFsLT5ub2RlTnIgPD0gMCkpCi0gCQlyZXR1cm4oTlVMTCk7Ci0gCSAgICBicmVhazsKLSAJZGVmYXVsdDoKLUBAIC0xNDAwLDcgKzE0MDAsNyBAQCB4bWxYUHRyRXZhbChjb25zdCB4bWxDaGFyICpzdHIsIHhtbFhQYXRoQ29udGV4dFB0ciBjdHgpIHsKLSAJCSAgICAgKi8KLSAJCSAgICB4bWxOb2RlU2V0UHRyIHNldDsKLSAJCSAgICBzZXQgPSB0bXAtPm5vZGVzZXR2YWw7Ci0tCQkgICAgaWYgKChzZXQtPm5vZGVOciAhPSAxKSB8fAotKwkJICAgIGlmICgoc2V0ID09IE5VTEwpIHx8IChzZXQtPm5vZGVOciAhPSAxKSB8fAotIAkJCShzZXQtPm5vZGVUYWJbMF0gIT0gKHhtbE5vZGVQdHIpIGN0eC0+ZG9jKSkKLSAJCQlzdGFjaysrOwotIAkJfSBlbHNlCi1AQCAtMjA3Myw5ICsyMDczLDExIEBAIHhtbFhQdHJSYW5nZUZ1bmN0aW9uKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCBpbnQgbmFyZ3MpIHsKLSAJeG1sWFBhdGhGcmVlT2JqZWN0KHNldCk7Ci0gICAgICAgICBYUF9FUlJPUihYUEFUSF9NRU1PUllfRVJST1IpOwotICAgICB9Ci0tICAgIGZvciAoaSA9IDA7aSA8IG9sZHNldC0+bG9jTnI7aSsrKSB7Ci0tCXhtbFhQdHJMb2NhdGlvblNldEFkZChuZXdzZXQsCi0tCQl4bWxYUHRyQ292ZXJpbmdSYW5nZShjdHh0LCBvbGRzZXQtPmxvY1RhYltpXSkpOwotKyAgICBpZiAob2xkc2V0ICE9IE5VTEwpIHsKLSsJZm9yIChpID0gMDtpIDwgb2xkc2V0LT5sb2NOcjtpKyspIHsKLSsJICB4bWxYUHRyTG9jYXRpb25TZXRBZGQobmV3c2V0LAotKwkJICB4bWxYUHRyQ292ZXJpbmdSYW5nZShjdHh0LCBvbGRzZXQtPmxvY1RhYltpXSkpOwotKyAgICAgIH0KLSAgICAgfQotIAotICAgICAvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X2FuZF9zaW1wbGlmeV94bWxQYXJzZVN0YXJ0VGFnMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9hbmRfc2ltcGxpZnlfeG1sUGFyc2VTdGFydFRhZzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTU3NzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X2FuZF9zaW1wbGlmeV94bWxQYXJzZVN0YXJ0VGFnMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MCArMCwwIEBACi1saWJ4bWwyLTIuOS40OiBBdm9pZCByZXBhcnNpbmcgYW5kIHNpbXBsaWZ5IGNvbnRyb2wgZmxvdyBpbiB4bWxQYXJzZVN0YXJ0VGFnMgotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddCi0KLXBhcnNlcjogQXZvaWQgcmVwYXJzaW5nIGluIHhtbFBhcnNlU3RhcnRUYWcyCi0KLVRoZSBjb2RlIGluIHhtbFBhcnNlU3RhcnRUYWcyIG11c3QgaGFuZGxlIHRoZSBjYXNlIHRoYXQgdGhlIGlucHV0Ci1idWZmZXIgd2FzIGdyb3duIGFuZCByZWFsbG9jYXRlZCB3aGljaCBjYW4gaW52YWxpZGF0ZSBwb2ludGVycyB0bwotYXR0cmlidXRlIHZhbHVlcy4gQmVmb3JlLCB0aGlzIHdhcyBoYW5kbGVkIGJ5IGRldGVjdGluZyBjaGFuZ2VzIG9mCi10aGUgaW5wdXQgYnVmZmVyICJiYXNlIiBwb2ludGVyIGFuZCwgaW4gY2FzZSBvZiBhIGNoYW5nZSwganVtcGluZwotYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiBhbmQgcmVwYXJzaW5nIHRoZSBzdGFydCB0YWcuCi0KLVRoZSBtYWpvciBwcm9ibGVtIG9mIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCB3aGV0aGVyIGFuIGlucHV0IGJ1ZmZlciBpcwotcmVhbGxvY2F0ZWQgaXMgbm9uZGV0ZXJtaW5pc3RpYywgcmVzdWx0aW5nIGluIHNlZW1pbmdseSByYW5kb20gdGVzdAotZmFpbHVyZXMuIFNlZSB0aGUgbWFpbGluZyBsaXN0IHRocmVhZCAicnVudGVzdCBteXN0ZXJ5IGJ1ZzogbmFtZTIueG1sCi1lcnJvciBjYXNlIHJlZ3Jlc3Npb24gdGVzdCIgZnJvbSAyMDEyLCBmb3IgZXhhbXBsZS4KLQotSWYgYSByZWFsbG9jYXRpb24gd2FzIGRldGVjdGVkLCB0aGUgY29kZSBhbHNvIG1hZGUgbm8gYXR0ZW1wdHMgdG8KLWNvbnRpbnVlIHBhcnNpbmcgaW4gY2FzZSBvZiBlcnJvcnMgd2hpY2ggbWFrZXMgYSBkaWZmZXJlbmNlIGluCi10aGUgbGF4ICJyZWNvdmVyIiBtb2RlLgotCi1Ob3cgd2Ugc3RvcmUgdGhlIGN1cnJlbnQgaW5wdXQgYnVmZmVyICJiYXNlIiBwb2ludGVyIGZvciBlYWNoIChub3QKLXNlcGFyYXRlbHkgYWxsb2NhdGVkKSBhdHRyaWJ1dGUgaW4gdGhlIG5hbWVzcGFjZSBVUkkgZmllbGQsIHdoaWNoIGlzbid0Ci11c2VkIHVudGlsIGxhdGVyLiBBZnRlciB0aGUgd2hvbGUgc3RhcnQgdGFnIHdhcyBwYXJzZWQsIHRoZSBwb2ludGVycyB0bwotdGhlIGF0dHJpYnV0ZSB2YWx1ZXMgYXJlIHJlY29uc3RydWN0ZWQgdXNpbmcgdGhlIG9mZnNldCBiZXR3ZWVuIHRoZQotbmV3IGFuZCB0aGUgb2xkIGlucHV0IGJ1ZmZlci4gVGhpcyByZWxpZXMgb24gYXJpdGhtZXRpYyBvbiBkYW5nbGluZwotcG9pbnRlcnMgd2hpY2ggaXMgdGVjaG5pY2FsbHkgdW5kZWZpbmVkIGJlaGF2aW9yLiBCdXQgaXQgc2VlbXMgbGlrZQotdGhlIGVhc2llc3QgYW5kIG1vc3QgZWZmaWNpZW50IGZpeCBhbmQgYSBzaW1pbGFyIGFwcHJvYWNoIGlzIHVzZWQgaW4KLXhtbFBhcnNlcklucHV0R3Jvdy4KLQotVGhpcyBjaGFuZ2VzIHRoZSBlcnJvciBvdXRwdXQgb2Ygc2V2ZXJhbCB0ZXN0cywgdHlwaWNhbGx5IG1ha2luZyBpdAotbW9yZSB2ZXJib3NlIGJlY2F1c2Ugd2UgdHJ5IGhhcmRlciB0byBjb250aW51ZSBwYXJzaW5nIGluIGNhc2Ugb2YgZXJyb3JzLgotCi0oQW5vdGhlciBwb3NzaWJsZSBzb2x1dGlvbiBpcyB0byBjaGVjayBub3Qgb25seSB0aGUgImJhc2UiIHBvaW50ZXIKLWJ1dCB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgYnVmZmVyIGFzIHdlbGwuIEJ1dCB0aGlzIHdvdWxkIHJlc3VsdCBpbgotZXZlbiBtb3JlIHJlcGFyc2luZy4pCi0KLVJlbW92ZSBzb21lIGdvdG8gbGFiZWxzIGFuZCBkZWR1cGxpY2F0ZSBhIGJpdCBvZiBjb2RlIGFmdGVyIGhhbmRsaW5nCi1uYW1lc3BhY2VzLgotCi1UaGVyZSB3ZXJlIHR3byBidWdzIHdoZXJlIHBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlcyBjb3VsZCBsZWFkIHRvIGFuCi11bmV4cGVjdGVkIGNoYW5nZSBvZiB0aGUgaW5wdXQgYnVmZmVyIGluIHhtbFBhcnNlTmFtZUNvbXBsZXggYW5kCi14bWxEaWN0TG9va3VwIGJlaW5nIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgcG9pbnRlci4KLQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9MDdiNzQyOGI2OWMzNjg2MTFkMjE1YTE0MGZlNjMwYjJkMWU2MTM0OV0KLSAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD04NTVjMTllZmI3Y2QzMGQ5MjdkNjczYjM2NTg1NjNjNDk1OWNhNmYwXQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCi1pbmRleCA2MDlhMjcwLi43NDAxNmUzIDEwMDY0NAotLS0tIGEvcGFyc2VyLmMKLSsrKyBiL3BhcnNlci5jCi1AQCAtNDMsNiArNDMsNyBAQAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgotICNpbmNsdWRlIDxsaWJ4bWwvdGhyZWFkcy5oPgotICNpbmNsdWRlIDxsaWJ4bWwvZ2xvYmFscy5oPgotQEAgLTkzNzcsOCArOTM3OCw3IEBAIHhtbFBhcnNlU3RhcnRUYWcyKHhtbFBhcnNlckN0eHRQdHIgY3R4dCwgY29uc3QgeG1sQ2hhciAqKnByZWYsCi0gICAgIGNvbnN0IHhtbENoYXIgKiphdHRzID0gY3R4dC0+YXR0czsKLSAgICAgaW50IG1heGF0dHMgPSBjdHh0LT5tYXhhdHRzOwotICAgICBpbnQgbnJhdHRzLCBuYmF0dHMsIG5iZGVmOwotLSAgICBpbnQgaSwgaiwgbmJOcywgYXR0dmFsLCBvbGRsaW5lLCBvbGRjb2wsIGlucHV0TnI7Ci0tICAgIGNvbnN0IHhtbENoYXIgKmJhc2U7Ci0rICAgIGludCBpLCBqLCBuYk5zLCBhdHR2YWw7Ci0gICAgIHVuc2lnbmVkIGxvbmcgY3VyOwotICAgICBpbnQgbnNOciA9IGN0eHQtPm5zTnI7Ci0gCi1AQCAtOTM5MiwxMyArOTM5Miw4IEBAIHhtbFBhcnNlU3RhcnRUYWcyKHhtbFBhcnNlckN0eHRQdHIgY3R4dCwgY29uc3QgeG1sQ2hhciAqKnByZWYsCi0gICAgICAqICAgICAgIFRoZSBTaHJpbmtpbmcgaXMgb25seSBwb3NzaWJsZSBvbmNlIHRoZSBmdWxsIHNldCBvZiBhdHRyaWJ1dGUKLSAgICAgICogICAgICAgY2FsbGJhY2tzIGhhdmUgYmVlbiBkb25lLgotICAgICAgKi8KLS1yZXBhcnNlOgotICAgICBTSFJJTks7Ci0tICAgIGJhc2UgPSBjdHh0LT5pbnB1dC0+YmFzZTsKLSAgICAgY3VyID0gY3R4dC0+aW5wdXQtPmN1ciAtIGN0eHQtPmlucHV0LT5iYXNlOwotLSAgICBpbnB1dE5yID0gY3R4dC0+aW5wdXROcjsKLS0gICAgb2xkbGluZSA9IGN0eHQtPmlucHV0LT5saW5lOwotLSAgICBvbGRjb2wgPSBjdHh0LT5pbnB1dC0+Y29sOwotICAgICBuYmF0dHMgPSAwOwotICAgICBucmF0dHMgPSAwOwotICAgICBuYmRlZiA9IDA7Ci1AQCAtOTQyMiw4ICs5NDE3LDYgQEAgcmVwYXJzZToKLSAgICAgICovCi0gICAgIFNLSVBfQkxBTktTOwotICAgICBHUk9XOwotLSAgICBpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLSAgICAgICAgZ290byBiYXNlX2NoYW5nZWQ7Ci0gCi0gICAgIHdoaWxlICgoKFJBVyAhPSAnPicpICYmCi0gCSAgICgoUkFXICE9ICcvJykgfHwgKE5YVCgxKSAhPSAnPicpKSAmJgotQEAgLTk0MzQsMjAzICs5NDI3LDE3NCBAQCByZXBhcnNlOgotIAotIAlhdHRuYW1lID0geG1sUGFyc2VBdHRyaWJ1dGUyKGN0eHQsIHByZWZpeCwgbG9jYWxuYW1lLAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHJlZml4LCAmYXR0dmFsdWUsICZsZW4sICZhbGxvYyk7Ci0tCWlmICgoY3R4dC0+aW5wdXQtPmJhc2UgIT0gYmFzZSkgfHwgKGlucHV0TnIgIT0gY3R4dC0+aW5wdXROcikpIHsKLS0JICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKQotLQkgICAgICAgIHhtbEZyZWUoYXR0dmFsdWUpOwotLQkgICAgYXR0dmFsdWUgPSBOVUxMOwotLQkgICAgZ290byBiYXNlX2NoYW5nZWQ7Ci0tCX0KLS0gICAgICAgIGlmICgoYXR0bmFtZSAhPSBOVUxMKSAmJiAoYXR0dmFsdWUgIT0gTlVMTCkpIHsKLS0JICAgIGlmIChsZW4gPCAwKSBsZW4gPSB4bWxTdHJsZW4oYXR0dmFsdWUpOwotLSAgICAgICAgICAgIGlmICgoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sbnMpICYmIChhcHJlZml4ID09IE5VTEwpKSB7Ci0tCSAgICAgICAgY29uc3QgeG1sQ2hhciAqVVJMID0geG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBhdHR2YWx1ZSwgbGVuKTsKLS0JCXhtbFVSSVB0ciB1cmk7Ci0tCi0tICAgICAgICAgICAgICAgIGlmIChVUkwgPT0gTlVMTCkgewotLQkJICAgIHhtbEVyck1lbW9yeShjdHh0LCAiZGljdGlvbmFyeSBhbGxvY2F0aW9uIGZhaWx1cmUiKTsKLS0JCSAgICBpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkKLS0JCQl4bWxGcmVlKGF0dHZhbHVlKTsKLS0JCSAgICByZXR1cm4oTlVMTCk7Ci0tCQl9Ci0tICAgICAgICAgICAgICAgIGlmICgqVVJMICE9IDApIHsKLS0JCSAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotLQkJICAgIGlmICh1cmkgPT0gTlVMTCkgewotLQkJCXhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotLQkJCSAgICAgICAgICJ4bWxuczogJyVzJyBpcyBub3QgYSB2YWxpZCBVUklcbiIsCi0tCQkJCQkgICBVUkwsIE5VTEwsIE5VTEwpOwotLQkJICAgIH0gZWxzZSB7Ci0tCQkJaWYgKHVyaS0+c2NoZW1lID09IE5VTEwpIHsKLS0JCQkgICAgeG1sTnNXYXJuKGN0eHQsIFhNTF9XQVJfTlNfVVJJX1JFTEFUSVZFLAotLQkJCQkgICAgICAieG1sbnM6IFVSSSAlcyBpcyBub3QgYWJzb2x1dGVcbiIsCi0tCQkJCSAgICAgIFVSTCwgTlVMTCwgTlVMTCk7Ci0tCQkJfQotLQkJCXhtbEZyZWVVUkkodXJpKTsKLS0JCSAgICB9Ci0tCQkgICAgaWYgKFVSTCA9PSBjdHh0LT5zdHJfeG1sX25zKSB7Ci0tCQkJaWYgKGF0dG5hbWUgIT0gY3R4dC0+c3RyX3htbCkgewotLQkJCSAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICJ4bWwgbmFtZXNwYWNlIFVSSSBjYW5ub3QgYmUgdGhlIGRlZmF1bHQgbmFtZXNwYWNlXG4iLAotLQkJCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJCX0KLS0JCQlnb3RvIHNraXBfZGVmYXVsdF9uczsKLS0JCSAgICB9Ci0tCQkgICAgaWYgKChsZW4gPT0gMjkpICYmCi0tCQkJKHhtbFN0ckVxdWFsKFVSTCwKLS0JCQkJIEJBRF9DQVNUICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpKSkgewotLQkJCXhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICJyZXVzZSBvZiB0aGUgeG1sbnMgbmFtZXNwYWNlIG5hbWUgaXMgZm9yYmlkZGVuXG4iLAotLQkJCQkgTlVMTCwgTlVMTCwgTlVMTCk7Ci0tCQkJZ290byBza2lwX2RlZmF1bHRfbnM7Ci0tCQkgICAgfQotLQkJfQotLQkJLyoKLS0JCSAqIGNoZWNrIHRoYXQgaXQncyBub3QgYSBkZWZpbmVkIG5hbWVzcGFjZQotLQkJICovCi0tCQlmb3IgKGogPSAxO2ogPD0gbmJOcztqKyspCi0tCQkgICAgaWYgKGN0eHQtPm5zVGFiW2N0eHQtPm5zTnIgLSAyICogal0gPT0gTlVMTCkKLS0JCQlicmVhazsKLS0JCWlmIChqIDw9IG5iTnMpCi0tCQkgICAgeG1sRXJyQXR0cmlidXRlRHVwKGN0eHQsIE5VTEwsIGF0dG5hbWUpOwotLQkJZWxzZQotLQkJICAgIGlmIChuc1B1c2goY3R4dCwgTlVMTCwgVVJMKSA+IDApIG5iTnMrKzsKLS1za2lwX2RlZmF1bHRfbnM6Ci0tCQlpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkgewotLQkJICAgIHhtbEZyZWUoYXR0dmFsdWUpOwotLQkJICAgIGF0dHZhbHVlID0gTlVMTDsKLS0JCX0KLS0JCWlmICgoUkFXID09ICc+JykgfHwgKCgoUkFXID09ICcvJykgJiYgKE5YVCgxKSA9PSAnPicpKSkpCi0tCQkgICAgYnJlYWs7Ci0tCQlpZiAoIUlTX0JMQU5LX0NIKFJBVykpIHsKLS0JCSAgICB4bWxGYXRhbEVyck1zZyhjdHh0LCBYTUxfRVJSX1NQQUNFX1JFUVVJUkVELAotLQkJCQkgICAiYXR0cmlidXRlcyBjb25zdHJ1Y3QgZXJyb3JcbiIpOwotLQkJICAgIGJyZWFrOwotLQkJfQotLQkJU0tJUF9CTEFOS1M7Ci0tCQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLQkJICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotLQkJY29udGludWU7Ci0tCSAgICB9Ci0tICAgICAgICAgICAgaWYgKGFwcmVmaXggPT0gY3R4dC0+c3RyX3htbG5zKSB7Ci0tCSAgICAgICAgY29uc3QgeG1sQ2hhciAqVVJMID0geG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBhdHR2YWx1ZSwgbGVuKTsKLS0JCXhtbFVSSVB0ciB1cmk7Ci0tCi0tICAgICAgICAgICAgICAgIGlmIChhdHRuYW1lID09IGN0eHQtPnN0cl94bWwpIHsKLS0JCSAgICBpZiAoVVJMICE9IGN0eHQtPnN0cl94bWxfbnMpIHsKLS0JCSAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAgICAgICAgICJ4bWwgbmFtZXNwYWNlIHByZWZpeCBtYXBwZWQgdG8gd3JvbmcgVVJJXG4iLAotLQkJCSAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJICAgIH0KLS0JCSAgICAvKgotLQkJICAgICAqIERvIG5vdCBrZWVwIGEgbmFtZXNwYWNlIGRlZmluaXRpb24gbm9kZQotLQkJICAgICAqLwotLQkJICAgIGdvdG8gc2tpcF9uczsKLS0JCX0KLSsgICAgICAgIGlmICgoYXR0bmFtZSA9PSBOVUxMKSB8fCAoYXR0dmFsdWUgPT0gTlVMTCkpCi0rICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rCWlmIChsZW4gPCAwKSBsZW4gPSB4bWxTdHJsZW4oYXR0dmFsdWUpOwotKwotKyAgICAgICAgaWYgKChhdHRuYW1lID09IGN0eHQtPnN0cl94bWxucykgJiYgKGFwcmVmaXggPT0gTlVMTCkpIHsKLSsgICAgICAgICAgICBjb25zdCB4bWxDaGFyICpVUkwgPSB4bWxEaWN0TG9va3VwKGN0eHQtPmRpY3QsIGF0dHZhbHVlLCBsZW4pOwotKyAgICAgICAgICAgIHhtbFVSSVB0ciB1cmk7Ci0rCi0rICAgICAgICAgICAgaWYgKFVSTCA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIHhtbEVyck1lbW9yeShjdHh0LCAiZGljdGlvbmFyeSBhbGxvY2F0aW9uIGZhaWx1cmUiKTsKLSsgICAgICAgICAgICAgICAgaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpCi0rICAgICAgICAgICAgICAgICAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuKE5VTEwpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoKlVSTCAhPSAwKSB7Ci0rICAgICAgICAgICAgICAgIHVyaSA9IHhtbFBhcnNlVVJJKChjb25zdCBjaGFyICopIFVSTCk7Ci0rICAgICAgICAgICAgICAgIGlmICh1cmkgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX1dBUl9OU19VUkksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAodXJpLT5zY2hlbWUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbE5zV2FybihjdHh0LCBYTUxfV0FSX05TX1VSSV9SRUxBVElWRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiBVUkkgJXMgaXMgbm90IGFic29sdXRlXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZVVSSSh1cmkpOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmIChVUkwgPT0gY3R4dC0+c3RyX3htbF9ucykgewotLQkJICAgIGlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLS0JCSAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAgICAgICAgICJ4bWwgbmFtZXNwYWNlIFVSSSBtYXBwZWQgdG8gd3JvbmcgcHJlZml4XG4iLAotLQkJCSAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJICAgIH0KLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0tICAgICAgICAgICAgICAgIGlmIChhdHRuYW1lID09IGN0eHQtPnN0cl94bWxucykgewotLQkJICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICJyZWRlZmluaXRpb24gb2YgdGhlIHhtbG5zIHByZWZpeCBpcyBmb3JiaWRkZW5cbiIsCi0tCQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0tCQlpZiAoKGxlbiA9PSAyOSkgJiYKLS0JCSAgICAoeG1sU3RyRXF1YWwoVVJMLAotLQkJICAgICAgICAgICAgICAgICBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLS0JCSAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICAgICAicmV1c2Ugb2YgdGhlIHhtbG5zIG5hbWVzcGFjZSBuYW1lIGlzIGZvcmJpZGRlblxuIiwKLS0JCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJICAgIGdvdG8gc2tpcF9uczsKLS0JCX0KLS0JCWlmICgoVVJMID09IE5VTEwpIHx8IChVUkxbMF0gPT0gMCkpIHsKLS0JCSAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkgICAgICAgICAgICAgInhtbG5zOiVzOiBFbXB0eSBYTUwgbmFtZXNwYWNlIGlzIG5vdCBhbGxvd2VkXG4iLAotLQkJCSAgICAgICAgICBhdHRuYW1lLCBOVUxMLCBOVUxMKTsKLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9IGVsc2UgewotLQkJICAgIHVyaSA9IHhtbFBhcnNlVVJJKChjb25zdCBjaGFyICopIFVSTCk7Ci0tCQkgICAgaWYgKHVyaSA9PSBOVUxMKSB7Ci0tCQkJeG1sTnNFcnIoY3R4dCwgWE1MX1dBUl9OU19VUkksCi0tCQkJICAgICAieG1sbnM6JXM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotLQkJCQkJICAgYXR0bmFtZSwgVVJMLCBOVUxMKTsKLS0JCSAgICB9IGVsc2UgewotLQkJCWlmICgoY3R4dC0+cGVkYW50aWMpICYmICh1cmktPnNjaGVtZSA9PSBOVUxMKSkgewotLQkJCSAgICB4bWxOc1dhcm4oY3R4dCwgWE1MX1dBUl9OU19VUklfUkVMQVRJVkUsCi0tCQkJCSAgICAgICJ4bWxuczolczogVVJJICVzIGlzIG5vdCBhYnNvbHV0ZVxuIiwKLS0JCQkJICAgICAgYXR0bmFtZSwgVVJMLCBOVUxMKTsKLS0JCQl9Ci0tCQkJeG1sRnJlZVVSSSh1cmkpOwotLQkJICAgIH0KLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBjaGVjayB0aGF0IGl0J3Mgbm90IGEgZGVmaW5lZCBuYW1lc3BhY2UKLS0JCSAqLwotLQkJZm9yIChqID0gMTtqIDw9IG5iTnM7aisrKQotLQkJICAgIGlmIChjdHh0LT5uc1RhYltjdHh0LT5uc05yIC0gMiAqIGpdID09IGF0dG5hbWUpCi0tCQkJYnJlYWs7Ci0tCQlpZiAoaiA8PSBuYk5zKQotLQkJICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBhcHJlZml4LCBhdHRuYW1lKTsKLS0JCWVsc2UKLS0JCSAgICBpZiAobnNQdXNoKGN0eHQsIGF0dG5hbWUsIFVSTCkgPiAwKSBuYk5zKys7Ci0tc2tpcF9uczoKLS0JCWlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKSB7Ci0tCQkgICAgeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCQkgICAgYXR0dmFsdWUgPSBOVUxMOwotLQkJfQotLQkJaWYgKChSQVcgPT0gJz4nKSB8fCAoKChSQVcgPT0gJy8nKSAmJiAoTlhUKDEpID09ICc+JykpKSkKLS0JCSAgICBicmVhazsKLS0JCWlmICghSVNfQkxBTktfQ0goUkFXKSkgewotLQkJICAgIHhtbEZhdGFsRXJyTXNnKGN0eHQsIFhNTF9FUlJfU1BBQ0VfUkVRVUlSRUQsCi0tCQkJCSAgICJhdHRyaWJ1dGVzIGNvbnN0cnVjdCBlcnJvclxuIik7Ci0tCQkgICAgYnJlYWs7Ci0tCQl9Ci0tCQlTS0lQX0JMQU5LUzsKLS0JCWlmICgoY3R4dC0+aW5wdXQtPmJhc2UgIT0gYmFzZSkgfHwgKGlucHV0TnIgIT0gY3R4dC0+aW5wdXROcikpCi0tCQkgICAgZ290byBiYXNlX2NoYW5nZWQ7Ci0tCQljb250aW51ZTsKLS0JICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIGlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgInhtbCBuYW1lc3BhY2UgVVJJIGNhbm5vdCBiZSB0aGUgZGVmYXVsdCBuYW1lc3BhY2VcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBpZiAoKGxlbiA9PSAyOSkgJiYKLSsgICAgICAgICAgICAgICAgICAgICh4bWxTdHJFcXVhbChVUkwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgInJldXNlIG9mIHRoZSB4bWxucyBuYW1lc3BhY2UgbmFtZSBpcyBmb3JiaWRkZW5cbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogY2hlY2sgdGhhdCBpdCdzIG5vdCBhIGRlZmluZWQgbmFtZXNwYWNlCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgZm9yIChqID0gMTtqIDw9IG5iTnM7aisrKQotKyAgICAgICAgICAgICAgICBpZiAoY3R4dC0+bnNUYWJbY3R4dC0+bnNOciAtIDIgKiBqXSA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgaWYgKGogPD0gbmJOcykKLSsgICAgICAgICAgICAgICAgeG1sRXJyQXR0cmlidXRlRHVwKGN0eHQsIE5VTEwsIGF0dG5hbWUpOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgaWYgKG5zUHVzaChjdHh0LCBOVUxMLCBVUkwpID4gMCkgbmJOcysrOwotKwotKyAgICAgICAgfSBlbHNlIGlmIChhcHJlZml4ID09IGN0eHQtPnN0cl94bWxucykgewotKyAgICAgICAgICAgIGNvbnN0IHhtbENoYXIgKlVSTCA9IHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgYXR0dmFsdWUsIGxlbik7Ci0rICAgICAgICAgICAgeG1sVVJJUHRyIHVyaTsKLSsKLSsgICAgICAgICAgICBpZiAoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChVUkwgIT0gY3R4dC0+c3RyX3htbF9ucykgewotKyAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbCBuYW1lc3BhY2UgcHJlZml4IG1hcHBlZCB0byB3cm9uZyBVUklcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgKiBEbyBub3Qga2VlcCBhIG5hbWVzcGFjZSBkZWZpbml0aW9uIG5vZGUKLSsgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoVVJMID09IGN0eHQtPnN0cl94bWxfbnMpIHsKLSsgICAgICAgICAgICAgICAgaWYgKGF0dG5hbWUgIT0gY3R4dC0+c3RyX3htbCkgewotKyAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbCBuYW1lc3BhY2UgVVJJIG1hcHBlZCB0byB3cm9uZyBwcmVmaXhcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKGF0dG5hbWUgPT0gY3R4dC0+c3RyX3htbG5zKSB7Ci0rICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgInJlZGVmaW5pdGlvbiBvZiB0aGUgeG1sbnMgcHJlZml4IGlzIGZvcmJpZGRlblxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoKGxlbiA9PSAyOSkgJiYKLSsgICAgICAgICAgICAgICAgKHhtbFN0ckVxdWFsKFVSTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBRF9DQVNUICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpKSkgewotKyAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJyZXVzZSBvZiB0aGUgeG1sbnMgbmFtZXNwYWNlIG5hbWUgaXMgZm9yYmlkZGVuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmICgoVVJMID09IE5VTEwpIHx8IChVUkxbMF0gPT0gMCkpIHsKLSsgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnM6JXM6IEVtcHR5IFhNTCBuYW1lc3BhY2UgaXMgbm90IGFsbG93ZWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0bmFtZSwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHVyaSA9IHhtbFBhcnNlVVJJKChjb25zdCBjaGFyICopIFVSTCk7Ci0rICAgICAgICAgICAgICAgIGlmICh1cmkgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX1dBUl9OU19VUkksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxuczolczogJyVzJyBpcyBub3QgYSB2YWxpZCBVUklcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0bmFtZSwgVVJMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmICgoY3R4dC0+cGVkYW50aWMpICYmICh1cmktPnNjaGVtZSA9PSBOVUxMKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbE5zV2FybihjdHh0LCBYTUxfV0FSX05TX1VSSV9SRUxBVElWRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiVzOiBVUkkgJXMgaXMgbm90IGFic29sdXRlXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRuYW1lLCBVUkwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZVVSSSh1cmkpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotIAotLQkgICAgLyoKLS0JICAgICAqIEFkZCB0aGUgcGFpciB0byBhdHRzCi0tCSAgICAgKi8KLS0JICAgIGlmICgoYXR0cyA9PSBOVUxMKSB8fCAobmJhdHRzICsgNSA+IG1heGF0dHMpKSB7Ci0tCSAgICAgICAgaWYgKHhtbEN0eHRHcm93QXR0cnMoY3R4dCwgbmJhdHRzICsgNSkgPCAwKSB7Ci0tCQkgICAgaWYgKGF0dHZhbHVlW2xlbl0gPT0gMCkKLS0JCQl4bWxGcmVlKGF0dHZhbHVlKTsKLS0JCSAgICBnb3RvIGZhaWxlZDsKLS0JCX0KLS0JICAgICAgICBtYXhhdHRzID0gY3R4dC0+bWF4YXR0czsKLS0JCWF0dHMgPSBjdHh0LT5hdHRzOwotLQkgICAgfQotLQkgICAgY3R4dC0+YXR0YWxsb2NzW25yYXR0cysrXSA9IGFsbG9jOwotLQkgICAgYXR0c1tuYmF0dHMrK10gPSBhdHRuYW1lOwotLQkgICAgYXR0c1tuYmF0dHMrK10gPSBhcHJlZml4OwotLQkgICAgYXR0c1tuYmF0dHMrK10gPSBOVUxMOyAvKiB0aGUgVVJJIHdpbGwgYmUgZmV0Y2hlZCBsYXRlciAqLwotLQkgICAgYXR0c1tuYmF0dHMrK10gPSBhdHR2YWx1ZTsKLS0JICAgIGF0dHZhbHVlICs9IGxlbjsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXR0dmFsdWU7Ci0tCSAgICAvKgotLQkgICAgICogdGFnIGlmIHNvbWUgZGVhbGxvY2F0aW9uIGlzIG5lZWRlZAotLQkgICAgICovCi0tCSAgICBpZiAoYWxsb2MgIT0gMCkgYXR0dmFsID0gMTsKLS0JfSBlbHNlIHsKLS0JICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGF0dHZhbHVlW2xlbl0gPT0gMCkpCi0tCQl4bWxGcmVlKGF0dHZhbHVlKTsKLS0JfQotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogY2hlY2sgdGhhdCBpdCdzIG5vdCBhIGRlZmluZWQgbmFtZXNwYWNlCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgZm9yIChqID0gMTtqIDw9IG5iTnM7aisrKQotKyAgICAgICAgICAgICAgICBpZiAoY3R4dC0+bnNUYWJbY3R4dC0+bnNOciAtIDIgKiBqXSA9PSBhdHRuYW1lKQotKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgaWYgKGogPD0gbmJOcykKLSsgICAgICAgICAgICAgICAgeG1sRXJyQXR0cmlidXRlRHVwKGN0eHQsIGFwcmVmaXgsIGF0dG5hbWUpOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgaWYgKG5zUHVzaChjdHh0LCBhdHRuYW1lLCBVUkwpID4gMCkgbmJOcysrOwotKwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIEFkZCB0aGUgcGFpciB0byBhdHRzCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgaWYgKChhdHRzID09IE5VTEwpIHx8IChuYmF0dHMgKyA1ID4gbWF4YXR0cykpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHhtbEN0eHRHcm93QXR0cnMoY3R4dCwgbmJhdHRzICsgNSkgPCAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBtYXhhdHRzID0gY3R4dC0+bWF4YXR0czsKLSsgICAgICAgICAgICAgICAgYXR0cyA9IGN0eHQtPmF0dHM7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGN0eHQtPmF0dGFsbG9jc1tucmF0dHMrK10gPSBhbGxvYzsKLSsgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGF0dG5hbWU7Ci0rICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBhcHJlZml4OwotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogVGhlIG5hbWVzcGFjZSBVUkkgZmllbGQgaXMgdXNlZCB0ZW1wb3JhcmlseSB0byBwb2ludCBhdCB0aGUKLSsgICAgICAgICAgICAgKiBiYXNlIG9mIHRoZSBjdXJyZW50IGlucHV0IGJ1ZmZlciBmb3Igbm9uLWFsbG9jZWQgYXR0cmlidXRlcy4KLSsgICAgICAgICAgICAgKiBXaGVuIHRoZSBpbnB1dCBidWZmZXIgaXMgcmVhbGxvY2F0ZWQsIGFsbCB0aGUgcG9pbnRlcnMgYmVjb21lCi0rICAgICAgICAgICAgICogaW52YWxpZCwgYnV0IHRoZXkgY2FuIGJlIHJlY29uc3RydWN0ZWQgbGF0ZXIuCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgaWYgKGFsbG9jKQotKyAgICAgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IE5VTEw7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGN0eHQtPmlucHV0LT5iYXNlOwotKyAgICAgICAgICAgIGF0dHNbbmJhdHRzKytdID0gYXR0dmFsdWU7Ci0rICAgICAgICAgICAgYXR0dmFsdWUgKz0gbGVuOwotKyAgICAgICAgICAgIGF0dHNbbmJhdHRzKytdID0gYXR0dmFsdWU7Ci0rICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgKiB0YWcgaWYgc29tZSBkZWFsbG9jYXRpb24gaXMgbmVlZGVkCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgaWYgKGFsbG9jICE9IDApIGF0dHZhbCA9IDE7Ci0rICAgICAgICAgICAgYXR0dmFsdWUgPSBOVUxMOyAvKiBtb3ZlZCBpbnRvIGF0dHMgKi8KLSsgICAgICAgIH0KLSAKLS1mYWlsZWQ6Ci0rbmV4dF9hdHRyOgotKyAgICAgICAgaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpIHsKLSsgICAgICAgICAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLSsgICAgICAgICAgICBhdHR2YWx1ZSA9IE5VTEw7Ci0rICAgICAgICB9Ci0gCi0gCUdST1cKLSAgICAgICAgIGlmIChjdHh0LT5pbnN0YXRlID09IFhNTF9QQVJTRVJfRU9GKQotICAgICAgICAgICAgIGJyZWFrOwotLQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLQkgICAgZ290byBiYXNlX2NoYW5nZWQ7Ci0gCWlmICgoUkFXID09ICc+JykgfHwgKCgoUkFXID09ICcvJykgJiYgKE5YVCgxKSA9PSAnPicpKSkpCi0gCSAgICBicmVhazsKLSAJaWYgKCFJU19CTEFOS19DSChSQVcpKSB7Ci1AQCAtOTY0Niw4ICs5NjEwLDIwIEBAIGZhaWxlZDoKLSAJICAgIGJyZWFrOwotIAl9Ci0gICAgICAgICBHUk9XOwotLQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLQkgICAgZ290byBiYXNlX2NoYW5nZWQ7Ci0rICAgIH0KLSsKLSsgICAgLyogUmVjb25zdHJ1Y3QgYXR0cmlidXRlIHZhbHVlIHBvaW50ZXJzLiAqLwotKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaiA8IG5yYXR0czsgaSArPSA1LCBqKyspIHsKLSsgICAgICAgIGlmIChhdHRzW2krMl0gIT0gTlVMTCkgewotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogQXJpdGhtZXRpYyBvbiBkYW5nbGluZyBwb2ludGVycyBpcyB0ZWNobmljYWxseSB1bmRlZmluZWQKLSsgICAgICAgICAgICAgKiBiZWhhdmlvciwgYnV0IHdlbGwuLi4KLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gY3R4dC0+aW5wdXQtPmJhc2UgLSBhdHRzW2krMl07Ci0rICAgICAgICAgICAgYXR0c1tpKzJdICA9IE5VTEw7ICAgIC8qIFJlc2V0IHJlcHVycG9zZWQgbmFtZXNwYWNlIFVSSSAqLwotKyAgICAgICAgICAgIGF0dHNbaSszXSArPSBvZmZzZXQ7ICAvKiB2YWx1ZSAqLwotKyAgICAgICAgICAgIGF0dHNbaSs0XSArPSBvZmZzZXQ7ICAvKiB2YWx1ZW5kICovCi0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgLyoKLUBAIC05ODA0LDM0ICs5NzgwLDYgQEAgZmFpbGVkOgotICAgICB9Ci0gCi0gICAgIHJldHVybihsb2NhbG5hbWUpOwotLQotLWJhc2VfY2hhbmdlZDoKLS0gICAgLyoKLS0gICAgICogdGhlIGF0dHJpYnV0ZSBzdHJpbmdzIGFyZSB2YWxpZCBpaWYgdGhlIGJhc2UgZGlkbid0IGNoYW5nZWQKLS0gICAgICovCi0tICAgIGlmIChhdHR2YWwgIT0gMCkgewotLQlmb3IgKGkgPSAzLGogPSAwOyBqIDwgbnJhdHRzO2kgKz0gNSxqKyspCi0tCSAgICBpZiAoKGN0eHQtPmF0dGFsbG9jc1tqXSAhPSAwKSAmJiAoYXR0c1tpXSAhPSBOVUxMKSkKLS0JICAgICAgICB4bWxGcmVlKCh4bWxDaGFyICopIGF0dHNbaV0pOwotLSAgICB9Ci0tCi0tICAgIC8qCi0tICAgICAqIFdlIGNhbid0IHN3aXRjaCBmcm9tIG9uZSBlbnRpdHkgdG8gYW5vdGhlciBpbiB0aGUgbWlkZGxlCi0tICAgICAqIG9mIGEgc3RhcnQgdGFnCi0tICAgICAqLwotLSAgICBpZiAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSB7Ci0tICAgICAgICB4bWxGYXRhbEVyck1zZyhjdHh0LCBYTUxfRVJSX0VOVElUWV9CT1VOREFSWSwKLS0JCSAgICAiU3RhcnQgdGFnIGRvZXNuJ3Qgc3RhcnQgYW5kIHN0b3AgaW4gdGhlIHNhbWUgZW50aXR5XG4iKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tCi0tICAgIGN0eHQtPmlucHV0LT5jdXIgPSBjdHh0LT5pbnB1dC0+YmFzZSArIGN1cjsKLS0gICAgY3R4dC0+aW5wdXQtPmxpbmUgPSBvbGRsaW5lOwotLSAgICBjdHh0LT5pbnB1dC0+Y29sID0gb2xkY29sOwotLSAgICBpZiAoY3R4dC0+d2VsbEZvcm1lZCA9PSAxKSB7Ci0tCWdvdG8gcmVwYXJzZTsKLS0gICAgfQotLSAgICByZXR1cm4oTlVMTCk7Ci0gfQotIAotIC8qKgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMvNzU5Mzk4LnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzLzc1OTM5OC54bWwuZXJyCi1pbmRleCBlMDhkOWJmLi5mNjAzNmEzIDEwMDY0NAotLS0tIGEvcmVzdWx0L2Vycm9ycy83NTkzOTgueG1sLmVycgotKysrIGIvcmVzdWx0L2Vycm9ycy83NTkzOTgueG1sLmVycgotQEAgLTEsOSArMSwxMiBAQAotIC4vdGVzdC9lcnJvcnMvNzU5Mzk4LnhtbDoyMTA6IHBhcnNlciBlcnJvciA6IFN0YXJ0VGFnOiBpbnZhbGlkIGVsZW1lbnQgbmFtZQotIG5lZWQgdG8gd29ycnkgYWJvdXQgcGFyc2VycyB3aGk8ISBkb24ndCBleHBhbmQgUEVyZWZzIGZpbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0uL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzA5OiBwYXJzZXIgZXJyb3IgOiBPcGVuaW5nIGFuZCBlbmRpbmcgdGFnIG1pc21hdGNoOiBzcGVjIGxpbmUgNTAgYW5kIHRlcm1kZWYKLSsuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzA5OiBwYXJzZXIgZXJyb3IgOiBPcGVuaW5nIGFuZCBlbmRpbmcgdGFnIG1pc21hdGNoOiDihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJbihJZtIGxpbmUgMzA4IGFuZCB0ZXJtZGVmCi0gYW5kIHByb3ZpZGUgYWNjZXNzIHRvIHRoZWlyIGNvbnRlbnQgYW5kIHN0cnVjdHVyZS48L3Rlcm1kZWY+IDx0ZXJtZGVmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotLS4vdGVzdC9lcnJvcnMvNzU5Mzk4LnhtbDozMDk6IHBhcnNlciBlcnJvciA6IEV4dHJhIGNvbnRlbnQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQKLS1hbmQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlaXIgY29udGVudCBhbmQgc3RydWN0dXJlLjwvdGVybWRlZj4gPHRlcm1kZWYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotKy4vdGVzdC9lcnJvcnMvNzU5Mzk4LnhtbDozMTQ6IHBhcnNlciBlcnJvciA6IE9wZW5pbmcgYW5kIGVuZGluZyB0YWcgbWlzbWF0Y2g6IHNwZWMgbGluZSA1MCBhbmQgcAotK2RhdGEgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCBtdXN0IHByb3ZpZGUgdG8gdGhlIGFwcGxpY2F0aW9uLjwvcD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotKy4vdGVzdC9lcnJvcnMvNzU5Mzk4LnhtbDozMTY6IHBhcnNlciBlcnJvciA6IEV4dHJhIGNvbnRlbnQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQKLSs8ZGl2MiBpZD0nc2VjLW9yaWdpbi1nb2Fscyc+Ci0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMvYXR0cjEueG1sLmVyciBiL3Jlc3VsdC9lcnJvcnMvYXR0cjEueG1sLmVycgotaW5kZXggNGYwODUzOC4uYzRjNGZjOCAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9lcnJvcnMvYXR0cjEueG1sLmVycgotKysrIGIvcmVzdWx0L2Vycm9ycy9hdHRyMS54bWwuZXJyCi1AQCAtMSw2ICsxLDkgQEAKLSAuL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBBdHRWYWx1ZTogJyBleHBlY3RlZAotIAotIF4KLS0uL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tPGZvbyBmb289Im9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb28KLS0gXgotKy4vdGVzdC9lcnJvcnMvYXR0cjEueG1sOjI6IHBhcnNlciBlcnJvciA6IGF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMvYXR0cjEueG1sOjI6IHBhcnNlciBlcnJvciA6IENvdWxkbid0IGZpbmQgZW5kIG9mIFN0YXJ0IFRhZyBmb28gbGluZSAxCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVyciBiL3Jlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVycgotaW5kZXggYzhhOWM3ZC4uNzdlMzQyZSAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVycgotKysrIGIvcmVzdWx0L2Vycm9ycy9hdHRyMi54bWwuZXJyCi1AQCAtMSw2ICsxLDkgQEAKLSAuL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBBdHRWYWx1ZTogJyBleHBlY3RlZAotIAotIF4KLS0uL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tPGZvbyBmb289Ij5vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb28KLS0gXgotKy4vdGVzdC9lcnJvcnMvYXR0cjIueG1sOjI6IHBhcnNlciBlcnJvciA6IGF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMvYXR0cjIueG1sOjI6IHBhcnNlciBlcnJvciA6IENvdWxkbid0IGZpbmQgZW5kIG9mIFN0YXJ0IFRhZyBmb28gbGluZSAxCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMvbmFtZTIueG1sLmVyciBiL3Jlc3VsdC9lcnJvcnMvbmFtZTIueG1sLmVycgotaW5kZXggYTY2NDlhMS4uOGE2YWNlZSAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9lcnJvcnMvbmFtZTIueG1sLmVycgotKysrIGIvcmVzdWx0L2Vycm9ycy9uYW1lMi54bWwuZXJyCi1AQCAtMSw2ICsxLDkgQEAKLSAuL3Rlc3QvZXJyb3JzL25hbWUyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBTcGVjaWZpY2F0aW9uIG1hbmRhdGUgdmFsdWUgZm9yIGF0dHJpYnV0ZSBmb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vCi0gCi0gXgotLS4vdGVzdC9lcnJvcnMvbmFtZTIueG1sOjE6IHBhcnNlciBlcnJvciA6IEV4dHJhIGNvbnRlbnQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQKLS08Zm9vIGZvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbwotLSBeCi0rLi90ZXN0L2Vycm9ycy9uYW1lMi54bWw6MjogcGFyc2VyIGVycm9yIDogYXR0cmlidXRlcyBjb25zdHJ1Y3QgZXJyb3IKLSsKLSteCi0rLi90ZXN0L2Vycm9ycy9uYW1lMi54bWw6MjogcGFyc2VyIGVycm9yIDogQ291bGRuJ3QgZmluZCBlbmQgb2YgU3RhcnQgVGFnIGZvbyBsaW5lIDEKLSsKLSteCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfbm9kZV9jb21wYXJpc29uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmNmJlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfbm9kZV9jb21wYXJpc29uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IGNvbXBhcmlzb24gd2l0aCByb290IG5vZGUgaW4geG1sWFBhdGhDbXBOb2RlcyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmIGluIFhQb2ludGVyCi0KLXhwYXRoOgotIC0gQ2hlY2sgZm9yIGVycm9ycyBhZnRlciBldmFsdWF0aW5nIGZpcnN0IG9wZXJhbmQuCi0gLSBBZGQgc2FuaXR5IGNoZWNrIGZvciBlbXB0eSBzdGFjay4KLSAtIEluY2x1ZGUgY29tcGFyYXRpb24gaW4gY2hhbmdlcyBmcm9tIHhtbFhQYXRoQ21wTm9kZXNFeHQgdG8geG1sWFBhdGhDbXBOb2RlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YzFkMWY3MTIxMTk0MDM2NjA4YmY1NTVmMDhkMzA2MmEzNmZkMzQ0Yl0KLSAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1hMDA1MTk5MzMwYjg2ZGFkYTE5ZDE2MmNhZTE1ZWY5YmRjYjZiYWE4XQotQ1ZFOiBDVkUtMjAxNi01MTMxCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGVycm9yIGIvcmVzdWx0L1hQYXRoL3hwdHIvdmlkZXJyb3IKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNTg5ODgyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvWFBhdGgveHB0ci92aWRlcnJvcgotQEAgLTAsMCArMSw0IEBACi0rCi0rPT09PT09PT09PT09PT09PT09PT09PT09Ci0rRXhwcmVzc2lvbjogeHBvaW50ZXIobm9uLWV4aXN0aW5nLWZuKCkvcmFuZ2UtdG8oaWQoJ2NoYXB0ZXIyJykpKQotK09iamVjdCBpcyBlbXB0eSAoTlVMTCkKLWRpZmYgLS1naXQgYS90ZXN0L1hQYXRoL3hwdHIvdmlkZXJyb3IgYi90ZXN0L1hQYXRoL3hwdHIvdmlkZXJyb3IKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYThjNTNiCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L1hQYXRoL3hwdHIvdmlkZXJyb3IKLUBAIC0wLDAgKzEgQEAKLSt4cG9pbnRlcihub24tZXhpc3RpbmctZm4oKS9yYW5nZS10byhpZCgnY2hhcHRlcjInKSkpCi1kaWZmIC0tZ2l0IGEveHBhdGguYyBiL3hwYXRoLmMKLWluZGV4IDExM2JjZTYuLmQ5OTI4NDEgMTAwNjQ0Ci0tLS0gYS94cGF0aC5jCi0rKysgYi94cGF0aC5jCi1AQCAtMzM0MiwxMyArMzM0MiwxMyBAQCB4bWxYUGF0aENtcE5vZGVzKHhtbE5vZGVQdHIgbm9kZTEsIHhtbE5vZGVQdHIgbm9kZTIpIHsKLSAgICAgICogY29tcHV0ZSBkZXB0aCB0byByb290Ci0gICAgICAqLwotICAgICBmb3IgKGRlcHRoMiA9IDAsIGN1ciA9IG5vZGUyO2N1ci0+cGFyZW50ICE9IE5VTEw7Y3VyID0gY3VyLT5wYXJlbnQpIHsKLS0JaWYgKGN1ciA9PSBub2RlMSkKLSsJaWYgKGN1ci0+cGFyZW50ID09IG5vZGUxKQotIAkgICAgcmV0dXJuKDEpOwotIAlkZXB0aDIrKzsKLSAgICAgfQotICAgICByb290ID0gY3VyOwotICAgICBmb3IgKGRlcHRoMSA9IDAsIGN1ciA9IG5vZGUxO2N1ci0+cGFyZW50ICE9IE5VTEw7Y3VyID0gY3VyLT5wYXJlbnQpIHsKLS0JaWYgKGN1ciA9PSBub2RlMikKLSsJaWYgKGN1ci0+cGFyZW50ID09IG5vZGUyKQotIAkgICAgcmV0dXJuKC0xKTsKLSAJZGVwdGgxKys7Ci0gICAgIH0KLUBAIC0xNDAwNSw5ICsxNDAwNSwxNCBAQCB4bWxYUGF0aENvbXBPcEV2YWwoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIHhtbFhQYXRoU3RlcE9wUHRyIG9wKQotICAgICAgICAgICAgICAgICB4bWxOb2RlU2V0UHRyIG9sZHNldDsKLSAgICAgICAgICAgICAgICAgaW50IGksIGo7Ci0gCi0tICAgICAgICAgICAgICAgIGlmIChvcC0+Y2gxICE9IC0xKQotKyAgICAgICAgICAgICAgICBpZiAob3AtPmNoMSAhPSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0KLSAgICAgICAgICAgICAgICAgICAgICAgICB4bWxYUGF0aENvbXBPcEV2YWwoY3R4dCwgJmNvbXAtPnN0ZXBzW29wLT5jaDFdKTsKLSsgICAgICAgICAgICAgICAgICAgIENIRUNLX0VSUk9SMDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBpZiAoY3R4dC0+dmFsdWUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgWFBfRVJST1IwKFhQQVRIX0lOVkFMSURfT1BFUkFORCk7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgaWYgKG9wLT5jaDIgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRvdGFsKTsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bnRlc3QucGF0Y2gKaW5kZXggNmU1Njg1Ny4uY2IxNzFkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bnRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bnRlc3QucGF0Y2gKQEAgLTIsNDcgKzIsMjkgQEAKIFByaW50IGEgc3RhbmRhcmQgcmVzdWx0IGxpbmUgZm9yIGVhY2ggdGVzdC4KIAogU2lnbmVkLW9mZi1ieTogTWloYWVsYSBTZW5kcmVhIDxtaWhhZWxhLnNlbmRyZWFAZW5lYS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BlbmVhLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCiBkaWZmIC11TnIgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQkyMDE2LTA1LTIyIDAzOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIGIvTWFrZWZpbGUuYW0JMjAxNy0wNi0xNCAxMDozODo0My4zODEzMDUzODUgKzAyMDAKLUBAIC0yMDIsMTAgKzIwMiwyNCBAQAorLS0tIGEvTWFrZWZpbGUuYW0JMjAxNy0wOC0yOCAxNTowMToxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL01ha2VmaWxlLmFtCTIwMTctMDktMDUgMDg6MDY6MDUuNzUyMjg3MzIzICswMjAwCitAQCAtMjAyLDYgKzIwMiwxNSBAQAogICN0ZXN0T09NX0RFUEVOREVOQ0lFUyA9ICQoREVQUykKICAjdGVzdE9PTV9MREFERD0gJChMREFERFMpCiAgCiAraW5zdGFsbC1wdGVzdDoKICsJQChpZiBbIC1kIC5saWJzIF0gOyB0aGVuIGNkIC5saWJzOyBmaTsgXAotKwlpbnN0YWxsICQobm9pbnN0X1BST0dSQU1TKSAkKERFU1RESVIpKQorKwlpbnN0YWxsICQoY2hlY2tfUFJPR1JBTVMpICQoREVTVERJUikpCiArCWNwIC1yICQoc3JjZGlyKS90ZXN0ICQoREVTVERJUikKICsJY3AgLXIgJChzcmNkaXIpL3Jlc3VsdCAkKERFU1RESVIpCiArCWNwIC1yICQoc3JjZGlyKS9weXRob24gJChERVNURElSKQogKwljcCBNYWtlZmlsZSAkKERFU1RESVIpCiArCXNlZCAtaSAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyAkKERFU1RESVIpL01ha2VmaWxlCiArCi0gcnVudGVzdHM6CisgcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCisgICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKICAJWyAtZCB0ZXN0ICAgXSB8fCAkKExOX1MpICQoc3JjZGlyKS90ZXN0ICAgLgotIAlbIC1kIHJlc3VsdCBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Jlc3VsdCAuCi0tCSQoQ0hFQ0tFUikgLi9ydW50ZXN0JChFWEVFWFQpICYmICQoQ0hFQ0tFUikgLi90ZXN0cmVjdXJzZSQoRVhFRVhUKSAmJiQoQ0hFQ0tFUikgLi90ZXN0YXBpJChFWEVFWFQpICYmICQoQ0hFQ0tFUikgLi90ZXN0Y2hhciQoRVhFRVhUKSYmICQoQ0hFQ0tFUikgLi90ZXN0ZGljdCQoRVhFRVhUKSAmJiAkKENIRUNLRVIpIC4vcnVueG1sY29uZiQoRVhFRVhUKQotKwkkKENIRUNLRVIpIC4vcnVudGVzdCQoRVhFRVhUKSAmJiBcCi0rCSAgICAkKENIRUNLRVIpIC4vdGVzdHJlY3Vyc2UkKEVYRUVYVCkgJiYgXAotKwkgICAgQVNBTl9PUFRJT05TPSIkJEFTQU5fT1BUSU9OUzpkZXRlY3RfbGVha3M9MCIgJChDSEVDS0VSKSAuL3Rlc3RhcGkkKEVYRUVYVCkgJiYgXAotKwkgICAgJChDSEVDS0VSKSAuL3Rlc3RjaGFyJChFWEVFWFQpICYmIFwKLSsJICAgICQoQ0hFQ0tFUikgLi90ZXN0ZGljdCQoRVhFRVhUKSAmJiBcCi0rCSAgICAkKENIRUNLRVIpIC4vcnVueG1sY29uZiQoRVhFRVhUKQotIAlAKGlmIFsgIiQoUFlUSE9OX1NVQkRJUikiICE9ICIiIF0gOyB0aGVuIGNkIHB5dGhvbiA7IFwKLSAJICAgICQoTUFLRSkgdGVzdHMgOyBmaSkKLSAKLUBAIC0yMjksNyArMjQzLDcgQEAKLSAKLSBBUEl0ZXN0czogdGVzdGFwaSQoRVhFRVhUKQotIAlAZWNobyAiIyMgUnVubmluZyB0aGUgQVBJIHJlZ3Jlc3Npb24gdGVzdHMgdGhpcyBtYXkgdGFrZSBhIGxpdHRsZSB3aGlsZSIKLS0JLUAoJChDSEVDS0VSKSAkKHRvcF9idWlsZGRpcikvdGVzdGFwaSAtcSkKLSsJLUAoQVNBTl9PUFRJT05TPSIkJEFTQU5fT1BUSU9OUzpkZXRlY3RfbGVha3M9MCIgJChDSEVDS0VSKSAkKHRvcF9idWlsZGRpcikvdGVzdGFwaSAtcSkKLSAKLSBIVE1MdGVzdHMgOiB0ZXN0SFRNTCQoRVhFRVhUKQotIAlAKGVjaG8gPiAubWVtZHVtcCkKKwogZGlmZiAtdU5yIGEvcnVuc3VpdGUuYyBiL3J1bnN1aXRlLmMKIC0tLSBhL3J1bnN1aXRlLmMJMjAxMy0wNC0xMiAxNjoxNzoxMS40NjI4MjMyMzggKzAyMDAKICsrKyBiL3J1bnN1aXRlLmMJMjAxMy0wNC0xNyAxNDowNzoyNC4zNTI2OTMyMTEgKzAyMDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFkYjI5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKLURFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgotCi1ERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAotICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE2LTUxMzEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItZml4X05VTExfcG9pbnRlcl9kZXJlZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1maXhfYW5kX3NpbXBsaWZ5X3htbFBhcnNlU3RhcnRUYWcyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTctOTA0N19DVkUtMjAxNy05MDQ4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTctOTA0OV9DVkUtMjAxNy05MDUwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTctNTk2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTA2NjMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNy04ODcyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICJhZTI0OTE2NWMxNzNiMWZmMzg2ZWU4YWQ2NzY4MTVmNSIKLVNSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiZmZiOTExMTkxZTUwOWI5NjZkZWI1NWRlNzA1Mzg3ZjE0MTU2ZTFhNTZiMjE4MjQzNTdjZGYwMDUzMjMzNjMzYyIKLVNSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgotU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWFyZ3BhcnNlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsIHB5dGhvbjMtc2lnbmFsIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtdW5pdHRlc3QgJHtQTn0tcHl0aG9uJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uMy1jb3JlJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBnbGliYy1nY29udi1pYm0xMTQxIGdsaWJjLWdjb252LWlzbzg4NTktNSIKLQotZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2xpbnV4c3RkYmFzZSA9ICItLXdpdGgtZGVidWcgLS13aXRoLWxlZ2FjeSAtLXdpdGgtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgICMgYXV0b25hbWVyIHdvdWxkIGNhbGwgdGhpcyBsaWJ4bWwyLTIsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQKLSAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6Ci0gICAgICAgIGQuc2V0VmFyKCdQS0dfbGlieG1sMicsICcke01MUFJFRklYfWxpYnhtbDInKQotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tdXRpbHMgJHtQTn0tcHl0aG9uIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbDJDb25mLnNoICR7bGliZGlyfS9jbWFrZS8qIgotRklMRVNfJHtQTn0tdXRpbHMgKz0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgZXhlY3V0YWJsZXMgdGFrZSBsb25nZXIgdG8gcGFja2FnZTogdGhlc2Ugc2hvdWxkIG5vdCBiZSBleGVjdXRhYmxlCi0JZmluZCAke1dPUktESVJ9L3htbGNvbmYvIC10eXBlIGYgLWV4ZWMgY2htb2QgLXgge30gXCsKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLXIgJHtXT1JLRElSfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAotCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCi0JCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8Ci0JCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKLQlmaQotCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKLQlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0JICAgIHNlZCAtaSBcCi0JICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1lICcvXlJFTERBVEUvZCcgXAotCSAgICB7fSArCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQotCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmI5MGE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS43LmJiCkBAIC0wLDAgKzEsMTA1IEBACitTVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgorREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCisKK0RFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvc291cmNlcy9saWJ4bWwyLSR7UFZ9LnRhci5nejtuYW1lPWxpYnRhciBcCisgICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1hNTC9UZXN0L3htbHRzMjAwODA4MjcudGFyLmd6O25hbWU9dGVzdHRhciBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtNjRiaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYW5zaWRlY2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLXNpdGVwYWNrYWdlcy1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW2xpYnRhci5tZDVzdW1dID0gIjg5NjYwODY0MWEwOGI0NjUwOThhNDBkZGY1MWNlZmJhIgorU1JDX1VSSVtsaWJ0YXIuc2hhMjU2c3VtXSA9ICJmNjNjNWU3ZDMwMzYyZWQyOGIzOGJmYTFhYzYzMTNmOWE4MDIzMDcyMGI3ZmI2YzgwNTc1ZWVhYjNmZjU5MDBjIgorU1JDX1VSSVt0ZXN0dGFyLm1kNXN1bV0gPSAiYWUzZDFlYmUwMDBhMzk3MmFmYTEwNGNhN2YwZTFiNGEiCitTUkNfVVJJW3Rlc3R0YXIuc2hhMjU2c3VtXSA9ICI5NjE1MTY4NWNlYzk5N2UxZjlmMzM4N2UzNjI2ZDYxZTYyODRkNGQ2ZTY2ZTBlNDQwYzIwOTI4NmMwM2U5Y2M3IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3htbDItY29uZmlnIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsICBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBnbGliYy1nY29udi1pc284ODU5LTUiCisKK2V4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKKyMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQorRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0CisgICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgorICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKK30KKworUEFDS0FHRVMgKz0gIiR7UE59LXV0aWxzICR7UE59LXB5dGhvbiIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKK0ZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQorCWZpbmQgJHtXT1JLRElSfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSBjaGVjay1hbQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwljcCAtciAke1dPUktESVJ9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnc3xeXChQWVRIT04gPSBcKS4qfFwxJHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JyBcCisJCSAgICAke0R9JHtQVEVTVF9QQVRIfS9weXRob24vdGVzdHMvTWFrZWZpbGUKKwkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKKwkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JworCWZpCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgICAgc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eUkVMREFURS9kJyBcCisJICAgIHt9ICsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwkjIERvY3MgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIG5hdGl2ZSBjYXNlCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ3RrLWRvYyAtcmYKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODNkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJEdW1teSBwYWNrYWdlcyB3aGljaCBoYW5kbGUgZXhjbHVkaW5nIHBhY2thZ2VzIGZyb20gdGhlIHNkaywgZS5nLiBlbnN1cmluZyBwZXJsIGlzIGV4Y2x1ZGVkIGZyb20gYnVpbGR0b29scyIKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IGFsbGFyY2gKKworcHl0aG9uKCkgeworICAgICMgUHV0IHRoZSBwYWNrYWdlIHNvbWV3aGVyZSBzZXBhcmF0ZSB0byBlbnN1cmUgaXQncyBuZXZlciB1c2VkIGV4Y2VwdAorICAgICMgd2hlbiB3ZSB3YW50IGl0CisgICAgIyAobm90ZSB0aGF0IHdlIGhhdmUgdG8gZG8gdGhpcyBpbiBhbm9ueW1vdXMgcHl0aG9uIGhlcmUgdG8gYXZvaWQKKyAgICAjIGFsbGFyY2guYmJjbGFzcyBkaXNhYmxpbmcgaXRzZWxmKQorICAgIGQuc2V0VmFyKCdQQUNLQUdFX0FSQ0gnLCAnJHtEVU1NWUFSQ0h9JykKK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworUFJbdmFyZGVwc10gKz0gIkRVTU1ZUFJPVklERVMiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHAgPSBkLmdldFZhcigiUE4iKQorICAgIGQuYXBwZW5kVmFyKCJSUFJPVklERVNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQorICAgICNkLmFwcGVuZFZhcigiUkNPTkZMSUNUU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCisgICAgI2QuYXBwZW5kVmFyKCJSUkVQTEFDRVNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgppbmRleCAyOWRhMTIxLi4wOWY3NTdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKQEAgLTU1LDYgKzU1LDggQEAKIAogCSMgQWRkIHZlcnNpb24gaW5mb3JtYXRpb24KIAl0b29sY2hhaW5fY3JlYXRlX3Nka192ZXJzaW9uICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS92ZXJzaW9uLSR7UkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZU30KKworCXRvb2xjaGFpbl9jcmVhdGVfcG9zdF9yZWxvY2F0ZV9zY3JpcHQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuc2gKIH0KIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtd29ybGQtcGtnZGF0YS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtd29ybGQtcGtnZGF0YS5iYgppbmRleCAwMmFiZDhhLi5iMjk5ODYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS13b3JsZC1wa2dkYXRhLmJiCkBAIC0zLDYgKzMsOCBAQAogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCiBhZGR0YXNrIGRvX2FsbHBhY2thZ2VkYXRhIGJlZm9yZSBkb19idWlsZAogZG9fYWxscGFja2FnZWRhdGEoKSB7CiAJOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKaW5kZXggMGI1OGEwMi4uZjViY2I4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCkBAIC0xLDI2ICsxLDExIEBACi1TVU1NQVJZID0gIkR1bW15IHBhY2thZ2Ugd2hpY2ggZW5zdXJlcyBwZXJsIGlzIGV4Y2x1ZGVkIGZyb20gYnVpbGR0b29scyIKLUxJQ0VOU0UgPSAiTUlUIgorRFVNTVlBUkNIID0gImJ1aWxkdG9vbHMtZHVtbXktJHtTREtQS0dTVUZGSVh9IgogCi1pbmhlcml0IGFsbGFyY2gKK0RVTU1ZUFJPVklERVMgPSAiXAorICAgIG5hdGl2ZXNkay1wZXJsIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1wYXRoIgogCiBQUiA9ICJyMiIKIAotcHl0aG9uKCkgewotICAgICMgUHV0IHRoZSBwYWNrYWdlIHNvbWV3aGVyZSBzZXBhcmF0ZSB0byBlbnN1cmUgaXQncyBuZXZlciB1c2VkIGV4Y2VwdAotICAgICMgd2hlbiB3ZSB3YW50IGl0Ci0gICAgIyAobm90ZSB0aGF0IHdlIGhhdmUgdG8gZG8gdGhpcyBpbiBhbm9ueW1vdXMgcHl0aG9uIGhlcmUgdG8gYXZvaWQKLSAgICAjIGFsbGFyY2guYmJjbGFzcyBkaXNhYmxpbmcgaXRzZWxmKQotICAgIGQuc2V0VmFyKCdQQUNLQUdFX0FSQ0gnLCAnYnVpbGR0b29scy1kdW1teS0ke1NES1BLR1NVRkZJWH0nKQotfQorcmVxdWlyZSBkdW1teS1zZGstcGFja2FnZS5pbmMKIAotUEVSTFBBQ0tBR0VTID0gIm5hdGl2ZXNkay1wZXJsIFwKLSAgICAgICAgICAgICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1wYXRoIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBkLmFwcGVuZFZhcihkLmV4cGFuZCgnUlBST1ZJREVTXyR7UE59JyksICcke1BFUkxQQUNLQUdFU30nKQotICAgIGQuYXBwZW5kVmFyKGQuZXhwYW5kKCdSQ09ORkxJQ1RTXyR7UE59JyksICcke1BFUkxQQUNLQUdFU30nKQotICAgIGQuYXBwZW5kVmFyKGQuZXhwYW5kKCdSUkVQTEFDRVNfJHtQTn0nKSwgJyR7UEVSTFBBQ0tBR0VTfScpCi19Ci0KK2luaGVyaXQgbmF0aXZlc2RrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWE3MjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgpAQCAtMCwwICsxLDE1IEBACitEVU1NWUFSQ0ggPSAic2RrLXByb3ZpZGVzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKKworIyBBZGQgL2Jpbi9zaD8KK0RVTU1ZUFJPVklERVMgPSAiXAorICAgIC9iaW4vYmFzaCBcCisgICAgL3Vzci9iaW4vZW52IFwKKyAgICAvdXNyL2Jpbi9wZXJsIFwKKyAgICBwa2djb25maWcgXAorICAgIGxpYkdMLnNvKCkoNjRiaXQpIFwKKyAgICBsaWJHTC5zbyBcCisiCisKK3JlcXVpcmUgZHVtbXktc2RrLXBhY2thZ2UuaW5jCisKK2luaGVyaXQgbmF0aXZlc2RrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKaW5kZXggMmMxY2MzOC4uMWUxYzdlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgpAQCAtNDEsNiArNDEsNyBAQAogfQogZG9fZ2V0X3B1YmxpY19rZXlzW2NsZWFuZGlyc10gPSAiJHtCfSIKIGFkZHRhc2sgZ2V0X3B1YmxpY19rZXlzIGJlZm9yZSBkb19pbnN0YWxsCitkb19nZXRfcHVibGljX2tleXNbZGVwZW5kc10gKz0gImdudXBnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCiBkb19pbnN0YWxsICgpIHsKICAgICBpZiBbIC1mICIke0J9L3JwbS1rZXkiIF07IHRoZW4KQEAgLTY4LDcgKzY5LDggQEAKIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX1JQTX0iCiAjIGNsZWFuZGlycyBzaG91bGQgcG9zc2libHkgYmUgaW4gZGVwbG95LmJiY2xhc3MgYnV0IHdlIG5lZWQgaXQKIGRvX2RlcGxveVtjbGVhbmRpcnNdID0gIiR7REVQTE9ZRElSfSIKLSMgY2xlYXIgc3RhbXAtZXh0cmEtaW5mbyBzaW5jZSBNQUNISU5FIGlzIG5vcm1hbGx5IHB1dCB0aGVyZSBieSBkZXBsb3kuYmJjbGFzcworIyBjbGVhciBzdGFtcC1leHRyYS1pbmZvIHNpbmNlIE1BQ0hJTkVfQVJDSCBpcyBub3JtYWxseSBwdXQgdGhlcmUgYnkKKyMgZGVwbG95LmJiY2xhc3MKIGRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiBhZGR0YXNrIGRlcGxveSBhZnRlciBkb19nZXRfcHVibGljX2tleXMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0ZDE1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTAsMCArMSwxMSBAQAorRFVNTVlBUkNIID0gInNkay1wcm92aWRlcy1kdW1teS10YXJnZXQiCisKK0RVTU1ZUFJPVklERVMgPSAiXAorICAgIC9iaW4vc2ggXAorICAgIC9iaW4vYmFzaCBcCisgICAgL3Vzci9iaW4vZW52IFwKKyAgICAvdXNyL2Jpbi9wZXJsIFwKKyAgICBwa2djb25maWcgXAorIgorCityZXF1aXJlIGR1bW15LXNkay1wYWNrYWdlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGVzdGV4cG9ydC10YXJiYWxsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGVzdGV4cG9ydC10YXJiYWxsLmJiCmluZGV4IDcyZjU1MzEuLmMzOGFjOTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90ZXN0ZXhwb3J0LXRhcmJhbGwuYmIKQEAgLTEwLDcgKzEwLDEzIEBACiAKIFRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gIiR7VEVTVF9FWFBPUlRfU0RLX1BBQ0tBR0VTfSIKIAotU0RLX1BBQ0tBR0VfQVJDSFMgKz0gInRlc2V4cG9ydC10b29scy0ke1NES1BLR1NVRkZJWH0iCitNVUxUSU1BQ0hfVEFSR0VUX1NZUyA9ICIke1NES19BUkNIfS1uYXRpdmVzZGske1NES19WRU5ET1J9LSR7U0RLX09TfSIKK1BBQ0tBR0VfQVJDSCA9ICIke1NES19BUkNIfV8ke1NES19PU30iCitQQUNLQUdFX0FSQ0hTID0gIiIKK1RBUkdFVF9BUkNIID0gIm5vbmUiCitUQVJHRVRfT1MgPSAibm9uZSIKKworU0RLX1BBQ0tBR0VfQVJDSFMgKz0gInRlc3RleHBvcnQtdG9vbHMtJHtTREtQS0dTVUZGSVh9IgogCiBUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtURVNUX0VYUE9SVF9TREtfTkFNRX0iCiAKQEAgLTIyLDcgKzI4LDE1IEBACiAKIGluaGVyaXQgbWV0YQogaW5oZXJpdCBwb3B1bGF0ZV9zZGsKLWluaGVyaXQgdG9vbGNoYWluLXNjcmlwdHMKK2luaGVyaXQgdG9vbGNoYWluLXNjcmlwdHMtYmFzZQoraW5oZXJpdCBub3BhY2thZ2VzCisKK2RlbHRhc2sgaW5zdGFsbAorZGVsdGFzayBwb3B1bGF0ZV9zeXNyb290CisKK2RvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke1BBQ0tBR0VfQVJDSH0iCisKK1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAibm9uZSIKIAogY3JlYXRlX3Nka19maWxlc19hcHBlbmQgKCkgewogCXJtIC1mICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zaXRlLWNvbmZpZy0qCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCmluZGV4IDVmYWJmN2YuLjM4YzNhMzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCkBAIC0xMyw2ICsxMyw3IEBACiAgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LXV0Zi0xNiBcCiAgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LWNwMTI1MiBcCiAgICAgbmF0aXZlc2RrLXBhdGNoZWxmIFwKKyAgICBuYXRpdmVzZGstbGlieGNyeXB0IFwKICAgICAiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzL3N5cy1jZGVmcy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMvc3lzLWNkZWZzLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy9zeXMtY2RlZnMuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMvc3lzLWNkZWZzLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy9zeXMtcXVldWUuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1xdWV1ZS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXF1ZXVlLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1xdWV1ZS5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXRyZWUuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy10cmVlLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy9zeXMtdHJlZS5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtdHJlZS5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLXV0aWxzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGI4NDZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJnZXRjb25mLCBnZXRlbnQgYW5kIGljb252IGltcGxlbWVudGF0aW9ucyBmb3IgbXVzbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9jZ2l0L2Fwb3J0cy90cmVlL21haW4vbXVzbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05ZDA4MjE1ZTYxMWRiODdiMzU3ZTg2NzRiNGI0MjU2NCIKK1NFQ1RJT04gPSAidXRpbHMiCisKKyMgRGF0ZSBvZiB0aGUgY29tbWl0IGluIFNSQ1JFVgorUFYgPSAiMjAxNzA0MjEiCisKK1NSQ1JFViA9ICJmYjU2MzAxMzhjY2FiYmJjMTRhMTlkMzcyMDk2YTA0ZTQyNTczYzdkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JvbHRsaW51eC9tdXNsLXV0aWxzIgorCitpbmhlcml0IGF1dG90b29scworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitQQUNLQUdFUyA9KyAiJHtQTn0taWNvbnYiCisKK0ZJTEVTXyR7UE59LWljb252ID0gIiR7YmluZGlyfS9pY29udiIKKworQ09NUEFUSUJMRV9IT1NUID0gIi4qLW11c2wuKiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwppbmRleCA5YWYxMTcyLi5iYTliMWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwpAQCAtOSw3ICs5LDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubXVzbC1saWJjLm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKIFNFQ1RJT04gPSAibGlicyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9NzkyOGI3YWQzMmNlZGEwNDkzMjQ3OGUzMzBlNTJmN2YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTJiOTAzMjA5M2M0NzY1ZTQ5YWU4NWRkZWJhMjlhZmZmIgogCiBQQVRIX3ByZXBlbmQgPSAiJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LiR7U1RBR0lOR0NDfToiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2ZpbGVzLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1NYWtlLWR5bmFtaWMtbGlua2VyLWEtcmVsYXRpdmUtc3ltbGluay10by1saWJjLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9maWxlcy8wMDAxLU1ha2UtZHluYW1pYy1saW5rZXItYS1yZWxhdGl2ZS1zeW1saW5rLXRvLWxpYmMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1NYWtlLWR5bmFtaWMtbGlua2VyLWEtcmVsYXRpdmUtc3ltbGluay10by1saWJjLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IGRiMjZiNGYuLjlmOGM1MTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC0zLDkgKzMsOSBAQAogCiByZXF1aXJlIG11c2wuaW5jCiAKLVNSQ1JFViA9ICJlYjAzYmRlMmYyNDU4Mjg3NGNiNzJiNTZjNzgxMWJmNTFkYTBjODE3IgorU1JDUkVWID0gIjU1ZGYwOWJmY2NiZmUyMWZjOWRkN2Q4Zjk0NTUwYzBmZjI1YWNlMDQiCiAKLVBWID0gIjEuMS4xOCtnaXQke1NSQ1BWfSIKK1BWID0gIjEuMS4xOStnaXQke1NSQ1BWfSIKIAogIyBtaXJyb3IgaXMgYXQgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL211c2wuZ2l0CiAKQEAgLTE1LDcgKzE1LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotUFJPVklERVMgKz0gInZpcnR1YWwvbGliYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MgdmlydHVhbC9saWJpY29udiB2aXJ0dWFsL2xpYmludGwiCitQUk9WSURFUyArPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyB2aXJ0dWFsL2xpYmljb252IHZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2NyeXB0IgogCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIFwKICAgICAgICAgICAgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE5MzMyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MSArMCwwIEBACi1Gcm9tIDRiZjcyY2I4ZjFkM2FhNWYzM2MzMWViODE3YTVmMDMzOGY0YWFmNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIwIFNlcCAyMDE3IDA1OjAyOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEltcG9ydCB1cHN0cmVhbSBwYXRjaCAyMDE3MDgyNgotCi0yMDE3MDgyNgotCSsgZml4ZXMgZm9yICJpdGVybTIiIChyZXBvcnQgYnkgTGVvbmFyZG8gQnJvbmRhbmkgU2NoZW5rZWwpIC1URAotCSsgY29ycmVjdGVkIGEgd2FybmluZyBmcm9tIHRpYyBhYm91dCBrZXlzIHdoaWNoIGFyZSB0aGUgc2FtZSwgdG8gc2tpcAotCSAgb3ZlciBtaXNzaW5nL2NhbmNlbGxlZCB2YWx1ZXMuCi0JKyBhZGQgY2hlY2sgaW4gdGljIGZvciB1bm5lY2Vzc2FyeSB1c2Ugb2YgIjIiIHRvIGRlbm90ZSBhIHNoaWZ0ZWQKLQkgIHNwZWNpYWwga2V5LgotCSsgaW1wcm92ZSBjaGVja3MgaW4gdHJpbV9zZ3IwLCBjb21wX3BhcnNlLmMgYW5kIHBhcnNlX2VudHJ5LmMsIGZvcgotCSAgY2FuY2VsbGVkIHN0cmluZyBjYXBhYmlsaXRpZXMuCi0JKyBhZGQgY2hlY2sgaW4gX25jX3BhcnNlX2VudHJ5KCkgZm9yIGludmFsaWQgZW50cnkgbmFtZSwgc2V0dGluZyB0aGUKLQkgIG5hbWUgdG8gImludmFsaWQiIHRvIGF2b2lkIHByb2JsZW1zIHN0b3JpbmcgZW50cmllcy4KLQkrIGFkZC9pbXByb3ZlIGNoZWNrcyBpbiB0aWMncyBwYXJzZXIgdG8gYWRkcmVzcyBpbnZhbGlkIGlucHV0Ci0JICArIGFkZCBhIGNoZWNrIGluIGNvbXBfc2Nhbi5jIHRvIGhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIGEKLQkgICAgbm9udGV4dCBmaWxlIGVuZGluZyB3aXRoIGEgTlVMIHJhdGhlciB0aGFuIG5ld2xpbmUgaXMgZ2l2ZW4gdG8gdGljCi0JICAgIGFzIGlucHV0IChSZWRoYXQgIzE0ODQyNzQpLgotCSAgKyBhbGxvdyBmb3IgY2FuY2VsbGVkIGNhcGFiaWxpdGllcyBpbiBfbmNfc2F2ZV9zdHIgKFJlZGhhdCAjMTQ4NDI3NikuCi0JICArIGFkZCB2YWxpZGl0eSBjaGVja3MgZm9yICJ1c2U9IiB0YXJnZXQgaW4gX25jX3BhcnNlX2VudHJ5IChSZWRoYXQKLQkgICAgIzE0ODQyODQpLgotCSAgKyBjaGVjayBmb3IgaW52YWxpZCBzdHJpbmdzIGluIHBvc3Rwcm9jZXNzX3Rlcm1jYXAgKFJlZGhhdCAjMTQ4NDI4NSkKLQkgICsgcmVzZXQgc2Vjb25kYXJ5IHBvaW50ZXJzIG9uIEVPRiBpbiBuZXh0X2NoYXIoKSAoUmVkaGF0ICMxNDg0Mjg3KS4KLQkgICsgZ3VhcmQgX25jX3NhZmVfc3RyY3B5KCkgYW5kIF9uY19zYWZlX3N0cmNhdCgpIGFnYWluc3QgY2FsbHMgdXNpbmcKLQkgICAgY2FuY2VsbGVkIHN0cmluZ3MgKFJlZGhhdCAjMTQ4NDI5MSkuCi0JKyBjb3JyZWN0IHR5cG8gaW4gY3Vyc19tZW1sZWFrcy4zeCAoU3ZlbiBKb2FjaGltKS4KLQkrIGltcHJvdmUgdGVzdC9jb25maWd1cmUgY2hlY2tzIGZvciBzb21lIGN1cnNlcyB2YXJpYW50cyBub3QgYmFzZWQgb24KLQkgIFgvT3BlbiBDdXJzZXMuCi0JKyBhZGQgb3B0aW9ucyBmb3IgdGVzdC9jb25maWd1cmUgdG8gZGlzYWJsZSBjaGVja3MgZm9yIGZvcm0sIG1lbnUgYW5kCi0JICBwYW5lbCBsaWJyYXJpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTM3MzIsIENWRS0yMDE3LTEzNzM0LCBDVkUtMjAxNy0xMzczMCwgQ1ZFLTIwMTctMTM3MjksIENWRS0yMDE3LTEzNzI4LCBDVkUtMjAxNy0xMzczMQotIAotCi1BdXRob3I6IFN2ZW4gSm9hY2hpbSA8c3ZlbmpvYWNAZ214LmRlPgotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotLS0tCi0gZGlzdC5tayAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KLSBpbmNsdWRlL25jdXJzZXNfZGVmcyAgICAgICAgfCAgNCArLQotIG5jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYyB8ICA0ICstCi0gbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMgIHwgMTAgKystLS0KLSBuY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jICAgfCAgNiArKy0KLSBuY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSBuY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYyAgICAgfCAgOSArKystLQotIG5jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMgICB8ICA0ICstCi0gcHJvZ3MvdGljLmMgICAgICAgICAgICAgICAgIHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDkgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlzdC5tayBiL2Rpc3QubWsKLWluZGV4IDlhZjI2OTkuLjJjNzA0NzIgMTAwNjQ0Ci0tLS0gYS9kaXN0Lm1rCi0rKysgYi9kaXN0Lm1rCi1AQCAtMjUsNyArMjUsNyBAQAotICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotICMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLSMgJElkOiBkaXN0Lm1rLHYgMS4xMTcyIDIwMTcvMDcvMTMgMDA6MTU6MjcgdG9tIEV4cCAkCi0rIyAkSWQ6IGRpc3QubWssdiAxLjExNzkgMjAxNy8wOC8yMCAxNTozMzo0MSB0b20gRXhwICQKLSAjIE1ha2VmaWxlIGZvciBjcmVhdGluZyBuY3Vyc2VzIGRpc3RyaWJ1dGlvbnMuCi0gIwotICMgVGhpcyBvbmx5IG5lZWRzIHRvIGJlIHVzZWQgZGlyZWN0bHkgYXMgYSBtYWtlZmlsZSBieSBkZXZlbG9wZXJzLCBidXQKLUBAIC0zNyw3ICszNyw3IEBAIFNIRUxMID0gL2Jpbi9zaAotICMgVGhlc2UgZGVmaW5lIHRoZSBtYWpvci9taW5vci9wYXRjaCB2ZXJzaW9ucyBvZiBuY3Vyc2VzLgotIE5DVVJTRVNfTUFKT1IgPSA2Ci0gTkNVUlNFU19NSU5PUiA9IDAKLS1OQ1VSU0VTX1BBVENIID0gMjAxNzA3MTUKLStOQ1VSU0VTX1BBVENIID0gMjAxNzA4MjYKLSAKLSAjIFdlIGRvbid0IGFwcGVuZCB0aGUgcGF0Y2ggdG8gdGhlIHZlcnNpb24sIHNpbmNlIHRoaXMgb25seSBhcHBsaWVzIHRvIHJlbGVhc2VzCi0gVkVSU0lPTiA9ICQoTkNVUlNFU19NQUpPUikuJChOQ1VSU0VTX01JTk9SKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmN1cnNlc19kZWZzIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKLWluZGV4IGU2NjExYjcuLmQyMzdkYjEgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL25jdXJzZXNfZGVmcwotKysrIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKLUBAIC0xLDQgKzEsNCBAQAotLSMgJElkOiBuY3Vyc2VzX2RlZnMsdiAxLjczIDIwMTcvMDYvMjQgMTQ6MjA6NTcgdG9tIEV4cCAkCi0rIyAkSWQ6IG5jdXJzZXNfZGVmcyx2IDEuNzUgMjAxNy8wOC8yMCAxNjo1MDowNCB0b20gRXhwICQKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIENvcHlyaWdodCAoYykgMjAwMC0yMDE2LDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKLSAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLUBAIC01MCw3ICs1MCw5IEBAIEhBVkVfQlNEX1NUUklOR19ICi0gSEFWRV9CVE9XQyAKLSBIQVZFX0JVSUxUSU5fSAotIEhBVkVfQ0hHQVQJMQotK0hBVkVfQ09MT1JfQ09OVEVOVAkxCi0gSEFWRV9DT0xPUl9TRVQJMQotK0hBVkVfQ1VSU0NSCTEKLSBIQVZFX0RJUkVOVF9ICi0gSEFWRV9FUlJOTwotIEhBVkVfRkNOVExfSAotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYwotaW5kZXggNWRlMDlmMS4uMDkzNzRkNiAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYwotKysrIGIvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCi1AQCAtNDcsNyArNDcsNyBAQAotIAotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogYWxsb2NfZW50cnkuYyx2IDEuNjAgMjAxNy8wNi8yNyAyMzo0ODo1NSB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBhbGxvY19lbnRyeS5jLHYgMS42MSAyMDE3LzA4LzI1IDA5OjA5OjA4IHRvbSBFeHAgJCIpCi0gCi0gI2RlZmluZSBBQlNFTlRfT0ZGU0VUICAgIC0xCi0gI2RlZmluZSBDQU5DRUxMRURfT0ZGU0VUIC0yCi1AQCAtOTgsNyArOTgsNyBAQCBfbmNfc2F2ZV9zdHIoY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nKQotICAgICBzaXplX3Qgb2xkX25leHRfZnJlZSA9IG5leHRfZnJlZTsKLSAgICAgc2l6ZV90IGxlbjsKLSAKLS0gICAgaWYgKHN0cmluZyA9PSAwKQotKyAgICBpZiAoIVZBTElEX1NUUklORyhzdHJpbmcpKQotIAlyZXR1cm4gX25jX3NhdmVfc3RyKCIiKTsKLSAgICAgbGVuID0gc3RybGVuKHN0cmluZykgKyAxOwotIAotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jIGIvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKLWluZGV4IDM0ZTYyMTYuLjU4MGQ0ZGYgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYwotKysrIGIvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gCi0gI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiBjb21wX3BhcnNlLmMsdiAxLjk2IDIwMTcvMDQvMTUgMTU6MzY6NTggdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS45OSAyMDE3LzA4LzI2IDE2OjE1OjUwIHRvbSBFeHAgJCIpCi0gCi0gc3RhdGljIHZvaWQgc2FuaXR5X2NoZWNrMihURVJNVFlQRTIgKiwgYm9vbCk7Ci0gTkNVUlNFU19JTVBFWFAgdm9pZCBOQ1VSU0VTX0FQSSgqX25jX2NoZWNrX3Rlcm10eXBlMikgKFRFUk1UWVBFMiAqLCBib29sKSA9IHNhbml0eV9jaGVjazI7Ci1AQCAtNTEwLDkgKzUxMCw5IEBAIHN0YXRpYyB2b2lkCi0gZml4dXBfYWNzYyhURVJNVFlQRTIgKnRwLCBpbnQgbGl0ZXJhbCkKLSB7Ci0gICAgIGlmICghbGl0ZXJhbCkgewotLQlpZiAoYWNzX2NoYXJzID09IDAKLS0JICAgICYmIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgIT0gMAotLQkgICAgJiYgZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApCi0rCWlmIChhY3NfY2hhcnMgPT0gQUJTRU5UX1NUUklORwotKwkgICAgJiYgUFJFU0VOVChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQotKwkgICAgJiYgUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKQotIAkgICAgYWNzX2NoYXJzID0gc3RyZHVwKFZUX0FDU0MpOwotICAgICB9Ci0gfQotQEAgLTU2OCw5ICs1NjgsNyBAQCBzYW5pdHlfY2hlY2syKFRFUk1UWVBFMiAqdHAsIGJvb2wgbGl0ZXJhbCkKLSAgICAgUEFJUkVEKGVudGVyX3hvbl9tb2RlLCBleGl0X3hvbl9tb2RlKTsKLSAgICAgUEFJUkVEKGVudGVyX2FtX21vZGUsIGV4aXRfYW1fbW9kZSk7Ci0gICAgIEFORE1JU1NJTkcobGFiZWxfb2ZmLCBsYWJlbF9vbik7Ci0tI2lmZGVmIHJlbW92ZV9jbG9jawotICAgICBQQUlSRUQoZGlzcGxheV9jbG9jaywgcmVtb3ZlX2Nsb2NrKTsKLS0jZW5kaWYKLSAgICAgQU5ETUlTU0lORyhzZXRfY29sb3JfcGFpciwgaW5pdGlhbGl6ZV9wYWlyKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYyBiL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKLWluZGV4IDQwZDdmNmEuLmIyMDcyNTcgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCi0rKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCi1AQCAtNTAsNyArNTAsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogY29tcF9zY2FuLmMsdiAxLjEwNiAyMDE3LzA0LzIyIDExOjQxOjEyIHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGNvbXBfc2Nhbi5jLHYgMS4xMDggMjAxNy8wOC8yNSAyMjo1NzoyMSB0b20gRXhwICQiKQotIAotIC8qCi0gICogTWF4aW11bSBsZW5ndGggb2Ygc3RyaW5nIGNhcGFiaWxpdHkgd2UnbGwgYWNjZXB0IGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLgotQEAgLTE2OCw2ICsxNjgsOCBAQCBuZXh0X2NoYXIodm9pZCkKLSAJaWYgKHJlc3VsdCAhPSAwKSB7Ci0gCSAgICBGcmVlQW5kTnVsbChyZXN1bHQpOwotIAkgICAgRnJlZUFuZE51bGwocHVzaG5hbWUpOwotKwkgICAgYnVmcHRyID0gMDsKLSsJICAgIGJ1ZnN0YXJ0ID0gMDsKLSAJICAgIGFsbG9jYXRlZCA9IDA7Ci0gCX0KLSAJLyoKLUBAIC0yMjIsNiArMjI0LDggQEAgbmV4dF9jaGFyKHZvaWQpCi0gCQl9Ci0gCQlpZiAoKGJ1ZnB0ciA9IGJ1ZnN0YXJ0KSAhPSAwKSB7Ci0gCQkgICAgdXNlZCA9IHN0cmxlbihidWZwdHIpOwotKwkJICAgIGlmICh1c2VkID09IDApCi0rCQkJcmV0dXJuIChFT0YpOwotIAkJICAgIHdoaWxlIChpc3doaXRlKCpidWZwdHIpKSB7Ci0gCQkJaWYgKCpidWZwdHIgPT0gJ1x0JykgewotIAkJCSAgICBfbmNfY3Vycl9jb2wgPSAoX25jX2N1cnJfY29sIHwgNykgKyAxOwotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotaW5kZXggM2ZhMmYyNS4uYmJiZmNiMiAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotKysrIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCi1AQCAtNDcsNyArNDcsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuODYgMjAxNy8wNi8yOCAwMDo1MzoxMiB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS45MSAyMDE3LzA4LzI2IDE2OjEzOjM0IHRvbSBFeHAgJCIpCi0gCi0gI2lmZGVmIExJTlQKLSBzdGF0aWMgc2hvcnQgY29uc3QgcGFyYW1ldHJpemVkW10gPQotQEAgLTE4MCw2ICsxODAsMjAgQEAgX25jX2V4dGVuZF9uYW1lcyhFTlRSWSAqIGVudHJ5cCwgY2hhciAqbmFtZSwgaW50IHRva2VuX3R5cGUpCi0gfQotICNlbmRpZiAvKiBOQ1VSU0VTX1hOQU1FUyAqLwotIAotK3N0YXRpYyBib29sCi0rdmFsaWRfZW50cnluYW1lKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgICBib29sIHJlc3VsdCA9IFRSVUU7Ci0rICAgIGludCBjaDsKLSsgICAgd2hpbGUgKChjaCA9IFVDaGFyKCpuYW1lKyspKSAhPSAnXDAnKSB7Ci0rCWlmIChjaCA8PSAnICcgfHwgY2ggPiAnficgfHwgY2ggPT0gJy8nKSB7Ci0rCSAgICByZXN1bHQgPSBGQUxTRTsKLSsJICAgIGJyZWFrOwotKwl9Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0gLyoKLSAgKglpbnQKLSAgKglfbmNfcGFyc2VfZW50cnkoZW50cnksIGxpdGVyYWwsIHNpbGVudCkKLUBAIC0yMTEsNiArMjI1LDcgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCi0gICAgIGludCB0b2tlbl90eXBlOwotICAgICBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqZW50cnlfcHRyOwotICAgICBjaGFyICpwdHIsICpiYXNlOwotKyAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICBib29sIGJhZF90Y191c2FnZSA9IEZBTFNFOwotIAotICAgICB0b2tlbl90eXBlID0gX25jX2dldF90b2tlbihzaWxlbnQpOwotQEAgLTI2MSw3ICsyNzYsMTIgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCi0gICAgICAqIHJlc3VsdHMgaW4gdGhlIHRlcm1pbmFsIHR5cGUgZ2V0dGluZyBwcmVtYXR1cmVseSBzZXQgdG8gY29ycmVzcG9uZAotICAgICAgKiB0byB0aGF0IG9mIHRoZSBuZXh0IGVudHJ5LgotICAgICAgKi8KLS0gICAgX25jX3NldF90eXBlKF9uY19maXJzdF9uYW1lKGVudHJ5cC0+dHRlcm0udGVybV9uYW1lcykpOwotKyAgICBuYW1lID0gX25jX2ZpcnN0X25hbWUoZW50cnlwLT50dGVybS50ZXJtX25hbWVzKTsKLSsgICAgaWYgKCF2YWxpZF9lbnRyeW5hbWUobmFtZSkpIHsKLSsJX25jX3dhcm5pbmcoImludmFsaWQgZW50cnkgbmFtZSBcIiVzXCIiLCBuYW1lKTsKLSsJbmFtZSA9ICJpbnZhbGlkIjsKLSsgICAgfQotKyAgICBfbmNfc2V0X3R5cGUobmFtZSk7Ci0gCi0gICAgIC8qIGNoZWNrIGZvciBvdmVybHktbG9uZyBuYW1lcyBhbmQgYWxpYXNlcyAqLwotICAgICBmb3IgKGJhc2UgPSBlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXM7IChwdHIgPSBzdHJjaHIoYmFzZSwgJ3wnKSkgIT0gMDsKLUBAIC0yODMsMTMgKzMwMywyNCBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKLSAJYm9vbCBpc191c2UgPSAoc3RyY21wKF9uY19jdXJyX3Rva2VuLnRrX25hbWUsICJ1c2UiKSA9PSAwKTsKLSAJYm9vbCBpc190YyA9ICFpc191c2UgJiYgKHN0cmNtcChfbmNfY3Vycl90b2tlbi50a19uYW1lLCAidGMiKSA9PSAwKTsKLSAJaWYgKGlzX3VzZSB8fCBpc190YykgewotKwkgICAgaWYgKCFWQUxJRF9TVFJJTkcoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKQotKwkJfHwgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nWzBdID09ICdcMCcpIHsKLSsJCV9uY193YXJuaW5nKCJtaXNzaW5nIG5hbWUgZm9yIHVzZS1jbGF1c2UiKTsKLSsJCWNvbnRpbnVlOwotKwkgICAgfSBlbHNlIGlmICghdmFsaWRfZW50cnluYW1lKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZykpIHsKLSsJCV9uY193YXJuaW5nKCJpbnZhbGlkIG5hbWUgZm9yIHVzZS1jbGF1c2UgXCIlc1wiIiwKLSsJCQkgICAgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKLSsJCWNvbnRpbnVlOwotKwkgICAgfSBlbHNlIGlmIChlbnRyeXAtPm51c2VzID49IE1BWF9VU0VTKSB7Ci0rCQlfbmNfd2FybmluZygidG9vIG1hbnkgdXNlLWNsYXVzZXMsIGlnbm9yZWQgXCIlc1wiIiwKLSsJCQkgICAgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKLSsJCWNvbnRpbnVlOwotKwkgICAgfQotIAkgICAgZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLm5hbWUgPSBfbmNfc2F2ZV9zdHIoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKLSAJICAgIGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5saW5lID0gX25jX2N1cnJfbGluZTsKLS0JICAgIGlmIChWQUxJRF9TVFJJTkcoZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLm5hbWUpKSB7Ci0tCQllbnRyeXAtPm51c2VzKys7Ci0tCQlpZiAoZW50cnlwLT5udXNlcyA+IDEgJiYgaXNfdGMpIHsKLS0JCSAgICBCQURfVENfVVNBR0UKLS0JCX0KLSsJICAgIGVudHJ5cC0+bnVzZXMrKzsKLSsJICAgIGlmIChlbnRyeXAtPm51c2VzID4gMSAmJiBpc190YykgewotKwkJQkFEX1RDX1VTQUdFCi0gCSAgICB9Ci0gCX0gZWxzZSB7Ci0gCSAgICAvKiBub3JtYWwgdG9rZW4gbG9va3VwICovCi1AQCAtNjQxLDEzICs2NzIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciBDX0JTW10gPSAiXGIiOwotIHN0YXRpYyBjb25zdCBjaGFyIENfSFRbXSA9ICJcdCI7Ci0gCi0gLyoKLS0gKiBOb3RlIHRoYXQgV0FOVEVEIGFuZCBQUkVTRU5UIGFyZSBub3Qgc2ltcGxlIGludmVyc2VzISAgSWYgYSBjYXBhYmlsaXR5Ci0tICogaGFzIGJlZW4gZXhwbGljaXRseSBjYW5jZWxsZWQsIGl0J3Mgbm90IGNvbnNpZGVyZWQgV0FOVEVELgotLSAqLwotLSNkZWZpbmUgV0FOVEVEKHMpCSgocykgPT0gQUJTRU5UX1NUUklORykKLS0jZGVmaW5lIFBSRVNFTlQocykJKCgocykgIT0gQUJTRU5UX1NUUklORykgJiYgKChzKSAhPSBDQU5DRUxMRURfU1RSSU5HKSkKLS0KLS0vKgotICAqIFRoaXMgYml0IG9mIGxlZ2VyZGVtYWluIHR1cm5zIGFsbCB0aGUgdGVybWluZm8gdmFyaWFibGUgbmFtZXMgaW50bwotICAqIHJlZmVyZW5jZXMgdG8gbG9jYXRpb25zIGluIHRoZSBhcnJheXMgQm9vbGVhbnMsIE51bWJlcnMsIGFuZCBTdHJpbmdzIC0tLQotICAqIHByZWNpc2VseSB3aGF0J3MgbmVlZGVkLgotQEAgLTY3MiwxMCArNjk2LDEwIEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKLSAKLSAgICAgLyogaWYgdGhlcmUgd2FzIGEgdGMgZW50cnksIGFzc3VtZSB3ZSBwaWNrZWQgdXAgZGVmYXVsdHMgdmlhIHRoYXQgKi8KLSAgICAgaWYgKCFoYXNfYmFzZSkgewotLQlpZiAoV0FOVEVEKGluaXRfM3N0cmluZykgJiYgdGVybWNhcF9pbml0MikKLSsJaWYgKFdBTlRFRChpbml0XzNzdHJpbmcpICYmIFBSRVNFTlQodGVybWNhcF9pbml0MikpCi0gCSAgICBpbml0XzNzdHJpbmcgPSBfbmNfc2F2ZV9zdHIodGVybWNhcF9pbml0Mik7Ci0gCi0tCWlmIChXQU5URUQocmVzZXRfMnN0cmluZykgJiYgdGVybWNhcF9yZXNldCkKLSsJaWYgKFdBTlRFRChyZXNldF8yc3RyaW5nKSAmJiBQUkVTRU5UKHRlcm1jYXBfcmVzZXQpKQotIAkgICAgcmVzZXRfMnN0cmluZyA9IF9uY19zYXZlX3N0cih0ZXJtY2FwX3Jlc2V0KTsKLSAKLSAJaWYgKFdBTlRFRChjYXJyaWFnZV9yZXR1cm4pKSB7Ci1AQCAtNzkwLDcgKzgxNCw3IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKLSAJaWYgKGluaXRfdGFicyAhPSA4ICYmIGluaXRfdGFicyAhPSBBQlNFTlRfTlVNRVJJQykKLSAJICAgIF9uY193YXJuaW5nKCJoYXJkd2FyZSB0YWJzIHdpdGggYSB3aWR0aCBvdGhlciB0aGFuIDg6ICVkIiwgaW5pdF90YWJzKTsKLSAJZWxzZSB7Ci0tCSAgICBpZiAodGFiICYmIF9uY19jYXBjbXAodGFiLCBDX0hUKSkKLSsJICAgIGlmIChQUkVTRU5UKHRhYikgJiYgX25jX2NhcGNtcCh0YWIsIENfSFQpKQotIAkJX25jX3dhcm5pbmcoImhhcmR3YXJlIHRhYnMgd2l0aCBhIG5vbi1eSSB0YWIgc3RyaW5nICVzIiwKLSAJCQkgICAgX25jX3Zpc2J1Zih0YWIpKTsKLSAJICAgIGVsc2UgewotQEAgLTg2NywxNyArODkxLDIyIEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKLSAJICAgICAqIFRoZSBtYWdpYyBtb21lbnQgLS0gY29weSB0aGUgbWFwcGVkIGtleSBzdHJpbmcgb3ZlciwKLSAJICAgICAqIHN0cmlwcGluZyBvdXQgcGFkZGluZy4KLSAJICAgICAqLwotLQkgICAgZm9yIChkcCA9IGJ1ZjIsIGJwID0gdHAtPlN0cmluZ3NbZnJvbV9wdHItPm50ZV9pbmRleF07ICpicDsgYnArKykgewotLQkJaWYgKGJwWzBdID09ICckJyAmJiBicFsxXSA9PSAnPCcpIHsKLS0JCSAgICB3aGlsZSAoKmJwICYmICpicCAhPSAnPicpIHsKLS0JCQkrK2JwOwotLQkJICAgIH0KLS0JCX0gZWxzZQotLQkJICAgICpkcCsrID0gKmJwOwotLQkgICAgfQotLQkgICAgKmRwID0gJ1wwJzsKLSsJICAgIGJwID0gdHAtPlN0cmluZ3NbZnJvbV9wdHItPm50ZV9pbmRleF07Ci0rCSAgICBpZiAoVkFMSURfU1RSSU5HKGJwKSkgewotKwkJZm9yIChkcCA9IGJ1ZjI7ICpicDsgYnArKykgewotKwkJICAgIGlmIChicFswXSA9PSAnJCcgJiYgYnBbMV0gPT0gJzwnKSB7Ci0rCQkJd2hpbGUgKCpicCAmJiAqYnAgIT0gJz4nKSB7Ci0rCQkJICAgICsrYnA7Ci0rCQkJfQotKwkJICAgIH0gZWxzZQotKwkJCSpkcCsrID0gKmJwOwotKwkJfQotKwkJKmRwID0gJ1wwJzsKLSAKLS0JICAgIHRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IF9uY19zYXZlX3N0cihidWYyKTsKLSsJCXRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IF9uY19zYXZlX3N0cihidWYyKTsKLSsJICAgIH0gZWxzZSB7Ci0rCQl0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBicDsKLSsJICAgIH0KLSAJfQotIAotIAkvKgotQEAgLTg4Niw3ICs5MTUsNyBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCSAqIGdvdCBtYXBwZWQgdG8ga2ljaDEgYW5kIGltIHRvIGtJQyB0byBhdm9pZCBhIGNvbGxpc2lvbi4KLSAJICogSWYgdGhlIGRlc2NyaXB0aW9uIGhhcyBpbSBidXQgbm90IGljLCBoYWNrIGtJQyBiYWNrIHRvIGtpY2gxLgotIAkgKi8KLS0JaWYgKGZvdW5kaW0gJiYgV0FOVEVEKGtleV9pYykgJiYga2V5X3NpYykgewotKwlpZiAoZm91bmRpbSAmJiBXQU5URUQoa2V5X2ljKSAmJiBQUkVTRU5UKGtleV9zaWMpKSB7Ci0gCSAgICBrZXlfaWMgPSBrZXlfc2ljOwotIAkgICAga2V5X3NpYyA9IEFCU0VOVF9TVFJJTkc7Ci0gCX0KLUBAIC05MzgsOSArOTY3LDkgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQotIAkgICAgYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKGJ1ZjIpOwotIAkgICAgX25jX3dhcm5pbmcoImFjc2Mgc3RyaW5nIHN5bnRoZXNpemVkIGZyb20gWEVOSVggY2FwYWJpbGl0aWVzIik7Ci0gCX0KLS0gICAgfSBlbHNlIGlmIChhY3NfY2hhcnMgPT0gMAotLQkgICAgICAgJiYgZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSAhPSAwCi0tCSAgICAgICAmJiBleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkgewotKyAgICB9IGVsc2UgaWYgKGFjc19jaGFycyA9PSBBQlNFTlRfU1RSSU5HCi0rCSAgICAgICAmJiBQUkVTRU5UKGVudGVyX2FsdF9jaGFyc2V0X21vZGUpCi0rCSAgICAgICAmJiBQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpIHsKLSAJYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKFZUX0FDU0MpOwotICAgICB9Ci0gfQotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jIGIvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKLWluZGV4IDM5M2Q4ZTcuLjEwZWM2YzggMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYwotKysrIGIvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDcsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiwyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgotQEAgLTM1LDggKzM1LDkgQEAKLSAqKi8KLSAKLSAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSsjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHN0cmluZ3MuYyx2IDEuOCAyMDEyLzAyLzIyIDIyOjM0OjMxIHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IHN0cmluZ3MuYyx2IDEuOSAyMDE3LzA4LzI2IDEzOjE2OjExIHRvbSBFeHAgJCIpCi0gCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBVc2VmdWwgc3RyaW5nIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSBmb3IgbXZjdXIpCi1AQCAtMTA1LDcgKzEwNiw3IEBAIF9uY19zdHJfY29weShzdHJpbmdfZGVzYyAqIGRzdCwgc3RyaW5nX2Rlc2MgKiBzcmMpCi0gTkNVUlNFU19FWFBPUlQoYm9vbCkKLSBfbmNfc2FmZV9zdHJjYXQoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKLSB7Ci0tICAgIGlmIChzcmMgIT0gMCkgewotKyAgICBpZiAoUFJFU0VOVChzcmMpKSB7Ci0gCXNpemVfdCBsZW4gPSBzdHJsZW4oc3JjKTsKLSAKLSAJaWYgKGxlbiA8IGRzdC0+c19zaXplKSB7Ci1AQCAtMTI2LDcgKzEyNyw3IEBAIF9uY19zYWZlX3N0cmNhdChzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQotIE5DVVJTRVNfRVhQT1JUKGJvb2wpCi0gX25jX3NhZmVfc3RyY3B5KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCi0gewotLSAgICBpZiAoc3JjICE9IDApIHsKLSsgICAgaWYgKFBSRVNFTlQoc3JjKSkgewotIAlzaXplX3QgbGVuID0gc3RybGVuKHNyYyk7Ci0gCi0gCWlmIChsZW4gPCBkc3QtPnNfc2l6ZSkgewotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMgYi9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCi1pbmRleCA0Y2JjYjY1Li40ZDkyZDE1IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby90cmltX3NncjAuYwotKysrIGIvbmN1cnNlcy90aW5mby90cmltX3NncjAuYwotQEAgLTM2LDcgKzM2LDcgQEAKLSAKLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHRyaW1fc2dyMC5jLHYgMS4xNiAyMDE3LzA0LzA1IDIyOjMzOjA3IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IHRyaW1fc2dyMC5jLHYgMS4xNyAyMDE3LzA4LzI2IDE0OjU0OjE2IHRvbSBFeHAgJCIpCi0gCi0gI3VuZGVmIENVUgotICNkZWZpbmUgQ1VSIHRwLT4KLUBAIC0yNjMsNyArMjYzLDcgQEAgX25jX3RyaW1fc2dyMChURVJNVFlQRTIgKnRwKQotIAkgICAgLyoKLSAJICAgICAqIElmIHJtYWNzIGlzIGEgc3Vic3RyaW5nIG9mIHNncigwKSwgcmVtb3ZlIHRoYXQgY2h1bmsuCi0gCSAgICAgKi8KLS0JICAgIGlmIChleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkgewotKwkgICAgaWYgKFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkgewotIAkJVFIoVFJBQ0VfREFUQUJBU0UsICgic2NhbiBmb3Igcm1hY3MgJXMiLCBfbmNfdmlzYnVmKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpKTsKLSAJCWogPSBzdHJsZW4ob2ZmKTsKLSAJCWsgPSBzdHJsZW4oZXhpdF9hbHRfY2hhcnNldF9tb2RlKTsKLWRpZmYgLS1naXQgYS9wcm9ncy90aWMuYyBiL3Byb2dzL3RpYy5jCi1pbmRleCBjNWQ3OGU1Li42ZGQ0Njc4IDEwMDY0NAotLS0tIGEvcHJvZ3MvdGljLmMKLSsrKyBiL3Byb2dzL3RpYy5jCi1AQCAtNDgsNyArNDgsNyBAQAotICNpbmNsdWRlIDxwYXJhbWV0cml6ZWQuaD4KLSAjaW5jbHVkZSA8dHJhbnNmb3JtLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHRpYy5jLHYgMS4yMzMgMjAxNy8wNy8xNSAxNzo0MDoxOSB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiB0aWMuYyx2IDEuMjQzIDIwMTcvMDgvMjYgMjA6NTY6NTUgdG9tIEV4cCAkIikKLSAKLSAjZGVmaW5lIFNURElOX05BTUUgIjxzdGRpbj4iCi0gCi1AQCAtNjIsNiArNjIsMTAgQEAgc3RhdGljIGJvb2wgc2hvd3N1bW1hcnkgPSBGQUxTRTsKLSBzdGF0aWMgY2hhciAqKm5hbWVsc3QgPSAwOwotIHN0YXRpYyBjb25zdCBjaGFyICp0b19yZW1vdmU7Ci0gCi0rI2lmIE5DVVJTRVNfWE5BTUVTCi0rc3RhdGljIGJvb2wgdXNpbmdfZXh0ZW5zaW9ucyA9IEZBTFNFOwotKyNlbmRpZgotKwotIHN0YXRpYyB2b2lkICgqc2F2ZV9jaGVja190ZXJtdHlwZSkgKFRFUk1UWVBFMiAqLCBib29sKTsKLSBzdGF0aWMgdm9pZCBjaGVja190ZXJtdHlwZShURVJNVFlQRTIgKnR0LCBib29sKTsKLSAKLUBAIC04NTAsNiArODU0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgICAgLyogRkFMTFRIUlUgKi8KLSAJY2FzZSAneCc6Ci0gCSAgICB1c2VfZXh0ZW5kZWRfbmFtZXMoVFJVRSk7Ci0rCSAgICB1c2luZ19leHRlbnNpb25zID0gVFJVRTsKLSAJICAgIGJyZWFrOwotICNlbmRpZgotIAlkZWZhdWx0OgotQEAgLTI0MDUsMTAgKzI0MTAsMTcgQEAgY2hlY2tfY29uZmxpY3QoVEVSTVRZUEUyICp0cCkKLSAJICAgIGNvbnN0IGNoYXIgKmEgPSBnaXZlbltqXS52YWx1ZTsKLSAJICAgIGJvb2wgZmlyc3QgPSBUUlVFOwotIAotKwkgICAgaWYgKCFWQUxJRF9TVFJJTkcoYSkpCi0rCQljb250aW51ZTsKLSsKLSAJICAgIGZvciAoayA9IGogKyAxOyBnaXZlbltrXS5rZXljb2RlOyBrKyspIHsKLSAJCWNvbnN0IGNoYXIgKmIgPSBnaXZlbltrXS52YWx1ZTsKLSsKLSsJCWlmICghVkFMSURfU1RSSU5HKGIpKQotKwkJICAgIGNvbnRpbnVlOwotIAkJaWYgKGNoZWNrW2tdKQotIAkJICAgIGNvbnRpbnVlOwotKwotIAkJaWYgKCFfbmNfY2FwY21wKGEsIGIpKSB7Ci0gCQkgICAgY2hlY2tbal0gPSAxOwotIAkJICAgIGNoZWNrW2tdID0gMTsKLUBAIC0yNDMxLDYgKzI0NDMsNjcgQEAgY2hlY2tfY29uZmxpY3QoVEVSTVRZUEUyICp0cCkKLSAJICAgIGlmICghZmlyc3QpCi0gCQlmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gCX0KLSsjaWYgTkNVUlNFU19YTkFNRVMKLSsJaWYgKHVzaW5nX2V4dGVuc2lvbnMpIHsKLSsJICAgIC8qICpJTkRFTlQtT0ZGKiAqLwotKwkgICAgc3RhdGljIHN0cnVjdCB7Ci0rCQljb25zdCBjaGFyICp4Y3Vyc2VzOwotKwkJY29uc3QgY2hhciAqc2hpZnRlZDsKLSsJICAgIH0gdGFibGVbXSA9IHsKLSsJCXsgImtEQyIsICBOVUxMIH0sCi0rCQl7ICJrRE4iLCAgImtpbmQiIH0sCi0rCQl7ICJrRU5EIiwgTlVMTCB9LAotKwkJeyAia0hPTSIsIE5VTEwgfSwKLSsJCXsgImtMRlQiLCBOVUxMIH0sCi0rCQl7ICJrTlhUIiwgTlVMTCB9LAotKwkJeyAia1BSViIsIE5VTEwgfSwKLSsJCXsgImtSSVQiLCBOVUxMIH0sCi0rCQl7ICJrVVAiLCAgImtyaSIgfSwKLSsJCXsgTlVMTCwgICBOVUxMIH0sCi0rCSAgICB9OwotKwkgICAgLyogKklOREVOVC1PTiogKi8KLSsKLSsJICAgIC8qCi0rCSAgICAgKiBTVnI0IGN1cnNlcyBkZWZpbmVzIHRoZSAieGN1cnNlcyIgbmFtZXMgbGlzdGVkIGFib3ZlIGV4Y2VwdCBmb3IKLSsJICAgICAqIHRoZSBzcGVjaWFsIGNhc2VzIGluIHRoZSAic2hpZnRlZCIgY29sdW1uLiAgV2hlbiB1c2luZyB0aGVzZQotKwkgICAgICogbmFtZXMgZm9yIHh0ZXJtJ3MgZXh0ZW5zaW9ucywgdGhhdCB3YXMgY29uZnVzaW5nLCBhbmQgcmVzdWx0ZWQKLSsJICAgICAqIGluIGFkZGluZyBleHRlbmRlZCBjYXBhYmlsaXRpZXMgd2l0aCAiMiIgKHNoaWZ0KSBzdWZmaXguICBUaGlzCi0rCSAgICAgKiBjaGVjayB3YXJucyBhYm91dCB1bm5lY2Vzc2FyeSB1c2Ugb2YgZXh0ZW5zaW9ucyBmb3IgdGhpcyBxdWlyay4KLSsJICAgICAqLwotKwkgICAgZm9yIChqID0gMDsgZ2l2ZW5bal0ua2V5Y29kZTsgKytqKSB7Ci0rCQljb25zdCBjaGFyICpmaW5kID0gZ2l2ZW5bal0ubmFtZTsKLSsJCWludCB2YWx1ZTsKLSsJCWNoYXIgY2g7Ci0rCi0rCQlpZiAoIVZBTElEX1NUUklORyhnaXZlbltqXS52YWx1ZSkpCi0rCQkgICAgY29udGludWU7Ci0rCi0rCQlmb3IgKGsgPSAwOyB0YWJsZVtrXS54Y3Vyc2VzOyArK2spIHsKLSsJCSAgICBjb25zdCBjaGFyICp0ZXN0ID0gdGFibGVba10ueGN1cnNlczsKLSsJCSAgICBzaXplX3Qgc2l6ZSA9IHN0cmxlbih0ZXN0KTsKLSsKLSsJCSAgICBpZiAoIXN0cm5jbXAoZmluZCwgdGVzdCwgc2l6ZSkgJiYgc3RyY21wKGZpbmQsIHRlc3QpKSB7Ci0rCQkJc3dpdGNoIChzc2NhbmYoZmluZCArIHNpemUsICIlZCVjIiwgJnZhbHVlLCAmY2gpKSB7Ci0rCQkJY2FzZSAxOgotKwkJCSAgICBpZiAodmFsdWUgPT0gMikgewotKwkJCQlfbmNfd2FybmluZygiZXhwZWN0ZWQgJyVzJyByYXRoZXIgdGhhbiAnJXMnIiwKLSsJCQkJCSAgICAodGFibGVba10uc2hpZnRlZAotKwkJCQkJICAgICA/IHRhYmxlW2tdLnNoaWZ0ZWQKLSsJCQkJCSAgICAgOiB0ZXN0KSwgZmluZCk7Ci0rCQkJICAgIH0gZWxzZSBpZiAodmFsdWUgPCAyIHx8IHZhbHVlID4gMTUpIHsKLSsJCQkJX25jX3dhcm5pbmcoImV4cGVjdGVkIG51bWVyaWMgMi4uMTUgJyVzJyIsIGZpbmQpOwotKwkJCSAgICB9Ci0rCQkJICAgIGJyZWFrOwotKwkJCWRlZmF1bHQ6Ci0rCQkJICAgIF9uY193YXJuaW5nKCJleHBlY3RlZCBudW1lcmljIHN1ZmZpeCBmb3IgJyVzJyIsIGZpbmQpOwotKwkJCSAgICBicmVhazsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgfQotKwl9Ci0rI2VuZGlmCi0gCWZyZWUoZ2l2ZW4pOwotIAlmcmVlKGNoZWNrKTsKLSAgICAgfQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwppbmRleCAxZjIxY2Q0Li4wMWU0MWQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwpAQCAtMTMsNyArMTMsNyBAQAogaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlciBwa2djb25maWcKIAogIyBVcHN0cmVhbSBoYXMgdXNlZnVsIHBhdGNoZXMgYXQgdGltZXMgYXQgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2NvbGxhYi1tYWludC9uY3Vyc2VzLmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vbmN1cnNlcy5naXQ7cHJvdG9jb2w9aHR0cHMiCiAKIEVYVFJBX0FVVE9SRUNPTkYgPSAiLUkgbTQiCiBDT05GSUdfU0lURSA9KyAiJHtXT1JLRElSfS9jb25maWcuY2FjaGUiCkBAIC01OSw2ICs1OSw3IEBACiBFWF9URVJNSU5GTyA9ICIiCiBFWF9URVJNSU5GT19jbGFzcy1uYXRpdmUgPSAiOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbyIKIEVYX1RFUk1JTkZPX2NsYXNzLW5hdGl2ZXNkayA9ICI6L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvIgorRVhfVEVSTUxJQiA/PSAidGluZm8iCiAKICMgSGVscGVyIGZ1bmN0aW9uIGZvciBkb19jb25maWd1cmUgdG8gYWxsb3cgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMKICMgJDEgdGhlIGRpcmVjdG9yeSB0byBydW4gY29uZmlndXJlIGluCkBAIC04MCw3ICs4MSw3IEBACiAJICAgICAgICAtLWRpc2FibGUtYmlnLWNvcmUgXAogCSAgICAgICAgLS1wcm9ncmFtLXByZWZpeD0gXAogCSAgICAgICAgLS13aXRoLXRpY2xpYiBcCi0JICAgICAgICAtLXdpdGgtdGVybWxpYj10aW5mbyBcCisJICAgICAgICAtLXdpdGgtdGVybWxpYj0ke0VYX1RFUk1MSUJ9IFwKIAkgICAgICAgIC0tZW5hYmxlLXNpZ3dpbmNoIFwKIAkgICAgICAgIC0tZW5hYmxlLXBjLWZpbGVzIFwKIAkgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1oYWNrIFwKQEAgLTIwMSw3ICsyMDIsMTAgQEAKICAgICAgICAgICAgICAgICBsbiAtc2YgeHRlcm0tY29sb3IgJHtEfSR7c3lzY29uZmRpcn0vdGVybWluZm8veC94dGVybQogICAgICAgICBmaQogCi0gICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vdGVybWluZm8KKyAgICAgICAgIyBXaGVuIGNoYW5naW5nICR7bGliZGlyfSB0byBlLmcuIC91c3IvbGliL215YXdlc29tZWxpYi8gbmN1cnNlcyAKKyAgICAgICAgIyBzdGlsbCBpbnN0YWxscyAnL3Vzci9saWIvdGVybWluZm8nLCBzbyB0cnkgdG8gcm0gYm90aCAKKyAgICAgICAgIyB0aGUgcHJvcGVyIHBhdGggYW5kIGEgc2xpZ2h0bHkgaGFyZGNvZGVkIG9uZQorICAgICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3Rlcm1pbmZvICR7RH0ke3ByZWZpeH0vbGliL3Rlcm1pbmZvCiAKICAgICAgICAgIyBjcmVhdGUgbGlua2VyIHNjcmlwdHMgZm9yIGxpYmN1cnNlcy5zbyBhbmQgbGlibmN1cnNlcyB0bwogICAgICAgICAjIGxpbmsgYWdhaW5zdCAtbHRpbmZvIHdoZW4gbmVlZGVkLiBTb21lIGJ1aWxkcyBtaWdodCBicmVhawpAQCAtMjI3LDcgKzIzMSw3IEBACiAgICAgICAgIGlmIFsgISAtZCAiJHtEfSR7YmFzZV9saWJkaXJ9IiBdOyB0aGVuCiAgICAgICAgICAgICAjIFNldHRpbmcgYmFzZV9saWJkaXIgdG8gbGliZGlyIGFzIGlzIGRvbmUgaW4gdGhlIC1uYXRpdmUKICAgICAgICAgICAgICMgY2FzZSB3aWxsIHNraXAgdGhpcyBjb2RlCi0gICAgICAgICAgICBta2RpciAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgIG1rZGlyIC1wICR7RH0ke2Jhc2VfbGliZGlyfQogICAgICAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9saWJuY3Vyc2VzLnNvLiogJHtEfSR7YmFzZV9saWJkaXJ9CiAgICAgICAgICAgICAhICR7RU5BQkxFX1dJREVDfSB8fCBcCiAgICAgICAgICAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9saWJuY3Vyc2Vzdy5zby4qICR7RH0ke2Jhc2VfbGliZGlyfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MDcxNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFkYTVkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MDcxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgbmN1cnNlcy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaCBcCi0iCi0jIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCi1TUkNSRVYgPSAiNTI2ODFhNmExYTE4YjRkNmViMWE3MTY1MTJkMGRkODI3YmQ3MWM4NyIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MTEyNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcxMTI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNGI5NmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MTEyNS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIG5jdXJzZXMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCisiCisjIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCitTUkNSRVYgPSAiNWQ4NDllODM2MDUyNDU5OTAxY2ZlMGI4NWEwYjI5MzlmZjhkMmIyYSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKaW5kZXggOTU5YjFjNi4uMjVlNWI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaApAQCAtMTcsNCArMTcsNCBAQAogK0RFRklORSBHQ0M0NF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWZuby1zdGFjay1wcm90ZWN0b3IgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KICBERUZJTkUgR0NDNDRfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1QSUUgLW5vLXBpZQ0KICBERUZJTkUgR0NDNDRfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KLSBERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQorIERFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjAgLW5vLXBpZQ0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKaW5kZXggZmEwZDY2Mi4uODc1MGIzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKQEAgLTE1MSw3ICsxNTEsNyBAQAogCiBkb19jb21waWxlX2NsYXNzLXRhcmdldCgpIHsKICAgICBleHBvcnQgTEZMQUdTPSIke0xERkxBR1N9IgotICAgIFBBUkFMTEVMX0pPQlM9IiR7QCAnJHtQQVJBTExFTF9NQUtFfScucmVwbGFjZSgnLWonLCAnLW4gJyl9IgorICAgIFBBUkFMTEVMX0pPQlM9IiR7QG9lLnV0aWxzLnBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgJy1uICVkJyl9IgogICAgIE9WTUZfQVJDSD0iWDY0IgogICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdIDsgdGhlbgogICAgICAgICBPVk1GX0FSQ0g9IklBMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgppbmRleCBhZWU0YTAzLi5lMmY2MTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKQEAgLTIzLDggKzIzLDggQEAKICAgICBuYXRpdmVzZGstbWFrZWRldnMgXAogICAgIG5hdGl2ZXNkay1kbmYgXAogICAgIG5hdGl2ZXNkay1jbWFrZSBcCi0gICAgbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ25hdGl2ZXNkay13YXlsYW5kJywgJycsIGQpfSBcCisgICAgbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teSBcCiAgICAgIgogCiBSREVQRU5EU18ke1BOfV9kYXJ3aW4gPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYgppbmRleCBmOWU2ZTJlLi5iYjE5MmFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYgpAQCAtNTQsNyArNTQsNiBAQAogICAgIHBhY2thZ2Vncm91cC1kaXN0cm8tYmFzZSBcCiAgICAgcGFja2FnZWdyb3VwLW1hY2hpbmUtYmFzZSBcCiAgICAgXAotICAgIHN5c2ZzdXRpbHMgXAogICAgIG1vZHVsZS1pbml0LXRvb2xzIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdhcG0nLCAncGFja2FnZWdyb3VwLWJhc2UtYXBtJywgJycsZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdhY3BpJywgJ3BhY2thZ2Vncm91cC1iYXNlLWFjcGknLCAnJyxkKX0gXApAQCAtMTUyLDggKzE1MSw3IEBACiAKIFNVTU1BUllfcGFja2FnZWdyb3VwLWJhc2UtYWNwaSA9ICJBQ1BJIHN1cHBvcnQiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS1hY3BpID0gIlwKLSAgICBhY3BpZCBcCi0gICAgbGliYWNwaSAiCisgICAgYWNwaWQiCiAKIFNVTU1BUllfcGFja2FnZWdyb3VwLWJhc2UtYXBtID0gIkFQTSBzdXBwb3J0IgogUkRFUEVORFNfcGFja2FnZWdyb3VwLWJhc2UtYXBtID0gIlwKQEAgLTI5Miw4ICsyOTAsNiBAQAogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtYmFzZS13aWZpID0gIldpRmkgc3VwcG9ydCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiXAogICAgICR7VklSVFVBTC1SVU5USU1FX3dpcmVsZXNzLXRvb2xzfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0NPTUJJTkVEX0ZFQVRVUkVTJywgJ3BjbWNpYScsICdob3N0YXAtdXRpbHMnLCAnJyxkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdDT01CSU5FRF9GRUFUVVJFUycsICdwY2knLCAnaG9zdGFwLXV0aWxzJywgJycsZCl9IFwKICAgICB3cGEtc3VwcGxpY2FudCIKIAogUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWJhc2Utd2lmaSA9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgppbmRleCAwNGJjMGYyLi43NmNkN2ZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKQEAgLTIzLDYgKzIzLDggQEAKIFZJUlRVQUwtUlVOVElNRV9pbml0c2NyaXB0cyA/PSAiaW5pdHNjcmlwdHMiCiBWSVJUVUFMLVJVTlRJTUVfa2V5bWFwcyA/PSAia2V5bWFwcyIKIAorRUZJX1BST1ZJREVSID8/PSAiZ3J1Yi1lZmkiCisKIFNZU1ZJTklUX1NDUklQVFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncnRjJywgJyR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtaHdjbG9ja30nLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAgbW9kdXRpbHMtaW5pdHNjcmlwdHMgXAogICAgICAgICAgICAgICAgICAgICBpbml0LWlmdXBkb3duIFwKQEAgLTM1LDYgKzM3LDcgQEAKICAgICAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJzeXN2aW5pdCIsICIke1NZU1ZJTklUX1NDUklQVFN9IiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAia2V5Ym9hcmQiLCAiJHtWSVJUVUFMLVJVTlRJTUVfa2V5bWFwc30iLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJlZmkiLCAiJHtFRklfUFJPVklERVJ9IGtlcm5lbCIsICIiLCBkKX0gXAogICAgIG5ldGJhc2UgXAogICAgICR7VklSVFVBTC1SVU5USU1FX2xvZ2luX21hbmFnZXJ9IFwKICAgICAke1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXJ9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgppbmRleCBhZjBjZTIwLi40NWU4YzEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCkBAIC0yNywxMSArMjcsMTAgQEAKICAgICB0Y2wiCiAKIFNBTklUSVpFUlMgPSAibGliYXNhbi1kZXYgbGlidWJzYW4tZGV2IgotU0FOSVRJWkVSU19hYXJjaDY0ID0gIiIKK1NBTklUSVpFUlNfbWljcm9ibGF6ZSA9ICIiCiBTQU5JVElaRVJTX21pcHNhcmNoID0gIiIKIFNBTklUSVpFUlNfbmlvczIgPSAiIgotU0FOSVRJWkVSU19wb3dlcnBjNjQgPSAiIgotU0FOSVRJWkVSU19zcGFyYyA9ICIiCitTQU5JVElaRVJTX3Jpc2N2NjQgPSAiIgogU0FOSVRJWkVSU19saWJjLW11c2wgPSAiIgogCiBSUkVDT01NRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1zZGsgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKaW5kZXggYThlNDdkYS4uZmEwZTM2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCkBAIC0yNiw3ICsyNiw2IEBACiAKIFBST0ZJTEVUT09MUyA9ICJcCiAgICAgcG93ZXJ0b3AgXAotICAgIGxhdGVuY3l0b3AgXAogICAgICIKIFBFUkYgPSAicGVyZiIKIFBFUkZfbGliYy1tdXNsID0gIiIKQEAgLTM0LDE2ICszMywxNiBAQAogIyBzeXN0ZW10YXAgbmVlZHMgZWxmdXRpbHMgd2hpY2ggaXMgbm90IGZ1bGx5IGJ1aWxkYWJsZSBvbiBzb21lIGFyY2hlcy9saWJjcwogU1lTVEVNVEFQID0gInN5c3RlbXRhcCIKIFNZU1RFTVRBUF9saWJjLW11c2wgPSAiIgotU1lTVEVNVEFQX21pcHNhcmNoID0gIiIKIFNZU1RFTVRBUF9uaW9zMiA9ICIiCi1TWVNURU1UQVBfYWFyY2g2NCA9ICIiCiAKICMgbHR0bmctdXN0IHVzZXMgc2NoZWRfZ2V0Y3B1KCkgd2hpY2ggaXMgbm90IHRoZXJlIG9uIGZvciBzb21lIHBsYXRmb3Jtcy4KIExUVE5HVVNUID0gImx0dG5nLXVzdCIKIExUVE5HVVNUX2xpYmMtbXVzbCA9ICIiCitMVFROR1VTVF9yaXNjdjY0ID0gIiIKIAogTFRUTkdUT09MUyA9ICJsdHRuZy10b29scyIKIExUVE5HVE9PTFNfbGliYy1tdXNsID0gIiIKK0xUVE5HVE9PTFNfcmlzY3Y2NCA9ICIiCiAKIExUVE5HTU9EVUxFUyA9ICJsdHRuZy1tb2R1bGVzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiCmluZGV4IDMxNzA5NzguLmI4ZTUwNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiCkBAIC0xMCw5ICsxMCwxMCBAQAogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCi0jIGtleGVjLXRvb2xzIGRvZXNuJ3Qgd29yayBvbiBlNTUwMC02NGIgYW5kIG5pb3MyIHlldAorIyBrZXhlYy10b29scyBkb2Vzbid0IHdvcmsgb24gZTU1MDAtNjRiLCBtaWNyb2JsYXplIGFuZCBuaW9zMiB5ZXQKIEtFWEVDVE9PTFMgPz0gImtleGVjIgogS0VYRUNUT09MU19lNTUwMC02NGIgPz0gIiIKK0tFWEVDVE9PTFNfbWljcm9ibGF6ZSA/PSAiIgogS0VYRUNUT09MU19uaW9zMiA/PSAiIgogCiBYMTFHTFRPT0xTID0gIlwKQEAgLTI1LDcgKzI2LDcgQEAKIAogWDExVE9PTFMgPSAiXAogICAgIGZzdGVzdHMgXAotICAgIGdzdC1wbGF5ZXIgXAorICAgIGdzdC1leGFtcGxlcyBcCiAgICAgeDExcGVyZiBcCiAgICAgeHJlc3RvcCBcCiAgICAgeHdpbmluZm8gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgppbmRleCAzZTE5MDc3Li43ZDJjY2JkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgpAQCAtNSw0ICs1LDUgQEAKIFJERVBFTkRTXyR7UE59ID0gIiBcCiAgICAgZ28tcnVudGltZSBcCiAgICAgZ28tcnVudGltZS1kZXYgXAorICAgIGdvLXJ1bnRpbWUtc3RhdGljZGV2IFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgppbmRleCBmZjQyODY2Li5hZGIwYzU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCkBAIC0xMzYsNyArMTM2LDYgQEAKICAgICBtdG9vbHMgXAogICAgIG5jdXJzZXMgXAogICAgIG5jdXJzZXMtdGVybWluZm8tYmFzZSBcCi0gICAgbmVvbiBcCiAgICAgbmZzLXV0aWxzIFwKICAgICBuZnMtdXRpbHMtY2xpZW50IFwKICAgICBvcGVuc3NsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKaW5kZXggM2I3ZjgxOC4uYWFiMmMwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKQEAgLTEyLDcgKzEyLDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IFwKICAgICAgICAgICAgZmlsZTovL3BzcGxhc2gtaW5pdCBcCiAgICAgICAgICAgICR7U1BMQVNIX0lNQUdFU30iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogU1BMQVNIX0lNQUdFUyA9ICJmaWxlOi8vcHNwbGFzaC1wb2t5LWltZy5oO291dHN1ZmZpeD1kZWZhdWx0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IxOGIyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotcmVxdWlyZSBzeXN0ZW1kLmluYwotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotaW5oZXJpdCBkZXBsb3kKLQotRUZJX0NDID89ICIke0NDfSIKLSMgTWFuIHBhZ2VzIGFyZSBwYWNrYWdlZCB0aHJvdWdoIHRoZSBtYWluIHN5c3RlbWQgcmVjaXBlCi1FWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLWdudWVmaSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFucGFnZXMgXAotICAgICAgICAgICAgICAgICBFRklfQ0M9JyR7RUZJX0NDfScgXAotICAgICAgICAgICAgICAgIgotCi0jIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgotQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgotCi1kb19jb21waWxlKCkgewotCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgotCWZpCi0KLQlvZV9ydW5tYWtlIHN5c3RlbWQtYm9vdCR7U1lTVEVNRF9CT09UX0VGSV9BUkNIfS5lZmkKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIEJ5cGFzcyBzeXN0ZW1kIGluc3RhbGxhdGlvbiB3aXRoIGEgTk9QCi0JOgotfQotCi1kb19kZXBsb3kgKCkgewotCWluc3RhbGwgJHtCfS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KLX0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmQzODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYgpAQCAtMCwwICsxLDcwIEBACityZXF1aXJlIHN5c3RlbWQuaW5jCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9zeXN0ZW1kOiIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMjctcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggXAorICAgICAgICAgICAgIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Citpbmhlcml0IGRlcGxveQorCitFRklfQ0MgPz0gIiR7Q0N9IgorRVhUUkFfT0VNRVNPTiArPSAiLURlZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGdudS1lZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZHNkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EbWFuPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWNjPScke0VGSV9DQ30nIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxkPScke0xEfScgXAorICAgICAgICAgICAgICAgICAgIgorCisjIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKKyMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KKyMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKKyAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJywgVHJ1ZSkgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCisgICAgaWYgdGFyZ2V0ID09ICJ4ODZfNjQiOgorICAgICAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyAiYm9vdHg2NC5lZmkiCisgICAgZWxzZToKKyAgICAgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgImJvb3RpYTMyLmVmaSIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQorICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKK30KKworRklMRVNfJHtQTn0gPSAiL2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9IgorCitSREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vYm9vdAorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSQorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSS9CT09UCisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0R9L2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KK30KK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3Rjb25mXzEuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3Rjb25mXzEuMDAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTljMjQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdGNvbmZfMS4wMC5iYgpAQCAtMCwwICsxLDMxIEBACitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorU1VNTUFSWSA9ICJCYXNpYyBzeXN0ZW1kLWJvb3QgY29uZmlndXJhdGlvbiBmaWxlcyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJ2aXJ0dWFsL3N5c3RlbWQtYm9vdGNvbmYiCisKK2luaGVyaXQgc3lzdGVtZC1ib290LWNmZworCitTID0gIiR7V09SS0RJUn0iCisKK0xBQkVMUyA9ICJib290IgorCitST09UID89ICJyb290PS9kZXYvc2RhMiIKK0FQUEVORF9hcHBlbmQgPSAiICR7Uk9PVH0iCisKK3B5dGhvbiBkb19jb25maWd1cmUoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdidWlsZF9lZmlfY2ZnJywgZCkKK30KKworZG9fY29uZmlndXJlW3ZhcmRlcHNdICs9ICJBUFBFTkQiCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9sb2FkZXIKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9sb2FkZXIvZW50cmllcworCWluc3RhbGwgbG9hZGVyLmNvbmYgJHtEfS9ib290L2xvYWRlci8KKwlybSBsb2FkZXIuY29uZgorCWluc3RhbGwgKi5jb25mICR7RH0vYm9vdC9sb2FkZXIvZW50cmllcy8KK30KKworRklMRVNfJHtQTn0gPSAiL2Jvb3QvbG9hZGVyLyogL2Jvb3QvbG9hZGVyL2VudHJpZXMvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCmluZGV4IGQ5MzQ3MTYuLmQ2N2EzYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgpAQCAtMTEsNiArMTEsMTAgQEAKIAogUyA9ICIke1dPUktESVJ9IgogCisjIEFzIHRoaXMgcGFja2FnZSBpcyB0aWVkIHRvIHN5c3RlbWQsIG9ubHkgYnVpbGQgaXQgd2hlbiB3ZSdyZSBhbHNvIGJ1aWxkaW5nIHN5c3RlbWQuCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKIGRvX2luc3RhbGwoKSB7CiAJaWYgWyAhIC16ICIke1NFUklBTF9DT05TT0xFU30iIF0gOyB0aGVuCiAJCWRlZmF1bHRfYmF1ZHJhdGU9YGVjaG8gIiR7U0VSSUFMX0NPTlNPTEVTfSIgfCBzZWQgJ3MvXDsuKi8vJ2AKQEAgLTQzLDEwICs0Nyw0IEBACiBGSUxFU18ke1BOfSA9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZSAke3N5c2NvbmZkaXJ9IgogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAotIyBBcyB0aGlzIHBhY2thZ2UgaXMgdGllZCB0byBzeXN0ZW1kLCBvbmx5IGJ1aWxkIGl0IHdoZW4gd2UncmUgYWxzbyBidWlsZGluZyBzeXN0ZW1kLgotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KLQogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKaW5kZXggZDk5ZDE1MC4uNWZhNDhlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKQEAgLTE0LDcgKzE0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gImMxZWRhYjdhZDFlN2NjYzliZTY5M2JlZGZkNDY0Y2QxY2JmZmIzOTUiCitTUkNSRVYgPSAiNDY2NTlmN2RlYjk2MmY1NWM3MjhlNzA1OTdlMzdjMmEzYWI2MzI2ZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC5naXQ7cHJvdG9jb2w9Z2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc3YmIxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1BbHNvLWNoZWNrLWkzODYtaTU4Ni1hbmQtaTY4Ni1mb3ItaWEzMi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDNlOGMxOWJiMWJiYzQ0OTNjNTkxZjc1YzAwYzFmZWZlM2IxYzhhNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIwOjQyOjQxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsc28gY2hlY2sgaTM4NiwgaTU4NiBhbmQgaTY4NiBmb3IgaWEzMgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAyOGNiOGI2MGUuLjQ4OTUzMWE0MyAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTEyMTcsNyArMTIxNyw3IEBAIGNvbmYuc2V0MTAoJ1NZU1RFTURfU0xPV19URVNUU19ERUZBVUxUJywgc2xvd190ZXN0cykKKyBpZiBnZXRfb3B0aW9uKCdlZmknKQorICAgICAgICAgZWZpX2FyY2ggPSBob3N0X21hY2hpbmUuY3B1X2ZhbWlseSgpCisgCistICAgICAgICBpZiBlZmlfYXJjaCA9PSAneDg2JworKyAgICAgICAgaWYgZWZpX2FyY2ggPT0gJ3g4Nicgb3IgZWZpX2FyY2ggPT0gJ2kzODYnIG9yIGVmaV9hcmNoID09ICdpNTg2JyBvciBlZmlfYXJjaCA9PSAnaTY4NicKKyAgICAgICAgICAgICAgICAgRUZJX01BQ0hJTkVfVFlQRV9OQU1FID0gJ2lhMzInCisgICAgICAgICAgICAgICAgIGdudV9lZmlfYXJjaCA9ICdpYTMyJworICAgICAgICAgZWxpZiBlZmlfYXJjaCA9PSAneDg2XzY0JworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1OTlkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gM2NhNTMyNjQ4NWNiMTllNzc1YWY2ZGU2MTVjMTdiZTY2ZTQ0ZTQ3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IE9jdCAyMDE3IDIzOjA4OjI0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBfUEFUSF9XVE1QWCBhbmQgX1BBVEhfVVRNUFggaWYgbm90IGRlZmluZWQKLQotTXVzbCBuZWVkcyB0aGVzZSBkZWZpbmVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL3NoYXJlZC91dG1wLXd0bXAuYyB8IDggKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotaW5kZXggOTc1MGRjZDgxLi5iZDU1ZDc0YTEgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCi0rKysgYi9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCi1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8dXRtcC5oPgotICNpbmNsdWRlIDx1dG1weC5oPgotIAotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi1AQCAtNDEsNiArNDIsMTMgQEAKLSAjaW5jbHVkZSAidXRpbC5oIgotICNpbmNsdWRlICJ1dG1wLXd0bXAuaCIKLSAKLSsjaWYgZGVmaW5lZCBfUEFUSF9VVE1QICYmICFkZWZpbmVkIF9QQVRIX1VUTVBYCi0rIyBkZWZpbmUgX1BBVEhfVVRNUFggX1BBVEhfVVRNUAotKyNlbmRpZgotKyNpZiBkZWZpbmVkIF9QQVRIX1dUTVAgJiYgIWRlZmluZWQgX1BBVEhfV1RNUFgKLSsjIGRlZmluZSBfUEFUSF9XVE1QWCBfUEFUSF9XVE1QCi0rI2VuZGlmCi0rCi0gaW50IHV0bXBfZ2V0X3J1bmxldmVsKGludCAqcnVubGV2ZWwsIGludCAqcHJldmlvdXMpIHsKLSAgICAgICAgIHN0cnVjdCB1dG1weCAqZm91bmQsIGxvb2t1cCA9IHsgLnV0X3R5cGUgPSBSVU5fTFZMIH07Ci0gICAgICAgICBpbnQgcjsKLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlMTliYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gNTI3NDEzZWMyNDM1NjRhODlmZmFhZDYzNjhkNDQ2ZGU0NDQxNTk3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMjE6NDI6MjMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHRvIHJ1biBlZmlfY2MgYW5kIGVmaV9sZCBjb3JyZWN0bHkgd2hlbiBjcm9zcy1jb21waWxpbmcKKworV2hlbiBjcm9zcy1jb21waWxpbmcsIGVmaV9jYyBhbmQgZWZpX2xkIG1heSB0YWtlIHRoZSBmb3JtIG9mCisneHh4LWdjYyAtLXN5c3Jvb3Q9eHh4JywgYW5kIHRoaXMgd291bGQgY2F1c2UgcnVuX2NvbW1hbmQgYW5kCit0aGUgYWxpa2UgZmFpbC4KKworRml4IHRvIHNwbGl0IHRoZW0gdG8gbWFrZSBjb21tYW5kcyBydW4gY29ycmVjdGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIHwgMTYgKysrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCitpbmRleCA5OTJhM2JhNGMuLjlmOWVjNDkxMSAxMDA2NDQKKy0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAorKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCitAQCAtMTU3LDcgKzE1Nyw3IEBAIGlmIGhhdmVfZ251X2VmaQorICAgICAgICAgICAgICAgICBvX2ZpbGUgPSBjdXN0b21fdGFyZ2V0KGZpbGUgKyAnLm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgOiBmaWxlICsgJy5vJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2VmaV9jYywgJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBlZmlfY2Muc3BsaXQoKSArIFsnLWMnLCAnQElOUFVUQCcsICctbycsICdAT1VUUFVUQCddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY29tcGlsZV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF9maWxlcyA6IGVmaV9oZWFkZXJzKQorICAgICAgICAgICAgICAgICBpZiAoY29tbW9uX3NvdXJjZXMgKyBzeXN0ZW1kX2Jvb3Rfc291cmNlcykuY29udGFpbnMoZmlsZSkKK0BAIC0xNjgsNyArMTY4LDE3IEBAIGlmIGhhdmVfZ251X2VmaQorICAgICAgICAgICAgICAgICBlbmRpZgorICAgICAgICAgZW5kZm9yZWFjaAorIAorLSAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYywgJy1wcmludC1saWJnY2MtZmlsZS1uYW1lJykuc3Rkb3V0KCkuc3RyaXAoKQorKyAgICAgICAgZmluZF9saWJnY2NfY21kX2FsbCA9IGVmaV9jYyArICcgLXByaW50LWxpYmdjYy1maWxlLW5hbWUnCisrICAgICAgICBmaW5kX2xpYmdjY19jbWQgPSBmaW5kX2xpYmdjY19jbWRfYWxsLnNwbGl0KClbMF0KKysgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgPSBbXQorKyAgICAgICAgY21kX2FyZ3NfYWxsID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpCisrICAgICAgICBmb3JlYWNoIGFyZyA6IGNtZF9hcmdzX2FsbAorKyAgICAgICAgICAgICAgICBpZiBhcmcgIT0gZmluZF9saWJnY2NfY21kCisrICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9saWJnY2NfYXJncyArPSBhcmcKKysgICAgICAgICAgICAgICAgZW5kaWYKKysgICAgICAgIGVuZGZvcmVhY2gKKysKKysgICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChmaW5kX2xpYmdjY19jbWQsIGZpbmRfbGliZ2NjX2FyZ3MpLnN0ZG91dCgpLnN0cmlwKCkKKyAgICAgICAgIHN5c3RlbWRfYm9vdF9lZmlfbmFtZSA9ICdzeXN0ZW1kLWJvb3RAMEAuZWZpJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQorICAgICAgICAgc3R1Yl9lZmlfbmFtZSA9ICdsaW51eEAwQC5lZmkuc3R1YicuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKKyAgICAgICAgIG5vX3VuZGVmaW5lZF9zeW1ib2xzID0gZmluZF9wcm9ncmFtKCduby11bmRlZmluZWQtc3ltYm9scy5zaCcpCitAQCAtMTc5LDcgKzE4OSw3IEBAIGlmIGhhdmVfZ251X2VmaQorICAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogdHVwbGVbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogdHVwbGVbMF0sCistICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfbGQsICctbycsICdAT1VUUFVUQCddICsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2xkLnNwbGl0KCkgKyBbJy1vJywgJ0BPVVRQVVRAJ10gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmlfbGRmbGFncyArIHR1cGxlWzJdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctbGVmaScsICctbGdudWVmaScsIGxpYmdjY19maWxlX25hbWVdKQorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNmZmM0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA2ODdhNWFmOGRjNWQzOGY5MThhNmNlMDhmZWQ1Mjk3MjM0YmY4MzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBNYXIgMjAxOCAxODowMDoxNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBIaWRlIF9fc3RhcnRfQlVTX0VSUk9SX01BUCBhbmQgX19zdG9wX0JVU19FUlJPUl9NQVAKKworZm9yIGN1cnJlbnRseSB1bmtub3duIHJlYXNvbnMgdGhleSBnZXQgZXhwb3J0ZWQgdG8gdGhlIHNoYXJlZCBsaWJyaWVzCitldmVuIHdpdGhvdXQgYmVpbmcgbGlzdGVkIGluIHRoZSBzeW0gZmlsZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIENvbmRpdGlvbmFsIG9uIG1hc3RlciBuZWVkaW5nIHRoaXMsIDIzNCBkb2VzIG5lZWQgaXQgXQorCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworaW5kZXggMzc4ZjdhMzc3Li40OWQ3OTdhYmQgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworQEAgLTcxLDggKzcxLDggQEAgQlVTX0VSUk9SX01BUF9FTEZfUkVHSVNURVIgY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBidXNfc3RhbmRhcmRfZXJyb3JzW10gPSB7CisgfTsKKyAKKyAvKiBHQ0MgbWFwcyB0aGlzIG1hZ2ljYWxseSB0byB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIEJVU19FUlJPUl9NQVAgc2VjdGlvbiAqLworLWV4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RhcnRfQlVTX0VSUk9SX01BUFtdOworLWV4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RvcF9CVVNfRVJST1JfTUFQW107CisrZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdGFydF9CVVNfRVJST1JfTUFQW10gX2hpZGRlbl87CisrZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdG9wX0JVU19FUlJPUl9NQVBbXSBfaGlkZGVuXzsKKyAKKyAvKiBBZGRpdGlvbmFsIG1hcHMgcmVnaXN0ZXJlZCB3aXRoIHNkX2J1c19lcnJvcl9hZGRfbWFwKCkgYXJlIGluIHRoaXMKKyAgKiBOVUxMIHRlcm1pbmF0ZWQgYXJyYXkgKi8KKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxM2UzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZTM2MWY2YjRhZWZhZTU3ZWZmZjdlNDU3ZGY4ZGI0ZDEwNjdiZWMyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6NTA6MjMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGZzdGFjay1wcm90ZWN0b3IgZmxhZ3MgdG8gd29ya2Fyb3VuZCBtdXNsIGJ1aWxkCisKK1JlbW92ZSBmc3RhY2stcHJvdGVjdG9yIGFuZCBmc3RhY2stcHJvdGVjdG9yLXN0cm9uZyBmbGFncyB0byBmaXgKK3RoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSBmb3IgcWVtdXg4NiBhbmQgcWVtdXBwYyB3aXRoIG11c2wuCisKKyAgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zdGFja19jaGtfZmFpbF9sb2NhbCcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA3NjEwYWIxMmIuLjU5MWI5Y2JhYiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTMyOSw4ICszMjksNiBAQCBmb3JlYWNoIGFyZyA6IFsnLVdleHRyYScsCisgICAgICAgICAgICAgICAgJy1mZGlhZ25vc3RpY3Mtc2hvdy1vcHRpb24nLAorICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZycsCisgICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4nLAorLSAgICAgICAgICAgICAgICctZnN0YWNrLXByb3RlY3RvcicsCistICAgICAgICAgICAgICAgJy1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZycsCisgICAgICAgICAgICAgICAgJy0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQnLAorICAgICAgICAgICAgICAgXQorICAgICAgICAgaWYgY2MuaGFzX2FyZ3VtZW50KGFyZykKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRjMTVlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYjExOTJhNmUxNzE0MTMyOTFkOWQ2NGZhZmMwNDc3M2M2YmJjOWNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgRmViIDIwMTggMTA6MDQ6NDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8zMV0gVXNlIGdldGVudiB3aGVuIHNlY3VyZSB2ZXJzaW9ucyBhcmUgbm90IGF2YWlsYWJsZQorCittdXNsIGRvZXNudCBpbXBsZW1lbnQgc2VjdXJlIHZlcnNpb24sIHNvIHdlIGRlZmF1bHQKK3RvIGl0IGlmIGNvbmZpZ3VyZSBkb2VzIG5vdCBkZXRlY3QgYSBzZWN1cmUgaW1wbGVtZW50YXRpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCAxMjgwZTZjNDEuLjM5YzFmYjcwMCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC02MDUsNyArNjA1LDcgQEAgc3RydWN0IGJ0cmZzX2lvY3RsX3F1b3RhX2N0bF9hcmdzIHsKKyAjICBpZiBIQVZFX19fU0VDVVJFX0dFVEVOVgorICMgICAgZGVmaW5lIHNlY3VyZV9nZXRlbnYgX19zZWN1cmVfZ2V0ZW52CisgIyAgZWxzZQorLSMgICAgZXJyb3IgIm5laXRoZXIgc2VjdXJlX2dldGVudiBub3IgX19zZWN1cmVfZ2V0ZW52IGFyZSBhdmFpbGFibGUiCisrIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBnZXRlbnYKKyAjICBlbmRpZgorICNlbmRpZgorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OWRjNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gYjJkNDE3MWM2ZTUyMWNmMWU3MDMzMWZiNzY5MjM0ZDYzYTRhNmQ0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDEzOjAwOjQxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSB1aW50bWF4X3QgZm9yIGhhbmRsaW5nIHJsaW1fdAotCi1QUkl1ezMyLDY0fSBpcyBub3QgcmlnaHQgZm9ybWF0IHRvIHJlcHJlc2VudCBybGltX3QgdHlwZQotdGhlcmVmb3JlIHVzZSAlanUgYW5kIHR5cGVjYXN0IHRoZSBybGltX3QgdmFyaWFibGVzIHRvCi11aW50bWF4X3QuCi0KLUZpeGVzIHBvcnRhYmxpbGl0eSBlcnJvcnMgbGlrZQotCi1leGVjdXRlLmM6MzQ0NjozNjogZXJyb3I6IGZvcm1hdCAnJWx1JyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgdW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDUgaGFzIHR5cGUgJ3JsaW1fdCB7YWthIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnR9JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogIiBSTElNX0ZNVCAiXG4iLAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC83MTk5XQotCi0gc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggfCA4IC0tLS0tLS0tCi0gc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgfCA4ICsrKystLS0tCi0gc3JjL2NvcmUvZXhlY3V0ZS5jICAgICAgfCA4ICsrKystLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotaW5kZXggYWU0MmE4Zjg5Li4xNDQyNDljZDYgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLUBAIC02MCwxNCArNjAsNiBAQAotICMgIGRlZmluZSBQUklfVElNRVggImxpIgotICNlbmRpZgotIAotLSNpZiBTSVpFT0ZfUkxJTV9UID09IDgKLS0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXU2NAotLSNlbGlmIFNJWkVPRl9STElNX1QgPT0gNAotLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTMyCi0tI2Vsc2UKLS0jICBlcnJvciBVbmtub3duIHJsaW1fdCBzaXplCi0tI2VuZGlmCi0tCi0gI2lmIFNJWkVPRl9ERVZfVCA9PSA4Ci0gIyAgZGVmaW5lIERFVl9GTVQgIiUiIFBSSXU2NAotICNlbGlmIFNJWkVPRl9ERVZfVCA9PSA0Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotaW5kZXggY2E4MzRkZjYyLi40MWZjZWJiNzQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLUBAIC0yODQsMTMgKzI4NCwxMyBAQCBpbnQgcmxpbWl0X2Zvcm1hdChjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybCwgY2hhciAqKnJldCkgewotICAgICAgICAgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZICYmIHJsLT5ybGltX21heCA+PSBSTElNX0lORklOSVRZKQotICAgICAgICAgICAgICAgICBzID0gc3RyZHVwKCJpbmZpbml0eSIpOwotICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgImluZmluaXR5OiIgUkxJTV9GTVQsIHJsLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgImluZmluaXR5OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKLSAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX21heCA+PSBSTElNX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6aW5maW5pdHkiLCBybC0+cmxpbV9jdXIpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6aW5maW5pdHkiLCAodWludG1heF90KXJsLT5ybGltX2N1cik7Ci0gICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPT0gcmwtPnJsaW1fbWF4KQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1ULCBybC0+cmxpbV9jdXIpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanUiLCAodWludG1heF90KXJsLT5ybGltX2N1cik7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjoiIFJMSU1fRk1ULCBybC0+cmxpbV9jdXIsIHJsLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTolanUiLCAodWludG1heF90KXJsLT5ybGltX2N1ciwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOwotIAotICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9leGVjdXRlLmMgYi9zcmMvY29yZS9leGVjdXRlLmMKLWluZGV4IGQ3MmU1YmYwOC4uZDM4OTQ2MDAyIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvZXhlY3V0ZS5jCi0rKysgYi9zcmMvY29yZS9leGVjdXRlLmMKLUBAIC0zNDQzLDEwICszNDQzLDEwIEBAIHZvaWQgZXhlY19jb250ZXh0X2R1bXAoRXhlY0NvbnRleHQgKmMsIEZJTEUqIGYsIGNvbnN0IGNoYXIgKnByZWZpeCkgewotIAotICAgICAgICAgZm9yIChpID0gMDsgaSA8IFJMSU1fTkxJTUlUUzsgaSsrKQotICAgICAgICAgICAgICAgICBpZiAoYy0+cmxpbWl0W2ldKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogIiBSTElNX0ZNVCAiXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogIiBSTElNX0ZNVCAiXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAlanVcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICVqdVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgaWYgKGMtPmlvcHJpb19zZXQpIHsKLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmNzQ1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMgKzAsMCBAQAotRnJvbSAwOTMzY2E2MjUxODA4Zjg1NmI5MmIwY2U4ZGE4Njk2ZDVmZWJjMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjQxOjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCi0KLVNpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKwotIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KLSBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA2OTJkN2JiOTUuLjNjYzhmMzQ1MSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTk5Nyw2ICs5OTcsMTAgQEAgbGliYmFzaWNfbGFfU09VUkNFUyA9IFwKLSAJc3JjL2Jhc2ljL2pvdXJuYWwtaW1wb3J0ZXIuaCBcCi0gCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmMKLSAKLStpZiAhSEFWRV9QUklOVEZfSAotK2xpYmJhc2ljX2xhX1NPVVJDRVMgKz0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotK2VuZGlmCi0rCi0gbm9kaXN0X2xpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9iYXNpYy9lcnJuby1mcm9tLW5hbWUuaCBcCi0gCXNyYy9iYXNpYy9lcnJuby10by1uYW1lLmggXAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjBlN2RmNWVlLi5lZmNkYzZjMTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMwOCw4ICszMDgsMTAgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbdWNoYXIuaF0sIFtdLCBbXSkKLSBBQ19DSEVDS19IRUFERVJTKFtzeXMvY2FwYWJpbGl0eS5oXSwgW10sIFtBQ19NU0dfRVJST1IoWyoqKiBQT1NJWCBjYXBzIGhlYWRlcnMgbm90IGZvdW5kXSldKQotIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2J0cmZzLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbWVtZmQuaF0sIFtdLCBbXSkKLStBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC92bV9zb2NrZXRzLmhdLCBbXSwgW10sIFsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl0pCi0gCi0rQU1fQ09ORElUSU9OQUwoSEFWRV9QUklOVEZfSCwgW3Rlc3QgIngkYWNfY3ZfaGVhZGVyX3ByaW50Zl9oIiA9IHh5ZXNdKQotICMgdW5jb25kaXRpb25hbGx5IHB1bGwtaW4gbGlicnQgd2l0aCBvbGQgZ2xpYmMgdmVyc2lvbnMKLSBBQ19TRUFSQ0hfTElCUyhbY2xvY2tfZ2V0dGltZV0sIFtydF0sIFtdLCBbXSkKLSAKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNDk0MzdlNTQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCi1AQCAtMCwwICsxLDI3MyBAQAotKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KLSsKLSsvKioqCi0rICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgotKwotKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci0rCi0rICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5Ci0rICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KLSsKLSsgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSsgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyoqKi8KLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOwotKyAgICAgICAgcmV0dXJuIGZtdDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCi0rICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87Ci0rICAgICAgICByZXR1cm4gZm10OwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCi0rewotKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKLSsgICAgICAgIHNpemVfdCB2YWwgPSAwOwotKwotKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQotKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OwotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7Ci0rICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKLSsKLSsgICAgICAgIGlmICgqcCAhPSAnJCcpCi0rICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICAqYXJnID0gdmFsOwotKyAgICAgICAgcmV0dXJuIHArMTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQotK3sKLSsgICAgICAgIHdoaWxlICgxKSB7Ci0rICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgewotKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnMCc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJy0nOgotKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnKyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnSSc6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIH0KLSt9Ci0rCi0rZW51bSBzdGF0ZSB7Ci0rICAgICAgICBCQVJFLAotKyAgICAgICAgTFBSRSwKLSsgICAgICAgIExMUFJFLAotKyAgICAgICAgSFBSRSwKLSsgICAgICAgIEhIUFJFLAotKyAgICAgICAgQklHTFBSRSwKLSsgICAgICAgIFpUUFJFLAotKyAgICAgICAgSlBSRSwKLSsgICAgICAgIFNUT1AKLSt9OwotKwotK2VudW0gdHlwZSB7Ci0rICAgICAgICBOT05FLAotKyAgICAgICAgUFRSLAotKyAgICAgICAgSU5ULAotKyAgICAgICAgVUlOVCwKLSsgICAgICAgIFVMTE9ORywKLSsgICAgICAgIExPTkcsCi0rICAgICAgICBVTE9ORywKLSsgICAgICAgIFNIT1JULAotKyAgICAgICAgVVNIT1JULAotKyAgICAgICAgQ0hBUiwKLSsgICAgICAgIFVDSEFSLAotKyAgICAgICAgTExPTkcsCi0rICAgICAgICBTSVpFVCwKLSsgICAgICAgIElNQVgsCi0rICAgICAgICBVTUFYLAotKyAgICAgICAgUERJRkYsCi0rICAgICAgICBVSVBUUiwKLSsgICAgICAgIERCTCwKLSsgICAgICAgIExEQkwsCi0rICAgICAgICBNQVhUWVBFCi0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7Ci0rICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKLSsgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKLSsgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAotKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCi0rICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKLSsgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKLSsgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKLSsgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKLSsgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAotKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCi0rICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKLSt9OwotKwotKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KLSsjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKLSsgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCi0rICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAotKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAotKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAotKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCi0rICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKLSsgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKLSsgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKLSsgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKLSsgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9Ci0rfTsKLSsKLStzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQotK3sKLSsgICAgICAgIHNpemVfdCBpID0gMDsKLSsgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKLSsKLSsgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7Ci0rCi0rICAgICAgICB3aGlsZSAoMSkgewotKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOwotKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7Ci0rCi0rICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGFyZyA9IDA7Ci0rICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOwotKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7Ci0rICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCi0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7Ci0rICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KLSsgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOwotKyAgICAgICAgICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7Ci0rCi0rICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKGxhc3QgPiBuKQotKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCi0rICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOwotKwotKyAgICAgICAgcmV0dXJuIGxhc3Q7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi40MzcxMTc3YjAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKLUBAIC0wLDAgKzEsNTcgQEAKLSsvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCi0rCi0rLyoqKgotKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KLSsKLSsgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotKwotKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5Ci0rICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSsgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQotKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKioqLwotKwotKyNwcmFnbWEgb25jZQotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSsjaWZkZWYgSEFWRV9QUklOVEZfSAotKyNpbmNsdWRlIDxwcmludGYuaD4KLSsjZWxzZQotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLStlbnVtIHsJCQkJLyogQyB0eXBlOiAqLwotKyAgUEFfSU5ULAkJCS8qIGludCAqLwotKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLwotKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCi0rICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KLSsgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KLSsgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCi0rICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLwotKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLwotKyAgUEFfTEFTVAotK307Ci0rCi0rLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KLSsjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCi0rI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQotKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORwotKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQotKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCi0rI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCi0rCi0rc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7Ci0rCi0rI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotaW5kZXggYmQxMTQ0YjRjLi5jOWM5NWViNTQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi1AQCAtMTksMTIgKzE5LDEyIEBACi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0gCi0tI2luY2x1ZGUgPHByaW50Zi5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKLSAKLSAjZGVmaW5lIHhzcHJpbnRmKGJ1ZiwgZm10LCAuLi4pIFwKLSAgICAgICAgIGFzc2VydF9tZXNzYWdlX3NlKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgRUxFTUVOVFNPRihidWYpLCBmbXQsIF9fVkFfQVJHU19fKSA8IEVMRU1FTlRTT0YoYnVmKSwgInhzcHJpbnRmOiAiICNidWYgIltdIG11c3QgYmUgYmlnIGVub3VnaCIpCi1kaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotaW5kZXggNDQwZmJhNjdjLi4wMjM2YzQzYzQgMTAwNjQ0Ci0tLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLUBAIC0xOSw3ICsxOSw2IEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHByaW50Zi5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLUBAIC0zOCw2ICszNyw3IEBACi0gI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0gCi0gI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCi0gCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCmluZGV4IDdmMWJjNDQuLjk4YzgzNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSBmMWI1YTZmNzE3YmRhNmY4MGE2YjVlM2U0ZDUwYjQ1MGY2Y2M3YjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ODQ0ZTA3MDc0NTYxMWE1MmUzNTViNzNlNzg5MGYzNjBkZDU0MGQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTQgRGVjIDIwMTUgMDQ6MDk6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8xNF0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MAotIHNlYy4KK1N1YmplY3Q6IFtQQVRDSF0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MCBzZWMuCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkBAIC0xNywxMCArMTYsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RldmljZS5jIGIvc3JjL2NvcmUvZGV2aWNlLmMKLWluZGV4IDc3NjAxYzU1Mi4uOThiZjQ5YmEyIDEwMDY0NAoraW5kZXggYTQzNjY0ZDNiLi40YjE2YThhZWMgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kZXZpY2UuYwogKysrIGIvc3JjL2NvcmUvZGV2aWNlLmMKLUBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgeworQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfaW5pdChVbml0ICp1KSB7CiAgICAgICAgICAgKiBpbmRlZmluaXRlbHkgZm9yIHBsdWdnZWQgaW4gZGV2aWNlcywgc29tZXRoaW5nIHdoaWNoIGNhbm5vdAogICAgICAgICAgICogaGFwcGVuIGZvciB0aGUgb3RoZXIgdW5pdHMgc2luY2UgdGhlaXIgb3BlcmF0aW9ucyB0aW1lIG91dAogICAgICAgICAgICogYW55d2F5LiAqLwpAQCAtMjksNiArMjgsMyBAQAogIAogICAgICAgICAgdS0+aWdub3JlX29uX2lzb2xhdGUgPSB0cnVlOwogIH0KLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMTAwZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDI4ZGQ2NmVjZmNlNzQzYjFlYTkwNDZjN2JiNTAxZTBmY2FlZmY3MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWNhIEJydW5vIDxsdWNhLmJydW5vQGNvcmVvcy5jb20+Ci1EYXRlOiBTdW4sIDYgQXVnIDIwMTcgMTM6MjQ6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZTogZXZhbHVhdGUgcHJlc2V0cyBhZnRlciBnZW5lcmF0b3JzIGhhdmUgcnVuICgjNjUyNikKLQotVGhpcyBjb21taXQgbW92ZXMgdGhlIGZpcnN0LWJvb3Qgc3lzdGVtIHByZXNldC1zZXR0aW5ncyBldmFsdWF0aW9uIG91dAotb2YgbWFpbiBhbmQgaW50byB0aGUgbWFuYWdlciBzdGFydHVwIGxvZ2ljIGl0c2VsZi4gTm90YWJseSwgaXQgcmV2ZXJzZXMKLXRoZSBvcmRlciBiZXR3ZWVuIGdlbmVyYXRvcnMgYW5kIHByZXNldHMgZXZhbHVhdGlvbiwgc28gdGhhdCBhbnkgY2hhbmdlcwotcGVyZm9ybWVkIGJ5IGZpcnN0LWJvb3QgZ2VuZXJhdG9ycyBhcmUgdGFrZW4gaW50byB0aGUgYWNjb3VudCBieSBwcmVzZXRzCi1sb2dpYy4KLQotQWZ0ZXIgdGhpcyBjaGFuZ2UsIHVuaXRzIGNyZWF0ZWQgYnkgYSBnZW5lcmF0b3IgY2FuIGJlIGVuYWJsZWQgYXMgcGFydAotb2YgYSBwcmVzZXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvY29yZS9tYWluLmMgICAgfCAxMiArKy0tLS0tLS0tLS0KLSBzcmMvY29yZS9tYW5hZ2VyLmMgfCAgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKLWluZGV4IGRmZWRjM2QuLjExYWM5Y2YgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tYWluLmMKLSsrKyBiL3NyYy9jb3JlL21haW4uYwotQEAgLTE4MDksMTggKzE4MDksMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewotICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX0NISUxEX1NVQlJFQVBFUiwgMSkgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c3RlbSkgewotKyAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgIC8qIEJ1bXAgdXAgUkxJTUlUX05PRklMRSBmb3Igc3lzdGVtZCBpdHNlbGYgKi8KLSAgICAgICAgICAgICAgICAgKHZvaWQpIGJ1bXBfcmxpbWl0X25vZmlsZSgmc2F2ZWRfcmxpbWl0X25vZmlsZSk7Ci0gCi0tICAgICAgICAgICAgICAgIGlmIChlbXB0eV9ldGMpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICByID0gdW5pdF9maWxlX3ByZXNldF9hbGwoVU5JVF9GSUxFX1NZU1RFTSwgMCwgTlVMTCwgVU5JVF9GSUxFX1BSRVNFVF9FTkFCTEVfT05MWSwgTlVMTCwgMCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Z1bGxfZXJybm8ociA9PSAtRUVYSVNUID8gTE9HX05PVElDRSA6IExPR19XQVJOSU5HLCByLCAiRmFpbGVkIHRvIHBvcHVsYXRlIC9ldGMgd2l0aCBwcmVzZXQgdW5pdCBzZXR0aW5ncywgaWdub3Jpbmc6ICVtIik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8oIlBvcHVsYXRlZCAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MuIik7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLSAgICAgICAgIHIgPSBtYW5hZ2VyX25ldyhhcmdfc3lzdGVtID8gVU5JVF9GSUxFX1NZU1RFTSA6IFVOSVRfRklMRV9VU0VSLCBhcmdfYWN0aW9uID09IEFDVElPTl9URVNULCAmbSk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLSAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1hbmFnZXIgb2JqZWN0OiAlbSIpOwotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21hbmFnZXIuYyBiL3NyYy9jb3JlL21hbmFnZXIuYwotaW5kZXggMWFhZGI3MC4uZmI1ZTJiNSAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21hbmFnZXIuYwotKysrIGIvc3JjL2NvcmUvbWFuYWdlci5jCi1AQCAtMTMyOCw2ICsxMzI4LDE0IEBAIGludCBtYW5hZ2VyX3N0YXJ0dXAoTWFuYWdlciAqbSwgRklMRSAqc2VyaWFsaXphdGlvbiwgRkRTZXQgKmZkcykgewotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLSsgICAgICAgIGlmIChtLT5maXJzdF9ib290ICYmIG0tPnVuaXRfZmlsZV9zY29wZSA9PSBVTklUX0ZJTEVfU1lTVEVNKSB7Ci0rICAgICAgICAgICAgICAgIHEgPSB1bml0X2ZpbGVfcHJlc2V0X2FsbChVTklUX0ZJTEVfU1lTVEVNLCAwLCBOVUxMLCBVTklUX0ZJTEVfUFJFU0VUX0VOQUJMRV9PTkxZLCBOVUxMLCAwKTsKLSsgICAgICAgICAgICAgICAgaWYgKHEgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHEgPT0gLUVFWElTVCA/IExPR19OT1RJQ0UgOiBMT0dfV0FSTklORywgcSwgIkZhaWxlZCB0byBwb3B1bGF0ZSAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MsIGlnbm9yaW5nOiAlbSIpOwotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8oIlBvcHVsYXRlZCAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MuIik7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICBsb29rdXBfcGF0aHNfcmVkdWNlKCZtLT5sb29rdXBfcGF0aHMpOwotICAgICAgICAgbWFuYWdlcl9idWlsZF91bml0X3BhdGhfY2FjaGUobSk7Ci0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDMzYjA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gZGVhMzc0ZTg5OGE3NDlhMDQ3NGI3MmIyMDE1Y2NhOTAwOWIxNDMyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExlbm5hcnQgUG9ldHRlcmluZyA8bGVubmFydEBwb2V0dGVyaW5nLm5ldD4KLURhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMTA6MzE6NDAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFpbjogc2tpcCBtYW55IGluaXRpYWxpemF0aW9uIHN0ZXBzIHdoZW4gcnVubmluZyBpbiAtLXRlc3QKLSBtb2RlCi0KLU1vc3QgaW1wb3J0YW50bHksIGRvbid0IGNvbGxlY3Qgb3BlbiBzb2NrZXQgYWN0aXZhdGlvbiBmZHMgd2hlbiBpbgotLS10ZXN0IG1vZGUuIFRoaXMgc3BlY2lmaWNhbGx5IGNyZWF0ZWQgYSBwcm9ibGVtIGJlY2F1c2Ugd2UgaW52b2tlCi1wYWdlcl9vcGVuKCkgYmVmb3JlaGFuZCAod2hpY2ggdGhlc2UgZGF5cyBtYWtlcyBjb3BpZXMgb2YgdGhlIG9yaWdpbmFsCi1zdGRvdXQvc3RkZXJyIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcmVzdG9yZSB0aGVtIHdoZW4gdGhlIHBhZ2VyIGdvZXMKLWF3YXkpIGFuZCB3ZSBtaWdodCBtaXN0YWtlbmx5IHRoZSBmZCBjb3BpZXMgaXQgY3JlYXRlcyBhcyBzb2NrZXQKLWFjdGl2YXRpb24gZmRzLgotCi1GaXhlczogIzYzODMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9jb3JlL21haW4uYyB8IDEwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYwotaW5kZXggMTFhYzljZi4uZDFhNTNhNSAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21haW4uYwotKysrIGIvc3JjL2NvcmUvbWFpbi5jCi1AQCAtMTY3OSwyMCArMTY3OSwyMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7Ci0gICAgICAgICBsb2dfY2xvc2UoKTsKLSAKLSAgICAgICAgIC8qIFJlbWVtYmVyIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBmb3IgbGF0ZXIgZGVzZXJpYWxpemF0aW9uICovCi0tICAgICAgICByID0gZmRzZXRfbmV3X2ZpbGwoJmZkcyk7Ci0tICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldDogJW0iKTsKLS0gICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0IjsKLS0gICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0tICAgICAgICB9IGVsc2UKLS0gICAgICAgICAgICAgICAgZmRzZXRfY2xvZXhlYyhmZHMsIHRydWUpOwotKyAgICAgICAgaWYgKGFyZ19hY3Rpb24gPT0gQUNUSU9OX1JVTikgewotKyAgICAgICAgICAgICAgICByID0gZmRzZXRfbmV3X2ZpbGwoJmZkcyk7Ci0rICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQ6ICVtIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0IjsKLSsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgfSBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmRzZXRfY2xvZXhlYyhmZHMsIHRydWUpOwotIAotLSAgICAgICAgaWYgKGFyZ19zZXJpYWxpemF0aW9uKQotLSAgICAgICAgICAgICAgICBhc3NlcnRfc2UoZmRzZXRfcmVtb3ZlKGZkcywgZmlsZW5vKGFyZ19zZXJpYWxpemF0aW9uKSkgPj0gMCk7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfc2VyaWFsaXphdGlvbikKLSsgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfc2UoZmRzZXRfcmVtb3ZlKGZkcywgZmlsZW5vKGFyZ19zZXJpYWxpemF0aW9uKSkgPj0gMCk7Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c3RlbSkKLS0gICAgICAgICAgICAgICAgLyogQmVjb21lIGEgc2Vzc2lvbiBsZWFkZXIgaWYgd2UgYXJlbid0IG9uZSB5ZXQuICovCi0tICAgICAgICAgICAgICAgIHNldHNpZCgpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAvKiBCZWNvbWUgYSBzZXNzaW9uIGxlYWRlciBpZiB3ZSBhcmVuJ3Qgb25lIHlldC4gKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXRzaWQoKTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAgIC8qIE1vdmUgb3V0IG9mIHRoZSB3YXksIHNvIHRoYXQgd2Ugd29uJ3QgYmxvY2sgdW5tb3VudHMgKi8KLSAgICAgICAgIGFzc2VydF9zZShjaGRpcigiLyIpID09IDApOwotQEAgLTE3NjIsNTYgKzE3NjQsNTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCA/ICIgdGVzdCIgOiAiIiwgZ2V0dWlkKCksIHQpOwotICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIXNraXBfc2V0dXApIHsKLS0gICAgICAgICAgICAgICAgaWYgKGFyZ19zaG93X3N0YXR1cyA+IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3dlbGNvbWUoKTsKLSsgICAgICAgIGlmIChhcmdfYWN0aW9uID09IEFDVElPTl9SVU4pIHsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIXNraXBfc2V0dXApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnX3Nob3dfc3RhdHVzID4gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c193ZWxjb21lKCk7Ci0gCi0tICAgICAgICAgICAgICAgIGhvc3RuYW1lX3NldHVwKCk7Ci0tICAgICAgICAgICAgICAgIG1hY2hpbmVfaWRfc2V0dXAoTlVMTCwgYXJnX21hY2hpbmVfaWQsIE5VTEwpOwotLSAgICAgICAgICAgICAgICBsb29wYmFja19zZXR1cCgpOwotLSAgICAgICAgICAgICAgICBidW1wX3VuaXhfbWF4X2RncmFtX3FsZW4oKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBob3N0bmFtZV9zZXR1cCgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVfaWRfc2V0dXAoTlVMTCwgYXJnX21hY2hpbmVfaWQsIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BiYWNrX3NldHVwKCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKCk7Ci0gCi0tICAgICAgICAgICAgICAgIHRlc3RfdXNyKCk7Ci0tICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF91c3IoKTsKLSsgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgPiAwICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nICE9IFVTRUNfSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgIHdhdGNoZG9nX3NldF90aW1lb3V0KCZhcmdfcnVudGltZV93YXRjaGRvZyk7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nID4gMCAmJiBhcmdfcnVudGltZV93YXRjaGRvZyAhPSBVU0VDX0lORklOSVRZKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZG9nX3NldF90aW1lb3V0KCZhcmdfcnVudGltZV93YXRjaGRvZyk7Ci0gCi0tICAgICAgICBpZiAoYXJnX3RpbWVyX3NsYWNrX25zZWMgIT0gTlNFQ19JTkZJTklUWSkKLS0gICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9USU1FUlNMQUNLLCBhcmdfdGltZXJfc2xhY2tfbnNlYykgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBhZGp1c3QgdGltZXIgc2xhY2s6ICVtIik7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfdGltZXJfc2xhY2tfbnNlYyAhPSBOU0VDX0lORklOSVRZKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfVElNRVJTTEFDSywgYXJnX3RpbWVyX3NsYWNrX25zZWMpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBhZGp1c3QgdGltZXIgc2xhY2s6ICVtIik7Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiAhY2FwX3Rlc3RfYWxsKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCkpIHsKLS0gICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3BfdXNlcm1vZGUoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQgb2YgdXNlcm1vZGUgaGVscGVyczogJW0iKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMiOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCwgdHJ1ZSk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0OiAlbSIpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQiOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiAhY2FwX3Rlc3RfYWxsKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcF91c2VybW9kZShhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQgb2YgdXNlcm1vZGUgaGVscGVyczogJW0iKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQgb2YgdXNlcm1vZGUgaGVscGVycyI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3AoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0LCB0cnVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0OiAlbSIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChhcmdfc3lzY2FsbF9hcmNocykgewotLSAgICAgICAgICAgICAgICByID0gZW5mb3JjZV9zeXNjYWxsX2FyY2hzKGFyZ19zeXNjYWxsX2FyY2hzKTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gc2V0IHN5c2NhbGwgYXJjaGl0ZWN0dXJlcyI7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzY2FsbF9hcmNocykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlbmZvcmNlX3N5c2NhbGxfYXJjaHMoYXJnX3N5c2NhbGxfYXJjaHMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gc2V0IHN5c2NhbGwgYXJjaGl0ZWN0dXJlcyI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLSAKLS0gICAgICAgIGlmICghYXJnX3N5c3RlbSkKLS0gICAgICAgICAgICAgICAgLyogQmVjb21lIHJlYXBlciBvZiBvdXIgY2hpbGRyZW4gKi8KLS0gICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOwotKyAgICAgICAgICAgICAgICBpZiAoIWFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQmVjb21lIHJlYXBlciBvZiBvdXIgY2hpbGRyZW4gKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX0NISUxEX1NVQlJFQVBFUiwgMSkgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKLSAKLS0gICAgICAgIGlmIChhcmdfc3lzdGVtKQotLSAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCi0tICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGJ1bXBfcmxpbWl0X25vZmlsZSgmc2F2ZWRfcmxpbWl0X25vZmlsZSk7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICByID0gbWFuYWdlcl9uZXcoYXJnX3N5c3RlbSA/IFVOSVRfRklMRV9TWVNURU0gOiBVTklUX0ZJTEVfVVNFUiwgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCwgJm0pOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZjRiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIGM5M2ViNmNkZWMwM2Y1ZTI0M2U1OWU5NWRjNDkyNzNmY2I5MGU3YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEwOjIzOjQwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMzFdIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZQorIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCisKK3VzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKK2xpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgorCitUaGUgW0luc3RhbGxdIGJsb2NrcyB3ZXJlIHJlamVjdGVkIHVwc3RyZWFtIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0bworImVuYWJsZSIgaXQgb24gaW5zdGFsbCB3aXRob3V0IHN0YXRpYyBzeW1saW5rcyB3aGljaCBjYW4ndCBiZSBkaXNhYmxlZCwKK29ubHkgbWFza2VkLiBXZSBob3dldmVyIGNhbiBkbyB0aGF0IGluIGEgcG9zdGluc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgdW5pdHMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKy0tLS0KKyB1bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgfCAzICsrKworIHVuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gICAgICAgICB8IDQgKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24uYnVpbGQgYi91bml0cy9tZXNvbi5idWlsZAoraW5kZXggODE0ZWU3ODg1Li40OWFjZTBkMGYgMTAwNjQ0CistLS0gYS91bml0cy9tZXNvbi5idWlsZAorKysrIGIvdW5pdHMvbWVzb24uYnVpbGQKK0BAIC02MCw4ICs2MCw3IEBAIHVuaXRzID0gWworICAgICAgICAgWydwb3dlcm9mZi50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICdydW5sZXZlbDAudGFyZ2V0J10sCisgICAgICAgICBbJ3ByaW50ZXIudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgJyddLAorLSAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJywKKy0gICAgICAgICAnc3lzaW5pdC50YXJnZXQud2FudHMvJ10sCisrICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCcsICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MubW91bnQnLCAgICAgICAnRU5BQkxFX0JJTkZNVCddLAorICAgICAgICAgWydyZWJvb3QudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICdydW5sZXZlbDYudGFyZ2V0IGN0cmwtYWx0LWRlbC50YXJnZXQnXSwKK0BAIC0xNDQsOCArMTQzLDcgQEAgaW5fdW5pdHMgPSBbCisgICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZScsICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlJywgICAgJyddLAorICAgICAgICAgWydzeXN0ZW1kLWJhY2tsaWdodEAuc2VydmljZScsICAgICAgICAgICAnRU5BQkxFX0JBQ0tMSUdIVCddLAorLSAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCcsCistICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAorKyAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCddLAorICAgICAgICAgWydzeXN0ZW1kLWNvcmVkdW1wQC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0NPUkVEVU1QJ10sCisgICAgICAgICBbJ3N5c3RlbWQtZXhpdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1maXJzdGJvb3Quc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9GSVJTVEJPT1QnLAorZGlmZiAtLWdpdCBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAoraW5kZXggMzBhNmJjOTkxLi40MjMxZjNiNzAgMTAwNjQ0CistLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKysrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAorQEAgLTE4LDMgKzE4LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KKyAKKyBbQXV0b21vdW50XQorIFdoZXJlPS9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYworKworK1tJbnN0YWxsXQorK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CitkaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KK2luZGV4IGRmOTM5NmQ4OS4uMDY4N2Y0NjQ4IDEwMDY0NAorLS0tIGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgorKysrIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgorQEAgLTEzLDYgKzEzLDcgQEAgRG9jdW1lbnRhdGlvbj1tYW46c3lzdGVtZC1iaW5mbXQuc2VydmljZSg4KSBtYW46YmluZm10LmQoNSkKKyBEb2N1bWVudGF0aW9uPWh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vYmluZm10X21pc2MudHh0CisgRGVmYXVsdERlcGVuZGVuY2llcz1ubworIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKKytXYW50cz1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBCZWZvcmU9c3lzaW5pdC50YXJnZXQgc2h1dGRvd24udGFyZ2V0CisgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KK0BAIC0yNywzICsyOCw2IEBAIFR5cGU9b25lc2hvdAorIFJlbWFpbkFmdGVyRXhpdD15ZXMKKyBFeGVjU3RhcnQ9QHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLWJpbmZtdAorIFRpbWVvdXRTZWM9OTBzCisrCisrW0luc3RhbGxdCisrV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YzEzNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotRnJvbSA1ODVhYmQ4OTFhNTY0MDk5MTUzMTQzMDQxMDFjYWMyNmI0MmMwNzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjQ1OjQ2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTJdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCi0KLWluY2x1ZGUgbWlzc2luZy5oICBmb3IgZGVmaW5pdGlvbiBvZiBzdHJuZHVwYQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgfCAgMSArCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCAgICB8IDExICsrKysrKysrKysrCi0gc3JjL2Jhc2ljL21rZGlyLmMgICAgICB8ICAxICsKLSBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jIHwgIDEgKwotIHNyYy9zaGFyZWQvcGFnZXIuYyAgICAgfCAgMSArCi0gc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyB8ICAxICsKLSA2IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZWZjZGM2YzE2Li5jZDAzNWE5NzEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMyOSw2ICszMjksNyBAQCBBQ19DSEVDS19ERUNMUyhbCi0gICAgICAgICBwaXZvdF9yb290LAotICAgICAgICAgbmFtZV90b19oYW5kbGVfYXQsCi0gICAgICAgICBzZXRucywKLSsgICAgICAgIHN0cm5kdXBhLAotICAgICAgICAgcmVuYW1lYXQyLAotICAgICAgICAga2NtcCwKLSAgICAgICAgIGtleWN0bCwKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggMDQ5MTJiZjUyLi44MDA5ODg4YWQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTEwNCw2ICsxMTA0LDE3IEBAIHR5cGVkZWYgaW50MzJfdCBrZXlfc2VyaWFsX3Q7Ci0gI2RlZmluZSBLRVlDVExfREVTQ1JJQkUgNgotICNlbmRpZgotIAotKyNpZiAhSEFWRV9ERUNMX1NUUk5EVVBBCi0rI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCi0rICAoeyBcCi0rICAgIGNvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBcCi0rICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4oX19vbGQsIChuKSk7IFwKLSsgICAgY2hhciAqX19uZXcgPSAoY2hhciAqKWFsbG9jYShfX2xlbiArIDEpOyBcCi0rICAgIF9fbmV3W19fbGVuXSA9ICdcMCc7IFwKLSsgICAgKGNoYXIgKiltZW1jcHkoX19uZXcsIF9fb2xkLCBfX2xlbik7IFwKLSsgIH0pCi0rI2VuZGlmCi0rCi0gI2lmbmRlZiBLRVlDVExfUkVBRAotICNkZWZpbmUgS0VZQ1RMX1JFQUQgMTEKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWtkaXIuYyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1pbmRleCA2YjFhOTg0MDIuLmQxMzg4ZGY0OCAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9ta2Rpci5jCi0rKysgYi9zcmMvYmFzaWMvbWtkaXIuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0gI2luY2x1ZGUgInN0YXQtdXRpbC5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIGludCBta2Rpcl9zYWZlX2ludGVybmFsKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbWtkaXJfZnVuY190IF9ta2RpcikgewotICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLWluZGV4IDQ1MzJmMjIyYy4uN2EzMGEwZTA2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotQEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIGludCBwYXJzZV9ib29sZWFuKGNvbnN0IGNoYXIgKnYpIHsKLSAgICAgICAgIGFzc2VydCh2KTsKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLWluZGV4IDRkN2IwMmM2My4uODU0ZWZjMGM5IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCi0rKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLUBAIC0zOCw2ICszOCw3IEBACi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgInN0cnYuaCIKLSAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gc3RhdGljIHBpZF90IHBhZ2VyX3BpZCA9IDA7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLWluZGV4IGI2ZWM0NzQzOS4uOTFjZTlmYjdmIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotKysrIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotQEAgLTI0LDYgKzI0LDcgQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAidWlkLXJhbmdlLmgiCi0gI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gc3RhdGljIGJvb2wgdWlkX3JhbmdlX2ludGVyc2VjdChVaWRSYW5nZSAqcmFuZ2UsIHVpZF90IHN0YXJ0LCB1aWRfdCBucikgewotICAgICAgICAgYXNzZXJ0KHJhbmdlKTsKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMmQyYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotRnJvbSA1YmJiYzJhMDhhM2I0MjgzZWMwNGFmMGU3N2UyNWZiMjA1YWE4YjgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTJdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAotIGRlZmluZWQKLQotSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCi1leHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCi0KLURvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKLQotQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQotIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQotIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotaW5kZXggZjYxMWM0MmU0Li5hZDZlMmJlOGQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotQEAgLTI3LDEzICsyNywxOCBAQAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSAjaW5jbHVkZSAic3Rydi5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSAKLSBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgaW50IGs7Ci0gCi0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLwotICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKLS0KLSAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7Ci0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQotQEAgLTQ0LDEwICs0OSwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKLSAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCi0gICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKLS0KLSsjZW5kaWYKLSAgICAgICAgIGVycm5vID0gMDsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOwotLQotKyNlbHNlCi0rICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOwotKyNlbmRpZgotICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQotICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKLSAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKLUBAIC02MCw2ICs2OCwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSsKLSBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgewotICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307Ci0gICAgICAgICBpbnQgazsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotaW5kZXggYWY4NjZlMDA0Li4zYWZhMDlhZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi1AQCAtMjksNiArMjksMTEgQEAKLSAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInJtLXJmLmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KLSsjaWZuZGVmIEdMT0JfQlJBQ0UKLSsjZGVmaW5lIEdMT0JfQlJBQ0UgMAotKyNlbmRpZgotIAotIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgewotICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7Ci1AQCAtNTEsMjUgKzU2LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgewotIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgewotICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7Ci0gICAgICAgICBjb25zdCBjaGFyICpmbjsKLS0KLSAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKLSAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAotICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKLSAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCi0gICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKLSsjZW5kaWYKLSAgICAgICAgIH07Ci0tCi0gICAgICAgICBpbnQgcjsKLSAKLSAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7Ci0gCi0gICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKLSsjZWxzZQotKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKLSsjZW5kaWYKLSAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7Ci0gCi0gICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7Ci0rI2Vsc2UKLSsgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7Ci0rI2VuZGlmCi0gICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOwotIAotICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOwotZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLWluZGV4IDk0MTljOTllMi4uMDcwMjdhNzY1IDEwMDY0NAotLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLSsrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1AQCAtNzEsNiArNzEsMTIgQEAKLSAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRpbC5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSsKLSAKLSAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKLSAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQotQEAgLTEwOTIsNyArMTA5OCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKLSAKLSBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7Ci0gICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKLSsjZW5kaWYKLSAgICAgICAgIH07Ci0gICAgICAgICBpbnQgciA9IDAsIGs7Ci0gICAgICAgICBjaGFyICoqZm47Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZjFiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIDhiOWQxOTRlOTU2ODQ4ZTBkMWZiMzVlZjJmYmE3MTRiMjY5MWViZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIwOjQ3OjQ5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMzFdIHVzZSBsbnIgd3JhcHBlciBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIC0tcmVsYXRpdmUKKyBvcHRpb24gZm9yIGxuCisKK1JlbW92ZSBmaWxlIG1hbnVhbGx5IHRvIGF2b2lkIHRoZSAnRmlsZSBFeGlzdHMnIGVycm9yIHdoZW4gY3JlYXRpbmcKK3N5bWxpbmsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgb3JpZ2luYWwgJ2xuJyBjb21tYW5kIHVzZXMgJy1mJyBvcHRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCA0IC0tLS0KKyB0b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggfCAzICsrLQorIHVuaXRzL21lc29uLWFkZC13YW50cy5zaCAgICB8IDcgKysrKysrLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMzZhNjJkMjgwLi43MzQ3ZWE4ODAgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC01NzAsMTAgKzU3MCw2IEBAIGVuZGZvcmVhY2gKKyAKKyBjb25mLnNldF9xdW90ZWQoJ1RFTElOSVQnLCBnZXRfb3B0aW9uKCd0ZWxpbml0LXBhdGgnKSkKKyAKKy1pZiBydW5fY29tbWFuZCgnbG4nLCAnLS1yZWxhdGl2ZScsICctLWhlbHAnKS5yZXR1cm5jb2RlKCkgIT0gMAorLSAgICAgICAgZXJyb3IoJ2xuIGRvZXMgbm90IHN1cHBvcnQgLS1yZWxhdGl2ZScpCistZW5kaWYKKy0KKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyBncGVyZiA9IGZpbmRfcHJvZ3JhbSgnZ3BlcmYnKQorZGlmZiAtLWdpdCBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAoraW5kZXggNTAxY2Q0M2Q0Li5mNGU0YWM5YWMgMTAwNzU1CistLS0gYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKKysrKyBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAorQEAgLTgsNSArOCw2IEBAIG1rZGlyIC12cCAiJChkaXJuYW1lICIke0RFU1RESVI6LX0kMiIpIgorIGlmIFsgIiQoZGlybmFtZSAkMSkiID0gLiBdOyB0aGVuCisgICAgICAgICBsbiAtdmZzIC1UICIkMSIgIiR7REVTVERJUjotfSQyIgorIGVsc2UKKy0gICAgICAgIGxuIC12ZnMgLVQgLS1yZWxhdGl2ZSAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKKysgICAgICAgIHJtIC1mICIke0RFU1RESVI6LX0kMiIKKysgICAgICAgIGxuciAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKKyBmaQorZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLWFkZC13YW50cy5zaCBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAoraW5kZXggNzBmNzE3MmFlLi5hNDI2NjZhYWMgMTAwNzU1CistLS0gYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKKysrKyBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAorQEAgLTI1LDQgKzI1LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgICAgICAgICAgICAgOzsKKyBlc2FjCisgCistbG4gLXZmcyAtLXJlbGF0aXZlICIkdW5pdHBhdGgiICIkZGlyIgorK2lmIFsgLWQgIiRkaXIiIF07IHRoZW4KKysgICAgICAgIHJtIC1mICIkZGlyLyR1bml0IgorKyAgICAgICAgbG5yICIkdW5pdHBhdGgiICIkZGlyLyR1bml0IgorK2Vsc2UKKysgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpciIKKytmaQorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIyY2JlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNTc2NWNkYTRmNzI0M2UyNDBiMWU4NzIzZGM1MzZmYjIwNTAzZDU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6Mjg6MzIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8xOV0gVXNlIGdldGVudiB3aGVuIHNlY3VyZSB2ZXJzaW9ucyBhcmUgbm90IGF2YWlsYWJsZQotCi1tdXNsIGRvZXNudCBpbXBsZW1lbnQgc2VjdXJlIHZlcnNpb24sIHNvIHdlIGRlZmF1bHQKLXRvIGl0IGlmIGNvbmZpZ3VyZSBkb2VzIG5vdCBkZXRlY3QgYSBzZWN1cmUgaW1lcGxlbWVudGF0aW9uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IERlbmllZAotLS0tCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA0YTNmZDljLi40OTM2ODczIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTUyOSw3ICs1MjksNyBAQCBzdHJ1Y3QgYnRyZnNfaW9jdGxfcXVvdGFfY3RsX2FyZ3MgewotICMgIGlmZGVmIEhBVkVfX19TRUNVUkVfR0VURU5WCi0gIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBfX3NlY3VyZV9nZXRlbnYKLSAjICBlbHNlCi0tIyAgICBlcnJvciAibmVpdGhlciBzZWN1cmVfZ2V0ZW52IG5vciBfX3NlY3VyZV9nZXRlbnYgYXJlIGF2YWlsYWJsZSIKLSsjICAgIGRlZmluZSBzZWN1cmVfZ2V0ZW52IGdldGVudgotICMgIGVuZGlmCi0gI2VuZGlmCi0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZkYjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDcwZDQ1NmZiMjFkZTJhODA2OTdmYTM2NGYwODQ3NTMzOWQ2Mzk2YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMzFdIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQorCitVc2UgdXBkYXRlLXJjLmQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgc3RhdHVzIGNvbW1hbmQKK3RvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHN5c3Ygc2VydmljZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCitpbmRleCBhNTNhM2U2MjIuLjVkODc3YjA2ZSAxMDA3NTUKKy0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KKysrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KK0BAIC0zMCwxNyArMzAsMTcgQEAgY2FzZSAiJDEiIGluCisgICAgIGVuYWJsZSkKKyAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBlbmFibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCisgICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKKy0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZW5hYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgorKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgZGVmYXVsdHMKKyAgICAgICAgIDs7CisgICAgIGRpc2FibGUpCisgICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZGlzYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKKyAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQorLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBkaXNhYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgorKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgcmVtb3ZlCisgICAgICAgICA7OworICAgICBpcy1lbmFibGVkKQorICAgICAgICAgIyBleGl0IHdpdGggMCBpZiAkTkFNRSBpcyBlbmFibGVkLCBub24temVybyBpZiBpdCBpcyBkaXNhYmxlZAorICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCistICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGNoZWNraW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIC9ldGMvaW5pdC5kLyROQU1FIHN0YXR1cworICAgICAgICAgOzsKKyAgICAgKikKKyAgICAgICAgIHVzYWdlIDs7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjVhZTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBjODUwYjY1NGU3MTY3N2UwZDYyOTJmMTM0NTIwN2I5YjVhY2ZmYzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjMxOjAzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTJdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKLSB0eXBlZGVmCi0KLWluY2x1ZGUgbWlzc2luZy5oIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvbWlzc2luZy5oIHwgNSArKysrKwotIHNyYy9iYXNpYy9zdHJidWYuYyAgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDgwMDk4ODhhZC4uNjcxZjM0MWM2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTEwNjMsNiArMTA2MywxMSBAQCBzdHJ1Y3QgaW5wdXRfbWFzayB7Ci0gI2RlZmluZSBSRU5BTUVfTk9SRVBMQUNFICgxIDw8IDApCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBfX0NPTVBBUl9GTl9UCi0rI2RlZmluZSBfX0NPTVBBUl9GTl9UCi0rdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7Ci0rI2VuZGlmCi0rCi0gI2lmbmRlZiBLQ01QX0ZJTEUKLSAjZGVmaW5lIEtDTVBfRklMRSAwCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jIGIvc3JjL2Jhc2ljL3N0cmJ1Zi5jCi1pbmRleCAwMGFhZjllNjIuLjlkYzRhNTg0YSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9zdHJidWYuYwotKysrIGIvc3JjL2Jhc2ljL3N0cmJ1Zi5jCi1AQCAtMjMsNiArMjMsNyBAQAotIAotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmJ1Zi5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gLyoKLSAgKiBTdHJidWYgc3RvcmVzIGdpdmVuIHN0cmluZ3MgaW4gYSBzaW5nbGUgY29udGludW91cyBhbGxvY2F0ZWQgbWVtb3J5Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDE2ZTk4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA3NDQ1MGYwZGJhZDJmODQ3OGMyNmVlYWE0NmQ0ZTRhOTg3ODU4ZjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDU6MDM6NDQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xOV0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lCi0gZm9yIHRoZSBiaW5mbXQgc2VydmljZXMKLQotdXNlIFtJbnN0YWxsXSBibG9ja3Mgc28gdGhhdCB0aGV5IGdldCBjcmVhdGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgZW5hYmxlZAotbGlrZSBhIHRyYWRpdGlvbmFsIHNlcnZpY2UuCi0KLVRoZSBbSW5zdGFsbF0gYmxvY2tzIHdlcmUgcmVqZWN0ZWQgdXBzdHJlYW0gYXMgdGhleSBkb24ndCBoYXZlIGEgd2F5IHRvCi0iZW5hYmxlIgotaXQgb24gaW5zdGFsbCB3aXRob3V0IHN0YXRpYyBzeW1saW5rcyB3aGljaCBjYW4ndCBiZSBkaXNhYmxlZCwgb25seQotbWFza2VkLiAgV2UKLWhvd2V2ZXIgY2FuIGRvIHRoYXQgaW4gYSBwb3N0aW5zdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0IC0tLS0KLSB1bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgfCAzICsrKwotIHVuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gICAgICAgICB8IDUgKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDUwZGE0NTguLjI5ZWQxZGQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NjM1LDEwICs0NjM1LDYgQEAgSU5TVEFMTF9ESVJTICs9IFwKLSAJJChwcmVmaXgpL2xpYi9iaW5mbXQuZCBcCi0gCSQoc3lzY29uZmRpcikvYmluZm10LmQKLSAKLS1TWVNJTklUX1RBUkdFVF9XQU5UUyArPSBcCi0tCXN5c3RlbWQtYmluZm10LnNlcnZpY2UgXAotLQlwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLS0KLSBlbmRpZgotIAotIEVYVFJBX0RJU1QgKz0gXAotZGlmZiAtLWdpdCBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotaW5kZXggNmJlMzg5My4uNzA5YWRlZiAxMDA2NDQKLS0tLSBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotKysrIGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci1AQCAtMTYsMyArMTYsNiBAQCBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotIAotIFtBdXRvbW91bnRdCi0gV2hlcmU9L3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjCi0rCi0rW0luc3RhbGxdCi0rV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKLWRpZmYgLS1naXQgYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgotaW5kZXggZDUzMDczZS4uOGM1N2VlMCAxMDA2NDQKLS0tLSBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLSsrKyBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLUBAIC0xMSw2ICsxMSw4IEBAIERvY3VtZW50YXRpb249bWFuOnN5c3RlbWQtYmluZm10LnNlcnZpY2UoOCkgbWFuOmJpbmZtdC5kKDUpCi0gRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9Eb2N1bWVudGF0aW9uL2JpbmZtdF9taXNjLnR4dAotIERlZmF1bHREZXBlbmRlbmNpZXM9bm8KLSBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0Ci0rV2FudHM9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci0rCi0gQWZ0ZXI9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci0gQmVmb3JlPXN5c2luaXQudGFyZ2V0IHNodXRkb3duLnRhcmdldAotIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCi1AQCAtMjUsMyArMjcsNiBAQCBUeXBlPW9uZXNob3QKLSBSZW1haW5BZnRlckV4aXQ9eWVzCi0gRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC1iaW5mbXQKLSBUaW1lb3V0U2VjPTkwcwotKwotK1tJbnN0YWxsXQotK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0MjFjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDdiNWIzNDk5MzAwMmI0NDE4YmE4YTNjMmFlNjYxYTczMzdmZDhlZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMzFdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKKworcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKK0NPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCisvZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KKworU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJ1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcworaW5kZXggMGRlOGNmM2ExLi5kM2Y1OGYxNTMgMTAwNjQ0CistLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKKysrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcworQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKyAKKyBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKytLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKyAKKyAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKKyBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ODg3ZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotRnJvbSAyMTA4MGI2YTQwZDBhNGRkZDJkYjhmMGZhMzc2ODZmNmZhODg1ZDFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6Mzg6MzMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMl0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKLQotRml4ZXMKLS9tbnQvYS9vZS9idWlsZC90bXAvd29yay9taXBzMzJyMi1iZWMtbGludXgtbXVzbC9zeXN0ZW1kLzFfMjM0LXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL25ldGluZXQvaWZfZXRoZXIuaDoxMDE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKLSBzdHJ1Y3QgZXRoaGRyIHsKLSAgICAgICAgXn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgfCAxICsKLSBzcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgICAgICAgICAgICAgICB8IDEgKwotIHNyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jICAgICAgICAgICAgIHwgMSArCi0gc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jICAgICAgICAgICAgICAgfCAyICstCi0gc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgICAgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi1pbmRleCA5MjNmN2RkMTAuLmI5NWIxZTRiMiAxMDA2NDQKLS0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi0rKysgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotQEAgLTE5LDYgKzE5LDcgQEAKLSAKLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vbmV0bGluay5oPgotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyBiL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYwotaW5kZXggM2Q2MjgwODg0Li40MGU1OGMzOGYgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYwotQEAgLTE4LDYgKzE4LDcgQEAKLSAqKiovCi0gCi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwotaW5kZXggZmE1ZDNlZTdmLi5lMDgyODk2MmEgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwotKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gKioqLwotIAotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAKLWRpZmYgLS1naXQgYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKLWluZGV4IDIwMWZjMjM0My4uNWY3Y2MyYTBhIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi0rKysgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKLUBAIC0xNiw3ICsxNiw3IEBACi0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLS0KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi1pbmRleCA4ZTQ3Nzc1MTMuLmQwMWZmZjJhNCAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotQEAgLTE2LDcgKzE2LDcgQEAKLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotLQotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAibGluay1jb25maWcuaCIKLSAjaW5jbHVkZSAibG9nLmgiCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmE5NjYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMCwwICsxLDc4IEBACitGcm9tIDlkNjMyMjc0MjBmMGM0ZjA5M2MxYzIwNjZlYWZlMmI2MTUyMDcwY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEzOjQ3OjM3ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMzFdIE1ha2Ugcm9vdCdzIGhvbWUgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZQorCitPcGVuRW1iZWRkZWQgaGFzIGEgY29uZmlndXJhYmxlIGhvbWUgZGlyZWN0b3J5IGZvciByb290LiBBbGxvdworc3lzdGVtZCB0byBiZSBidWlsdCB1c2luZyBpdHMgaWRlYSBvZiB3aGF0IHJvb3QncyBob21lIGRpcmVjdG9yeQorc2hvdWxkIGJlLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorVXBzdHJlYW0gd2FudHMgdG8gaGF2ZSBhIHVuaWZpZWQgaGllcmFyY2h5IHdoZXJlIGV2ZXJ5b25lIGlzCit1c2luZyB0aGUgc2FtZSByb290IGZvbGRlci4KK2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvaXNzdWVzLzU0MQorCitTaWduZWQtb2ZmLWJ5OiBEYW4gTWNHcmVnb3IgPGRhbi5tY2dyZWdvckB1c2Fzay5jYT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICB8IDggKysrKysrKysKKyBtZXNvbl9vcHRpb25zLnR4dCB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDczNDdlYTg4MC4uOTE4MTAxZDZiIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtOTQsNiArOTQsMTEgQEAgaWYgcm9vdGxpYmRpciA9PSAnJworICAgICAgICAgcm9vdGxpYmRpciA9IGpvaW5fcGF0aHMocm9vdHByZWZpeGRpciwgbGliZGlyLnNwbGl0KCcvJylbLTFdKQorIGVuZGlmCisgCisrcm9vdGhvbWVkaXIgPSBnZXRfb3B0aW9uKCdyb290aG9tZWRpcicpCisraWYgcm9vdGhvbWVkaXIgPT0gJycKKysgICAgICAgIHJvb3Rob21lZGlyID0gJy9yb290JworK2VuZGlmCisrCisgIyBEaXJzIG9mIGV4dGVybmFsIHBhY2thZ2VzCisgcGtnY29uZmlnZGF0YWRpciA9IGpvaW5fcGF0aHMoZGF0YWRpciwgJ3BrZ2NvbmZpZycpCisgcGtnY29uZmlnbGliZGlyID0gam9pbl9wYXRocyhsaWJkaXIsICdwa2djb25maWcnKQorQEAgLTIwNSw2ICsyMTAsNyBAQCBjb25mLnNldF9xdW90ZWQoJ1VERVZMSUJFWEVDRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkZXZsaWJleGVjZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUE9MS0lUX0FHRU5UX0JJTkFSWV9QQVRIJywgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhiaW5kaXIsICdwa3R0eWFnZW50JykpCisgY29uZi5zZXRfcXVvdGVkKCdMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdST09UTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZGlyKQorK2NvbmYuc2V0X3F1b3RlZCgnUk9PVEhPTUVESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGhvbWVkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdST09UTElCRVhFQ0RJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZXhlY2RpcikKKyBjb25mLnNldF9xdW90ZWQoJ0JPT1RMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RsaWJkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1EX1BVTExfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHJvb3RsaWJleGVjZGlyLCAnc3lzdGVtZC1wdWxsJykpCitAQCAtMjIxLDYgKzIyNyw3IEBAIHN1YnN0cy5zZXQoJ3ByZWZpeCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZGlyKQorIHN1YnN0cy5zZXQoJ2V4ZWNfcHJlZml4JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZGlyKQorIHN1YnN0cy5zZXQoJ2xpYmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliZGlyKQorIHN1YnN0cy5zZXQoJ3Jvb3RsaWJkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmRpcikKKytzdWJzdHMuc2V0KCdyb290aG9tZWRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rob21lZGlyKQorIHN1YnN0cy5zZXQoJ2luY2x1ZGVkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWRpcikKKyBzdWJzdHMuc2V0KCdwa2dzeXNjb25mZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3N5c2NvbmZkaXIpCisgc3Vic3RzLnNldCgnYmluZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaXIpCitAQCAtMjcwNSw2ICsyNzEyLDcgQEAgc3RhdHVzID0gWworICAgICAgICAgJ2luY2x1ZGUgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoaW5jbHVkZWRpciksCisgICAgICAgICAnbGliIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChsaWJkaXIpLAorICAgICAgICAgJ3Jvb3RsaWIgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGxpYmRpciksCisrICAgICAgICAncm9vdGhvbWUgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChyb290aG9tZWRpciksCisgICAgICAgICAnU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2aW5pdF9wYXRoKSwKKyAgICAgICAgICdTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgIEAwQCcuZm9ybWF0KHN5c3ZyY25kX3BhdGgpLAorICAgICAgICAgJ1BBTSBtb2R1bGVzIGRpcmVjdG9yeTogICAgICAgICAgICAgQDBAJy5mb3JtYXQocGFtbGliZGlyKSwKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCAzOTgyMmQ2Y2QuLjBiMjRmMGUwZiAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTIyLDYgKzIyLDggQEAgb3B0aW9uKCdyb290bGliZGlyJywgdHlwZSA6ICdzdHJpbmcnLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICcnJ1svdXNyXS9saWIveDg2XzY0LWxpbnV4LWdudSBvciBzdWNoJycnKQorIG9wdGlvbigncm9vdHByZWZpeCcsIHR5cGUgOiAnc3RyaW5nJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnJydvdmVycmlkZSB0aGUgcm9vdCBwcmVmaXgnJycpCisrb3B0aW9uKCdyb290aG9tZWRpcicsIHR5cGUgOiAnc3RyaW5nJywKKysgICAgICAgZGVzY3JpcHRpb24gOiAnJydvdmVycmlkZSB0aGUgcm9vdCBob21lIGRpcmVjdG9yeScnJykKKyBvcHRpb24oJ2xpbmstdWRldi1zaGFyZWQnLCB0eXBlIDogJ2Jvb2xlYW4nLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdsaW5rIHN5c3RlbWQtdWRldiBhbmQgaXRzIGhlbHBlcnMgdG8gbGlic3lzdGVtZC1zaGFyZWQuc28nKQorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIxMmQzMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzNWQ2ZDM4NGU4M2FjMzgwNzc2MDM2MTFiYjc5MTk2OWVmOTVmZTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBNYXIgMjAxNSAxNTowMToyOSArMTEwMAorU3ViamVjdDogW1BBVENIIDA3LzMxXSBSZXZlcnQgInJ1bGVzOiByZW1vdmUgZmlybXdhcmUgbG9hZGluZyBydWxlcyIKKworVGhpcyByZXZlcnRzIGNvbW1pdCA3MGU3ZDc1NGRkYjM1NmZiMWEyOTQyYjI2MmY4Y2VlOTY1MGUyYTE5LgorVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgc3VwcG9ydCBpcyBuZWVkZWQgZm9yIExpbnV4IDwgMy43LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CistLS0KKyBydWxlcy81MC1maXJtd2FyZS5ydWxlcyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBydWxlcy81MC1maXJtd2FyZS5ydWxlcworCitkaWZmIC0tZ2l0IGEvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMgYi9ydWxlcy81MC1maXJtd2FyZS5ydWxlcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uZjBhZTY4NDUxCistLS0gL2Rldi9udWxsCisrKysgYi9ydWxlcy81MC1maXJtd2FyZS5ydWxlcworQEAgLTAsMCArMSwzIEBACisrIyBkbyBub3QgZWRpdCB0aGlzIGZpbGUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gb24gdXBkYXRlCisrCisrU1VCU1lTVEVNPT0iZmlybXdhcmUiLCBBQ1RJT049PSJhZGQiLCBSVU57YnVpbHRpbn09ImZpcm13YXJlIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzNGM1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMDVkZmZlNjc5MTlmZmM3MmJlNWMwMTdiYzZjZjgyZjE2NGIyZThmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTo0MjowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA3LzEyXSBjaGVjayBmb3IgbWlzc2luZyBjYW5vbmljYWxpemVfZmlsZV9uYW1lCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMiArKwotIHNyYy9iYXNpYy9taXNzaW5nLmggICAgICAgICB8IDEgKwotIHNyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCB8IDYgKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2QwMzVhOTcxLi4zNjc0MTkwZmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMzMyw2ICszMzMsNyBAQCBBQ19DSEVDS19ERUNMUyhbCi0gICAgICAgICByZW5hbWVhdDIsCi0gICAgICAgICBrY21wLAotICAgICAgICAga2V5Y3RsLAotKyAgICAgICAgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSwKLSAgICAgICAgIExPX0ZMQUdTX1BBUlRTQ0FOLAotICAgICAgICAgY29weV9maWxlX3JhbmdlLAotICAgICAgICAgZXhwbGljaXRfYnplcm9dLAotQEAgLTM0Myw2ICszNDQsNyBAQCBBQ19DSEVDS19ERUNMUyhbCi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHNjaGVkLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8bGludXgvbG9vcC5oPgotIF1dKQotIAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA2NzFmMzQxYzYuLjhhZTQ5NjRlMSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMjQ2LDMgKzEyNDYsNCBAQCBzdHJ1Y3QgZXRodG9vbF9saW5rX3NldHRpbmdzIHsKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSAibWlzc2luZ19zeXNjYWxsLmgiCi0rCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi1pbmRleCA4OTgxMTZjN2IuLjRkNDRlZTRmYSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotKysrIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi1AQCAtMjgsNiArMjgsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgewotIH0KLSAjZW5kaWYKLSAKLSsjaWYgIUhBVkVfREVDTF9DQU5PTklDQUxJWkVfRklMRV9OQU1FCi0rc3RhdGljIGlubGluZSBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSsgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoLCBOVUxMKTsKLSt9Ci0rI2VuZGlmCi0rCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLSAKLSAjaWYgIUhBVkVfREVDTF9NRU1GRF9DUkVBVEUKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjOTJkYjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGEzNDgyYzkxNjQyY2Y1NjhiM2FjMjdmYTZjMGNiM2M2YjMwNjY5YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjMyOjE0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTldIHVzZSBsbnIgd3JhcHBlciBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIC0tcmVsYXRpdmUKLSBvcHRpb24gZm9yIGxuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiAtLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZS5hbQotKysrIGdpdC9NYWtlZmlsZS5hbQotQEAgLTMyMCw3ICszMjAsNyBAQCBkZWZpbmUgaW5zdGFsbC1yZWxhdGl2ZS1hbGlhc2VzCi0gCXdoaWxlIFsgLW4gIiQkMSIgXTsgZG8gXAotIAkJJChNS0RJUl9QKSBgZGlybmFtZSAkKERFU1RESVIpJCRkaXIvJCQyYCAmJiBcCi0gCQlybSAtZiAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLS0JCSQoTE5fUykgLS1yZWxhdGl2ZSAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotKwkJbG5yICQoREVTVERJUikkJDEgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0gCQlzaGlmdCAyIHx8IGV4aXQgJCQ/OyBcCi0gCWRvbmUKLSBlbmRlZgotSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCi1AQCAtMTEwLDggKzExMCw2IEBAIEFDX1BBVEhfUFJPRyhbU1VMT0dJTl0sIFtzdWxvZ2luXSwgWy91c3IKLSBBQ19QQVRIX1BST0coW01PVU5UX1BBVEhdLCBbbW91bnRdLCBbL3Vzci9iaW4vbW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKLSBBQ19QQVRIX1BST0coW1VNT1VOVF9QQVRIXSwgW3Vtb3VudF0sIFsvdXNyL2Jpbi91bW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKLSAKLS1BU19JRihbISBsbiAtLXJlbGF0aXZlIC0taGVscCA+IC9kZXYvbnVsbCAyPiYxXSwgW0FDX01TR19FUlJPUihbKioqIGxuIGRvZXNuJ3Qgc3VwcG9ydCAtLXJlbGF0aXZlICoqKl0pXSkKLS0KLSBNNF9ERUZJTkVTPQotIAotIEFDX0NIRUNLX1RPT0woT0JKQ09QWSwgb2JqY29weSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhNGY4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDQ4ZTdjMGY1YjJmNWQ3NzdhMTZhYzU1ODRkYzRmNTBmMWRmYTgzMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjoyNzo1MyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA4LzEyXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggM2NjOGYzNDUxLi5kZjIwYTlhMTEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01MjkwLDYgKzUyOTAsNyBAQCBFWFRSQV9ESVNUICs9IFwKLSAJc3JjL3RpbWVzeW5jL3RpbWVzeW5jZC5jb25mLmluCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStpZiBFTkFCTEVfTlNTX1NZU1RFTUQKLSB0ZXN0X25zc19TT1VSQ0VTID0gXAotIAlzcmMvdGVzdC90ZXN0LW5zcy5jCi0gCi1AQCAtNTMwMiw3ICs1MzAzLDYgQEAgbWFudWFsX3Rlc3RzICs9IFwKLSAJdGVzdC1uc3MKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLWlmIEVOQUJMRV9OU1NfU1lTVEVNRAotIGxpYm5zc19zeXN0ZW1kX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9uc3Mtc3lzdGVtZC9uc3Mtc3lzdGVtZC5zeW0gXAotIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuYwotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWQ3ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKQEAgLTAsMCArMSwzNzcgQEAKK0Zyb20gNWNjZTc2MjZmMzNlOTJmNjI0YWMwNmI2MTMxMjU4MTNmYjQ3ZDQ0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MDU6MzkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zMV0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKKyBzdXBwb3J0IgorCitUaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCitVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorIFRPRE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKysKKyBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICB8ICAgMiArCisgcnVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDQgKworIHNyYy91ZGV2L21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICA0ICsKKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyAgICAgICAgICB8ICAgMyArCisgc3JjL3VkZXYvdWRldi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKysKKyBzcmMvdWRldi91ZGV2ZC5jICAgICAgICAgICAgICAgICB8ICAxMiArKysKKyAxMCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKKworZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQoraW5kZXggODgwN2U1Y2ZlLi5iZmQ3YTM1ZGUgMTAwNjQ0CistLS0gYS9SRUFETUUKKysrKyBiL1JFQURNRQorQEAgLTU4LDggKzU4LDggQEAgUkVRVUlSRU1FTlRTOgorICAgICAgICAgTGVnYWN5IGhvdHBsdWcgc2xvd3MgZG93biB0aGUgc3lzdGVtIGFuZCBjb25mdXNlcyB1ZGV2OgorICAgICAgICAgICBDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIiCisgCistICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGFuZCBzaG91bGQKKy0gICAgICAgIGJlIGRpc2FibGVkIGluIHRoZSBrZXJuZWw6CisrICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBkZXByZWNhdGVkLCB3aWxsIGdvIGF3YXksIGFuZAorKyAgICAgICAgc29tZXRpbWVzIGNhdXNlcyBwcm9ibGVtczoKKyAgICAgICAgICAgQ09ORklHX0ZXX0xPQURFUl9VU0VSX0hFTFBFUj1uCisgCisgICAgICAgICBTb21lIHVkZXYgcnVsZXMgYW5kIHZpcnR1YWxpemF0aW9uIGRldGVjdGlvbiByZWxpZXMgb24gaXQ6CitkaWZmIC0tZ2l0IGEvVE9ETyBiL1RPRE8KK2luZGV4IGE3NzAyOGM3Yi4uMzllNzJkN2VjIDEwMDY0NAorLS0tIGEvVE9ETworKysrIGIvVE9ETworQEAgLTc4Myw2ICs3ODMsNyBAQCBGZWF0dXJlczoKKyAqIGluaXRpYWxpemUgdGhlIGhvc3RuYW1lIGZyb20gdGhlIGZzIGxhYmVsIG9mIC8sIGlmIC9ldGMvaG9zdG5hbWUgZG9lcyBub3QgZXhpc3Q/CisgCisgKiB1ZGV2OgorKyAgLSByZW1vdmUgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgKENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bikKKyAgIC0gbW92ZSB0byBMR1BMCisgICAtIGtpbGwgc2NzaV9pZAorICAgLSBhZGQgdHJpZ2dlciAtLXN1YnN5c3RlbS1tYXRjaD11c2IvdXNiX2RldmljZSBkZXZpY2UKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5MTgxMDFkNmIuLjljMjUwMjJhNCAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTcyLDYgKzcyLDEyIEBAIGNvbmYuc2V0MTAoJ0hBVkVfU1lTVl9DT01QQVQnLCBoYXZlLAorICAgICAgICAgICAgZGVzY3JpcHRpb24gOiAnU3lzViBpbml0IHNjcmlwdHMgYW5kIHJjTi5kIGxpbmtzIGFyZSBzdXBwb3J0ZWQnKQorIG00X2RlZmluZXMgKz0gaGF2ZSA/IFsnLURIQVZFX1NZU1ZfQ09NUEFUJ10gOiBbXQorIAorK2Zpcm13YXJlX3BhdGggPSBnZXRfb3B0aW9uKCdmaXJtd2FyZS1wYXRoJykKKytoYXZlID0gZmlybXdhcmVfcGF0aCAhPSAnJworK2NvbmYuc2V0MTAoJ0hBVkVfRklSTVdBUkUnLCBoYXZlLAorKyAgICAgICAgICAgZGVzY3JpcHRpb24gOiAnVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgc3VwcG9ydGVkJykKKyttNF9kZWZpbmVzICs9IGhhdmUgPyBbJy1ESEFWRV9GSVJNV0FSRSddIDogW10KKysKKyAjIGpvaW5fcGF0aHMgaWdub3JlIHRoZSBwcmVjZWRpbmcgYXJndW1lbnRzIGlmIGFuIGFic29sdXRlIGNvbXBvbmVudCBpcworICMgZW5jb3VudGVyZWQsIHNvIHRoaXMgc2hvdWxkIGNhbm9uaWNhbGl6ZSB2YXJpb3VzIHBhdGhzIHdoZW4gdGhleSBhcmUKKyAjIGFic29sdXRlIG9yIHJlbGF0aXZlLgorQEAgLTE3OCw2ICsxODQsNyBAQCBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9DT05GSUdfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocGtnc3lzYworIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX0RBVEFfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtdW5pdGRpcikKKyBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9TWVNWSU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgIHN5c3Zpbml0X3BhdGgpCisgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fU1lTVlJDTkRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICBzeXN2cmNuZF9wYXRoKQorK2NvbmYuc2V0X3F1b3RlZCgnRklSTVdBUkVfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0aCkKKyBjb25mLnNldF9xdW90ZWQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUQVJUJywgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ3JjLWxvY2FsJykpCisgY29uZi5zZXRfcXVvdGVkKCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVE9QJywgICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdoYWx0LWxvY2FsJykpCisgY29uZi5zZXRfcXVvdGVkKCdVU0VSX0NPTkZJR19VTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHBrZ3N5c2NvbmZkaXIsICd1c2VyJykpCitAQCAtMjU4LDYgKzI2NSw3IEBAIHN1YnN0cy5zZXQoJ1NZU1RFTUNUTCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyb290YmluCisgc3Vic3RzLnNldCgnUkFORE9NX1NFRUQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHJhbmRvbXNlZWRkaXIsICdyYW5kb20tc2VlZCcpKQorIHN1YnN0cy5zZXQoJ1NZU1RFTV9TWVNWSU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdmluaXRfcGF0aCkKKyBzdWJzdHMuc2V0KCdTWVNURU1fU1lTVlJDTkRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3ZyY25kX3BhdGgpCisrc3Vic3RzLnNldCgnRklSTVdBUkVfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZV9wYXRoKQorIHN1YnN0cy5zZXQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUQVJUJywgICAgICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbigncmMtbG9jYWwnKSkKKyBzdWJzdHMuc2V0KCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVE9QJywgICAgICAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ2hhbHQtbG9jYWwnKSkKKyAKK0BAIC0yNzE1LDYgKzI3MjMsNyBAQCBzdGF0dXMgPSBbCisgICAgICAgICAncm9vdGhvbWUgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChyb290aG9tZWRpciksCisgICAgICAgICAnU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2aW5pdF9wYXRoKSwKKyAgICAgICAgICdTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgIEAwQCcuZm9ybWF0KHN5c3ZyY25kX3BhdGgpLAorKyAgICAgICAgJ2Zpcm13YXJlIHBhdGg6ICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZmlybXdhcmVfcGF0aCksCisgICAgICAgICAnUEFNIG1vZHVsZXMgZGlyZWN0b3J5OiAgICAgICAgICAgICBAMEAnLmZvcm1hdChwYW1saWJkaXIpLAorICAgICAgICAgJ1BBTSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeTogICAgICAgQDBAJy5mb3JtYXQocGFtY29uZmRpciksCisgICAgICAgICAnUlBNIG1hY3JvcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgICBAMEAnLmZvcm1hdChycG1tYWNyb3NkaXIpLAorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IDBiMjRmMGUwZi4uOTJkMjVmYTM1IDEwMDY0NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAtMTA4LDYgKzEwOCw4IEBAIG9wdGlvbigndG1wZmlsZXMnLCB0eXBlIDogJ2Jvb2xlYW4nLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdzdXBwb3J0IGZvciB0bXBmaWxlcy5kJykKKyBvcHRpb24oJ2ltcG9ydGQnLCB0eXBlIDogJ2NvbWJvJywgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCisgICAgICAgIGRlc2NyaXB0aW9uIDogJ2luc3RhbGwgdGhlIHN5c3RlbWQtaW1wb3J0ZCBkYWVtb24nKQorK29wdGlvbignZmlybXdhcmUtcGF0aCcsIHR5cGUgOiAnc3RyaW5nJywgdmFsdWUgOiAnJywKKysgICAgICAgZGVzY3JpcHRpb24gOiAnRmlybXdhcmUgc2VhcmNoIHBhdGgnKQorIG9wdGlvbignaHdkYicsIHR5cGUgOiAnYm9vbGVhbicsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJ3N1cHBvcnQgZm9yIHRoZSBoYXJkd2FyZSBkYXRhYmFzZScpCisgb3B0aW9uKCdyZmtpbGwnLCB0eXBlIDogJ2Jvb2xlYW4nLAorZGlmZiAtLWdpdCBhL3J1bGVzL21lc29uLmJ1aWxkIGIvcnVsZXMvbWVzb24uYnVpbGQKK2luZGV4IGUyNTNiOWY1OS4uNWVlZTVmYmNhIDEwMDY0NAorLS0tIGEvcnVsZXMvbWVzb24uYnVpbGQKKysrKyBiL3J1bGVzL21lc29uLmJ1aWxkCitAQCAtNDEsNiArNDEsMTAgQEAgcnVsZXMgPSBmaWxlcygnJycKKyBpbnN0YWxsX2RhdGEocnVsZXMsCisgICAgICAgICAgICAgIGluc3RhbGxfZGlyIDogdWRldnJ1bGVzZGlyKQorIAorK2lmIGNvbmYuZ2V0KCdIQVZFX0ZJUk1XQVJFJykgPT0gMQorKyAgICAgICAgaW5zdGFsbF9kYXRhKCc1MC1maXJtd2FyZS5ydWxlcycsIGluc3RhbGxfZGlyIDogdWRldnJ1bGVzZGlyKQorK2VuZGlmCisrCisgYWxsX3J1bGVzID0gcnVsZXMKKyAKKyBydWxlc19pbiA9ICcnJworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L21lc29uLmJ1aWxkIGIvc3JjL3VkZXYvbWVzb24uYnVpbGQKK2luZGV4IGRlMmZkMmQ5Yy4uYjZiMGNhMDA2IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvbWVzb24uYnVpbGQKKysrKyBiL3NyYy91ZGV2L21lc29uLmJ1aWxkCitAQCAtNjcsNiArNjcsMTAgQEAgaWYgY29uZi5nZXQoJ0hBVkVfQUNMJykgPT0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkX2xvZ2luX2NdCisgZW5kaWYKKyAKKytpZiBjb25mLmdldCgnSEFWRV9GSVJNV0FSRScpID09IDEKKysgICAgICAgIGxpYnVkZXZfY29yZV9zb3VyY2VzICs9IFsndWRldi1idWlsdGluLWZpcm13YXJlLmMnXQorK2VuZGlmCisrCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgZ2VuZXJhdGVfa2V5Ym9hcmRfa2V5c19saXN0ID0gZmluZF9wcm9ncmFtKCdnZW5lcmF0ZS1rZXlib2FyZC1rZXlzLWxpc3Quc2gnKQorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLmJkOGMyZmI5NgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKK0BAIC0wLDAgKzEsMTU0IEBACisrLyoKKysgKiBmaXJtd2FyZSAtIEtlcm5lbCBmaXJtd2FyZSBsb2FkZXIKKysgKgorKyAqIENvcHlyaWdodCAoQykgMjAwOSBQaXRlciBQdW5rIDxwaXRlcnB1bmtAc2xhY2t3YXJlLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBLYXkgU2lldmVycyA8a2F5QHZyZnkub3JnPgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisrICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCisrICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHM6KgorKyAqLworKworKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxnZXRvcHQuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKworKyNpbmNsdWRlICJ1ZGV2LmgiCisrCisrc3RhdGljIGJvb2wgc2V0X2xvYWRpbmcoc3RydWN0IHVkZXYgKnVkZXYsIGNoYXIgKmxvYWRwYXRoLCBjb25zdCBjaGFyICpzdGF0ZSkgeworKyAgICAgICAgRklMRSAqbGRmaWxlOworKworKyAgICAgICAgbGRmaWxlID0gZm9wZW4obG9hZHBhdGgsICJ3ZSIpOworKyAgICAgICAgaWYgKGxkZmlsZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZXJyb3I6IGNhbiBub3Qgb3BlbiAnJXMnIiwgbG9hZHBhdGgpOworKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9OworKyAgICAgICAgZnByaW50ZihsZGZpbGUsICIlc1xuIiwgc3RhdGUpOworKyAgICAgICAgZmNsb3NlKGxkZmlsZSk7CisrICAgICAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrc3RhdGljIGJvb2wgY29weV9maXJtd2FyZShzdHJ1Y3QgdWRldiAqdWRldiwgY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICp0YXJnZXQsIHNpemVfdCBzaXplKSB7CisrICAgICAgICBjaGFyICpidWY7CisrICAgICAgICBGSUxFICpmc291cmNlID0gTlVMTCwgKmZ0YXJnZXQgPSBOVUxMOworKyAgICAgICAgYm9vbCByZXQgPSBmYWxzZTsKKysKKysgICAgICAgIGJ1ZiA9IG1hbGxvYyhzaXplKTsKKysgICAgICAgIGlmIChidWYgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoIk5vIG1lbW9yeSBhdmFpbGFibGUgdG8gbG9hZCBmaXJtd2FyZSBmaWxlIik7CisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGxvZ19kZWJ1Zygid3JpdGluZyAnJXMnICglemkpIHRvICclcyciLCBzb3VyY2UsIHNpemUsIHRhcmdldCk7CisrCisrICAgICAgICBmc291cmNlID0gZm9wZW4oc291cmNlLCAicmUiKTsKKysgICAgICAgIGlmIChmc291cmNlID09IE5VTEwpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIGZ0YXJnZXQgPSBmb3Blbih0YXJnZXQsICJ3ZSIpOworKyAgICAgICAgaWYgKGZ0YXJnZXQgPT0gTlVMTCkKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgaWYgKGZyZWFkKGJ1Ziwgc2l6ZSwgMSwgZnNvdXJjZSkgIT0gMSkKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgaWYgKGZ3cml0ZShidWYsIHNpemUsIDEsIGZ0YXJnZXQpID09IDEpCisrICAgICAgICAgICAgICAgIHJldCA9IHRydWU7CisrZXhpdDoKKysgICAgICAgIGlmIChmdGFyZ2V0ICE9IE5VTEwpCisrICAgICAgICAgICAgICAgIGZjbG9zZShmdGFyZ2V0KTsKKysgICAgICAgIGlmIChmc291cmNlICE9IE5VTEwpCisrICAgICAgICAgICAgICAgIGZjbG9zZShmc291cmNlKTsKKysgICAgICAgIGZyZWUoYnVmKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbnQgYnVpbHRpbl9maXJtd2FyZShzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCB0ZXN0KSB7CisrICAgICAgICBzdHJ1Y3QgdWRldiAqdWRldiA9IHVkZXZfZGV2aWNlX2dldF91ZGV2KGRldik7CisrICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqc2VhcmNocGF0aFtdID0geyBGSVJNV0FSRV9QQVRIIH07CisrICAgICAgICBjaGFyIGxvYWRwYXRoW1VUSUxfUEFUSF9TSVpFXTsKKysgICAgICAgIGNoYXIgZGF0YXBhdGhbVVRJTF9QQVRIX1NJWkVdOworKyAgICAgICAgY2hhciBmd3BhdGhbVVRJTF9QQVRIX1NJWkVdOworKyAgICAgICAgY29uc3QgY2hhciAqZmlybXdhcmU7CisrICAgICAgICBGSUxFICpmd2ZpbGUgPSBOVUxMOworKyAgICAgICAgc3RydWN0IHV0c25hbWUga2VybmVsOworKyAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKysgICAgICAgIHVuc2lnbmVkIGludCBpOworKyAgICAgICAgaW50IHJjID0gRVhJVF9TVUNDRVNTOworKworKyAgICAgICAgZmlybXdhcmUgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUoZGV2LCAiRklSTVdBUkUiKTsKKysgICAgICAgIGlmIChmaXJtd2FyZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZmlybXdhcmUgcGFyYW1ldGVyIG1pc3NpbmciKTsKKysgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIGxvb2t1cCBmaXJtd2FyZSBmaWxlICovCisrICAgICAgICB1bmFtZSgma2VybmVsKTsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHNlYXJjaHBhdGgpOyBpKyspIHsKKysgICAgICAgICAgICAgICAgc3Ryc2NweWwoZndwYXRoLCBzaXplb2YoZndwYXRoKSwgc2VhcmNocGF0aFtpXSwga2VybmVsLnJlbGVhc2UsICIvIiwgZmlybXdhcmUsIE5VTEwpOworKyAgICAgICAgICAgICAgICBmd2ZpbGUgPSBmb3Blbihmd3BhdGgsICJyZSIpOworKyAgICAgICAgICAgICAgICBpZiAoZndmaWxlICE9IE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgICAgIHN0cnNjcHlsKGZ3cGF0aCwgc2l6ZW9mKGZ3cGF0aCksIHNlYXJjaHBhdGhbaV0sIGZpcm13YXJlLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgZndmaWxlID0gZm9wZW4oZndwYXRoLCAicmUiKTsKKysgICAgICAgICAgICAgICAgaWYgKGZ3ZmlsZSAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgc3Ryc2NweWwobG9hZHBhdGgsIHNpemVvZihsb2FkcGF0aCksIHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldiksICIvbG9hZGluZyIsIE5VTEwpOworKworKyAgICAgICAgaWYgKGZ3ZmlsZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiZGlkIG5vdCBmaW5kIGZpcm13YXJlIGZpbGUgJyVzJyIsIGZpcm13YXJlKTsKKysgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICAgICAqIERvIG5vdCBjYW5jZWwgdGhlIHJlcXVlc3QgaW4gdGhlIGluaXRyZCwgdGhlIHJlYWwgcm9vdCBtaWdodCBoYXZlCisrICAgICAgICAgICAgICAgICAqIHRoZSBmaXJtd2FyZSBmaWxlIGFuZCB0aGUgJ2NvbGRwbHVnJyBydW4gaW4gdGhlIHJlYWwgcm9vdCB3aWxsIGZpbmQKKysgICAgICAgICAgICAgICAgICogdGhpcyBwZW5kaW5nIHJlcXVlc3QgYW5kIGZ1bGZpbGwgb3IgY2FuY2VsIGl0LgorKyAgICAgICAgICAgICAgICAgKiAqLworKyAgICAgICAgICAgICAgICBpZiAoIWluX2luaXRyZCgpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHN0YXQoZndwYXRoLCAmc3RhdGJ1ZikgPCAwIHx8IHN0YXRidWYuc3Rfc2l6ZSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIGlmICghaW5faW5pdHJkKCkpCisrICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOworKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIjEiKSkKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKworKyAgICAgICAgc3Ryc2NweWwoZGF0YXBhdGgsIHNpemVvZihkYXRhcGF0aCksIHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldiksICIvZGF0YSIsIE5VTEwpOworKyAgICAgICAgaWYgKCFjb3B5X2Zpcm13YXJlKHVkZXYsIGZ3cGF0aCwgZGF0YXBhdGgsIHN0YXRidWYuc3Rfc2l6ZSkpIHsKKysgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJlcnJvciBzZW5kaW5nIGZpcm13YXJlICclcycgdG8gZGV2aWNlIiwgZmlybXdhcmUpOworKyAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7CisrICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisrICAgICAgICB9OworKworKyAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICIwIik7CisrZXhpdDoKKysgICAgICAgIGlmIChmd2ZpbGUpCisrICAgICAgICAgICAgICAgIGZjbG9zZShmd2ZpbGUpOworKyAgICAgICAgcmV0dXJuIHJjOworK30KKysKKytjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9maXJtd2FyZSA9IHsKKysgICAgICAgIC5uYW1lID0gImZpcm13YXJlIiwKKysgICAgICAgIC5jbWQgPSBidWlsdGluX2Zpcm13YXJlLAorKyAgICAgICAgLmhlbHAgPSAia2VybmVsIGZpcm13YXJlIGxvYWRlciIsCisrICAgICAgICAucnVuX29uY2UgPSB0cnVlLAorK307CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYworaW5kZXggZGIyYjY4NzRmLi5jY2Q4ODYzOGMgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKK0BAIC0zMiw2ICszMiw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluICpidWlsdGluc1tdID0geworICAgICAgICAgW1VERVZfQlVJTFRJTl9CTEtJRF0gPSAmdWRldl9idWlsdGluX2Jsa2lkLAorICNlbmRpZgorICAgICAgICAgW1VERVZfQlVJTFRJTl9CVFJGU10gPSAmdWRldl9idWlsdGluX2J0cmZzLAorKyNpZiBIQVZFX0ZJUk1XQVJFCisrICAgICAgICBbVURFVl9CVUlMVElOX0ZJUk1XQVJFXSA9ICZ1ZGV2X2J1aWx0aW5fZmlybXdhcmUsCisrI2VuZGlmCisgICAgICAgICBbVURFVl9CVUlMVElOX0hXREJdID0gJnVkZXZfYnVpbHRpbl9od2RiLAorICAgICAgICAgW1VERVZfQlVJTFRJTl9JTlBVVF9JRF0gPSAmdWRldl9idWlsdGluX2lucHV0X2lkLAorICAgICAgICAgW1VERVZfQlVJTFRJTl9LRVlCT0FSRF0gPSAmdWRldl9idWlsdGluX2tleWJvYXJkLAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYuaCBiL3NyYy91ZGV2L3VkZXYuaAoraW5kZXggZWExMWMyZDI5Li5jNDdkZDNkODggMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LmgKKysrKyBiL3NyYy91ZGV2L3VkZXYuaAorQEAgLTE1MSw2ICsxNTEsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgeworICAgICAgICAgVURFVl9CVUlMVElOX0JMS0lELAorICNlbmRpZgorICAgICAgICAgVURFVl9CVUlMVElOX0JUUkZTLAorKyNpZiBIQVZFX0ZJUk1XQVJFCisrICAgICAgICBVREVWX0JVSUxUSU5fRklSTVdBUkUsCisrI2VuZGlmCisgICAgICAgICBVREVWX0JVSUxUSU5fSFdEQiwKKyAgICAgICAgIFVERVZfQlVJTFRJTl9JTlBVVF9JRCwKKyAgICAgICAgIFVERVZfQlVJTFRJTl9LRVlCT0FSRCwKK0BAIC0xNzksNiArMTgyLDkgQEAgc3RydWN0IHVkZXZfYnVpbHRpbiB7CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Jsa2lkOworICNlbmRpZgorIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9idHJmczsKKysjaWYgSEFWRV9GSVJNV0FSRQorK2V4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9maXJtd2FyZTsKKysjZW5kaWYKKyBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faHdkYjsKKyBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faW5wdXRfaWQ7CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2tleWJvYXJkOworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZkLmMgYi9zcmMvdWRldi91ZGV2ZC5jCitpbmRleCA1Yzc1N2Q1MTMuLjJmMzMxMzAwNyAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXZkLmMKKysrKyBiL3NyYy91ZGV2L3VkZXZkLmMKK0BAIC0xMjcsNiArMTI3LDkgQEAgc3RydWN0IGV2ZW50IHsKKyAgICAgICAgIGJvb2wgaXNfYmxvY2s7CisgICAgICAgICBzZF9ldmVudF9zb3VyY2UgKnRpbWVvdXRfd2FybmluZzsKKyAgICAgICAgIHNkX2V2ZW50X3NvdXJjZSAqdGltZW91dDsKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgYm9vbCBub2RlbGF5OworKyNlbmRpZgorIH07CisgCisgc3RhdGljIHZvaWQgZXZlbnRfcXVldWVfY2xlYW51cChNYW5hZ2VyICptYW5hZ2VyLCBlbnVtIGV2ZW50X3N0YXRlIHR5cGUpOworQEAgLTYwOSw2ICs2MTIsMTAgQEAgc3RhdGljIGludCBldmVudF9xdWV1ZV9pbnNlcnQoTWFuYWdlciAqbWFuYWdlciwgc3RydWN0IHVkZXZfZGV2aWNlICpkZXYpIHsKKyAgICAgICAgIGV2ZW50LT5kZXZudW0gPSB1ZGV2X2RldmljZV9nZXRfZGV2bnVtKGRldik7CisgICAgICAgICBldmVudC0+aXNfYmxvY2sgPSBzdHJlcSgiYmxvY2siLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOworICAgICAgICAgZXZlbnQtPmlmaW5kZXggPSB1ZGV2X2RldmljZV9nZXRfaWZpbmRleChkZXYpOworKyNpZiBIQVZFX0ZJUk1XQVJFCisrICAgICAgICBpZiAoc3RyZXEodWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpLCAiZmlybXdhcmUiKSkKKysgICAgICAgICAgICAgICAgZXZlbnQtPm5vZGVsYXkgPSB0cnVlOworKyNlbmRpZgorIAorICAgICAgICAgbG9nX2RlYnVnKCJzZXEgJWxsdSBxdWV1ZWQsICclcycgJyVzJyIsIHVkZXZfZGV2aWNlX2dldF9zZXFudW0oZGV2KSwKKyAgICAgICAgICAgICAgdWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXYpLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOworQEAgLTY5Miw2ICs2OTksMTEgQEAgc3RhdGljIGJvb2wgaXNfZGV2cGF0aF9idXN5KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCBldmVudCAqZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorIAorKyNpZiBIQVZFX0ZJUk1XQVJFCisrICAgICAgICAgICAgICAgIC8qIGFsbG93IHRvIGJ5cGFzcyB0aGUgZGVwZW5kZW5jeSB0cmFja2luZyAqLworKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPm5vZGVsYXkpCisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrI2VuZGlmCisgICAgICAgICAgICAgICAgIC8qIHBhcmVudCBkZXZpY2UgZXZlbnQgZm91bmQgKi8KKyAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZXZwYXRoW2NvbW1vbl0gPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRlbGF5aW5nX3NlcW51bSA9IGxvb3BfZXZlbnQtPnNlcW51bTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjE0MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gZmZkZjljYjZiYTBkOTMyYjgxOTMzZDgyNGYyM2E4NzhjMzEzYThkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIyIEZlYiAyMDE2IDA1OjU5OjAxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMzFdIHJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSB1Y2hhci5oCisKK21pc3NpbmcuaCBhbHJlYWR5IGluY2x1ZGVzIGl0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIHNyYy9iYXNpYy9lc2NhcGUuaCB8IDEgLQorIHNyYy9iYXNpYy91dGY4LmggICB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9lc2NhcGUuaCBiL3NyYy9iYXNpYy9lc2NhcGUuaAoraW5kZXggZGU4OWY0M2E4Li45OTIxY2NiYmQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZXNjYXBlLmgKKysrKyBiL3NyYy9iYXNpYy9lc2NhcGUuaAorQEAgLTI0LDcgKzI0LDYgQEAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8dWNoYXIuaD4KKyAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAibWlzc2luZy5oIgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGY4LmggYi9zcmMvYmFzaWMvdXRmOC5oCitpbmRleCBiMGE3NDg1YWUuLmZhMDZkMjkwNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy91dGY4LmgKKysrKyBiL3NyYy9iYXNpYy91dGY4LmgKK0BAIC0yMyw3ICsyMyw2IEBACisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorLSNpbmNsdWRlIDx1Y2hhci5oPgorIAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJtaXNzaW5nLmgiCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3JtLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2OTRkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3JtLXN0cm5kdXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSA3NWY0ZTdmMTY3ZGU1MzNhMTYwZWUxYWYyYTAzZmJhNGM1YTVmZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6MzM6MjIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xMl0gdGVzdC1oZXhkZWNvY3QuYzogSW5jbHVkZSBtaXNzaW5nLmggZm9ybSBzdHJuZHVwYQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi1pbmRleCBmY2FlNDI3ZTcuLjVlYjVlMmVkNyAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKLSsrKyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKLUBAIC0yMSw2ICsyMSw3IEBACi0gI2luY2x1ZGUgImhleGRlY29jdC5oIgotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKLSAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTQ0YjU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWNoZWNrLWZvci11Y2hhci5oLWluLW1lc29uLmJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gZWE0Y2FhYTFjNmE2ZGM2ODJiYjA0NTQ4YWIwNWM1YzczZDBiNDVkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjYgRmViIDIwMTggMTU6MzQ6NTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8zMV0gY2hlY2sgZm9yIHVjaGFyLmggaW4gbWVzb24uYnVpbGQKKworVXNlICNpZiBIQVZFX1VDSEFSX0ggdG8gaW5jbHVkZSB1Y2hhci5oIGNvbmRpdGlvbmFsbHkuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICB8IDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDljMjUwMjJhNC4uOTRhMTY3MTJiIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNjIzLDYgKzYyMyw3IEBAIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKKyAgICAgICAgICAgICAgICAgICAnc3lzL2F1eHYuaCcsCisgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL21lbWNoZWNrLmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC92YWxncmluZC5oJywKKysgICAgICAgICAgICAgICAgICAndWNoYXIuaCcsCisgICAgICAgICAgICAgICAgICBdCisgCisgICAgICAgICBjb25mLnNldDEwKCdIQVZFXycgKyBoZWFkZXIudW5kZXJzY29yaWZ5KCkudG9fdXBwZXIoKSwKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMzljMWZiNzAwLi44NGQ2ZDkxNjcgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMzgsNyArMzgsOSBAQAorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorKyNpZiBIQVZFX1VDSEFSX0gKKyAjaW5jbHVkZSA8dWNoYXIuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisgI2lmIEhBVkVfQVVESVQKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODI4ZDZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDUyNzI2YmU5MmUyYjg0MWY3NDRhOTZjMzc4Y2M4NzJhZTAwMzNhMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTldIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQotCi1Vc2UgdXBkYXRlLXJjLmQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgc3RhdHVzIGNvbW1hbmQKLXRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHN5c3Ygc2VydmljZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCi1pbmRleCBhNTNhM2U2Li41ZDg3N2IwIDEwMDc1NQotLS0tIGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotKysrIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotQEAgLTMwLDE3ICszMCwxNyBAQCBjYXNlICIkMSIgaW4KLSAgICAgZW5hYmxlKQotICAgICAgICAgIyBjYWxsIHRoZSBjb21tYW5kIHRvIGVuYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKLSAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQotLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBlbmFibGluZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCi0rICAgICAgICB1cGRhdGUtcmMuZCAtZiAkTkFNRSBkZWZhdWx0cwotICAgICAgICAgOzsKLSAgICAgZGlzYWJsZSkKLSAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBkaXNhYmxlIFN5c1YgaW5pdCBzY3JpcHQgJE5BTUUgaGVyZQotICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCi0tICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGRpc2FibGluZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCi0rICAgICAgICB1cGRhdGUtcmMuZCAtZiAkTkFNRSByZW1vdmUKLSAgICAgICAgIDs7Ci0gICAgIGlzLWVuYWJsZWQpCi0gICAgICAgICAjIGV4aXQgd2l0aCAwIGlmICROQU1FIGlzIGVuYWJsZWQsIG5vbi16ZXJvIGlmIGl0IGlzIGRpc2FibGVkCi0gICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKLS0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogY2hlY2tpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgL2V0Yy9pbml0LmQvJE5BTUUgc3RhdHVzCi0gICAgICAgICA7OwotICAgICAqKQotICAgICAgICAgdXNhZ2UgOzsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOGM4M2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDZlOWQyYmNhYTZmODg2YjIzODRjMWMzNWEwNGU0ZWJjMTQ4YWVhNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjo0MDoyNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEwLzEyXSB0ZXN0LXNpemVvZi5jOiBEaXNhYmxlIHRlc3RzIGZvciBtaXNzaW5nIHR5cGVkZWZzIGluCi0gbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLWluZGV4IDI2OWFkZmQxOC4uYmE3ODU1ZGZmIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotQEAgLTE4LDcgKzE4LDYgQEAKLSAqKiovCi0gCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0gI2luY2x1ZGUgInRpbWUtdXRpbC5oIgotIAotIC8qIFByaW50IGluZm9ybWF0aW9uIGFib3V0IHZhcmlvdXMgdHlwZXMuIFVzZWZ1bCB3aGVuIGRpYWdub3NpbmcKLUBAIC00OCw4ICs0NywxMCBAQCBpbnQgbWFpbih2b2lkKSB7Ci0gICAgICAgICBpbmZvKHVuc2lnbmVkKTsKLSAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7Ci0gICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7Ci0gICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKLSsjZW5kaWYKLSAKLSAgICAgICAgIGluZm8oZmxvYXQpOwotICAgICAgICAgaW5mbyhkb3VibGUpOwotQEAgLTU5LDcgKzYwLDkgQEAgaW50IG1haW4odm9pZCkgewotICAgICAgICAgaW5mbyhzc2l6ZV90KTsKLSAgICAgICAgIGluZm8odGltZV90KTsKLSAgICAgICAgIGluZm8odXNlY190KTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICAgICAgICBpbmZvKF9fdGltZV90KTsKLSsjZW5kaWYKLSAKLSAgICAgICAgIGluZm8oZW51bSBFbnVtKTsKLSAgICAgICAgIGluZm8oZW51bSBCaWdFbnVtKTsKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NmZTgyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotRnJvbSAyZWI0NWY1YTBhOGJmYjhiZGNhMDg0NTg3YWQyOGU1MDAxZjNjYzRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBUaHUsIDE4IFNlcCAyMDE0IDE1OjI0OjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIGRvbid0IHVzZSBnbGliYy1zcGVjaWZpYyBxc29ydF9yCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2h3ZGIvaHdkYi5jICAgICAgICAgfCAxOCArKysrKysrKysrKy0tLS0tLS0KLSBzcmMvdWRldi91ZGV2YWRtLWh3ZGIuYyB8IDE2ICsrKysrKysrKystLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2h3ZGIvaHdkYi5jIGIvc3JjL2h3ZGIvaHdkYi5jCi1pbmRleCA3OTMzOThjYTYuLjY2OWIwMDgxOCAxMDA2NDQKLS0tLSBhL3NyYy9od2RiL2h3ZGIuYwotKysrIGIvc3JjL2h3ZGIvaHdkYi5jCi1AQCAtMTUxLDEzICsxNTEsMTIgQEAgc3RhdGljIHZvaWQgdHJpZV9mcmVlKHN0cnVjdCB0cmllICp0cmllKSB7Ci0gCi0gREVGSU5FX1RSSVZJQUxfQ0xFQU5VUF9GVU5DKHN0cnVjdCB0cmllKiwgdHJpZV9mcmVlKTsKLSAKLS1zdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIsIHZvaWQgKmFyZykgewotK3N0YXRpYyBzdHJ1Y3QgdHJpZSAqdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllOwotK3N0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2MikgewotICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDEgPSB2MTsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwyID0gdjI7Ci0tICAgICAgICBzdHJ1Y3QgdHJpZSAqdHJpZSA9IGFyZzsKLS0KLS0gICAgICAgIHJldHVybiBzdHJjbXAodHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKLS0gICAgICAgICAgICAgICAgICAgICAgdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0rICAgICAgICByZXR1cm4gc3RyY21wKHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKLSsgICAgICAgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotQEAgLTE4Miw3ICsxODEsMTAgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAotICAgICAgICAgICAgICAgICB9OwotIAotLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotKwotICAgICAgICAgICAgICAgICBpZiAodmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIDIgaWRlbnRpY2FsIHByb3BlcnRpZXMgb24gdGhlIHNhbWUgbWF0Y2gtc3RyaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIHByb2Nlc3MgZmlsZXMgaW4gb3JkZXIsIHdlIGp1c3QgcmVwbGFjZSB0aGUgcHJldmlvdXMgdmFsdWUuCi1AQCAtMjA3LDcgKzIwOSw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmZpbGVfcHJpb3JpdHkgPSBmaWxlX3ByaW9yaXR5OwotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ubGluZV9udW1iZXIgPSBsaW5lX251bWJlcjsKLSAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOwotLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7Ci0rICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYwotaW5kZXggNjliMGI5MDI1Li5mYmQyMTMzMDAgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYwotKysrIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLUBAIC0xMjgsMTMgKzEyOCwxMyBAQCBzdGF0aWMgdm9pZCB0cmllX25vZGVfY2xlYW51cChzdHJ1Y3QgdHJpZV9ub2RlICpub2RlKSB7Ci0gICAgICAgICBmcmVlKG5vZGUpOwotIH0KLSAKLS1zdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIsIHZvaWQgKmFyZykgewotK3N0YXRpYyBzdHJ1Y3QgdHJpZSAqdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllOwotK3N0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2MikgewotICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDEgPSB2MTsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwyID0gdjI7Ci0tICAgICAgICBzdHJ1Y3QgdHJpZSAqdHJpZSA9IGFyZzsKLSAKLS0gICAgICAgIHJldHVybiBzdHJjbXAodHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKLS0gICAgICAgICAgICAgICAgICAgICAgdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0rICAgICAgICByZXR1cm4gc3RyY21wKHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKLSsgICAgICAgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotQEAgLTE1NSw3ICsxNTUsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCi0gICAgICAgICAgICAgICAgIH07Ci0gCi0tICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7Ci0rICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXBsYWNlIGV4aXN0aW5nIGVhcmxpZXIga2V5IHdpdGggbmV3IHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmFsLT52YWx1ZV9vZmYgPSB2OwotQEAgLTE3Miw3ICsxNzQsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5rZXlfb2ZmID0gazsKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLnZhbHVlX29mZiA9IHY7Ci0gICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKLS0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAxYWU5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gM2Y2ZjQ1NTc4YjgyOGU0MTRmNTBjNjgyMjM3NTA3M2U3MTc0MjM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IERlYyAyMDE1IDAwOjUwOjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTldIG5zcy1teW1hY2hpbmVzOiBCdWlsZCBjb25kaXRpb25hbGx5IHdoZW4KLSBIQVZFX01ZSE9TVE5BTUUgaXMgc2V0Ci0KLUZpeGVzIGJ1aWxkIGZhaWx1cmVzIHdoZW4gYnVpbGRpbmcgd2l0aCAtLWRpc2FibGUtbXlob3N0bmFtZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDAyZjQwMTcuLjQyMGUwZTAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01MTQ2LDYgKzUxNDYsNyBAQCBTWVNURU1fVU5JVF9BTElBU0VTICs9IFwKLSBCVVNOQU1FU19UQVJHRVRfV0FOVFMgKz0gXAotIAlvcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZQotIAotK2lmIEhBVkVfTVlIT1NUTkFNRQotIGxpYm5zc19teW1hY2hpbmVzX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5zeW0gXAotIAlzcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYwotQEAgLTUxNjcsNiArNTE2OCw3IEBAIHJvb3RsaWJfTFRMSUJSQVJJRVMgKz0gXAotIAlsaWJuc3NfbXltYWNoaW5lcy5sYQotIAotIGVuZGlmCi0rZW5kaWYKLSAKLSBwb2xraXRwb2xpY3lfaW5fZmlsZXMgKz0gXAotIAlzcmMvbWFjaGluZS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5LmluCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA5MjNkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDYwZGQ0MTFlOTc1NmZjMmIxNGMwZTA2MWFkODAzNzgyYjRhZWU4NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjQ2OjA1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMzFdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYworaW5kZXggMmM3MGNhZGUxLi42N2FlZGFkZDQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKK0BAIC01MCw2ICs1MCwxNiBAQAorICNpbmNsdWRlICJ1dGY4LmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKyAKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBzdXBwb3J0IElETiAqLworKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMAorKyNlbmRpZgorKworKyNpZm5kZWYgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTCisrI2RlZmluZSBOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMgMAorKyNlbmRpZgorKworICNpZiBFTkFCTEVfSUROCisgIyAgZGVmaW5lIElETl9GTEFHUyAoTklfSUROfE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUykKKyAjZWxzZQorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNmRiNjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gOTYyMTYxOGM3MDFhMmQ1ZWIzZTI2ZjQwYzY4MzU0ZDRkZmI4Zjg3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCi0KLUF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0Ci10aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKLQotICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAotICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgotCi1Ob3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUKLWRpc2N1c3Npb24gaW4gdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0Ci0oY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28KLW9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdCBhY2Nlc3MgcGVybWlzc2lvbnMuCi1UaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuIGZhY2Nlc3NhdCgpCi13aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUgYmVoYXZpb3VyCi1mb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQgd2l0aAotKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCi0KLVRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90Ci1jbGVhciBpZiBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUKLWp1c3QgaGlzdG9yaWNhbCBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQotIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotaW5kZXggMDk0YWNmMTc5Li5jZGJjMGFlNzIgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCi1AQCAtNDgsNyArNDgsMjcgQEAgaW50IGZjaG1vZF91bWFzayhpbnQgZmQsIG1vZGVfdCBtb2RlKTsKLSAKLSBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOwotIAotLSNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCBBVF9TWU1MSU5LX05PRk9MTE9XKQotKy8qCi0rICAgQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8KLSsgICBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKLSsKLSsgICAgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCi0rICAgICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgotKwotKyAgIE5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZSBkaXNjdXNzaW9uIGluCi0rICAgdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0IChjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMKLSsgICBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvIG9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdAotKyAgIGFjY2VzcyBwZXJtaXNzaW9ucy4gVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbgotKyAgIGZhY2Nlc3NhdCgpIHdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZQotKyAgIGJlaGF2aW91ciBmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQKLSsgICB3aXRoIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgotKwotKyAgIFRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90IGNsZWFyIGlmCi0rICAgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlIGp1c3QgaGlzdG9yaWNhbAotKyAgIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPwotKyovCi0rCi0rI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIDApCi0gCi0gaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7Ci0gaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOwotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1pbmRleCA5MDNhMTg3ODYuLjJmNjA1MmVlNyAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKLSsrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKLUBAIC03MCw3ICs3MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Ci0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOwotIAotICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPj0gMCkKLSsgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCAwKSA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7Ci1AQCAtNzgsNyArNzgsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewotIAotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIDApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLwotQEAgLTg5LDcgKzg5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci0gCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgMCkgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjA3ODYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA0MDZhNGM4NjkyMzE2ZThjN2UxNGM3OGY5YTgwMjY4OWJlMzA0YTk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAwOTo0NjowMCArMDgwMAorU3ViamVjdDogW1BBVENIIDEyLzMxXSBydWxlczogd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcyBpbiBpZGUgZGV2aWNlcworCitGb3JtYXR0aW5nIElERSBzdG9yYWdlIGRvZXMgbm90IHRyaWdnZXIgImNoYW5nZSIgdWV2ZW50cy4gQXMgYSByZXN1bHQKK2NsaWVudHMgdXNpbmcgdWRldiBBUEkgZG9uJ3QgZ2V0IGFueSB1cGRhdGVzIGFmdGVyd2FyZHMgYW5kIGdldCBvdXRkYXRlZAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZS4KKy4uLgorcm9vdEBxZW11eDg2LTY0On4jIG1rZnMuZXh0NCAtRiAvZGV2L2hkYTEKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAyNjIxNDQgNGsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK0ZpbGVzeXN0ZW0gVVVJRDogOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCisKK3Jvb3RAcWVtdXg4Ni02NDp+IyBscyAvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKK2xzOiBjYW5ub3QgYWNjZXNzICcvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTInOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisuLi4KK0luY2x1ZGUgaGQqIGluIGEgbWF0Y2ggZm9yIHdhdGNoIG9wdGlvbiBhc3NpZ25tZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorCitxZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQorQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKKy9kZXYvaGQqLiBBIHNpbWlsYXIgcGF0Y2ggcmVqZWN0ZWQgYnkgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFCitpcyBkZXByZWNhdGVkLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBydWxlcy82MC1ibG9jay5ydWxlcyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKK2luZGV4IDM0M2ZjMDZmOC4uYjUyMzdkYWM0IDEwMDY0NAorLS0tIGEvcnVsZXMvNjAtYmxvY2sucnVsZXMKKysrKyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCitAQCAtOCw0ICs4LDQgQEAgQUNUSU9OPT0iYWRkIiwgU1VCU1lTVEVNPT0ibW9kdWxlIiwgS0VSTkVMPT0iYmxvY2siLCBBVFRSe3BhcmFtZXRlcnMvZXZlbnRzX2RmbF8KKyBBQ1RJT049PSJjaGFuZ2UiLCBTVUJTWVNURU09PSJzY3NpIiwgRU5We0RFVlRZUEV9PT0ic2NzaV9kZXZpY2UiLCBURVNUPT0iYmxvY2siLCBBVFRSe2Jsb2NrLyovdWV2ZW50fT0iY2hhbmdlIgorIAorICMgd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcywgY2F1c2VkIGJ5IHRvb2xzIGNsb3NpbmcgdGhlIGRldmljZSBub2RlIHdoaWNoIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcKKy1BQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIEtFUk5FTD09Imxvb3AqfG52bWUqfHNkKnx2ZCp8eHZkKnxwbWVtKnxtbWNibGsqIiwgT1BUSU9OUys9IndhdGNoIgorK0FDVElPTiE9InJlbW92ZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgS0VSTkVMPT0ibG9vcCp8bnZtZSp8c2QqfHZkKnx4dmQqfHBtZW0qfG1tY2Jsayp8aGQqIiwgT1BUSU9OUys9IndhdGNoIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjM4MGNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYWI1YTI3MDQwMTMzZjdjZGYwNjJhYzhjZmViOTRlMDgxZDM1NjdiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6NDE6MTMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNF0gcnVsZXM6IHdoaXRlbGlzdCBoZCogZGV2aWNlcwotCi1xZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQotQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKLS9kZXYvaGQqLiBQYXRjaCByZWplY3RlZCB1cHN0cmVhbSBiZWNhdXNlIENPTkZJR19JREUgaXMgZGVwcmVjYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC8xMjc2XQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IGQyNzQ1ZjY1Zi4uNjNmNDcyYmU4IDEwMDY0NAotLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi0rKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLUBAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0rS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCi0gVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZWJiZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi1Gcm9tIDQ3OWUxZjRhYTJiOWYxYzkxMWE0ZDBkZDE4ZTIyMmQyNDFhOTc4ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjM1OjMwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDIvNDhdIE1ha2Ugcm9vdCdzIGhvbWUgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZQotCi1PcGVuRW1iZWRkZWQgaGFzIGEgY29uZmlndXJhYmxlIGhvbWUgZGlyZWN0b3J5IGZvciByb290LiBBbGxvdwotc3lzdGVtZCB0byBiZSBidWlsdCB1c2luZyBpdHMgaWRlYSBvZiB3aGF0IHJvb3QncyBob21lIGRpcmVjdG9yeQotc2hvdWxkIGJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZAotVXBzdHJlYW0gd2FudHMgdG8gaGF2ZSBhIHVuaWZpZWQgaGllcmFyY2h5IHdoZXJlIGV2ZXJ5b25lIGlzCi11c2luZyB0aGUgc2FtZSByb290IGZvbGRlci4KLWh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvaXNzdWVzLzU0MQotCi1TaWduZWQtb2ZmLWJ5OiBEYW4gTWNHcmVnb3IgPGRhbi5tY2dyZWdvckB1c2Fzay5jYT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMiArKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgNyArKysrKysrCi0gc3JjL2Jhc2ljL3VzZXItdXRpbC5jICAgICAgfCA0ICsrLS0KLSBzcmMvbnNwYXduL25zcGF3bi5jICAgICAgICB8IDQgKystLQotIHVuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluIHwgNCArKy0tCi0gdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4gICAgfCA0ICsrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAxYmNkOTMyYzIuLmMyYjRhOTlkMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTIyNiw2ICsyMjYsNyBAQCBBTV9DUFBGTEFHUyA9IFwKLSAJLURMSUJESVI9XCIkKGxpYmRpcilcIiBcCi0gCS1EUk9PVExJQkRJUj1cIiQocm9vdGxpYmRpcilcIiBcCi0gCS1EUk9PVExJQkVYRUNESVI9XCIkKHJvb3RsaWJleGVjZGlyKVwiIFwKLSsJLURST09USE9NRURJUj1cIiQocm9vdGhvbWVkaXIpXCIgXAotIAktSSAkKHRvcF9zcmNkaXIpL3NyYyBcCi0gCS1JICQodG9wX2J1aWxkZGlyKS9zcmMvYmFzaWMgXAotIAktSSAkKHRvcF9zcmNkaXIpL3NyYy9iYXNpYyBcCi1AQCAtNjM1Niw2ICs2MzU3LDcgQEAgc3Vic3RpdHV0aW9ucyA9IFwKLSAgICAgICAgJ3xyb290bGliZGlyPSQocm9vdGxpYmRpcil8JyBcCi0gICAgICAgICd8cm9vdGxpYmV4ZWNkaXI9JChyb290bGliZXhlY2Rpcil8JyBcCi0gICAgICAgICd8cm9vdGJpbmRpcj0kKHJvb3RiaW5kaXIpfCcgXAotKyAgICAgICAnfHJvb3Rob21lZGlyPSQocm9vdGhvbWVkaXIpfCcgXAotICAgICAgICAnfGJpbmRpcj0kKGJpbmRpcil8JyBcCi0gICAgICAgICd8U1lTVEVNQ1RMPSQocm9vdGJpbmRpcikvc3lzdGVtY3RsfCcgXAotICAgICAgICAnfFNZU1RFTURfTk9USUZZPSQocm9vdGJpbmRpcikvc3lzdGVtZC1ub3RpZnl8JyBcCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMzU0ZmZlNmEuLmI1M2NhMWYxYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTY0MSw2ICsxNjQxLDExIEBAIEFDX0FSR19XSVRIKFtyb290bGliZGlyXSwKLSAgICAgICAgIFt3aXRoX3Jvb3RsaWJkaXI9JHtsaWJkaXJ9XSkKLSBBWF9OT1JNQUxJWkVfUEFUSChbd2l0aF9yb290bGliZGlyXSkKLSAKLStBQ19BUkdfV0lUSChbcm9vdGhvbWVkaXJdLAotKyAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yb290aG9tZWRpcj1ESVJdLCBbSG9tZSBkaXJlY3RvcnkgZm9yIHRoZSByb290IHVzZXJdKSwKLSsgICAgICAgIFtdLAotKyAgICAgICAgW3dpdGhfcm9vdGhvbWVkaXI9L3Jvb3RdKQotKwotIEFDX0FSR19XSVRIKFtwYW1saWJkaXJdLAotICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW2RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKLSAgICAgICAgIFtdLAotQEAgLTE3MzMsNiArMTczOCw3IEBAIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQotIEFDX1NVQlNUKFtycG1tYWNyb3NkaXJdLCBbJHdpdGhfcnBtbWFjcm9zZGlyXSkKLSBBQ19TVUJTVChbcm9vdHByZWZpeF0sIFskd2l0aF9yb290cHJlZml4XSkKLSBBQ19TVUJTVChbcm9vdGxpYmRpcl0sIFskd2l0aF9yb290bGliZGlyXSkKLStBQ19TVUJTVChbcm9vdGhvbWVkaXJdLCBbJHdpdGhfcm9vdGhvbWVkaXJdKQotIAotIEFDX0NPTkZJR19GSUxFUyhbCi0gICAgICAgICBNYWtlZmlsZQotQEAgLTE4MjksNiArMTgzNSw3IEBAIEFDX01TR19SRVNVTFQoWwotICAgICAgICAgaW5jbHVkZWRpcjogICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9Ci0gICAgICAgICBsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfQotICAgICAgICAgcm9vdGxpYiBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAke3dpdGhfcm9vdGxpYmRpcn0KLSsgICAgICAgIHJvb3QgaG9tZSBkaXI6ICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3Rob21lZGlyfQotICAgICAgICAgU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICAgICAgICAgICAke1NZU1RFTV9TWVNWSU5JVF9QQVRIfQotICAgICAgICAgU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICAke1NZU1RFTV9TWVNWUkNORF9QQVRIfQotICAgICAgICAgYnVpbGQgUHl0aG9uOiAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTn0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXNlci11dGlsLmMgYi9zcmMvYmFzaWMvdXNlci11dGlsLmMKLWluZGV4IGM2MTlkYWQ1Mi4uNjYyNjgyYWRmIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvdXNlci11dGlsLmMKLUBAIC0xMjksNyArMTI5LDcgQEAgaW50IGdldF91c2VyX2NyZWRzKAotICAgICAgICAgICAgICAgICAgICAgICAgICpnaWQgPSAwOwotIAotICAgICAgICAgICAgICAgICBpZiAoaG9tZSkKLS0gICAgICAgICAgICAgICAgICAgICAgICAqaG9tZSA9ICIvcm9vdCI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKmhvbWUgPSBST09USE9NRURJUjsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKHNoZWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgICpzaGVsbCA9ICIvYmluL3NoIjsKLUBAIC0zODksNyArMzg5LDcgQEAgaW50IGdldF9ob21lX2RpcihjaGFyICoqX2gpIHsKLSAgICAgICAgIC8qIEhhcmRjb2RlIGhvbWUgZGlyZWN0b3J5IGZvciByb290IHRvIGF2b2lkIE5TUyAqLwotICAgICAgICAgdSA9IGdldHVpZCgpOwotICAgICAgICAgaWYgKHUgPT0gMCkgewotLSAgICAgICAgICAgICAgICBoID0gc3RyZHVwKCIvcm9vdCIpOwotKyAgICAgICAgICAgICAgICBoID0gc3RyZHVwKFJPT1RIT01FRElSKTsKLSAgICAgICAgICAgICAgICAgaWYgKCFoKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwotIAotZGlmZiAtLWdpdCBhL3NyYy9uc3Bhd24vbnNwYXduLmMgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1pbmRleCA4YTVmZWRkNGIuLjdiMDFlYzA3OCAxMDA2NDQKLS0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLmMKLSsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLUBAIC0yMjkxLDcgKzIyOTEsNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAotICAgICAgICAgaWYgKGVudnBbbl9lbnZdKQotICAgICAgICAgICAgICAgICBuX2VudisrOwotIAotLSAgICAgICAgaWYgKChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJIT01FPSVzIiwgaG9tZSA/IGhvbWU6ICIvcm9vdCIpIDwgMCkgfHwKLSsgICAgICAgIGlmICgoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiSE9NRT0lcyIsIGhvbWUgPyBob21lOiBST09USE9NRURJUikgPCAwKSB8fAotICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJVU0VSPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSB8fAotICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJMT0dOQU1FPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLUBAIC0yMzczLDcgKzIzNzMsNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgaWYgKCFhcmdfY2hkaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgd2UgY2Fubm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5LCB3ZSdsbCBlbmQgdXAgaW4gLywgdGhhdCBpcyBleHBlY3RlZC4gKi8KLS0gICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgY2hkaXIoaG9tZSA/OiAiL3Jvb3QiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgY2hkaXIoaG9tZSA/OiBST09USE9NRURJUik7Ci0gCi0gICAgICAgICAgICAgICAgIGV4ZWNsZSgiL2Jpbi9iYXNoIiwgIi1iYXNoIiwgTlVMTCwgZW52X3VzZSk7Ci0gICAgICAgICAgICAgICAgIGV4ZWNsZSgiL2Jpbi9zaCIsICItc2giLCBOVUxMLCBlbnZfdXNlKTsKLWRpZmYgLS1naXQgYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbiBiL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCi1pbmRleCBlOWViMjM4YjkuLjMyNTg4ZTQ4YSAxMDA2NDQKLS0tLSBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCi0rKysgYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotQEAgLTE1LDggKzE1LDggQEAgQ29uZmxpY3RzPXN5c2xvZy5zb2NrZXQKLSBCZWZvcmU9c2h1dGRvd24udGFyZ2V0Ci0gCi0gW1NlcnZpY2VdCi0tRW52aXJvbm1lbnQ9SE9NRT0vcm9vdAotLVdvcmtpbmdEaXJlY3Rvcnk9LS9yb290Ci0rRW52aXJvbm1lbnQ9SE9NRT1Acm9vdGhvbWVkaXJACi0rV29ya2luZ0RpcmVjdG9yeT0tQHJvb3Rob21lZGlyQAotIEV4ZWNTdGFydD0tQHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLXN1bG9naW4tc2hlbGwgZW1lcmdlbmN5Ci0gVHlwZT1pZGxlCi0gU3RhbmRhcmRJbnB1dD10dHktZm9yY2UKLWRpZmYgLS1naXQgYS91bml0cy9yZXNjdWUuc2VydmljZS5pbiBiL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluCi1pbmRleCA0YWI2NmY0ODUuLmJkOTg5OGYyYyAxMDA2NDQKLS0tLSBhL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluCi0rKysgYi91bml0cy9yZXNjdWUuc2VydmljZS5pbgotQEAgLTE0LDggKzE0LDggQEAgQWZ0ZXI9c3lzaW5pdC50YXJnZXQgcGx5bW91dGgtc3RhcnQuc2VydmljZQotIEJlZm9yZT1zaHV0ZG93bi50YXJnZXQKLSAKLSBbU2VydmljZV0KLS1FbnZpcm9ubWVudD1IT01FPS9yb290Ci0tV29ya2luZ0RpcmVjdG9yeT0tL3Jvb3QKLStFbnZpcm9ubWVudD1IT01FPUByb290aG9tZWRpckAKLStXb3JraW5nRGlyZWN0b3J5PS1Acm9vdGhvbWVkaXJACi0gRXhlY1N0YXJ0PS1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtc3Vsb2dpbi1zaGVsbCByZXNjdWUKLSBUeXBlPWlkbGUKLSBTdGFuZGFyZElucHV0PXR0eS1mb3JjZQotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOTI3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MzEgQEAKK0Zyb20gNTgwZDIzY2YwYjMyZTM2YThmYjk2NzEwMzM2ZmZlZjQzMmIzYzdjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTA6NTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy9iYXNpYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDQgKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrCisgc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMiArLQorIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgfCAgIDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDMzNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDk0YTE2NzEyYi4uNGVhYmFhZmU4IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNjIwLDYgKzYyMCw3IEBAIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKKyAgICAgICAgICAgICAgICAgICAnbGludXgvYnRyZnMuaCcsCisgICAgICAgICAgICAgICAgICAgJ2xpbnV4L21lbWZkLmgnLAorICAgICAgICAgICAgICAgICAgICdsaW51eC92bV9zb2NrZXRzLmgnLAorKyAgICAgICAgICAgICAgICAgICdwcmludGYuaCcsCisgICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCitpbmRleCA0NGNkMzFlY2IuLjQzNWM2ZWUwMiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZAorKysrIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCitAQCAtMzEwLDYgKzMxMCwxMCBAQCBlbmRmb3JlYWNoCisgCisgYmFzaWNfc291cmNlcyArPSBbbWlzc2luZ19oXSArIGdlbmVyYXRlZF9ncGVyZl9oZWFkZXJzCisgCisraWYgY29uZi5nZXQoJ0hBVkVfUFJJTlRGX0gnKSAhPSAxCisrICAgICAgICBiYXNpY19zb3VyY2VzICs9IFtmaWxlcygncGFyc2UtcHJpbnRmLWZvcm1hdC5jJyldCisrZW5kaWYKKysKKyBsaWJiYXNpYyA9IHN0YXRpY19saWJyYXJ5KAorICAgICAgICAgJ2Jhc2ljJywKKyAgICAgICAgIGJhc2ljX3NvdXJjZXMsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDdiZTc1MjJkCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCitAQCAtMCwwICsxLDU3IEBACisrLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLworKworKy8qKioKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCisrCisrICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKysKKysgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQorKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjcHJhZ21hIG9uY2UKKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2lmIEhBVkVfUFJJTlRGX0gKKysjaW5jbHVkZSA8cHJpbnRmLmg+CisrI2Vsc2UKKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KKysgIFBBX0lOVCwJCQkvKiBpbnQgKi8KKysgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KKysgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLworKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCisrICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCisrICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLworKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KKysgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KKysgIFBBX0xBU1QKKyt9OworKworKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCisrI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAorKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKKysjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKKysjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQorKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQorKworK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOworKworKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK2luZGV4IGRiZmFmYmEyNi4uODAzODM4MGQ2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorQEAgLTIwLDEyICsyMCwxMiBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorLSNpbmNsdWRlIDxwcmludGYuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpbmNsdWRlICJtYWNyby5oIgorKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisgCisgI2RlZmluZSB4c3ByaW50ZihidWYsIGZtdCwgLi4uKSBcCisgICAgICAgICBhc3NlcnRfbWVzc2FnZV9zZSgoc2l6ZV90KSBzbnByaW50ZihidWYsIEVMRU1FTlRTT0YoYnVmKSwgZm10LCBfX1ZBX0FSR1NfXykgPCBFTEVNRU5UU09GKGJ1ZiksICJ4c3ByaW50ZjogIiAjYnVmICJbXSBtdXN0IGJlIGJpZyBlbm91Z2giKQorZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK2luZGV4IDczMzI5YmEwMi4uNzBiYjllMGU4IDEwMDY0NAorLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKKysrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitAQCAtMjAsNyArMjAsNiBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxwcmludGYuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CitAQCAtMzksNiArMzgsNyBAQAorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIxOTk4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNGI2NzMzNTQ0YmViNjYyYTBmNzczMTAzMDJmYWUxZmI3Yjc2ZDE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTNdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KLSBmdW5jdGlvbiBwb2ludGVyCi0KLW1ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9iYXNpYy91dGlsLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAotaW5kZXggYzdkYTZjMzliLi44N2Y2MmI4OTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvdXRpbC5oCi1AQCAtOTgsNyArOTgsNyBAQCB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKLSAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQotICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCi0gICovCi0tc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgewotK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7Ci0gICAgICAgICBpZiAobm1lbWIgPD0gMSkKLSAgICAgICAgICAgICAgICAgcmV0dXJuOwotIAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkN2M2OGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMGY0N2NmY2IxNmU4ZTQwYTkwYTkyMjFmOTk5NWY4Y2Q4YTkxNWMyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTU6MDE6MjkgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8xOV0gUmV2ZXJ0ICJydWxlczogcmVtb3ZlIGZpcm13YXJlIGxvYWRpbmcgcnVsZXMiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgNzBlN2Q3NTRkZGIzNTZmYjFhMjk0MmIyNjJmOGNlZTk2NTBlMmExOS4KLVVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotLS0tCi0gcnVsZXMvNTAtZmlybXdhcmUucnVsZXMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLQotZGlmZiAtLWdpdCBhL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMGFlNjg0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9ydWxlcy81MC1maXJtd2FyZS5ydWxlcwotQEAgLTAsMCArMSwzIEBACi0rIyBkbyBub3QgZWRpdCB0aGlzIGZpbGUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gb24gdXBkYXRlCi0rCi0rU1VCU1lTVEVNPT0iZmlybXdhcmUiLCBBQ1RJT049PSJhZGQiLCBSVU57YnVpbHRpbn09ImZpcm13YXJlIgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjYyY2JiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwxMTggQEAKK0Zyb20gMzNiZTkwNTIzMTVjYzRlYzhlOTI5ZmEyMzhlMWYwY2MwMTYxYWQwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTU6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKKworaW5jbHVkZSBtaXNzaW5nLmggIGZvciBkZWZpbml0aW9uIG9mIHN0cm5kdXBhCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL21pc3NpbmcuaCAgICAgfCAxMSArKysrKysrKysrKworIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgIHwgIDEgKworIHNyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIHwgIDEgKworIHNyYy9zaGFyZWQvcGFnZXIuYyAgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgIHwgIDEgKworIDcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNGVhYmFhZmU4Li4xMjgxMWIzZjMgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC01MjUsNiArNTI1LDcgQEAgZm9yZWFjaCBpZGVudCA6IFsKKyAgICAgICAgIFsnYnBmJywgICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKKyAgICAgICAgIFsnZXhwbGljaXRfYnplcm8nICwgICAnJycjaW5jbHVkZSA8c3RyaW5nLmg+JycnXSwKKysgICAgICAgIFsnc3RybmR1cGEnICwgICAgICAgICAnJycjaW5jbHVkZSA8c3RyaW5nLmg+JycnXSwKKyBdCisgCisgICAgICAgICBoYXZlID0gY2MuaGFzX2Z1bmN0aW9uKGlkZW50WzBdLCBwcmVmaXggOiBpZGVudFsxXSwgYXJncyA6ICctRF9HTlVfU09VUkNFJykKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggODRkNmQ5MTY3Li4wN2E4YzgzNjQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTE4Nyw2ICsxMTg3LDE3IEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OworICNlbmRpZgorIAorKyNpZiAhIEhBVkVfU1RSTkRVUEEKKysjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKKysgICh7IFwKKysgICAgY29uc3QgY2hhciAqX19vbGQgPSAocyk7IFwKKysgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbihfX29sZCwgKG4pKTsgXAorKyAgICBjaGFyICpfX25ldyA9IChjaGFyICopYWxsb2NhKF9fbGVuICsgMSk7IFwKKysgICAgX19uZXdbX19sZW5dID0gJ1wwJzsgXAorKyAgICAoY2hhciAqKW1lbWNweShfX25ldywgX19vbGQsIF9fbGVuKTsgXAorKyAgfSkKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORworICNkZWZpbmUgS0VZQ1RMX0pPSU5fU0VTU0lPTl9LRVlSSU5HIDEKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWtkaXIuYyBiL3NyYy9iYXNpYy9ta2Rpci5jCitpbmRleCBkZTQ3NDZjODYuLmQ1MTUxOGE1YSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9ta2Rpci5jCisrKysgYi9zcmMvYmFzaWMvbWtkaXIuYworQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAicGF0aC11dGlsLmgiCisgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIGludCBta2Rpcl9zYWZlX2ludGVybmFsKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgYm9vbCBmb2xsb3dfc3ltbGluaywgbWtkaXJfZnVuY190IF9ta2RpcikgeworICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK2luZGV4IDJjMjI3NTNkZS4uOTc1MzM3MjFkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworQEAgLTMzLDYgKzMzLDcgQEAKKyAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgorICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIGludCBwYXJzZV9ib29sZWFuKGNvbnN0IGNoYXIgKnYpIHsKKyAgICAgICAgIGFzc2VydCh2KTsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCitpbmRleCA5YmI0MmNjN2IuLjIzYmJkOWU2NyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworQEAgLTksNiArOSw3IEBACisgI2luY2x1ZGUgInByb2Nmcy11dGlsLmgiCisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIGludCBwcm9jZnNfdGFza3NfZ2V0X2xpbWl0KHVpbnQ2NF90ICpyZXQpIHsKKyAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKnZhbHVlID0gTlVMTDsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK2luZGV4IDc1ZGIzYzk4NS4uODRmMDZiZjdkIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCisrKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK0BAIC0zOSw2ICszOSw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIHBpZF90IHBhZ2VyX3BpZCA9IDA7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK2luZGV4IGMzOGI3Y2M5OC4uOGVjNmJmMDhkIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYworKysrIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAidWlkLXJhbmdlLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIGJvb2wgdWlkX3JhbmdlX2ludGVyc2VjdChVaWRSYW5nZSAqcmFuZ2UsIHVpZF90IHN0YXJ0LCB1aWRfdCBucikgeworICAgICAgICAgYXNzZXJ0KHJhbmdlKTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ODcxYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBAQAotRnJvbSA3ODgzOTg1YTNhNzg2NzdlOWExZDVkNjFmZTdmYThiYWRmMzlmNTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAyMDo0NToyMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDEwLzE0XSBSZXZlcnQgInVkZXY6IHJlbW92ZSB1c2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZwotIHN1cHBvcnQiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYmUyZWE3MjNiMWQwMjNiM2QzODVkM2I3OTFlZTQ2MDdjYmZiMjBjYS4KLVVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKysrCi0gUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KLSBUT0RPICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysrKysKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyAgICAgICAgICB8ICAgMyArCi0gc3JjL3VkZXYvdWRldi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKysKLSBzcmMvdWRldi91ZGV2ZC5jICAgICAgICAgICAgICAgICB8ICAxMyArKysrCi0gOCBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGMyYjRhOTlkMi4uNjkyZDdiYjk1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMzk4NSw2ICszOTg1LDE4IEBAIGxpYnVkZXZfY29yZV9sYV9MSUJBREQgPSBcCi0gCSQoQkxLSURfTElCUykgXAotIAkkKEtNT0RfTElCUykKLSAKLStsaWJ1ZGV2X2NvcmVfbGFfQ1BQRkxBR1MgPSBcCi0rCSQoQU1fQ1BQRkxBR1MpIFwKLSsJLURGSVJNV0FSRV9QQVRIPSIkKEZJUk1XQVJFX1BBVEgpIgotKwotK2lmIEVOQUJMRV9GSVJNV0FSRQotK2xpYnVkZXZfY29yZV9sYV9TT1VSQ0VTICs9IFwKLSsJc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKLSsKLStkaXN0X3VkZXZydWxlc19EQVRBICs9IFwKLSsJcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLStlbmRpZgotKwotIGlmIEhBVkVfS01PRAotIGxpYnVkZXZfY29yZV9sYV9TT1VSQ0VTICs9IFwKLSAJc3JjL3VkZXYvdWRldi1idWlsdGluLWttb2QuYwotZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQotaW5kZXggNjAzODhlZWJlLi5lMjE5NzYzOTMgMTAwNjQ0Ci0tLS0gYS9SRUFETUUKLSsrKyBiL1JFQURNRQotQEAgLTYxLDggKzYxLDggQEAgUkVRVUlSRU1FTlRTOgotICAgICAgICAgTGVnYWN5IGhvdHBsdWcgc2xvd3MgZG93biB0aGUgc3lzdGVtIGFuZCBjb25mdXNlcyB1ZGV2OgotICAgICAgICAgICBDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIiCi0gCi0tICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGFuZCBzaG91bGQKLS0gICAgICAgIGJlIGRpc2FibGVkIGluIHRoZSBrZXJuZWw6Ci0rICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBkZXByZWNhdGVkLCB3aWxsIGdvIGF3YXksIGFuZAotKyAgICAgICAgc29tZXRpbWVzIGNhdXNlcyBwcm9ibGVtczoKLSAgICAgICAgICAgQ09ORklHX0ZXX0xPQURFUl9VU0VSX0hFTFBFUj1uCi0gCi0gICAgICAgICBTb21lIHVkZXYgcnVsZXMgYW5kIHZpcnR1YWxpemF0aW9uIGRldGVjdGlvbiByZWxpZXMgb24gaXQ6Ci1kaWZmIC0tZ2l0IGEvVE9ETyBiL1RPRE8KLWluZGV4IDYxZWZhNWU5Zi4uNjdjY2FjMjI0IDEwMDY0NAotLS0tIGEvVE9ETwotKysrIGIvVE9ETwotQEAgLTc0MCw2ICs3NDAsNyBAQCBGZWF0dXJlczoKLSAqIGluaXRpYWxpemUgdGhlIGhvc3RuYW1lIGZyb20gdGhlIGZzIGxhYmVsIG9mIC8sIGlmIC9ldGMvaG9zdG5hbWUgZG9lcyBub3QgZXhpc3Q/Ci0gCi0gKiB1ZGV2OgotKyAgLSByZW1vdmUgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgKENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bikKLSAgIC0gbW92ZSB0byBMR1BMCi0gICAtIGtpbGwgc2NzaV9pZAotICAgLSBhZGQgdHJpZ2dlciAtLXN1YnN5c3RlbS1tYXRjaD11c2IvdXNiX2RldmljZSBkZXZpY2UKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI1M2NhMWYxYS4uMTE1MGNhNTBlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNTIyLDYgKzE1MjIsMjMgQEAgQU1fQ09ORElUSU9OQUwoSEFWRV9NWUhPU1ROQU1FLCBbdGVzdCAiJGhhdmVfbXlob3N0bmFtZSIgPSAieWVzIl0pCi0gQUNfQVJHX0VOQUJMRShod2RiLCBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1od2RiXSwgW2Rpc2FibGUgaGFyZHdhcmUgZGF0YWJhc2Ugc3VwcG9ydF0pXSwKLSAgICAgICAgZW5hYmxlX2h3ZGI9JGVuYWJsZXZhbCwgZW5hYmxlX2h3ZGI9eWVzKQotIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9IV0RCLCBbdGVzdCB4JGVuYWJsZV9od2RiID0geHllc10pCi0rQUNfQVJHX1dJVEgoZmlybXdhcmUtcGF0aCwKLSsgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1maXJtd2FyZS1wYXRoPURJUltbWzpESVJbLi4uXV1dXV0sCi0rICAgICAgICAgIFtGaXJtd2FyZSBzZWFyY2ggcGF0aCAoZGVmYXVsdD0iIildKSwKLSsgICAgICAgW10sIFt3aXRoX2Zpcm13YXJlX3BhdGg9IiJdKQotK09MRF9JRlM9JElGUwotK0lGUz06Ci0rZm9yIGkgaW4gJHdpdGhfZmlybXdhcmVfcGF0aDsgZG8KLSsgICAgICAgaWYgdGVzdCAieCR7RklSTVdBUkVfUEFUSH0iID0gIngiOyB0aGVuCi0rICAgICAgICAgICAgICBGSVJNV0FSRV9QQVRIPSJcXFwiJHtpfS9cXFwiIgotKyAgICAgICBlbHNlCi0rICAgICAgICAgICAgICBGSVJNV0FSRV9QQVRIPSIke0ZJUk1XQVJFX1BBVEh9LCBcXFwiJHtpfS9cXFwiIgotKyAgICAgICBmaQotK2RvbmUKLStJRlM9JE9MRF9JRlMKLStBQ19TVUJTVChGSVJNV0FSRV9QQVRIKQotK0FTX0lGKFt0ZXN0ICJ4JHtGSVJNV0FSRV9QQVRIfSIgIT0gIngiXSwgWyBBQ19ERUZJTkUoSEFWRV9GSVJNV0FSRSwgMSwgW0RlZmluZSBpZiBGSVJNV0FSRSBpcyBhdmFpbGFibGVdKSBdKQotK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9GSVJNV0FSRSwgW3Rlc3QgIngke0ZJUk1XQVJFX1BBVEh9IiAhPSAieCJdKQotIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGF2ZV9tYW5wYWdlcz1ubwotQEAgLTE4MzksNiArMTg1Niw3IEBAIEFDX01TR19SRVNVTFQoWwotICAgICAgICAgU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICAgICAgICAgICAke1NZU1RFTV9TWVNWSU5JVF9QQVRIfQotICAgICAgICAgU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICAke1NZU1RFTV9TWVNWUkNORF9QQVRIfQotICAgICAgICAgYnVpbGQgUHl0aG9uOiAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTn0KLSsgICAgICAgIGZpcm13YXJlIHBhdGg6ICAgICAgICAgICAgICAgICAgICAgJHtGSVJNV0FSRV9QQVRIfQotICAgICAgICAgUEFNIG1vZHVsZXMgZGlyOiAgICAgICAgICAgICAgICAgICAke3dpdGhfcGFtbGliZGlyfQotICAgICAgICAgUEFNIGNvbmZpZ3VyYXRpb24gZGlyOiAgICAgICAgICAgICAke3dpdGhfcGFtY29uZmRpcn0KLSAgICAgICAgIFJQTSBtYWNyb3MgZGlyOiAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3JwbW1hY3Jvc2Rpcn0KLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5iZDhjMmZiOTYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi1AQCAtMCwwICsxLDE1NCBAQAotKy8qCi0rICogZmlybXdhcmUgLSBLZXJuZWwgZmlybXdhcmUgbG9hZGVyCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUGl0ZXIgUHVuayA8cGl0ZXJwdW5rQHNsYWNrd2FyZS5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgS2F5IFNpZXZlcnMgPGtheUB2cmZ5Lm9yZz4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZQotKyAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzOioKLSsgKi8KLSsKLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSsjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsKLSsjaW5jbHVkZSAidWRldi5oIgotKwotK3N0YXRpYyBib29sIHNldF9sb2FkaW5nKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjaGFyICpsb2FkcGF0aCwgY29uc3QgY2hhciAqc3RhdGUpIHsKLSsgICAgICAgIEZJTEUgKmxkZmlsZTsKLSsKLSsgICAgICAgIGxkZmlsZSA9IGZvcGVuKGxvYWRwYXRoLCAid2UiKTsKLSsgICAgICAgIGlmIChsZGZpbGUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yOiBjYW4gbm90IG9wZW4gJyVzJyIsIGxvYWRwYXRoKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgfTsKLSsgICAgICAgIGZwcmludGYobGRmaWxlLCAiJXNcbiIsIHN0YXRlKTsKLSsgICAgICAgIGZjbG9zZShsZGZpbGUpOwotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0rfQotKwotK3N0YXRpYyBib29sIGNvcHlfZmlybXdhcmUoc3RydWN0IHVkZXYgKnVkZXYsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBzaXplX3Qgc2l6ZSkgewotKyAgICAgICAgY2hhciAqYnVmOwotKyAgICAgICAgRklMRSAqZnNvdXJjZSA9IE5VTEwsICpmdGFyZ2V0ID0gTlVMTDsKLSsgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7Ci0rCi0rICAgICAgICBidWYgPSBtYWxsb2Moc2l6ZSk7Ci0rICAgICAgICBpZiAoYnVmID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJObyBtZW1vcnkgYXZhaWxhYmxlIHRvIGxvYWQgZmlybXdhcmUgZmlsZSIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBsb2dfZGVidWcoIndyaXRpbmcgJyVzJyAoJXppKSB0byAnJXMnIiwgc291cmNlLCBzaXplLCB0YXJnZXQpOwotKwotKyAgICAgICAgZnNvdXJjZSA9IGZvcGVuKHNvdXJjZSwgInJlIik7Ci0rICAgICAgICBpZiAoZnNvdXJjZSA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBmdGFyZ2V0ID0gZm9wZW4odGFyZ2V0LCAid2UiKTsKLSsgICAgICAgIGlmIChmdGFyZ2V0ID09IE5VTEwpCi0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIGlmIChmcmVhZChidWYsIHNpemUsIDEsIGZzb3VyY2UpICE9IDEpCi0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIGlmIChmd3JpdGUoYnVmLCBzaXplLCAxLCBmdGFyZ2V0KSA9PSAxKQotKyAgICAgICAgICAgICAgICByZXQgPSB0cnVlOwotK2V4aXQ6Ci0rICAgICAgICBpZiAoZnRhcmdldCAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICBmY2xvc2UoZnRhcmdldCk7Ci0rICAgICAgICBpZiAoZnNvdXJjZSAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICBmY2xvc2UoZnNvdXJjZSk7Ci0rICAgICAgICBmcmVlKGJ1Zik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW50IGJ1aWx0aW5fZmlybXdhcmUoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsIGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgdGVzdCkgewotKyAgICAgICAgc3RydWN0IHVkZXYgKnVkZXYgPSB1ZGV2X2RldmljZV9nZXRfdWRldihkZXYpOwotKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnNlYXJjaHBhdGhbXSA9IHsgRklSTVdBUkVfUEFUSCB9OwotKyAgICAgICAgY2hhciBsb2FkcGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjaGFyIGRhdGFwYXRoW1VUSUxfUEFUSF9TSVpFXTsKLSsgICAgICAgIGNoYXIgZndwYXRoW1VUSUxfUEFUSF9TSVpFXTsKLSsgICAgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlOwotKyAgICAgICAgRklMRSAqZndmaWxlID0gTlVMTDsKLSsgICAgICAgIHN0cnVjdCB1dHNuYW1lIGtlcm5lbDsKLSsgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0rICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSsgICAgICAgIGludCByYyA9IEVYSVRfU1VDQ0VTUzsKLSsKLSsgICAgICAgIGZpcm13YXJlID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRldiwgIkZJUk1XQVJFIik7Ci0rICAgICAgICBpZiAoZmlybXdhcmUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImZpcm13YXJlIHBhcmFtZXRlciBtaXNzaW5nIik7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICAvKiBsb29rdXAgZmlybXdhcmUgZmlsZSAqLwotKyAgICAgICAgdW5hbWUoJmtlcm5lbCk7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRihzZWFyY2hwYXRoKTsgaSsrKSB7Ci0rICAgICAgICAgICAgICAgIHN0cnNjcHlsKGZ3cGF0aCwgc2l6ZW9mKGZ3cGF0aCksIHNlYXJjaHBhdGhbaV0sIGtlcm5lbC5yZWxlYXNlLCAiLyIsIGZpcm13YXJlLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgZndmaWxlID0gZm9wZW4oZndwYXRoLCAicmUiKTsKLSsgICAgICAgICAgICAgICAgaWYgKGZ3ZmlsZSAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKwotKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBmaXJtd2FyZSwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7Ci0rICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIHN0cnNjcHlsKGxvYWRwYXRoLCBzaXplb2YobG9hZHBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2xvYWRpbmciLCBOVUxMKTsKLSsKLSsgICAgICAgIGlmIChmd2ZpbGUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBsb2dfZGVidWcoImRpZCBub3QgZmluZCBmaXJtd2FyZSBmaWxlICclcyciLCBmaXJtd2FyZSk7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgKiBEbyBub3QgY2FuY2VsIHRoZSByZXF1ZXN0IGluIHRoZSBpbml0cmQsIHRoZSByZWFsIHJvb3QgbWlnaHQgaGF2ZQotKyAgICAgICAgICAgICAgICAgKiB0aGUgZmlybXdhcmUgZmlsZSBhbmQgdGhlICdjb2xkcGx1ZycgcnVuIGluIHRoZSByZWFsIHJvb3Qgd2lsbCBmaW5kCi0rICAgICAgICAgICAgICAgICAqIHRoaXMgcGVuZGluZyByZXF1ZXN0IGFuZCBmdWxmaWxsIG9yIGNhbmNlbCBpdC4KLSsgICAgICAgICAgICAgICAgICogKi8KLSsgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChzdGF0KGZ3cGF0aCwgJnN0YXRidWYpIDwgMCB8fCBzdGF0YnVmLnN0X3NpemUgPT0gMCkgewotKyAgICAgICAgICAgICAgICBpZiAoIWluX2luaXRyZCgpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICIxIikpCi0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsKLSsgICAgICAgIHN0cnNjcHlsKGRhdGFwYXRoLCBzaXplb2YoZGF0YXBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2RhdGEiLCBOVUxMKTsKLSsgICAgICAgIGlmICghY29weV9maXJtd2FyZSh1ZGV2LCBmd3BhdGgsIGRhdGFwYXRoLCBzdGF0YnVmLnN0X3NpemUpKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZXJyb3Igc2VuZGluZyBmaXJtd2FyZSAnJXMnIHRvIGRldmljZSIsIGZpcm13YXJlKTsKLSsgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfTsKLSsKLSsgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMCIpOwotK2V4aXQ6Ci0rICAgICAgICBpZiAoZndmaWxlKQotKyAgICAgICAgICAgICAgICBmY2xvc2UoZndmaWxlKTsKLSsgICAgICAgIHJldHVybiByYzsKLSt9Ci0rCi0rY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmUgPSB7Ci0rICAgICAgICAubmFtZSA9ICJmaXJtd2FyZSIsCi0rICAgICAgICAuY21kID0gYnVpbHRpbl9maXJtd2FyZSwKLSsgICAgICAgIC5oZWxwID0gImtlcm5lbCBmaXJtd2FyZSBsb2FkZXIiLAotKyAgICAgICAgLnJ1bl9vbmNlID0gdHJ1ZSwKLSt9OwotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKLWluZGV4IGU2YjM2ZjEyNC4uY2Q5OTQ3ZTJhIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi1AQCAtMzEsNiArMzEsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiAqYnVpbHRpbnNbXSA9IHsKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fQkxLSURdID0gJnVkZXZfYnVpbHRpbl9ibGtpZCwKLSAjZW5kaWYKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fQlRSRlNdID0gJnVkZXZfYnVpbHRpbl9idHJmcywKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgW1VERVZfQlVJTFRJTl9GSVJNV0FSRV0gPSAmdWRldl9idWlsdGluX2Zpcm13YXJlLAotKyNlbmRpZgotICAgICAgICAgW1VERVZfQlVJTFRJTl9IV0RCXSA9ICZ1ZGV2X2J1aWx0aW5faHdkYiwKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fSU5QVVRfSURdID0gJnVkZXZfYnVpbHRpbl9pbnB1dF9pZCwKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fS0VZQk9BUkRdID0gJnVkZXZfYnVpbHRpbl9rZXlib2FyZCwKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LmggYi9zcmMvdWRldi91ZGV2LmgKLWluZGV4IGMwY2I3ZWFlOC4uOWYwZjFjZjEzIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldi5oCi0rKysgYi9zcmMvdWRldi91ZGV2LmgKLUBAIC0xNTAsNiArMTUwLDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKLSAgICAgICAgIFVERVZfQlVJTFRJTl9CTEtJRCwKLSAjZW5kaWYKLSAgICAgICAgIFVERVZfQlVJTFRJTl9CVFJGUywKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgVURFVl9CVUlMVElOX0ZJUk1XQVJFLAotKyNlbmRpZgotICAgICAgICAgVURFVl9CVUlMVElOX0hXREIsCi0gICAgICAgICBVREVWX0JVSUxUSU5fSU5QVVRfSUQsCi0gICAgICAgICBVREVWX0JVSUxUSU5fS0VZQk9BUkQsCi1AQCAtMTc4LDYgKzE4MSw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4gewotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9ibGtpZDsKLSAjZW5kaWYKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYnRyZnM7Ci0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLStleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmU7Ci0rI2VuZGlmCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2h3ZGI7Ci0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2lucHV0X2lkOwotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9rZXlib2FyZDsKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYwotaW5kZXggYWNiZGRkNDE4Li4yMDM0N2I0MDIgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2ZC5jCi0rKysgYi9zcmMvdWRldi91ZGV2ZC5jCi1AQCAtMTI1LDYgKzEyNSw5IEBAIHN0cnVjdCBldmVudCB7Ci0gICAgICAgICBib29sIGlzX2Jsb2NrOwotICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0X3dhcm5pbmc7Ci0gICAgICAgICBzZF9ldmVudF9zb3VyY2UgKnRpbWVvdXQ7Ci0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIGJvb2wgbm9kZWxheTsKLSsjZW5kaWYKLSB9OwotIAotIHN0YXRpYyBpbmxpbmUgc3RydWN0IGV2ZW50ICpub2RlX3RvX2V2ZW50KHN0cnVjdCB1ZGV2X2xpc3Rfbm9kZSAqbm9kZSkgewotQEAgLTYxMyw2ICs2MTYsMTAgQEAgc3RhdGljIGludCBldmVudF9xdWV1ZV9pbnNlcnQoTWFuYWdlciAqbWFuYWdlciwgc3RydWN0IHVkZXZfZGV2aWNlICpkZXYpIHsKLSAgICAgICAgIGV2ZW50LT5kZXZudW0gPSB1ZGV2X2RldmljZV9nZXRfZGV2bnVtKGRldik7Ci0gICAgICAgICBldmVudC0+aXNfYmxvY2sgPSBzdHJlcSgiYmxvY2siLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOwotICAgICAgICAgZXZlbnQtPmlmaW5kZXggPSB1ZGV2X2RldmljZV9nZXRfaWZpbmRleChkZXYpOwotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBpZiAoc3RyZXEodWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpLCAiZmlybXdhcmUiKSkKLSsgICAgICAgICAgICAgICAgZXZlbnQtPm5vZGVsYXkgPSB0cnVlOwotKyNlbmRpZgotIAotICAgICAgICAgbG9nX2RlYnVnKCJzZXEgJWxsdSBxdWV1ZWQsICclcycgJyVzJyIsIHVkZXZfZGV2aWNlX2dldF9zZXFudW0oZGV2KSwKLSAgICAgICAgICAgICAgdWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXYpLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOwotQEAgLTY5OCw2ICs3MDUsMTIgQEAgc3RhdGljIGJvb2wgaXNfZGV2cGF0aF9idXN5KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCBldmVudCAqZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgfQotIAotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICAgICAgICAgIC8qIGFsbG93IHRvIGJ5cGFzcyB0aGUgZGVwZW5kZW5jeSB0cmFja2luZyAqLwotKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPm5vZGVsYXkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rI2VuZGlmCi0rCi0gICAgICAgICAgICAgICAgIC8qIHBhcmVudCBkZXZpY2UgZXZlbnQgZm91bmQgKi8KLSAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZXZwYXRoW2NvbW1vbl0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRlbGF5aW5nX3NlcW51bSA9IGxvb3BfZXZlbnQtPnNlcW51bTsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUwOTQ3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCkBAIC0wLDAgKzEsMTU3IEBACitGcm9tIGI0NWNmNDkyM2M3ZTFmMTE2NTkyNWU5YjRkN2RiMjEwOGZhZjJlYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTA6NTA6MTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNS8zMV0gZG9uJ3QgZmFpbCBpZiBHTE9CX0JSQUNFIGFuZCBHTE9CX0FMVERJUkZVTkMgaXMgbm90CisgZGVmaW5lZAorCitJZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IHByb3ZpZGUgYnJhY2UKK2V4cGFuc2lvbiB1c2VycyBqdXN0IHdvbid0IGdldCBpdC4KKworRG9udCB1c2UgR05VIEdMT0IgZXh0ZW50aW9ucyBvbiBub24tZ2xpYmMgc3lzdGVtcworCitDb25kaXRpb25hbGl6ZSB1c2Ugb2YgR0xPQl9BTFRESVJGVU5DCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL2dsb2ItdXRpbC5jICAgICB8IDIwICsrKysrKysrKysrKysrKysrLS0tCisgc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCisgc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgICB8ICA4ICsrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCitpbmRleCA2ZTgwYTFlMjMuLjMxMmJiM2ZkMSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCitAQCAtMjgsMTMgKzI4LDE4IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CisgICAgICAgICBpbnQgazsKKyAKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAvKiBXZSB3YW50IHRvIHNldCBHTE9CX0FMVERJUkZVTkMgb3Vyc2VsdmVzLCBkb24ndCBhbGxvdyBpdCB0byBiZSBzZXQuICovCisgICAgICAgICBhc3NlcnQoIShmbGFncyAmIEdMT0JfQUxURElSRlVOQykpOworLQorICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfY2xvc2VkaXIpCisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpcjsKKyAgICAgICAgIGlmICghcGdsb2ItPmdsX3JlYWRkaXIpCitAQCAtNDUsMTAgKzUwLDEzIEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9sc3RhdCA9IGxzdGF0OworICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfc3RhdCkKKyAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX3N0YXQgPSBzdGF0OworLQorKyNlbmRpZgorICAgICAgICAgZXJybm8gPSAwOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzIHwgR0xPQl9BTFRESVJGVU5DLCBOVUxMLCBwZ2xvYik7CistCisrI2Vsc2UKKysgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzLCBOVUxMLCBwZ2xvYik7CisrI2VuZGlmCisgICAgICAgICBpZiAoayA9PSBHTE9CX05PTUFUQ0gpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT1NQQUNFKQorQEAgLTYxLDYgKzY5LDEyIEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorKworIGludCBnbG9iX2V4aXN0cyhjb25zdCBjaGFyICpwYXRoKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7fTsKKyAgICAgICAgIGludCBrOworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitpbmRleCBiZDJmOGZjZmQuLmExMGM3NzQyNyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKKysrKyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKK0BAIC0zMCw2ICszMCwxMSBAQAorICNpbmNsdWRlICJnbG9iLXV0aWwuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicm0tcmYuaCIKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisgCisgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7CisgICAgICAgICBjaGFyIG5hbWVbXSA9ICIvdG1wL3Rlc3QtZ2xvYl9leGlzdHMuWFhYWFhYIjsKK0BAIC01MiwyNSArNTcsMzMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7Cisgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CisgICAgICAgICBjaGFyIHRlbXBsYXRlW10gPSAiL3RtcC90ZXN0LWdsb2ItdXRpbC5YWFhYWFhYIjsKKyAgICAgICAgIGNvbnN0IGNoYXIgKmZuOworLQorICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0geworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgICAgICAgICAgLmdsX2Nsb3NlZGlyID0gKHZvaWQgKCopKHZvaWQgKikpIGNsb3NlZGlyLAorICAgICAgICAgICAgICAgICAuZ2xfcmVhZGRpciA9IChzdHJ1Y3QgZGlyZW50ICooKikodm9pZCAqKSkgcmVhZGRpcl9ub19kb3QsCisgICAgICAgICAgICAgICAgIC5nbF9vcGVuZGlyID0gKHZvaWQgKigqKShjb25zdCBjaGFyICopKSBvcGVuZGlyLAorICAgICAgICAgICAgICAgICAuZ2xfbHN0YXQgPSBsc3RhdCwKKyAgICAgICAgICAgICAgICAgLmdsX3N0YXQgPSBzdGF0LAorKyNlbmRpZgorICAgICAgICAgfTsKKy0KKyAgICAgICAgIGludCByOworIAorICAgICAgICAgYXNzZXJ0X3NlKG1rZHRlbXAodGVtcGxhdGUpKTsKKyAKKyAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvKiIpOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOworKyNlbHNlCisrICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOworKyNlbmRpZgorICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKKyAKKyAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvLioiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICAodm9pZCkgcm1fcmYodGVtcGxhdGUsIFJFTU9WRV9ST09UfFJFTU9WRV9QSFlTSUNBTCk7CitkaWZmIC0tZ2l0IGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworaW5kZXggMzhjYmI3MzljLi44OGNjNTQzZjAgMTAwNjQ0CistLS0gYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworKysrIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK0BAIC03Niw2ICs3NiwxMiBAQAorICNpbmNsdWRlICJ1bWFzay11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorKworIAorIC8qIFRoaXMgcmVhZHMgYWxsIGZpbGVzIGxpc3RlZCBpbiAvZXRjL3RtcGZpbGVzLmQvPyouY29uZiBhbmQgY3JlYXRlcworICAqIHRoZW0gaW4gdGhlIGZpbGUgc3lzdGVtLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY3JlYXRlCitAQCAtMTI4OCw3ICsxMjk0LDkgQEAgc3RhdGljIGludCBpdGVtX2RvX2NoaWxkcmVuKEl0ZW0gKmksIGNvbnN0IGNoYXIgKnBhdGgsIGFjdGlvbl90IGFjdGlvbikgeworIAorIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbiwgYm9vbCByZWN1cnNpdmUpIHsKKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9vcGVuZGlyID0gKHZvaWQgKigqKShjb25zdCBjaGFyICopKSBvcGVuZGlyX25vbW9kLAorKyNlbmRpZgorICAgICAgICAgfTsKKyAgICAgICAgIGludCByID0gMCwgazsKKyAgICAgICAgIGNoYXIgKipmbjsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwMzdlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZWZjNTc4NTZmOTYxYzFmM2JmMDE2YzUxMWM1M2Q5OTBkYjhhYmRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTozMTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDE2LzMxXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90CisgdHlwZWRlZgorCitpbmNsdWRlIG1pc3NpbmcuaCBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKKyBzcmMvYmFzaWMvc3RyYnVmLmMgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCAwN2E4YzgzNjQuLjFhZWUzMzQ2YSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xMTYyLDYgKzExNjIsMTEgQEAgc3RydWN0IGlucHV0X21hc2sgeworICNkZWZpbmUgUkVOQU1FX05PUkVQTEFDRSAoMSA8PCAwKQorICNlbmRpZgorIAorKyNpZm5kZWYgX19DT01QQVJfRk5fVAorKyNkZWZpbmUgX19DT01QQVJfRk5fVAorK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOworKyNlbmRpZgorKworICNpZm5kZWYgS0NNUF9GSUxFCisgI2RlZmluZSBLQ01QX0ZJTEUgMAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdHJidWYuYyBiL3NyYy9iYXNpYy9zdHJidWYuYworaW5kZXggOGJlZmZmYTY2Li5iY2I4NjBmOTUgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc3RyYnVmLmMKKysrKyBiL3NyYy9iYXNpYy9zdHJidWYuYworQEAgLTI0LDYgKzI0LDcgQEAKKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJzdHJidWYuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIC8qCisgICogU3RyYnVmIHN0b3JlcyBnaXZlbiBzdHJpbmdzIGluIGEgc2luZ2xlIGNvbnRpbnVvdXMgYWxsb2NhdGVkIG1lbW9yeQorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwOWNmZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBmMmIwMTczY2Q5ODA3ODY0ZGIxZWYzYjEwMmFiYWE3NmVmMzdlNTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMToxOToxMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDE3LzMxXSBJbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAorCitGaXhlcworL3BhdGgvdG8vc3lzdGVtZC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCisgc3RydWN0IGV0aGhkciB7CisgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworaW5kZXggMGVlN2Q2ZjBkLi5lZjc1ODkzYTYgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9nZW5ldGxpbmsuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK2luZGV4IDRmYzliNjEwYS4uNjI4YzYxYzU3IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK0BAIC0yMCw2ICsyMCw3IEBACisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYworaW5kZXggOTlkZDQxNjI5Li45MDQwN2M5ZDggMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYworKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK0BAIC0xOSw2ICsxOSw3IEBACisgKioqLworIAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAKK2RpZmYgLS1naXQgYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKK2luZGV4IDliZGFlZjhkOS4uOTQ4Zjg5Y2Y4IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCisrKysgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworaW5kZXggNDAxNThlMGFmLi5iMjRiM2ZjZTggMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJsaW5rLWNvbmZpZy5oIgorICNpbmNsdWRlICJsb2cuaCIKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIwMDYzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIGU3OGFmODc0ZmM5ZjNkM2FmNDk0OThiODIwNzEwOTk5M2Q5M2E1OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNTo1OTowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDE3LzE5XSByZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgdWNoYXIuaAotCi1taXNzaW5nLmggYWxyZWFkeSBpbmNsdWRlcyBpdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvYmFzaWMvZXNjYXBlLmggfCAxIC0KLSBzcmMvYmFzaWMvdXRmOC5oICAgfCAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZXNjYXBlLmggYi9zcmMvYmFzaWMvZXNjYXBlLmgKLWluZGV4IGRlYWE0ZGUuLjM2ZDQzN2MgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZXNjYXBlLmgKLSsrKyBiL3NyYy9iYXNpYy9lc2NhcGUuaAotQEAgLTIzLDcgKzIzLDYgQEAKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8dWNoYXIuaD4KLSAKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAibWlzc2luZy5oIgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGY4LmggYi9zcmMvYmFzaWMvdXRmOC5oCi1pbmRleCBmOWI5Yzk0Li42YWM5YTNjIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3V0ZjguaAotKysrIGIvc3JjL2Jhc2ljL3V0ZjguaAotQEAgLTIyLDcgKzIyLDYgQEAKLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0tI2luY2x1ZGUgPHVjaGFyLmg+Ci0gCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgIm1pc3NpbmcuaCIKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI3ZWRmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNjkwZWVlZjk1OTBjN2VmMWQ5ZDJjMzFkOGMxZDVkODA3MWRhOGM0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjYgRmViIDIwMTggMTc6MjE6MTEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8zMV0gY2hlY2sgZm9yIG1pc3NpbmcgY2Fub25pY2FsaXplX2ZpbGVfbmFtZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDIgKysKKyBzcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggfCA2ICsrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAxMjgxMWIzZjMuLmY2NTE1ZTk3YyAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTUyMCw2ICs1MjAsOCBAQCBmb3JlYWNoIGlkZW50IDogWworICAgICAgICAgWydrY21wJywgICAgICAgICAgICAgICcnJyNpbmNsdWRlIDxsaW51eC9rY21wLmg+JycnXSwKKyAgICAgICAgIFsna2V5Y3RsJywgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGtleXV0aWxzLmg+JycnXSwKKysgICAgICAgIFsnY2Fub25pY2FsaXplX2ZpbGVfbmFtZScsICcnJyNkZWZpbmUgX0dOVV9TT1VSQ0UKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4nJyddLAorICAgICAgICAgWydjb3B5X2ZpbGVfcmFuZ2UnLCAgICcnJyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAorICAgICAgICAgWydicGYnLCAgICAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAoraW5kZXggYzkzOGQwZDk3Li4zMDhiOTQ3MmIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAorQEAgLTMxLDYgKzMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKKyB9CisgI2VuZGlmCisgCisrI2lmICFIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKKytzdGF0aWMgaW5saW5lIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqcGF0aCkgeworKyAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgsIE5VTEwpOworK30KKysjZW5kaWYKKysKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIAorICNpZiAhSEFWRV9NRU1GRF9DUkVBVEUKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjdiNzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDEzNTU0NTcwOTJiMDJhMTVjNjQ2ZmMxYzcyZTY4YjY5NGE4NmRkOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNjowMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzE0XSBjaGVjayBmb3IgdWNoYXIuaCBpbiBjb25maWd1cmUKLQotVXNlIGlmZGVmIHRvIGluY2x1ZGUgdWNoYXIuaAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAxICsKLSBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDExNTBjYTUwZS4uNjBlN2RmNWVlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMDQsNiArMzA0LDcgQEAgQU1fQ09ORElUSU9OQUwoW0hBVkVfUFlUSE9OXSwgW3Rlc3QgIngkaGF2ZV9weXRob24iID0gInh5ZXMiXSkKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotK0FDX0NIRUNLX0hFQURFUlMoW3VjaGFyLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2NhcGFiaWxpdHkuaF0sIFtdLCBbQUNfTVNHX0VSUk9SKFsqKiogUE9TSVggY2FwcyBoZWFkZXJzIG5vdCBmb3VuZF0pXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQotIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDI1YTExZjM1MS4uZDYzMWI3ZTNlIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTM3LDcgKzM3LDkgQEAKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsjaWZkZWYgSEFWRV9VQ0hBUl9ICi0gI2luY2x1ZGUgPHVjaGFyLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpZmRlZiBIQVZFX0FVRElUCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YjIxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGY1ZjMxMzkxNWQ3OGJjNDNlYjk2ZTJhYWZiOGNlM2NkYTMwNGMyNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE3OjI3OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMzFdIERvIG5vdCBlbmFibGUgbnNzIHRlc3RzIGlmIG5zcy1zeXN0ZW1kIGlzIG5vdCBlbmFibGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3Rlc3QvbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCitpbmRleCAxZGI4YWExMDcuLmRmM2ExZjVjNSAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L21lc29uLmJ1aWxkCisrKysgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAorQEAgLTY0Niw3ICs2NDYsNyBAQCB0ZXN0cyArPSBbCisgICAgICAgICBbWydzcmMvdGVzdC90ZXN0LW5zcy5jJ10sCisgICAgICAgICAgW10sCisgICAgICAgICAgW2xpYmRsXSwKKy0gICAgICAgICAnJywgJ21hbnVhbCddLAorKyAgICAgICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnLCAnbWFudWFsJ10sCisgXQorIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjA5Mjc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gYjdjNmJmZTJlYzVhZTQyNmU1ODZlMWQ2ZWNhZGI1MmE5NzEyOGEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDk6NTMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xNF0gc29ja2V0LXV0aWw6IGRvbid0IGZhaWwgaWYgbGliYyBkb2Vzbid0IHN1cHBvcnQgSUROCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCi1pbmRleCAwMTZlNjRhYTAuLmQ0NjU4ODI2ZSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotQEAgLTQ3LDYgKzQ3LDE1IEBACi0gI2luY2x1ZGUgInVzZXItdXRpbC5oIgotICNpbmNsdWRlICJ1dGY4LmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBzdXBwb3J0IElETiAqLwotKyNpZm5kZWYgTklfSUROCi0rI2RlZmluZSBOSV9JRE4gMAotKyNlbmRpZgotKwotKyNpZm5kZWYgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTCi0rI2RlZmluZSBOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMgMAotKyNlbmRpZgotIAotICNpZmRlZiBFTkFCTEVfSUROCi0gIyAgZGVmaW5lIElETl9GTEFHUyAoTklfSUROfE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUykKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDQ5Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZDYzZDJmZWRjZDgwZTU4ZWU1MzY1NWFlYWYyODM2ZDRiMGExNDY1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjMzOjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjAvMzFdIHRlc3QtaGV4ZGVjb2N0LmM6IEluY2x1ZGUgbWlzc2luZy5oIGZvciBzdHJuZHVwYQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCitpbmRleCAzZTI1YTBiYWMuLmFiM2U1MDhmMSAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKKysrKyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgImhleGRlY29jdC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKKyAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4YWVjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZGZlYTRiOTg4NDQ3OTVhMGNkMTRmZGFmNDBjNjdkZjM4OWRiZDI3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MjU6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyMS8zMV0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgorIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK2luZGV4IGFlZDZkYjg0Mi4uMGRlNmZhNjNjIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworQEAgLTUwLDggKzUwLDEwIEBAIGludCBtYWluKHZvaWQpIHsKKyAgICAgICAgIGluZm8odW5zaWduZWQpOworICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fc3lzY2FsbF91bG9uZ190KTsKKyAgICAgICAgIGluZm8oX19zeXNjYWxsX3Nsb25nX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhmbG9hdCk7CisgICAgICAgICBpbmZvKGRvdWJsZSk7CitAQCAtNjEsNyArNjMsOSBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHNzaXplX3QpOworICAgICAgICAgaW5mbyh0aW1lX3QpOworICAgICAgICAgaW5mbyh1c2VjX3QpOworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgICAgIGluZm8oX190aW1lX3QpOworKyNlbmRpZgorICAgICAgICAgaW5mbyhwaWRfdCk7CisgICAgICAgICBpbmZvKHVpZF90KTsKKyAgICAgICAgIGluZm8oZ2lkX3QpOworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Zjc0NDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gZDM0Mzc1N2Q2Mjk0MDJjNzBjYThlNWVhYTU1MWRlYWYxNzVjOTZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAorU3ViamVjdDogW1BBVENIIDIyLzMxXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCisgc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYworaW5kZXggNDU0MDI2MGY5Li44MWFjYTdhOWIgMTAwNjQ0CistLS0gYS9zcmMvaHdkYi9od2RiLmMKKysrKyBiL3NyYy9od2RiL2h3ZGIuYworQEAgLTE1MiwxMyArMTUyLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgeworIAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CistCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xODMsNyArMTgyLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKysKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgorQEAgLTIwOCw3ICsyMTAsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7CisgICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKKy0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKK2luZGV4IGFiNWRjN2FiNi4uYzc3N2UzMGFiIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKKysrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitAQCAtMTMwLDEzICsxMzAsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgeworICAgICAgICAgZnJlZShub2RlKTsKKyB9CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CisgCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xNTcsNyArMTU3LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAorICAgICAgICAgICAgICAgICB9OworIAorLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKK0BAIC0xNzQsNyArMTc2LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YzJiNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK0Zyb20gN2I4MDJhZGExMjA3ZWQwMGVkMzg2N2I5ODA0ZGQwZjMxNjY0MWI5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMzFdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCisKK0F2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0Cit0aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKworICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorCitOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUKK2Rpc2N1c3Npb24gaW4gdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0CisoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28KK29ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdCBhY2Nlc3MgcGVybWlzc2lvbnMuCitUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuIGZhY2Nlc3NhdCgpCit3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUgYmVoYXZpb3VyCitmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQgd2l0aAorKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCisKK1RoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90CitjbGVhciBpZiBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUKK2p1c3QgaGlzdG9yaWNhbCBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAoraW5kZXggNGRiYTFlYTU2Li45YzRiMDJlY2MgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCitAQCAtNTAsNyArNTAsMjcgQEAgaW50IGZjaG1vZF91bWFzayhpbnQgZmQsIG1vZGVfdCBtb2RlKTsKKyAKKyBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOworIAorLSNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCBBVF9TWU1MSU5LX05PRk9MTE9XKQorKy8qCisrICAgQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8KKysgICBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKysKKysgICAgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCisrICAgICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorKworKyAgIE5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZSBkaXNjdXNzaW9uIGluCisrICAgdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0IChjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMKKysgICBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvIG9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdAorKyAgIGFjY2VzcyBwZXJtaXNzaW9ucy4gVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbgorKyAgIGZhY2Nlc3NhdCgpIHdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZQorKyAgIGJlaGF2aW91ciBmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQKKysgICB3aXRoIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorKworKyAgIFRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90IGNsZWFyIGlmCisrICAgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlIGp1c3QgaGlzdG9yaWNhbAorKyAgIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPworKyovCisrCisrI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIDApCisgCisgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CisgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitpbmRleCAzYzI1YWE1MzQuLjU3NGNhNzFjNyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKKysrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKK0BAIC03MSw3ICs3MSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOworIAorICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7CistICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPj0gMCkKKysgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCAwKSA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7CitAQCAtNzksNyArNzksNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworIAorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLworQEAgLTkwLDcgKzkwLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CisgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgMCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTdlNjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA3NmM3MWFhODg5MTU1ZjI5YmUxZDVkMmI3NGEyYzRmYWE1OTA5YzhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTIgU2VwIDIwMTUgMTg6NTM6MzEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNC8zMV0gY29tcGFyaXNvbl9mbl90IGlzIGdsaWJjIHNwZWNpZmljLCB1c2UgcmF3IHNpZ25hdHVyZSBpbgorIGZ1bmN0aW9uIHBvaW50ZXIKKworbWFrZSBpdCB3b3JrIHdpdGggbXVzbCB3aGVyZSBjb21wYXJpc29uX2ZuX3QgaXMgbm90IHByb3ZpZGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL3V0aWwuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGlsLmggYi9zcmMvYmFzaWMvdXRpbC5oCitpbmRleCA5ZDFiMTA3NTYuLjEyZGI1M2E5MyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy91dGlsLmgKKysrKyBiL3NyYy9iYXNpYy91dGlsLmgKK0BAIC05NSw3ICs5NSw3IEBAIHZvaWQgKnhic2VhcmNoX3IoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAorICAqIE5vcm1hbCBxc29ydCByZXF1aXJlcyBiYXNlIHRvIGJlIG5vbm51bGwuIEhlcmUgd2VyZSByZXF1aXJlCisgICogdGhhdCBvbmx5IGlmIG5tZW1iID4gMC4KKyAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBjb21wYXJpc29uX2ZuX3QgY29tcGFyKSB7Cisrc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgaW50ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHsKKyAgICAgICAgIGlmIChubWVtYiA8PSAxKQorICAgICAgICAgICAgICAgICByZXR1cm47CisgCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNzZhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGEwYjE0OTYzMjJmNGQ3Y2U4M2Y0ZmJmZDJhOTBiOTFkMDcyMWY2NDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDI1LzMxXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCisKK011c2wgbmVlZHMgdGhlc2UgZGVmaW5lcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK2luZGV4IGNhYjFjZDZhMi4uZjVlZWRhYzE4IDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHV0bXAuaD4KKyAjaW5jbHVkZSA8dXRtcHguaD4KKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorQEAgLTQyLDYgKzQzLDEzIEBACisgI2luY2x1ZGUgInV0aWwuaCIKKyAjaW5jbHVkZSAidXRtcC13dG1wLmgiCisgCisrI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAorKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKKysjZW5kaWYKKysjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCisrIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAorKyNlbmRpZgorKworIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7CisgICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OworICAgICAgICAgaW50IHI7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjYtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmQ3NWFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIDg4YzQ4ZWE4NGRiNmZkYTE5ZGZhZWI2NDU0NWZjY2Y4ZmEwNTI1ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxMzowMDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDI2LzMxXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKKworUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKK3RoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwordWludG1heF90LgorCitGaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKKworZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQorIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQorIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKK2luZGV4IGQ5YTc4Zjc4MS4uOWExYmMyMWQ3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitAQCAtNjEsMTQgKzYxLDYgQEAKKyAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKKyAjZW5kaWYKKyAKKy0jaWYgU0laRU9GX1JMSU1fVCA9PSA4CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKKy0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKKy0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgorLSNlbHNlCistIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQorLSNlbmRpZgorLQorICNpZiBTSVpFT0ZfREVWX1QgPT0gOAorICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKKyAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKK2luZGV4IDAwNjQ4MjExZC4uZGYzZDllY2MxIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitAQCAtMjg2LDEzICsyODYsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKKyAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKyAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKKyAKKyAgICAgICAgIGlmICghcykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitpbmRleCAwZGYzOTcxZGYuLmFhYmRkZGI2OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitAQCAtMzk5MSwxMCArMzk5MSwxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKKyAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7CistICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAlanVcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjctcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmY1OWIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDUzNTRlYjc2N2QxZWJhMmVjNDFlYjI3M2Y2YjY1N2Y0YTYzMGNhOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDkgSmFuIDIwMTggMTQ6NDU6NDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8zMV0gcmVtb3ZlIG5vYm9keSB1c2VyL2dyb3VwIGNoZWNraW5nCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMzcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IGY2NTE1ZTk3Yy4uMWI5NDdhZGFjIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNzAwLDQzICs3MDAsNiBAQCBzdWJzdHMuc2V0KCdjb250YWluZXJ1aWRiYXNlbWF4JywgY29udGFpbmVyX3VpZF9iYXNlX21heCkKKyBub2JvZHlfdXNlciA9IGdldF9vcHRpb24oJ25vYm9keS11c2VyJykKKyBub2JvZHlfZ3JvdXAgPSBnZXRfb3B0aW9uKCdub2JvZHktZ3JvdXAnKQorIAorLWdldGVudF9yZXN1bHQgPSBydW5fY29tbWFuZCgnZ2V0ZW50JywgJ3Bhc3N3ZCcsICc2NTUzNCcpCistaWYgZ2V0ZW50X3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgbmFtZSA9IGdldGVudF9yZXN1bHQuc3Rkb3V0KCkuc3BsaXQoJzonKVswXQorLSAgICAgICAgaWYgbmFtZSAhPSBub2JvZHlfdXNlcgorLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgVUlEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIgKGl0cyBuYW1lIGlzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgbmFtZSkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gdXNlciB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKKy0gICAgICAgIGVuZGlmCistZW5kaWYKKy1pZF9yZXN1bHQgPSBydW5fY29tbWFuZCgnaWQnLCAnLXUnLCBub2JvZHlfdXNlcikKKy1pZiBpZF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIGlkID0gaWRfcmVzdWx0LnN0ZG91dCgpLnRvX2ludCgpCistICAgICAgICBpZiBpZCAhPSA2NTUzNAorLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIGRvZXMgbm90IGhhdmUgVUlEIDY1NTM0IChpdCBoYXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBpZCkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gdXNlciB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKKy0gICAgICAgIGVuZGlmCistZW5kaWYKKy0KKy1nZXRlbnRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2dldGVudCcsICdncm91cCcsICc2NTUzNCcpCistaWYgZ2V0ZW50X3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgbmFtZSA9IGdldGVudF9yZXN1bHQuc3Rkb3V0KCkuc3BsaXQoJzonKVswXQorLSAgICAgICAgaWYgbmFtZSAhPSBub2JvZHlfZ3JvdXAKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBHSUQgNjU1MzQgZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IGdyb3VwIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBuYW1lKSArCistICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiBncm91cCB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKKy0gICAgICAgIGVuZGlmCistZW5kaWYKKy1pZF9yZXN1bHQgPSBydW5fY29tbWFuZCgnaWQnLCAnLWcnLCBub2JvZHlfZ3JvdXApCistaWYgaWRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBpZCA9IGlkX3Jlc3VsdC5zdGRvdXQoKS50b19pbnQoKQorLSAgICAgICAgaWYgaWQgIT0gNjU1MzQKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfZ3JvdXAsIGlkKSArCistICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiBncm91cCB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKKy0gICAgICAgIGVuZGlmCistZW5kaWYKKyBpZiBub2JvZHlfdXNlciAhPSBub2JvZHlfZ3JvdXAgYW5kIG5vdCAobm9ib2R5X3VzZXIgPT0gJ25vYm9keScgYW5kIG5vYm9keV9ncm91cCA9PSAnbm9ncm91cCcpCisgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCisgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBhbmQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIvZ3JvdXAgYXJlIG5vdCBlcXVpdmFsZW50LlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5vYm9keV9ncm91cCkgKworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYzMxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAwM2NkZDMzYmU2MmRiNGM3MmE3ZmNmMjFiNjFkMGQwNTZjMjNjNmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMTozNjozMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDI4LzMxXSBhZGQgbWlzc2luZyBGVFdfIG1hY3JvcyBmb3IgbXVzbAorCitUaGlzIGlzIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGxpa2UgYmVsb3cgZm9yIG11c2wuCisKKyAgbG9jYWxlLXV0aWwuYzoyOTY6MjQ6IGVycm9yOiAnRlRXX1NUT1AnIHVuZGVjbGFyZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyMCArKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMWFlZTMzNDZhLi41YjlmZGU2OTIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMjA3LDYgKzIwNywyNiBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0geworICNkZWZpbmUgQlRSRlNfUUdST1VQX0xFVkVMX1NISUZUIDQ4CisgI2VuZGlmCisgCisrI2lmbmRlZiBGVFdfQUNUSU9OUkVUVkFMCisrI2RlZmluZSBGVFdfQUNUSU9OUkVUVkFMIDE2CisrI2VuZGlmCisrCisrI2lmbmRlZiBGVFdfQ09OVElOVUUKKysjZGVmaW5lIEZUV19DT05USU5VRSAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBGVFdfU1RPUAorKyNkZWZpbmUgRlRXX1NUT1AgMQorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NLSVBfU1VCVFJFRQorKyNkZWZpbmUgRlRXX1NLSVBfU1VCVFJFRSAyCisrI2VuZGlmCisrCisrI2lmbmRlZiBGVFdfU0tJUF9TSUJMSU5HUworKyNkZWZpbmUgRlRXX1NLSVBfU0lCTElOR1MgMworKyNlbmRpZgorKworICNpZiAhIEhBVkVfTElOVVhfQlRSRlNfSAorICNkZWZpbmUgQlRSRlNfSU9DX1FHUk9VUF9BU1NJR04gX0lPVyhCVFJGU19JT0NUTF9NQUdJQywgNDEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX3Fncm91cF9hc3NpZ25fYXJncykKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3MjQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNTg0NWM4MmQxMDE2YTNlM2YyNjk2MTgwZDVhYzkxYjQ2OTUwNTQwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTI6NTY6MjEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8zMV0gbnNzLW15bWFjaGluZXM6IEJ1aWxkIGNvbmRpdGlvbmFsbHkgd2hlbgorIEVOQUJMRV9NWUhPU1ROQU1FIGlzIHNldAorCitGaXhlcyBidWlsZCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggLS1kaXNhYmxlLW15aG9zdG5hbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDExICsrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDFiOTQ3YWRhYy4uMWVkNGRkZTcyIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTM1MSwxMiArMTM1MSwxNSBAQCB0ZXN0X2Rsb3BlbiA9IGV4ZWN1dGFibGUoCisgICAgICAgICBsaW5rX3dpdGggOiBbbGliYmFzaWNdLAorICAgICAgICAgZGVwZW5kZW5jaWVzIDogW2xpYmRsXSkKKyAKKy1mb3JlYWNoIHR1cGxlIDogW1snbXlob3N0bmFtZScsICdFTkFCTEVfTVlIT1NUTkFNRSddLAorLSAgICAgICAgICAgICAgICAgWydzeXN0ZW1kJywgICAgJ0VOQUJMRV9OU1NfU1lTVEVNRCddLAorLSAgICAgICAgICAgICAgICAgWydteW1hY2hpbmVzJywgJ0VOQUJMRV9NQUNISU5FRCddLAorLSAgICAgICAgICAgICAgICAgWydyZXNvbHZlJywgICAgJ0VOQUJMRV9SRVNPTFZFJ11dCisrZm9yZWFjaCB0dXBsZSA6IFtbJ215aG9zdG5hbWUnLCAnRU5BQkxFX01ZSE9TVE5BTUUnLCAgJyddLAorKyAgICAgICAgICAgICAgICAgWydzeXN0ZW1kJywgICAgJ0VOQUJMRV9OU1NfU1lTVEVNRCcsICcnXSwKKysgICAgICAgICAgICAgICAgIFsnbXltYWNoaW5lcycsICdFTkFCTEVfTUFDSElORUQnLCAgICAnRU5BQkxFX01ZSE9TVE5BTUUnXSwKKysgICAgICAgICAgICAgICAgIFsncmVzb2x2ZScsICAgICdFTkFCTEVfUkVTT0xWRScsICAgICAnJ11dCisgCisgICAgICAgICBjb25kaXRpb24gPSB0dXBsZVsxXSA9PSAnJyBvciBjb25mLmdldCh0dXBsZVsxXSkgPT0gMQorKyAgICAgICAgaWYgdHVwbGVbMl0gIT0gJycgYW5kIGNvbmRpdGlvbgorKyAgICAgICAgICAgICAgICBjb25kaXRpb24gPSBjb25mLmdldCh0dXBsZVsyXSkgPT0gMQorKyAgICAgICAgZW5kaWYKKyAgICAgICAgIGlmIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgICBtb2R1bGUgPSB0dXBsZVswXQorIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjBiNGJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBiN2VhY2RmMDM4OGY5MzBmYzUyNzFiZGVjZmE0NjYxMmM3MWRkNjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxMzoyNzo0NyArMDgwMAorU3ViamVjdDogW1BBVENIIDMwLzMxXSBmaXggbWlzc2luZyBvZiBfX3JlZ2lzdGVyX2F0Zm9yayBmb3Igbm9uLWdsaWJjIGJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCitpbmRleCBkYzdjOWVmOWUuLjg1Y2U4YTBjYyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCitAQCAtMzksNiArMzksOSBAQAorICNpZiBIQVZFX1ZBTEdSSU5EX1ZBTEdSSU5EX0gKKyAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KKyAjZW5kaWYKKysjaWZuZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisrI2VuZGlmCisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiYXJjaGl0ZWN0dXJlLmgiCitAQCAtMTExMiwxMSArMTExNSwxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgeworICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7CisgfQorIAorKyNpZmRlZiBfX0dMSUJDX18KKyAvKiBXZSB1c2UgZ2xpYmMgX19yZWdpc3Rlcl9hdGZvcmsoKSArIF9fZHNvX2hhbmRsZSBkaXJlY3RseSBoZXJlLCBhcyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGdsaWJjCisgICogaGVhZGVycy4gX19yZWdpc3Rlcl9hdGZvcmsoKSBpcyBtb3N0bHkgZXF1aXZhbGVudCB0byBwdGhyZWFkX2F0Zm9yaygpLCBidXQgZG9lc24ndCByZXF1aXJlIHVzIHRvIGxpbmsgYWdhaW5zdAorICAqIGxpYnB0aHJlYWQsIGFzIGl0IGlzIHBhcnQgb2YgZ2xpYmMgYW55d2F5LiAqLworIGV4dGVybiBpbnQgX19yZWdpc3Rlcl9hdGZvcmsodm9pZCAoKnByZXBhcmUpICh2b2lkKSwgdm9pZCAoKnBhcmVudCkgKHZvaWQpLCB2b2lkICgqY2hpbGQpICh2b2lkKSwgdm9pZCAqIF9fZHNvX2hhbmRsZSk7CisgZXh0ZXJuIHZvaWQqIF9fZHNvX2hhbmRsZSBfX2F0dHJpYnV0ZV9fICgoX193ZWFrX18pKTsKKysjZWxzZQorKyNkZWZpbmUgX19yZWdpc3Rlcl9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQsZHNvKSBwdGhyZWFkX2F0Zm9yayhwcmVwYXJlLHBhcmVudCxjaGlsZCkKKysjZW5kaWYKKyAKKyBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKKyAgICAgICAgIHBpZF90IGN1cnJlbnRfdmFsdWU7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMS1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOWM0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGFkY2Q3ZTQyNmZjZDgwZTc1NDI3NGE3MzAyMjFkMWExZjQ5ZGJjMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE0OjAxOjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMzEvMzFdIGZpeCBtaXNzaW5nIFVMT05HX0xPTkdfTUFYIGRlZmluaXRpb24gaW4gY2FzZSBvZiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDViOWZkZTY5Mi4uYTkyMmYxMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBzb2NrYWRkcl92bSB7CisgfTsKKyAjZW5kaWYgLyogIUhBVkVfTElOVVhfVk1fU09DS0VUU19IICovCisgCisrI2lmbmRlZiBVTE9OR19MT05HX01BWAorKyNkZWZpbmUgVUxPTkdfTE9OR19NQVggVUxMT05HX01BWAorKyNlbmRpZgorKworICNpZm5kZWYgUkxJTUlUX1JUVElNRQorICNkZWZpbmUgUkxJTUlUX1JUVElNRSAxNQorICNlbmRpZgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMyLW1lbWZkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMyLW1lbWZkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Y2ZkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzItbWVtZmQucGF0Y2gKQEAgLTAsMCArMSwyNzIgQEAKK21pc3Npbmdfc3lzY2FsbDogd2hlbiBhZGRpbmcgc3lzY2FsbCByZXBsYWNlbWVudHMsIHVzZSBkaWZmZXJlbnQgbmFtZXMgKAorCisjODIyOSkKKworSW4gbWVzb24uYnVpbGQgd2UgY2hlY2sgdGhhdCBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB1c2luZzoKKyAgICBtZXNvbi5nZXRfY29tcGlsZXIoJ2MnKS5oYXNfZnVuY3Rpb24oJ2ZvbycpCit3aGljaCBjaGVja3MgdGhlIGZvbGxvd2luZzoKKy0gaWYgX19zdHViX2ZvbyBvciBfX3N0dWJfX19mb28gYXJlIGRlZmluZWQsIHJldHVybiBmYWxzZQorLSBpZiBmb28gaXMgZGVjbGFyZWQgKGEgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gY2FuIGJlIHRha2VuKSwgcmV0dXJuIHRydWUKKy0gb3RoZXJ3aXNlIGNoZWNrIGZvciBfX2J1aWx0aW5fbWVtZmRfY3JlYXRlCisKK19zdHViIGlzIGRvY3VtZW50ZWQgYnkgZ2xpYmMgYXMKKyAgIEl0IGRlZmluZXMgYSBzeW1ib2wgJ19fc3R1Yl9GVU5DVElPTicgZm9yIGVhY2ggZnVuY3Rpb24KKyAgIGluIHRoZSBDIGxpYnJhcnkgd2hpY2ggaXMgYSBzdHViLCBtZWFuaW5nIGl0IHdpbGwgZmFpbAorICAgZXZlcnkgdGltZSBjYWxsZWQsIHVzdWFsbHkgc2V0dGluZyBlcnJubyB0byBFTk9TWVMuCisKK1NvIGlmIF9fc3R1YiBpcyBkZWZpbmVkLCB3ZSBrbm93IHdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZSBnbGliYyB2ZXJzaW9uLCBidXQKK3RoaXMgZG9lc24ndCB0ZWxsIHVzIGlmIHRoZSBuYW1lIGl0c2VsZiBpcyBkZWZpbmVkIG9yIG5vdC4gSWYgaXQgX2lzXyBkZWZpbmVkLAorYW5kIHdlIGRlZmluZSBvdXIgcmVwbGFjZW1lbnQgYXMgYW4gaW5saW5lIHN0YXRpYyBmdW5jdGlvbiwgd2UgZ2V0IGFuIGVycm9yOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL2Jhc2ljL21pc3NpbmcuaDoxMzU4OjAsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2Jhc2ljL3V0aWwuaDo0NywKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvYmFzaWMvY2FsZW5kYXJzcGVjLmg6MjksCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2Jhc2ljL2NhbGVuZGFyc3BlYy5jOjM0OgorLi4vc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oOjY1OjE5OiBlcnJvcjogc3RhdGljIGRlY2xhcmF0aW9uIG9mICdtZW1mZF9jcmVhdGUnIGZvbGxvd3Mgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbgorIHN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KKy4uLi91c3IvaW5jbHVkZS9iaXRzL21tYW4tc2hhcmVkLmg6NDY6NTogbm90ZTogcHJldmlvdXMgZGVjbGFyYXRpb24gb2YgJ21lbWZkX2NyZWF0ZScgd2FzIGhlcmUKKyBpbnQgbWVtZmRfY3JlYXRlIChjb25zdCBjaGFyICpfX25hbWUsIHVuc2lnbmVkIGludCBfX2ZsYWdzKSBfX1RIUk9XOworICAgICBefn5+fn5+fn5+fn4KKworVG8gYXZvaWQgdGhpcyBwcm9ibGVtLCBjYWxsIG91ciBpbmxpbmUgZnVuY3Rpb25zIGRpZmZlcmVudCB0aGFuIGdsaWJjLAorYW5kIHVzZSBhICNkZWZpbmUgdG8gbWFwIHRoZSBvZmZpY2lhbCBuYW1lIHRvIG91ciByZXBsYWNlbWVudC4KKworRml4ZXMgIzgwOTkuCisKK3YyOgorLSB1c2UgIm1pc3NpbmdfIiBhcyB0aGUgcHJlZml4IGluc3RlYWQgb2YgIl8iCisKK3YzOgorLSByZWJhc2UgYW5kIHVwZGF0ZSBmb3Igc3RhdHgoKQorCisgIFVuZm9ydHVuYXRlbHkgInN0YXR4IiBpcyBhbHNvIHByZXNlbnQgaW4gInN0cnVjdCBzdGF0eCIsIHNvIHRoZSBkZWZpbmUKKyAgY2F1c2VzIGlzc3Vlcy4gV29yayBhcm91bmQgdGhpcyBieSB1c2luZyBhIHR5cGVkZWYuCisKK0kgY2hlY2tlZCB0aGF0IHN5c3RlbWQgY29tcGlsZXMgd2l0aCBjdXJyZW50IGdsaWJjCisoZ2xpYmMtZGV2ZWwtMi4yNi0yNC5mYzI3Lng4Nl82NCkgaWYgSEFWRV9NRU1GRF9DUkVBVEUsIEhBVkVfR0VUVElELAorSEFWRV9QSVZPVF9ST09ULCBIQVZFX1NFVE5TLCBIQVZFX1JFTkFNRUFUMiwgSEFWRV9LQ01QLCBIQVZFX0tFWUNUTCwKK0hBVkVfQ09QWV9GSUxFX1JBTkdFLCBIQVZFX0JQRiwgSEFWRV9TVEFUWCBhcmUgZm9yY2VkIHRvIDAuCisKK1NldHRpbmcgSEFWRV9OQU1FX1RPX0hBTkRMRV9BVCB0byAwIGNhdXNlcyBhbiBpc3N1ZSwgYnV0IGl0J3Mgbm90IGJlY2F1c2Ugb2YKK3RoZSBkZWZpbmUsIGJ1dCBiZWNhdXNlIG9mIHN0cnVjdCBmaWxlX2hhbmRsZS4KKworCitiYWNrcG9ydCBodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2NvbW1pdC81MTg3ZGQyYzQwM2NhZjkyZDA5ZjM0OTFlNDFmMWNlYjNmMTA0OTFmCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy84MDk5XQorSW5kZXg6IGdpdC9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKKysrKyBnaXQvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCitAQCAtMjYsOSArMjYsMTEgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2lmICFIQVZFX1BJVk9UX1JPT1QKKy1zdGF0aWMgaW5saW5lIGludCBwaXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7CisgICAgICAgICByZXR1cm4gc3lzY2FsbChTWVNfcGl2b3Rfcm9vdCwgbmV3X3Jvb3QsIHB1dF9vbGQpOworIH0KKysKKysjICBkZWZpbmUgcGl2b3Rfcm9vdCBtaXNzaW5nX3Bpdm90X3Jvb3QKKyAjZW5kaWYKKyAKKyAjaWYgIUhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQorQEAgLTY4LDcgKzcwLDcgQEAgc3RhdGljIGlubGluZSBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYQorICMgICAgZW5kaWYKKyAjICBlbmRpZgorIAorLXN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX21lbWZkX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKyAjICBpZmRlZiBfX05SX21lbWZkX2NyZWF0ZQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9tZW1mZF9jcmVhdGUsIG5hbWUsIGZsYWdzKTsKKyAjICBlbHNlCitAQCAtNzYsNiArNzgsOCBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhCisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIG1lbWZkX2NyZWF0ZSBtaXNzaW5nX21lbWZkX2NyZWF0ZQorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMTE1LDcgKzExOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGEKKyAjICAgIGVuZGlmCisgIyAgZW5kaWYKKyAKKy1zdGF0aWMgaW5saW5lIGludCBnZXRyYW5kb20odm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGZsYWdzKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGZsYWdzKSB7CisgIyAgaWZkZWYgX19OUl9nZXRyYW5kb20KKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZ2V0cmFuZG9tLCBidWZmZXIsIGNvdW50LCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTEyMywxNCArMTI3LDE4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldHJhbmRvbSh2b2lkICpidWZmZXIKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgZ2V0cmFuZG9tIG1pc3NpbmdfZ2V0cmFuZG9tCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfR0VUVElECistc3RhdGljIGlubGluZSBwaWRfdCBnZXR0aWQodm9pZCkgeworK3N0YXRpYyBpbmxpbmUgcGlkX3QgbWlzc2luZ19nZXR0aWQodm9pZCkgeworICAgICAgICAgcmV0dXJuIChwaWRfdCkgc3lzY2FsbChTWVNfZ2V0dGlkKTsKKyB9CisrCisrIyAgZGVmaW5lIGdldHRpZCBtaXNzaW5nX2dldHRpZAorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMTU4LDcgKzE2Niw3IEBAIHN0cnVjdCBmaWxlX2hhbmRsZSB7CisgICAgICAgICB1bnNpZ25lZCBjaGFyIGZfaGFuZGxlWzBdOworIH07CisgCistc3RhdGljIGlubGluZSBpbnQgbmFtZV90b19oYW5kbGVfYXQoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZV9oYW5kbGUgKmhhbmRsZSwgaW50ICptbnRfaWQsIGludCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfbmFtZV90b19oYW5kbGVfYXQoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZV9oYW5kbGUgKmhhbmRsZSwgaW50ICptbnRfaWQsIGludCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfbmFtZV90b19oYW5kbGVfYXQKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfbmFtZV90b19oYW5kbGVfYXQsIGZkLCBuYW1lLCBoYW5kbGUsIG1udF9pZCwgZmxhZ3MpOworICMgIGVsc2UKK0BAIC0xNjYsNiArMTc0LDggQEAgc3RhdGljIGlubGluZSBpbnQgbmFtZV90b19oYW5kbGVfYXQoaW50CisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIG5hbWVfdG9faGFuZGxlX2F0IG1pc3NpbmdfbmFtZV90b19oYW5kbGVfYXQKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworQEAgLTE4Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBuYW1lX3RvX2hhbmRsZV9hdChpbnQKKyAjICAgIGVuZGlmCisgIyAgZW5kaWYKKyAKKy1zdGF0aWMgaW5saW5lIGludCBzZXRucyhpbnQgZmQsIGludCBuc3R5cGUpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX3NldG5zKGludCBmZCwgaW50IG5zdHlwZSkgeworICMgIGlmZGVmIF9fTlJfc2V0bnMKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfc2V0bnMsIGZkLCBuc3R5cGUpOworICMgIGVsc2UKK0BAIC0xOTEsNiArMjAxLDggQEAgc3RhdGljIGlubGluZSBpbnQgc2V0bnMoaW50IGZkLCBpbnQgbnN0eQorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBzZXRucyBtaXNzaW5nX3NldG5zCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK0BAIC0yMzYsNyArMjQ4LDcgQEAgc3RhdGljIGlubGluZSBwaWRfdCByYXdfZ2V0cGlkKHZvaWQpIHsKKyAjICAgIGVuZGlmCisgIyAgZW5kaWYKKyAKKy1zdGF0aWMgaW5saW5lIGludCByZW5hbWVhdDIoaW50IG9sZGZkLCBjb25zdCBjaGFyICpvbGRuYW1lLCBpbnQgbmV3ZmQsIGNvbnN0IGNoYXIgKm5ld25hbWUsIHVuc2lnbmVkIGZsYWdzKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19yZW5hbWVhdDIoaW50IG9sZGZkLCBjb25zdCBjaGFyICpvbGRuYW1lLCBpbnQgbmV3ZmQsIGNvbnN0IGNoYXIgKm5ld25hbWUsIHVuc2lnbmVkIGZsYWdzKSB7CisgIyAgaWZkZWYgX19OUl9yZW5hbWVhdDIKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfcmVuYW1lYXQyLCBvbGRmZCwgb2xkbmFtZSwgbmV3ZmQsIG5ld25hbWUsIGZsYWdzKTsKKyAjICBlbHNlCitAQCAtMjQ0LDEyICsyNTYsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgcmVuYW1lYXQyKGludCBvbGRmZCwgYworICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSByZW5hbWVhdDIgbWlzc2luZ19yZW5hbWVhdDIKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIAorICNpZiAhSEFWRV9LQ01QCistc3RhdGljIGlubGluZSBpbnQga2NtcChwaWRfdCBwaWQxLCBwaWRfdCBwaWQyLCBpbnQgdHlwZSwgdW5zaWduZWQgbG9uZyBpZHgxLCB1bnNpZ25lZCBsb25nIGlkeDIpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX2tjbXAocGlkX3QgcGlkMSwgcGlkX3QgcGlkMiwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgaWR4MSwgdW5zaWduZWQgbG9uZyBpZHgyKSB7CisgIyAgaWZkZWYgX19OUl9rY21wCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2tjbXAsIHBpZDEsIHBpZDIsIHR5cGUsIGlkeDEsIGlkeDIpOworICMgIGVsc2UKK0BAIC0yNTcsMzYgKzI3MSw0NCBAQCBzdGF0aWMgaW5saW5lIGludCBrY21wKHBpZF90IHBpZDEsIHBpZF90CisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIGtjbXAgbWlzc2luZ19rY21wCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfS0VZQ1RMCistc3RhdGljIGlubGluZSBsb25nIGtleWN0bChpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZzIsIHVuc2lnbmVkIGxvbmcgYXJnMywgdW5zaWduZWQgbG9uZyBhcmc0LHVuc2lnbmVkIGxvbmcgYXJnNSkgeworK3N0YXRpYyBpbmxpbmUgbG9uZyBtaXNzaW5nX2tleWN0bChpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZzIsIHVuc2lnbmVkIGxvbmcgYXJnMywgdW5zaWduZWQgbG9uZyBhcmc0LHVuc2lnbmVkIGxvbmcgYXJnNSkgeworICMgIGlmZGVmIF9fTlJfa2V5Y3RsCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2tleWN0bCwgY21kLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAjICBlbHNlCisgICAgICAgICBlcnJubyA9IEVOT1NZUzsKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorKworKyMgIGRlZmluZSBrZXljdGwgbWlzc2luZ19rZXljdGwKKyB9CisgCistc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgYWRkX2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3Qgdm9pZCAqcGF5bG9hZCwgc2l6ZV90IHBsZW4sIGtleV9zZXJpYWxfdCByaW5naWQpIHsKKytzdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCBtaXNzaW5nX2FkZF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLCBrZXlfc2VyaWFsX3QgcmluZ2lkKSB7CisgIyAgaWZkZWYgX19OUl9hZGRfa2V5CisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2FkZF9rZXksIHR5cGUsIGRlc2NyaXB0aW9uLCBwYXlsb2FkLCBwbGVuLCByaW5naWQpOworICMgIGVsc2UKKyAgICAgICAgIGVycm5vID0gRU5PU1lTOworICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisrCisrIyAgZGVmaW5lIGFkZF9rZXkgbWlzc2luZ19hZGRfa2V5CisgfQorIAorLXN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IHJlcXVlc3Rfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCBjaGFyICogY2FsbG91dF9pbmZvLCBrZXlfc2VyaWFsX3QgZGVzdHJpbmdpZCkgeworK3N0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IG1pc3NpbmdfcmVxdWVzdF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIgKiBjYWxsb3V0X2luZm8sIGtleV9zZXJpYWxfdCBkZXN0cmluZ2lkKSB7CisgIyAgaWZkZWYgX19OUl9yZXF1ZXN0X2tleQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9yZXF1ZXN0X2tleSwgdHlwZSwgZGVzY3JpcHRpb24sIGNhbGxvdXRfaW5mbywgZGVzdHJpbmdpZCk7CisgIyAgZWxzZQorICAgICAgICAgZXJybm8gPSBFTk9TWVM7CisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKysKKysjICBkZWZpbmUgcmVxdWVzdF9rZXkgbWlzc2luZ19yZXF1ZXN0X2tleQorIH0KKyAjZW5kaWYKKyAKK0BAIC0zMTMsMTAgKzMzNSwxMCBAQCBzdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCByZXF1ZXN0X2tleShjCisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZShpbnQgZmRfaW4sIGxvZmZfdCAqb2ZmX2luLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkX291dCwgbG9mZl90ICpvZmZfb3V0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgc3NpemVfdCBtaXNzaW5nX2NvcHlfZmlsZV9yYW5nZShpbnQgZmRfaW4sIGxvZmZfdCAqb2ZmX2luLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmRfb3V0LCBsb2ZmX3QgKm9mZl9vdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfY29weV9maWxlX3JhbmdlCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2NvcHlfZmlsZV9yYW5nZSwgZmRfaW4sIG9mZl9pbiwgZmRfb3V0LCBvZmZfb3V0LCBsZW4sIGZsYWdzKTsKKyAjICBlbHNlCitAQCAtMzI0LDYgKzM0Niw4IEBAIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW4KKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgY29weV9maWxlX3JhbmdlIG1pc3NpbmdfY29weV9maWxlX3JhbmdlCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK0BAIC0zNTEsNyArMzc1LDcgQEAgc3RhdGljIGlubGluZSBzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZShpbgorIAorIHVuaW9uIGJwZl9hdHRyOworIAorLXN0YXRpYyBpbmxpbmUgaW50IGJwZihpbnQgY21kLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc2l6ZV90IHNpemUpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX2JwZihpbnQgY21kLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc2l6ZV90IHNpemUpIHsKKyAjaWZkZWYgX19OUl9icGYKKyAgICAgICAgIHJldHVybiAoaW50KSBzeXNjYWxsKF9fTlJfYnBmLCBjbWQsIGF0dHIsIHNpemUpOworICNlbHNlCitAQCAtMzYwLDYgKzM4NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGJwZihpbnQgY21kLCB1bmlvbiBicGYKKyAjZW5kaWYKKyB9CisgCisrIyAgZGVmaW5lIGJwZiBtaXNzaW5nX2JwZgorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMy1iYXNpYy1tYWNyb3MtcmVuYW1lLW5vcmV0dXJuLWludG8tX25vcmV0dXJuXy04NDU2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NjQ3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaApAQCAtMCwwICsxLDIwMyBAQAorRnJvbSA4NDhlODYzYWNjNTFlY2ZiMGYzOTU1YzQ5ODg3NDU4ODIwMWQ5MTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRnJhbmNrIEJ1aSA8ZmJ1aUBzdXNlLmNvbT4KK0RhdGU6IFRodSwgMTUgTWFyIDIwMTggMDY6MjM6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYmFzaWMvbWFjcm9zOiByZW5hbWUgbm9yZXR1cm4gaW50byBfbm9yZXR1cm5fICgjODQ1NikKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworIm5vcmV0dXJuIiBpcyByZXNlcnZlZCBhbmQgY2FuIGJlIHVzZWQgaW4gb3RoZXIgaGVhZGVyIGZpbGVzIHdlIGluY2x1ZGU6CisKKyAgWyAgIDE2c10gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9nY3J5cHQuaDozMDowLAorICBbICAgMTZzXSAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2pvdXJuYWwvam91cm5hbC1maWxlLmg6MjYsCisgIFsgICAxNnNdICAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvam91cm5hbC9qb3VybmFsLXZhY3V1bS5jOjMxOgorICBbICAgMTZzXSAvdXNyL2luY2x1ZGUvZ3BnLWVycm9yLmg6MTU0NDo0NjogZXJyb3I6IGV4cGVjdGVkIOKAmCzigJkgb3Ig4oCYO+KAmSBiZWZvcmUg4oCYKeKAmSB0b2tlbgorICBbICAgMTZzXSAgdm9pZCBncGdydF9sb2dfYnVnIChjb25zdCBjaGFyICpmbXQsIC4uLikgICAgR1BHUlRfQVRUUl9OUl9QUklOVEYoMSwyKTsKKworSGVyZSB3ZSBpbmNsdWRlIGdyY3J5cHQuaCAod2hpY2ggaW4gdHVybnMgaW5jbHVkZSBncGctZXJyb3IuaCkgKmFmdGVyKiB3ZQorIm5vcmV0dXJuIiB3YXMgZGVmaW5lZCBpbiBtYWNyby5oLgorLS0tCisgc3JjL2Jhc2ljL2xvZy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQorIHNyYy9iYXNpYy9sb2cuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KKyBzcmMvYmFzaWMvbWFjcm8uaCAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKystLS0tLS0tLS0tCisgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmggICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9jb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KKyBzcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMgfCAgMiArLQorIHNyYy9zaGFyZWQvcGFnZXIuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KKyA5IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvODQ1Nl0KKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9sb2cuYyBiL3NyYy9iYXNpYy9sb2cuYworaW5kZXggN2E3ZjJjYmVjLi4xNmEyNDMxYzUgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbG9nLmMKKysrKyBiL3NyYy9iYXNpYy9sb2cuYworQEAgLTgxNCw3ICs4MTQsNyBAQCBzdGF0aWMgdm9pZCBsb2dfYXNzZXJ0KAorICAgICAgICAgbG9nX2Rpc3BhdGNoX2ludGVybmFsKGxldmVsLCAwLCBmaWxlLCBsaW5lLCBmdW5jLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBidWZmZXIpOworIH0KKyAKKy1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKyAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCitAQCAtODI2LDcgKzgyNiw3IEBAIG5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgICAgICAgICBhYm9ydCgpOworIH0KKyAKKy1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAorK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKyAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2xvZy5oIGIvc3JjL2Jhc2ljL2xvZy5oCitpbmRleCBlZmNmMGYxYmYuLjMxNGJlMTI4YSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9sb2cuaAorKysrIGIvc3JjL2Jhc2ljL2xvZy5oCitAQCAtMTg2LDcgKzE4Niw3IEBAIGludCBsb2dfZHVtcF9pbnRlcm5hbCgKKyAgICAgICAgICAgICAgICAgY2hhciAqYnVmZmVyKTsKKyAKKyAvKiBMb2dnaW5nIGZvciB2YXJpb3VzIGFzc2VydGlvbnMgKi8KKy1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKyAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCitAQCAtMTk1LDcgKzE5NSw3IEBAIG5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgI2RlZmluZSBsb2dfYXNzZXJ0X2ZhaWxlZCh0ZXh0LCAuLi4pIFwKKyAgICAgICAgIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKExPR19SRUFMTSwgKHRleHQpLCBfX1ZBX0FSR1NfXykKKyAKKy1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAorK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKyAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21hY3JvLmggYi9zcmMvYmFzaWMvbWFjcm8uaAoraW5kZXggOTViZTYzYTIwLi44OTExZWRmYzQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWFjcm8uaAorKysrIGIvc3JjL2Jhc2ljL21hY3JvLmgKK0BAIC01Myw2ICs1MywxNSBAQAorICNlbHNlCisgI2RlZmluZSBfZmFsbHRocm91Z2hfCisgI2VuZGlmCisrLyogRGVmaW5lIEMxMSBub3JldHVybiB3aXRob3V0IDxzdGRub3JldHVybi5oPiBhbmQgZXZlbiBvbiBvbGRlciBnY2MKKysgKiBjb21waWxlciB2ZXJzaW9ucyAqLworKyNpZm5kZWYgX25vcmV0dXJuXworKyNpZiBfX1NURENfVkVSU0lPTl9fID49IDIwMTExMkwKKysjZGVmaW5lIF9ub3JldHVybl8gX05vcmV0dXJuCisrI2Vsc2UKKysjZGVmaW5lIF9ub3JldHVybl8gX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKQorKyNlbmRpZgorKyNlbmRpZgorIAorIC8qIFRlbXBvcmFyaWx5IGRpc2FibGUgc29tZSB3YXJuaW5ncyAqLworICNkZWZpbmUgRElTQUJMRV9XQVJOSU5HX0RFQ0xBUkFUSU9OX0FGVEVSX1NUQVRFTUVOVCAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC00MTQsMTYgKzQyMyw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBBTElHTl9QT1dFUjIodW5zaWduZWQgbG9uZyB1KSB7CisgI2VuZGlmCisgI2VuZGlmCisgCistLyogRGVmaW5lIEMxMSBub3JldHVybiB3aXRob3V0IDxzdGRub3JldHVybi5oPiBhbmQgZXZlbiBvbiBvbGRlciBnY2MKKy0gKiBjb21waWxlciB2ZXJzaW9ucyAqLworLSNpZm5kZWYgbm9yZXR1cm4KKy0jaWYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMCistI2RlZmluZSBub3JldHVybiBfTm9yZXR1cm4KKy0jZWxzZQorLSNkZWZpbmUgbm9yZXR1cm4gX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKQorLSNlbmRpZgorLSNlbmRpZgorLQorICNkZWZpbmUgREVGSU5FX1RSSVZJQUxfQ0xFQU5VUF9GVU5DKHR5cGUsIGZ1bmMpICAgICAgICAgICAgICAgICBcCisgICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgZnVuYyMjcCh0eXBlICpwKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgaWYgKCpwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworaW5kZXggYWE5ODQ2ZGI1Li5lNjEyMGFmNWIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTk4Nyw3ICs5ODcsNyBAQCBib29sIGlzX21haW5fdGhyZWFkKHZvaWQpIHsKKyAgICAgICAgIHJldHVybiBjYWNoZWQgPiAwOworIH0KKyAKKy1ub3JldHVybiB2b2lkIGZyZWV6ZSh2b2lkKSB7CisrX25vcmV0dXJuXyB2b2lkIGZyZWV6ZSh2b2lkKSB7CisgCisgICAgICAgICBsb2dfY2xvc2UoKTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmggYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmgKK2luZGV4IDkzMDI5ZTM2ZS4uNTE3MGFkZWM3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmgKK0BAIC05MSw3ICs5MSw3IEBAIGludCBwaWRfZnJvbV9zYW1lX3Jvb3RfZnMocGlkX3QgcGlkKTsKKyAKKyBib29sIGlzX21haW5fdGhyZWFkKHZvaWQpOworIAorLW5vcmV0dXJuIHZvaWQgZnJlZXplKHZvaWQpOworK19ub3JldHVybl8gdm9pZCBmcmVlemUodm9pZCk7CisgCisgYm9vbCBvb21fc2NvcmVfYWRqdXN0X2lzX3ZhbGlkKGludCBvYSk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCitpbmRleCAwNzY4NDZhNDEuLjRiMmQxNDkyMyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL21haW4uYworKysrIGIvc3JjL2NvcmUvbWFpbi5jCitAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcmdfZGVmYXVsdF90YXNrc19tYXggPSBVSU5UNjRfTUFYOworIHN0YXRpYyBzZF9pZDEyOF90IGFyZ19tYWNoaW5lX2lkID0ge307Cisgc3RhdGljIEVtZXJnZW5jeUFjdGlvbiBhcmdfY2FkX2J1cnN0X2FjdGlvbiA9IEVNRVJHRU5DWV9BQ1RJT05fUkVCT09UX0ZPUkNFOworIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgeworK19ub3JldHVybl8gc3RhdGljIHZvaWQgZnJlZXplX29yX3JlYm9vdCh2b2lkKSB7CisgCisgICAgICAgICBpZiAoYXJnX2NyYXNoX3JlYm9vdCkgeworICAgICAgICAgICAgICAgICBsb2dfbm90aWNlKCJSZWJvb3RpbmcgaW4gMTBzLi4uIik7CitAQCAtMTU2LDcgKzE1Niw3IEBAIG5vcmV0dXJuIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgeworICAgICAgICAgZnJlZXplKCk7CisgfQorIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGNyYXNoKGludCBzaWcpIHsKKytfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIGNyYXNoKGludCBzaWcpIHsKKyAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7CisgICAgICAgICBwaWRfdCBwaWQ7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jIGIvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jCitpbmRleCA1YTg4YjI3NzQuLmQ4N2JkYmRkMyAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYworKysrIGIvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jCitAQCAtMzcsNyArMzcsNyBAQAorIAorIHN0YXRpYyBib29sIGFyZ19rZWVwID0gZmFsc2U7CisgCistbm9yZXR1cm4gc3RhdGljIHZvaWQgbG9nX2Fzc2VydF9lcnJubyhjb25zdCBjaGFyICp0ZXh0LCBpbnQgZXJyb3IsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jKSB7CisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBsb2dfYXNzZXJ0X2Vycm5vKGNvbnN0IGNoYXIgKnRleHQsIGludCBlcnJvciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMpIHsKKyAgICAgICAgIGxvZ19pbnRlcm5hbChMT0dfQ1JJVCwgZXJyb3IsIGZpbGUsIGxpbmUsIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgIiclcycgZmFpbGVkIGF0ICVzOiV1ICglcyk6ICVtIiwgdGV4dCwgZmlsZSwgbGluZSwgZnVuYyk7CisgICAgICAgICBhYm9ydCgpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGFnZXIuYyBiL3NyYy9zaGFyZWQvcGFnZXIuYworaW5kZXggNzVkYjNjOTg1Li42ODFhZjljNDAgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKKysrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYworQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGludCBzdG9yZWRfc3RkZXJyID0gLTE7Cisgc3RhdGljIGJvb2wgc3Rkb3V0X3JlZGlyZWN0ZWQgPSBmYWxzZTsKKyBzdGF0aWMgYm9vbCBzdGRlcnJfcmVkaXJlY3RlZCA9IGZhbHNlOworIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIHBhZ2VyX2ZhbGxiYWNrKHZvaWQpIHsKKytfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIHBhZ2VyX2ZhbGxiYWNrKHZvaWQpIHsKKyAgICAgICAgIGludCByOworIAorICAgICAgICAgciA9IGNvcHlfYnl0ZXMoU1RESU5fRklMRU5PLCBTVERPVVRfRklMRU5PLCAodWludDY0X3QpIC0xLCAwKTsKK2RpZmYgLS1naXQgYS9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYyBiL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jCitpbmRleCAyODIxNjQwZTkuLmM4ZmE0N2IzZCAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jCisrKysgYi9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYworQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgX21hdGUgKm5vZGVfdG9fbWF0ZShzdHJ1Y3QgdWRldl9saXN0X25vZGUgKm5vZGUpCisgICAgICAgICByZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBfbWF0ZSwgbm9kZSk7CisgfQorIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIHNpZ19hbHJtKGludCBzaWdubykKKytfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIHNpZ19hbHJtKGludCBzaWdubykKKyB7CisgICAgICAgICBleGl0KDQpOworIH0KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM0LUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1jb21waWxlLWZhaWx1cmUtYnktdHlwZWNhc3RpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2MDYxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoCkBAIC0wLDAgKzEsMTczIEBACitGcm9tIGMyYjNlYmUxMTJlYmZkOWY5ZTgyZmIxNTMxZWUyMjVjMzE1MmNhODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXRyaWNrIFVpdGVyd2lqayA8cGF0cmlja0BwdWl0ZXJ3aWprLm9yZz4KK0RhdGU6IFRodSwgMjIgRmViIDIwMTggMTk6NDE6MzAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGZvcm1hdC10cnVuY2F0aW9uIGNvbXBpbGUgZmFpbHVyZSBieSB0eXBlY2FzdGluZyBVU0IgSURzCisgKCM4MjUwKQorCitUaGlzIHBhdGNoIGFkZHMgc2FmZV9hdG91eDE2IGZvciBwYXJzaW5nIGFuIHVuc2lnbmVkIGhleGFkZWNpbWFsIDE2Yml0IGludCwgYW5kCit1c2VzIHRoYXQgZm9yIHBhcnNpbmcgVVNCIGRldmljZSBhbmQgdmVuZG9yIElEcy4KKworVGhpcyBmaXhlcyBhIGNvbXBpbGUgZXJyb3Igd2l0aCBnY2MtOCBiZWNhdXNlIHdoaWxlIHdlIGtub3cgdGhhdCBVU0IgSURzIGFyZSAyIGJ5dGVzLAordGhlIGNvbXBpbGVyIGRvZXMgbm90IGtub3cgdGhhdC4KKworLi4vc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYzo4MDozODogZXJyb3I6ICclMDRYJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZQordHJ1bmNhdGVkIHdyaXRpbmcgYmV0d2VlbiA0IGFuZCA4IGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSBiZXR3ZWVuIDIgYW5kIDYKK1stV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNTU0N2MxMjUwM2E2ODMyOTBlYWVkNDc5NTRmZmNmYjJkMWJjMDNjZF0KKworU2lnbmVkLW9mZi1ieTogQWRhbSBXaWxsaWFtc29uIDxhd2lsbGlhbUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogUGF0cmljayBVaXRlcndpamsgPHB1aXRlcndpamtAcmVkaGF0LmNvbT4KKy0tLQorIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgICAgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaCAgICAgICB8ICAyICsrCisgc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMgfCAxMyArKysrKystLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworaW5kZXggOTc1MzM3MjFkLi5mZjNmYzI5OGEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitAQCAtNTMyLDYgKzUzMiwzMCBAQCBpbnQgc2FmZV9hdG9pMTYoY29uc3QgY2hhciAqcywgaW50MTZfdCAqcmV0KSB7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCisraW50IHNhZmVfYXRvdXgxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KSB7CisrICAgICAgICBjaGFyICp4ID0gTlVMTDsKKysgICAgICAgIHVuc2lnbmVkIGxvbmcgbDsKKysKKysgICAgICAgIGFzc2VydChzKTsKKysgICAgICAgIGFzc2VydChyZXQpOworKworKyAgICAgICAgcyArPSBzdHJzcG4ocywgV0hJVEVTUEFDRSk7CisrCisrICAgICAgICBlcnJubyA9IDA7CisrICAgICAgICBsID0gc3RydG91bChzLCAmeCwgMTYpOworKyAgICAgICAgaWYgKGVycm5vID4gMCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysgICAgICAgIGlmICgheCB8fCB4ID09IHMgfHwgKnggIT0gMCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisrICAgICAgICBpZiAoc1swXSA9PSAnLScpCisrICAgICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOworKyAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSAodWludDE2X3QpIGwgIT0gbCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7CisrCisrICAgICAgICAqcmV0ID0gKHVpbnQxNl90KSBsOworKyAgICAgICAgcmV0dXJuIDA7CisrfQorKworIGludCBzYWZlX2F0b2QoY29uc3QgY2hhciAqcywgZG91YmxlICpyZXRfZCkgeworICAgICAgICAgX2NsZWFudXBfKGZyZWVsb2NhbGVwKSBsb2NhbGVfdCBsb2MgPSAobG9jYWxlX3QpIDA7CisgICAgICAgICBjaGFyICp4ID0gTlVMTDsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAoraW5kZXggMWVkYTFkN2Y5Li43Mjc0MjIwNTYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oCitAQCAtNTQsNiArNTQsOCBAQCBpbnQgc2FmZV9hdG91OChjb25zdCBjaGFyICpzLCB1aW50OF90ICpyZXQpOworIGludCBzYWZlX2F0b3UxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KTsKKyBpbnQgc2FmZV9hdG9pMTYoY29uc3QgY2hhciAqcywgaW50MTZfdCAqcmV0KTsKKyAKKytpbnQgc2FmZV9hdG91eDE2KGNvbnN0IGNoYXIgKnMsIHVpbnQxNl90ICpyZXQpOworKworIHN0YXRpYyBpbmxpbmUgaW50IHNhZmVfYXRvdTMyKGNvbnN0IGNoYXIgKnMsIHVpbnQzMl90ICpyZXRfdSkgeworICAgICAgICAgYXNzZXJ0X2NjKHNpemVvZih1aW50MzJfdCkgPT0gc2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgICAgICByZXR1cm4gc2FmZV9hdG91KHMsICh1bnNpZ25lZCopIHJldF91KTsKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jCitpbmRleCA5Mzc1MDAyMTMuLmE5OWNlYTVhMSAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYworQEAgLTQ2OCw2ICs0NjgsNDQgQEAgc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b2kxNih2b2lkKSB7CisgICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKyB9CisgCisrc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b3V4MTYodm9pZCkgeworKyAgICAgICAgaW50IHI7CisrICAgICAgICB1aW50MTZfdCBsOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiMTIzNCIsICZsKTsKKysgICAgICAgIGFzc2VydF9zZShyID09IDApOworKyAgICAgICAgYXNzZXJ0X3NlKGwgPT0gMHgxMjM0KTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoImFiY2QiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKKysgICAgICAgIGFzc2VydF9zZShsID09IDB4YWJjZCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIgIDEyMzQiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKKysgICAgICAgIGFzc2VydF9zZShsID09IDB4MTIzNCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMjM0NSIsICZsKTsKKysgICAgICAgIGFzc2VydF9zZShyID09IC1FUkFOR0UpOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiLTEiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIiAgLTEiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoImp1bmsiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyM3giLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyLjMiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIiIsICZsKTsKKysgICAgICAgIGFzc2VydF9zZShyID09IC1FSU5WQUwpOworK30KKysKKyBzdGF0aWMgdm9pZCB0ZXN0X3NhZmVfYXRvdTY0KHZvaWQpIHsKKyAgICAgICAgIGludCByOworICAgICAgICAgdWludDY0X3QgbDsKK0BAIC03NDUsNiArNzgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgICAgICAgdGVzdF9zYWZlX2F0b2xsaSgpOworICAgICAgICAgdGVzdF9zYWZlX2F0b3UxNigpOworICAgICAgICAgdGVzdF9zYWZlX2F0b2kxNigpOworKyAgICAgICAgdGVzdF9zYWZlX2F0b3V4MTYoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG91NjQoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9pNjQoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9kKCk7CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKK2luZGV4IGNhN2Y3YzIzMC4uZGJmZTAyNDI5IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJod2RiLXV0aWwuaCIKKysjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1ZGV2LXV0aWwuaCIKKyAjaW5jbHVkZSAidWRldi5oIgorQEAgLTYzLDcgKzY0LDcgQEAgaW50IHVkZXZfYnVpbHRpbl9od2RiX2xvb2t1cChzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqbW9kYWxpYXNfdXNiKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgY29uc3QgY2hhciAqdiwgKnA7CistICAgICAgICBpbnQgdm4sIHBuOworKyAgICAgICAgdWludDE2X3Qgdm4sIHBuOworIAorICAgICAgICAgdiA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGRldiwgImlkVmVuZG9yIik7CisgICAgICAgICBpZiAoIXYpCitAQCAtNzEsMTIgKzcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICptb2RhbGlhc191c2Ioc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsIGNoYXIgKnMsIHNpemVfdCBzaXplKSB7CisgICAgICAgICBwID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUoZGV2LCAiaWRQcm9kdWN0Iik7CisgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworLSAgICAgICAgdm4gPSBzdHJ0b2wodiwgTlVMTCwgMTYpOworLSAgICAgICAgaWYgKHZuIDw9IDApCistICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworLSAgICAgICAgcG4gPSBzdHJ0b2wocCwgTlVMTCwgMTYpOworLSAgICAgICAgaWYgKHBuIDw9IDApCistICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgaWYgKHNhZmVfYXRvdXgxNih2LCAmdm4pIDwgMCkKKysJCXJldHVybiBOVUxMOworKyAgICAgICAgaWYgKHNhZmVfYXRvdXgxNihwLCAmcG4pIDwgMCkKKysJCXJldHVybiBOVUxMOworICAgICAgICAgc25wcmludGYocywgc2l6ZSwgInVzYjp2JTA0WHAlMDRYKiIsIHZuLCBwbik7CisgICAgICAgICByZXR1cm4gczsKKyB9CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmQ1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDVmMWYwNjRjODFlYTMwYWNmOTNjZmEwZmI0NjZiMzhmMDk0ZjQ4OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyNyBNYXkgMjAxOCAwODozNjo0NCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgZ2xpYmMgY29tcGF0aWJsZSBiYXNlbmFtZSgpIGZvciBub24tZ2xpYmMgc3lzdGVtcworCitGaXhlcyBidWlsZHMgd2l0aCBtdXNsLCBldmVuIHRob3VnaCBzeXN0ZW1kIGlzIGFkYW1hbnQgYWJvdXQKK3VzaW5nIG5vbi1wb3NpeCBiYXNlbmFtZSBpbXBsZW1lbnRhdGlvbiwgd2UgaGF2ZSBhIHdheSBvdXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCitpbmRleCAyZDc4MDY0OTFiLi45YTNiZGIxZDc2IDEwMDY0NAorLS0tIGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKKysrKyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCitAQCAtMjksNiArMjksMTAgQEAKKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisgI3VuZGVmIGJhc2VuYW1lCisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIGJhc2VuYW1lKHNyYykgKHN0cnJjaHIoc3JjLCcvJykgPyBzdHJyY2hyKHNyYywnLycpKzEgOiBzcmMpCisrI2VuZGlmCisrCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiYnVzLWNvbW1vbi1lcnJvcnMuaCIKKyAjaW5jbHVkZSAiYnVzLWludGVybmFsLmgiCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kL2xpYm1vdW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTlkNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaApAQCAtMCwwICsxLDc1IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDIyN2I4YTc2MmZlYTE0NTg1NDdiZTJjZGYwZTZlNGFhYzAwNzk3MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KK0RhdGU6IE1vbiwgMjYgTWFyIDIwMTggMTc6MzQ6NTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29yZTogZG9uJ3QgaW5jbHVkZSBsaWJtb3VudC5oIGluIGEgaGVhZGVyIGZpbGUgKCM4NTgwKQorCitsaW51eC9mcy5oIHN5cy9tb3VudC5oLCBsaWJtb3VudC5oIGFuZCBtaXNzaW5nLmggYWxsIGluY2x1ZGUgTVNfKgorZGVmaW5pdGlvbnMuCisKK1RvIGF2b2lkIHByb2JsZW1zLCBvbmx5IG9uZSBvZiBsaW51eC9mcy5oLCBzeXMvbW91bnQuaCBhbmQgbGlibW91bnQuaAorc2hvdWxkIGJlIGluY2x1ZGVkLiBBbmQgbWlzc2luZy5oIG11c3QgYmUgaW5jbHVkZWQgbGFzdC4KKworV2l0aG91dCB0aGlzLCBidWlsZGluZyBzeXN0ZW1kIG1heSBmYWlsIHdpdGg6CisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBbLi4uXS9saWJtb3VudC9saWJtb3VudC5oOjMxOjAsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvbWFuYWdlci5oOjIzLAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL2VtZXJnZW5jeS1hY3Rpb24uaDozNywKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS91bml0Lmg6MzQsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvZGJ1cy10aW1lci5oOjI1LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL3RpbWVyLmM6MjY6CitbLi4uXS9zeXMvbW91bnQuaDo1NzoyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAorLS0tCisgc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMgfCAxICsKKyBzcmMvY29yZS9tYW5hZ2VyLmggICAgICB8IDMgKystCisgc3JjL2NvcmUvbW91bnQuYyAgICAgICAgfCAyICsrCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKK2luZGV4IDczNDQ2MjNlYmY2Li5jMzQyMDkzYmNhNCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCisrKysgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworQEAgLTE4LDYgKzE4LDcgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKysjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisgI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmggYi9zcmMvY29yZS9tYW5hZ2VyLmgKK2luZGV4IDI4YzVkYTIyNWIxLi5lMDllMGNkZjVlOSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL21hbmFnZXIuaAorKysrIGIvc3JjL2NvcmUvbWFuYWdlci5oCitAQCAtMjAsNyArMjAsNiBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorLSNpbmNsdWRlIDxsaWJtb3VudC5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCitAQCAtMzQsNiArMzMsOCBAQAorICNpbmNsdWRlICJsaXN0LmgiCisgI2luY2x1ZGUgInJhdGVsaW1pdC5oIgorIAorK3N0cnVjdCBsaWJtbnRfbW9uaXRvcjsKKysKKyAvKiBFbmZvcmNlIHVwcGVyIGxpbWl0IGhvdyBtYW55IG5hbWVzIHdlIGFsbG93ICovCisgI2RlZmluZSBNQU5BR0VSX01BWF9OQU1FUyAxMzEwNzIgLyogMTI4SyAqLworIAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21vdW50LmMgYi9zcmMvY29yZS9tb3VudC5jCitpbmRleCAwZTc1NWRhNWMwMi4uMDE1NGViZGE1ZDYgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tb3VudC5jCisrKysgYi9zcmMvY29yZS9tb3VudC5jCitAQCAtMjMsNiArMjMsOCBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KKyAKKysjaW5jbHVkZSA8bGlibW91bnQuaD4KKysKKyAjaW5jbHVkZSAic2QtbWVzc2FnZXMuaCIKKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFlNzZmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3NoCi0KLWNkIHRlc3RzCi10YXIgLUMgdGVzdCAteEpmIHRlc3Qvc3lzLnRhci54egotbWFrZSBjaGVjay1URVNUUwotY2QgLi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZTI3YmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NDEgKzAsMCBAQAotcmVxdWlyZSBzeXN0ZW1kLmluYwotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1QRSA9ICIxIgotCi1ERVBFTkRTID0gImttb2QgaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBhY2wgcmVhZGxpbmUgbGliY2FwIGxpYmNncm91cCB1dGlsLWxpbnV4IgotCi1TRUNUSU9OID0gImJhc2Uvc2hlbGwiCi0KLWluaGVyaXQgdXNlcmFkZCBwa2djb25maWcgYXV0b3Rvb2xzIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgcHRlc3QgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC5naXQ7cHJvdG9jb2w9Z2l0IFwKLSAgICAgICAgICAgZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3JtLXN0cm5kdXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX3FlbXVhbGwgPSAiIGZpbGU6Ly8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2giCi0KLVBBTV9QTFVHSU5TID0gIiBcCi0gICAgcGFtLXBsdWdpbi11bml4IFwKLSAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKLSAgICBwYW0tcGx1Z2luLWtleWluaXQgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKLSAgICBiYWNrbGlnaHQgXAotICAgIGJpbmZtdCBcCi0gICAgZmlyc3Rib290IFwKLSAgICBoaWJlcm5hdGUgXAotICAgIGhvc3RuYW1lZCBcCi0gICAgaW1hIFwKLSAgICBsb2NhbGVkIFwKLSAgICBsb2dpbmQgXAotICAgIG1hY2hpbmVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuZXR3b3JrZCBcCi0gICAgbnNzIFwKLSAgICBwb2xraXQgXAotICAgIHF1b3RhY2hlY2sgXAotICAgIHJhbmRvbXNlZWQgXAotICAgIHJlc29sdmVkIFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHRpbWVkYXRlZCBcCi0gICAgdGltZXN5bmNkIFwKLSAgICB1dG1wIFwKLSAgICB2Y29uc29sZSBcCi0gICAgeHogXAotIgotCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKLSAgICBsb2NhbGVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuc3MgXAotICAgIHJlc29sdmVkIFwKLSAgICBzZWxpbnV4IFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHV0bXAgXAotIgotCi0jIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KLSMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYwotIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgotCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLWVuYWJsZS1hdWRpdCwtLWRpc2FibGUtYXVkaXQsYXVkaXQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLS1lbmFibGUtYmFja2xpZ2h0LC0tZGlzYWJsZS1iYWNrbGlnaHQiCi1QQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLS1lbmFibGUtYmluZm10LC0tZGlzYWJsZS1iaW5mbXQiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLWVuYWJsZS1iemlwMiwtLWRpc2FibGUtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItLWVuYWJsZS1jb3JlZHVtcCwtLWRpc2FibGUtY29yZWR1bXAiCi1QQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi0tZW5hYmxlLWxpYmNyeXB0c2V0dXAsLS1kaXNhYmxlLWxpYmNyeXB0c2V0dXAsY3J5cHRzZXR1cCIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgotUEFDS0FHRUNPTkZJR1tlZmldID0gIi0tZW5hYmxlLWVmaSwtLWRpc2FibGUtZWZpIgotUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLS1lbmFibGUtZWxmdXRpbHMsLS1kaXNhYmxlLWVsZnV0aWxzLGVsZnV0aWxzIgotUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi0tZW5hYmxlLWZpcnN0Ym9vdCwtLWRpc2FibGUtZmlyc3Rib290IgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0tZW5hYmxlLWdjcnlwdCwtLWRpc2FibGUtZ2NyeXB0LGxpYmdjcnlwdCIKLVBBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItLWVuYWJsZS1oaWJlcm5hdGUsLS1kaXNhYmxlLWhpYmVybmF0ZSIKLVBBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItLWVuYWJsZS1ob3N0bmFtZWQsLS1kaXNhYmxlLWhvc3RuYW1lZCIKLVBBQ0tBR0VDT05GSUdbaW1hXSA9ICItLWVuYWJsZS1pbWEsLS1kaXNhYmxlLWltYSIKLSMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0Ci1QQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi0tZW5hYmxlLWltcG9ydGQsLS1kaXNhYmxlLWltcG9ydGQiCi0jIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKLVBBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLS1lbmFibGUtbGliaXB0YywtLWRpc2FibGUtbGliaXB0YyxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbam91cm5hbC11cGxvYWRdID0gIi0tZW5hYmxlLWxpYmN1cmwsLS1kaXNhYmxlLWxpYmN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi0tZW5hYmxlLWxkY29uZmlnLC0tZGlzYWJsZS1sZGNvbmZpZyIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLWVuYWJsZS1saWJpZG4sLS1kaXNhYmxlLWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi0tZW5hYmxlLWxvY2FsZWQsLS1kaXNhYmxlLWxvY2FsZWQiCi1QQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLS1lbmFibGUtbG9naW5kLC0tZGlzYWJsZS1sb2dpbmQiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLS1lbmFibGUtbHo0LC0tZGlzYWJsZS1sejQsbHo0IgotUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLS1lbmFibGUtbWFjaGluZWQsLS1kaXNhYmxlLW1hY2hpbmVkIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsLS1kaXNhYmxlLW1hbnBhZ2VzLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi0tZW5hYmxlLW1pY3JvaHR0cGQsLS1kaXNhYmxlLW1pY3JvaHR0cGQsbGlibWljcm9odHRwZCIKLVBBQ0tBR0VDT05GSUdbbXlob3N0bmFtZV0gPSAiLS1lbmFibGUtbXlob3N0bmFtZSwtLWRpc2FibGUtbXlob3N0bmFtZSIKLVBBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi0tZW5hYmxlLW5ldHdvcmtkLC0tZGlzYWJsZS1uZXR3b3JrZCIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLWVuYWJsZS1uc3Mtc3lzdGVtZCwtLWRpc2FibGUtbnNzLXN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLC0tZGlzYWJsZS1wYW0sbGlicGFtLCR7UEFNX1BMVUdJTlN9IgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwtLWRpc2FibGUtcG9sa2l0IgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtcXJlbmNvZGUsLS1kaXNhYmxlLXFyZW5jb2RlLHFyZW5jb2RlIgotUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItLWVuYWJsZS1xdW90YWNoZWNrLC0tZGlzYWJsZS1xdW90YWNoZWNrIgotUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItLWVuYWJsZS1yYW5kb21zZWVkLC0tZGlzYWJsZS1yYW5kb21zZWVkIgotUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLS1lbmFibGUtcmVzb2x2ZWQsLS1kaXNhYmxlLXJlc29sdmVkIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi0tZW5hYmxlLXJma2lsbCwtLWRpc2FibGUtcmZraWxsIgotIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLS1lbmFibGUtc2VjY29tcCwtLWRpc2FibGUtc2VjY29tcCxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKLVBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi0tZW5hYmxlLXNtYWNrLC0tZGlzYWJsZS1zbWFjayIKLVBBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi0tZW5hYmxlLXN5c3VzZXJzLC0tZGlzYWJsZS1zeXN1c2VycyIKLVBBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItLWVuYWJsZS10aW1lZGF0ZWQsLS1kaXNhYmxlLXRpbWVkYXRlZCIKLVBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItLWVuYWJsZS10aW1lc3luY2QsLS1kaXNhYmxlLXRpbWVzeW5jZCIKLVBBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi0tZGlzYWJsZS1zcGxpdC11c3IsLS1lbmFibGUtc3BsaXQtdXNyIgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItLWVuYWJsZS11dG1wLC0tZGlzYWJsZS11dG1wIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9eWVzIGFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPXllcyxhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD1ubyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbdmNvbnNvbGVdID0gIi0tZW5hYmxlLXZjb25zb2xlLC0tZGlzYWJsZS12Y29uc29sZSwsJHtQTn0tdmNvbnNvbGUtc2V0dXAiCi0jIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKLVBBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLWVuYWJsZS14eiwtLWRpc2FibGUteHoseHoiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIEFDX1BST0dfUEFUSCBpbiB0aGUgc3lzdGVtZAotIyBjb25maWd1cmUgc2NyaXB0IGRldGVjdGluZyBhbmQgc2V0dGluZyBwYXRocyBmcm9tIHN5c3Jvb3Qgb3IgaG9zdC4KLUNBQ0hFRF9DT05GSUdVUkVWQVJTX2NsYXNzLXRhcmdldCA9ICIgXAotICAgIGFjX2N2X3BhdGhfS0VYRUM9JHtzYmluZGlyfS9rZXhlYyBcCi0gICAgYWNfY3ZfcGF0aF9LSUxMPSR7YmFzZV9iaW5kaXJ9L2tpbGwgXAotICAgIGFjX2N2X3BhdGhfS01PRD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKLSAgICBhY19jdl9wYXRoX01PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAotICAgIGFjX2N2X3BhdGhfUVVPVEFDSEVDSz0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAotICAgIGFjX2N2X3BhdGhfUVVPVEFPTj0ke3NiaW5kaXJ9L3F1b3Rhb24gXAotICAgIGFjX2N2X3BhdGhfU1VMT0dJTj0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCi0gICAgYWNfY3ZfcGF0aF9VTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS91bW91bnQgXAotIgotCi0jIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncwotIyBidWlsZCBzeXN0ZW0uCi1yb290cHJlZml4ID89ICIke3Jvb3RfcHJlZml4fSIKLXJvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igotcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aG91dC1weXRob24gXAotICAgIC0td2l0aC1yb290aG9tZWRpcj0ke1JPT1RfSE9NRX0gXAotICAgIC0td2l0aC1yb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAotICAgIC0td2l0aC1zeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAotICAgIC0td2l0aC1maXJtd2FyZS1wYXRoPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUgXAotIgotCi0jIHBlciB0aGUgc3lzdGVtZCBSRUFETUUsIGRlZmluZSBWQUxHUklORD0xIHRvIHJ1biB1bmRlciB2YWxncmluZAotQ0ZMQUdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxncmluZCcsICcgLURWQUxHUklORD0xJywgJycsIGQpfSIKLQotIyBkaXNhYmxlIHByb2JsZW1hdGljIEdDQyA1LjIgb3B0aW1pemF0aW9ucyBbWU9DVE8gIzgyOTFdCi1GVUxMX09QVElNSVpBVElPTl9hcHBlbmRfYXJtID0gIiAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5zbnMyIgotCi1DT01QSUxFUl9OTSA/PSAiJHtIT1NUX1BSRUZJWH1nY2Mtbm0iCi1DT01QSUxFUl9BUiA/PSAiJHtIT1NUX1BSRUZJWH1nY2MtYXIiCi1DT01QSUxFUl9SQU5MSUIgPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLXJhbmxpYiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JZXhwb3J0IE5NPSIke0NPTVBJTEVSX05NfSIKLQlleHBvcnQgQVI9IiR7Q09NUElMRVJfQVJ9IgotCWV4cG9ydCBSQU5MSUI9IiR7Q09NUElMRVJfUkFOTElCfSIKLQlleHBvcnQgS01PRD0iJHtiYXNlX2JpbmRpcn0va21vZCIKLQlpZiBbIC1kICR7U30vdW5pdHMucHJlX3NlZCBdIDsgdGhlbgotCQljcCAtciAke1N9L3VuaXRzLnByZV9zZWQgJHtTfS91bml0cwotCWVsc2UKLQkJY3AgLXIgJHtTfS91bml0cyAke1N9L3VuaXRzLnByZV9zZWQKLQlmaQotCXNlZCAtaSAtZSAnczotRFRFU1RfRElSPVxcXCIuKlxcXCI6LURURVNUX0RJUj1cXFwiJHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0XFxcIjonICR7U30vTWFrZWZpbGUuYW0KLQlzZWQgLWkgLWUgJ3M6LURDQVRBTE9HX0RJUj1cXFwiLipcXFwiOi1EQ0FUQUxPR19ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZ1xcXCI6JyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKLQkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgotCWZpCi0KLQkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCi0JWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKLQlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKLQotCSMgQ3JlYXRlIG1hY2hpbmUtaWQKLQkjIDIwOjEyIDwgbWV6Y2FsZXJvPiBrb2VuOiB5b3UgaGF2ZSB0aHJlZSBvcHRpb25zOiBhKSBydW4gc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIGF0IGluc3RhbGwgdGltZSwgYikgaGF2ZSAvIHJlYWQtb25seSBhbmQgYW4gZW1wdHkgZmlsZSB0aGVyZSAoZm9yIHN0YXRlbGVzcykgYW5kIGMpIGJvb3Qgd2l0aCAvIHdyaXRhYmxlCi0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLQkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgotCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKLQotCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JZmkKLQotCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KLQlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0JIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0Ci0Jc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAotCWVsc2UKLQkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLQotCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgotCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKLQkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCWZpCi0JZmkKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JIyBpbnN0YWxsIGRhdGEgZmlsZXMgbmVlZGVkIGZvciB0ZXN0cwotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotCWNwIC1yZkwgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotCSMgcHl0aG9uIGlzIGRpc2FibGVkIGZvciBzeXN0ZW1kLCB0aHVzIHJlbW92aW5nIHRoZXNlIHB5dGhvbiB0ZXN0aW5nIHNjcmlwdHMKLQlybSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LyoucHkKLQlzZWQgLWkgJ3MvInRyZWUiLyJscyIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0L3VkZXYtdGVzdC5wbAotCi0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nCi0JaW5zdGFsbCAke1N9L2NhdGFsb2cvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nLwotCi0JaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMKLQlpbnN0YWxsICR7Qn0vcnVsZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcy8KLQotCSMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgdGhlcmUgZm9yIHVkZXYtdGVzdC5wbCB0byB3b3JrLgotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS91ZGV2L3J1bGVzLmQKLQotCSMgaW5zdGFsbCBhY3R1YWwgdGVzdCBiaW5hcmllcwotCWluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0KLQlpbnN0YWxsICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpewotICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWd1aSBcCi0gICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAotICAgICR7UE59LWluaXRyYW1mcyBcCi0gICAgJHtQTn0tYW5hbHl6ZSBcCi0gICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAotICAgICR7UE59LXJwbS1tYWNyb3MgXAotICAgICR7UE59LWJpbmZtdCBcCi0gICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAotICAgICR7UE59LXhvcmcteGluaXRyYyBcCi0gICAgJHtQTn0tY29udGFpbmVyIFwKLSAgICAke1BOfS1leHRyYS11dGlscyBcCi0iCi0KLVNVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCi1ERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5OycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJy0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS9wb2xraXQtMSBwb2xraXRkOycsICcnLCBkKX0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBsb2NrOyAtciBzeXN0ZW1kLWpvdXJuYWwiCi1VU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzICs9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5OyIKLQotRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgotCi1GSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCi1SREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJnYXdrIG1ha2UgcGVybCBiYXNoIHh6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hc2lhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtZXVyb3BlIHR6ZGF0YS1hZnJpY2EgdHpkYXRhLWFudGFyY3RpY2EgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1wYWNpZmljIHR6ZGF0YS1wb3NpeCIKLQotRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7bGliZGlyfS91ZGV2L3J1bGVzLmQiCi0KLUZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgotCi1GSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgotRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LXhvcmcteGluaXRyYyA9ICIke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiIKLQotRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCi0KLUZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLVJSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgotCi1SUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKLQotRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAotIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIgotCi1GSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvZW52aXJvbm1lbnQuZCBcCi0gICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZWRhdGUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2NhbGUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5uZXR3b3JrMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5ob3N0bmFtZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5jb25mIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgotCi1SREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSB1dGlsLWxpbnV4LWFnZXR0eSIKLVJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgotUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKLSAgICAgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4LWZzY2sgZTJmc3Byb2dzLWUyZnNjayBcCi0gICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYgXAotICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIGxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyArPSAibGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZG9jICs9ICIgbGliZGlyIgotCi1QQUNLQUdFUyA9KyAidWRldiB1ZGV2LWh3ZGIiCi0KLVJQUk9WSURFU191ZGV2ID0gImhvdHBsdWciCi0KLVJERVBFTkRTX3VkZXYtaHdkYiArPSAidWRldiIKLQotRklMRVNfdWRldiArPSAiJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2FjY2VsZXJvbWV0ZXIgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hdGFfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jZHJvbV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2NvbGxlY3QgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maW5ka2V5Ym9hcmRzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5Ym9hcmQtZm9yY2UtcmVsZWFzZS5zaCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L210ZF9wcm9iZSBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Njc2lfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi92NGxfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXBzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC8qLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRldiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi53YW50cy8qdWRldiogXAotICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgIgotCi1GSUxFU191ZGV2LWh3ZGIgPSAiJHtyb290bGliZXhlY2Rpcn0vdWRldi9od2RiLmQiCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAidWRldiIKLUlOSVRTQ1JJUFRfTkFNRV91ZGV2ID0gInN5c3RlbWQtdWRldmQiCi1JTklUU0NSSVBUX1BBUkFNU191ZGV2ID0gInN0YXJ0IDAzIFMgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotIyBUT0RPOgotIyB1LWEgZm9yIHJ1bmxldmVsIGFuZCB0ZWxpbml0Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImluaXQgaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgcmVzb2x2LWNvbmYiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtpbml0XSA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW5pdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2luaXQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtpbml0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCi1BTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3ByZXJtXyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgewotCWlmIHRlc3QgLW4gIiREIjsgdGhlbgotCQkke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSBcCi0JCQktLXJvb3QgJEQKLQkJY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi0JZWxzZQotCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLQlmaQotfQotCi1wa2dfcHJlcm1fdWRldi1od2RiICgpIHsKLQlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQotCi0jIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCi0jIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNjU1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNy5iYgpAQCAtMCwwICsxLDU5NSBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworCitQUk9WSURFUyA9ICJ1ZGV2IgorCitQRSA9ICIxIgorCitERVBFTkRTID0gImttb2QgaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBhY2wgcmVhZGxpbmUgbGliY2FwIGxpYmNncm91cCB1dGlsLWxpbnV4IgorCitTRUNUSU9OID0gImJhc2Uvc2hlbGwiCisKK2luaGVyaXQgdXNlcmFkZCBwa2djb25maWcgbWVzb24gcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbworIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworU1JDX1VSSSArPSAiZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWNoZWNrLWZvci11Y2hhci5oLWluLW1lc29uLmJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItbWVtZmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMy1iYXNpYy1tYWNyb3MtcmVuYW1lLW5vcmV0dXJuLWludG8tX25vcmV0dXJuXy04NDU2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYm1vdW50LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgorCisjIFdvcmthcm91bmQgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zdGFja19jaGtfZmFpbF9sb2NhbCcgb24gcWVtdXg4NiBhbmQgcWVtdXBwYyBmb3IgbXVzbAorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3FlbXV4ODYgPSAiIGZpbGU6Ly8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2giCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2xfcWVtdXBwYyA9ICIgZmlsZTovLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCIKKworUEFNX1BMVUdJTlMgPSAiIFwKKyAgICBwYW0tcGx1Z2luLXVuaXggXAorICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAorICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBsZGNvbmZpZyBwYW0gc2VsaW51eCB1c3JtZXJnZScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAorICAgIGJhY2tsaWdodCBcCisgICAgYmluZm10IFwKKyAgICBmaXJzdGJvb3QgXAorICAgIGhpYmVybmF0ZSBcCisgICAgaG9zdG5hbWVkIFwKKyAgICBpbWEgXAorICAgIGxvY2FsZWQgXAorICAgIGxvZ2luZCBcCisgICAgbWFjaGluZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5ldHdvcmtkIFwKKyAgICBuc3MgXAorICAgIHBvbGtpdCBcCisgICAgcXVvdGFjaGVjayBcCisgICAgcmFuZG9tc2VlZCBcCisgICAgcmVzb2x2ZWQgXAorICAgIHNtYWNrIFwKKyAgICBzeXN1c2VycyBcCisgICAgdGltZWRhdGVkIFwKKyAgICB0aW1lc3luY2QgXAorICAgIHV0bXAgXAorICAgIHZjb25zb2xlIFwKKyAgICB4eiBcCisiCisKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICIgXAorICAgIGxvY2FsZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5zcyBcCisgICAgcmVzb2x2ZWQgXAorICAgIHNlbGludXggXAorICAgIHNtYWNrIFwKKyAgICBzeXN1c2VycyBcCisgICAgdXRtcCBcCisiCisKKyMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgorIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCisjIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi1EYXVkaXQ9dHJ1ZSwtRGF1ZGl0PWZhbHNlLGF1ZGl0IgorUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi1EYmFja2xpZ2h0PXRydWUsLURiYWNrbGlnaHQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLURiaW5mbXQ9dHJ1ZSwtRGJpbmZtdD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi1EYnppcDI9dHJ1ZSwtRGJ6aXAyPWZhbHNlLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLURjb3JlZHVtcD10cnVlLC1EY29yZWR1bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi1EbGliY3J5cHRzZXR1cD10cnVlLC1EbGliY3J5cHRzZXR1cD1mYWxzZSxjcnlwdHNldHVwIgorUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItRGRidXM9dHJ1ZSwtRGRidXM9ZmFsc2UsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbZWZpXSA9ICItRGVmaT10cnVlLC1EZWZpPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLURlbGZ1dGlscz10cnVlLC1EZWxmdXRpbHM9ZmFsc2UsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLURmaXJzdGJvb3Q9dHJ1ZSwtRGZpcnN0Ym9vdD1mYWxzZSIKKyMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItRGdjcnlwdD10cnVlLC1EZ2NyeXB0PWZhbHNlLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItRGhpYmVybmF0ZT10cnVlLC1EaGliZXJuYXRlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi1EaG9zdG5hbWVkPXRydWUsLURob3N0bmFtZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLURpbWE9dHJ1ZSwtRGltYT1mYWxzZSIKKyMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0CitQQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi1EaW1wb3J0ZD10cnVlLC1EaW1wb3J0ZD1mYWxzZSIKKyMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcworUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItRGxpYmlwdGM9dHJ1ZSwtRGxpYmlwdGM9ZmFsc2UsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItRGxpYmN1cmw9dHJ1ZSwtRGxpYmN1cmw9ZmFsc2UsY3VybCIKK1BBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi1EbGRjb25maWc9dHJ1ZSwtRGxkY29uZmlnPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi1EbGliaWRuPXRydWUsLURsaWJpZG49ZmFsc2UsbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItRGxvY2FsZWQ9dHJ1ZSwtRGxvY2FsZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLURsb2dpbmQ9dHJ1ZSwtRGxvZ2luZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItRGx6ND10cnVlLC1EbHo0PWZhbHNlLGx6NCIKK1BBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi1EbWFjaGluZWQ9dHJ1ZSwtRG1hY2hpbmVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW49dHJ1ZSwtRG1hbj1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItRG1pY3JvaHR0cGQ9dHJ1ZSwtRG1pY3JvaHR0cGQ9ZmFsc2UsbGlibWljcm9odHRwZCIKK1BBQ0tBR0VDT05GSUdbbXlob3N0bmFtZV0gPSAiLURteWhvc3RuYW1lPXRydWUsLURteWhvc3RuYW1lPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuZXR3b3JrZF0gPSAiLURuZXR3b3JrZD10cnVlLC1EbmV0d29ya2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLURuc3Mtc3lzdGVtZD10cnVlLC1EbnNzLXN5c3RlbWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLURwb2xraXQ9dHJ1ZSwtRHBvbGtpdD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi1EcXJlbmNvZGU9dHJ1ZSwtRHFyZW5jb2RlPWZhbHNlLHFyZW5jb2RlIgorUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItRHF1b3RhY2hlY2s9dHJ1ZSwtRHF1b3RhY2hlY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi1EcmFuZG9tc2VlZD10cnVlLC1EcmFuZG9tc2VlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi1EcmVzb2x2ZT10cnVlLC1EcmVzb2x2ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItRHJma2lsbD10cnVlLC1EcmZraWxsPWZhbHNlIgorIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKK1BBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLURzZWNjb21wPXRydWUsLURzZWNjb21wPWZhbHNlLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi1Ec2VsaW51eD10cnVlLC1Ec2VsaW51eD1mYWxzZSxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItRHNtYWNrPXRydWUsLURzbWFjaz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi1Ec3lzdXNlcnM9dHJ1ZSwtRHN5c3VzZXJzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi1EdGltZWRhdGVkPXRydWUsLUR0aW1lZGF0ZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLUR0aW1lc3luY2Q9dHJ1ZSwtRHRpbWVzeW5jZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi1Ec3BsaXQtdXNyPWZhbHNlLC1Ec3BsaXQtdXNyPXRydWUiCitQQUNLQUdFQ09ORklHW3V0bXBdID0gIi1EdXRtcD10cnVlLC1EdXRtcD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EVkFMR1JJTkQ9MSwsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItRHZjb25zb2xlPXRydWUsLUR2Y29uc29sZT1mYWxzZSwsJHtQTn0tdmNvbnNvbGUtc2V0dXAiCisjIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItRHhrYmNvbW1vbj10cnVlLC1EeGtiY29tbW9uPWZhbHNlLGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi1EeHo9dHJ1ZSwtRHh6PWZhbHNlLHh6IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRHpsaWI9dHJ1ZSwtRHpsaWI9ZmFsc2UsemxpYiIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCisjIFRoaXMgbGlua3MgdWRldiBzdGF0aWNhbGx5IHdpdGggc3lzdGVtZCBoZWxwZXIgbGlicmFyeS4KKyMgT3RoZXJ3aXNlIHVkZXYgcGFja2FnZSB3b3VsZCBkZXBlbmQgb24gc3lzdGVtZCBwYWNrYWdlICh3aGljaCBoYXMgdGhlIG5lZWRlZCBzaGFyZWQgbGlicmFyeSksCisjIGFuZCBhbHdheXMgcHVsbCBpdCBpbnRvIGltYWdlcy4KK0VYVFJBX09FTUVTT04gKz0gIi1EbGluay11ZGV2LXNoYXJlZD1mYWxzZSIKKworRVhUUkFfT0VNRVNPTiArPSAiLURub2JvZHktdXNlcj1ub2JvZHkgXAorICAgICAgICAgICAgICAgICAgLURub2JvZHktZ3JvdXA9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGhvbWVkaXI9JHtST09USE9NRX0gXAorICAgICAgICAgICAgICAgICAgLURyb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURyb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAorICAgICAgICAgICAgICAgICAgLURzeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURmaXJtd2FyZS1wYXRoPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUgXAorICAgICAgICAgICAgICAgICAgIgorCisjIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290CitFWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCisgICAgICAgICAgICAgICAgICAtRGtpbGwtcGF0aD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKKyAgICAgICAgICAgICAgICAgIC1Ea21vZC1wYXRoPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAorICAgICAgICAgICAgICAgICAgLURtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKKyAgICAgICAgICAgICAgICAgIC1EcXVvdGFjaGVjay1wYXRoPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCisgICAgICAgICAgICAgICAgICAtRHF1b3Rhb24tcGF0aD0ke3NiaW5kaXJ9L3F1b3Rhb24gXAorICAgICAgICAgICAgICAgICAgLURzdWxvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAorICAgICAgICAgICAgICAgICAgLUR1bW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS91bW91bnQiCisKK2RvX2luc3RhbGwoKSB7CisJbWVzb25fZG9faW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQorCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCisJZmkKKworCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKKwlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAorCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAorCisJIyBDcmVhdGUgbWFjaGluZS1pZAorCSMgMjA6MTIgPCBtZXpjYWxlcm8+IGtvZW46IHlvdSBoYXZlIHRocmVlIG9wdGlvbnM6IGEpIHJ1biBzeXN0ZW1kLW1hY2hpbmUtaWQtc2V0dXAgYXQgaW5zdGFsbCB0aW1lLCBiKSBoYXZlIC8gcmVhZC1vbmx5IGFuZCBhbiBlbXB0eSBmaWxlIHRoZXJlIChmb3Igc3RhdGVsZXNzKSBhbmQgYykgYm9vdCB3aXRoIC8gd3JpdGFibGUKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL3VkZXYvdWRldi5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJCXNlZCAtaSBzJUBVREVWREAlJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCWZpCisKKwljaG93biByb290OnN5c3RlbWQtam91cm5hbCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwKKworCSMgRGVsZXRlIGpvdXJuYWwgUkVBRE1FLCBhcyBsb2cgY2FuIGJlIHN5bWxpbmtlZCBpbnNpZGUgdm9sYXRpbGUuCisJcm0gLWYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9SRUFETUUKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cworCisJIyBDcmVhdGUgc3ltbGlua3MgZm9yIHN5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V0bXAnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlmaQorCisJIyBFbmFibGUgam91cm5hbCB0byBmb3J3YXJkIG1lc3NhZ2UgdG8gc3lzbG9nIGRhZW1vbgorCXNlZCAtaSAtZSAncy8uKkZvcndhcmRUb1N5c2xvZy4qL0ZvcndhcmRUb1N5c2xvZz15ZXMvJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKwkjIFNldCB0aGUgbWF4aW1pdW0gc2l6ZSBvZiBydW50aW1lIGpvdXJuYWwgdG8gNjRNIGFzIGRlZmF1bHQKKwlzZWQgLWkgLWUgJ3MvLipSdW50aW1lTWF4VXNlLiovUnVudGltZU1heFVzZT02NE0vJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKworCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0CisJIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKKwlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgorCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQorCWZpCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZWxzZQorCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWZpCisJaW5zdGFsbCAtRG0gMDc1NSAke1N9L3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLXN5c3YtaW5zdGFsbAorCisJIyBJZiBwb2xraXQgaXMgc2V0dXAgZml4dXAgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWlmIFsgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZCBdOyB0aGVuCisJCQljaG1vZCA3MDAgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQkJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJZmkKKwlmaQorfQorCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpeworICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgorCitQQUNLQUdFUyA9KyAiXAorICAgICR7UE59LWd1aSBcCisgICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAorICAgICR7UE59LWluaXRyYW1mcyBcCisgICAgJHtQTn0tYW5hbHl6ZSBcCisgICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAorICAgICR7UE59LXJwbS1tYWNyb3MgXAorICAgICR7UE59LWJpbmZtdCBcCisgICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAorICAgICR7UE59LXhvcmcteGluaXRyYyBcCisgICAgJHtQTn0tY29udGFpbmVyIFwKKyAgICAke1BOfS1leHRyYS11dGlscyBcCisiCisKK1NVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCitERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5OycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJy0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS9wb2xraXQtMSBwb2xraXRkOycsICcnLCBkKX0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBsb2NrOyAtciBzeXN0ZW1kLWpvdXJuYWwiCitVU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzICs9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5OyIKKworRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgorCitGSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCitSREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgorCitGSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgorRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LXhvcmcteGluaXRyYyA9ICIke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiIKKworRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK0ZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKK1JSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgorCitSUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKKworRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAorIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIgorCitGSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAorICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvZW52aXJvbm1lbnQuZCBcCisgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHByb2JlLmQvc3lzdGVtZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZWRhdGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2NhbGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5uZXR3b3JrMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5ob3N0bmFtZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5jb25mIFwKKyAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgorCitSREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSB1dGlsLWxpbnV4LWFnZXR0eSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKKyAgICAgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4LWZzY2sgZTJmc3Byb2dzLWUyZnNjayBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYgXAorICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIGxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyArPSAibGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZG9jICs9ICIgbGliZGlyIgorCitQQUNLQUdFUyA9KyAidWRldiB1ZGV2LWh3ZGIiCisKK1JQUk9WSURFU191ZGV2ID0gImhvdHBsdWciCisKK1JERVBFTkRTX3VkZXYtaHdkYiArPSAidWRldiIKKworRklMRVNfdWRldiArPSAiJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2FjY2VsZXJvbWV0ZXIgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hdGFfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jZHJvbV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2NvbGxlY3QgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maW5ka2V5Ym9hcmRzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5Ym9hcmQtZm9yY2UtcmVsZWFzZS5zaCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L210ZF9wcm9iZSBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Njc2lfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi92NGxfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXBzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC8qLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRldiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi53YW50cy8qdWRldiogXAorICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgIgorCitGSUxFU191ZGV2LWh3ZGIgPSAiJHtyb290bGliZXhlY2Rpcn0vdWRldi9od2RiLmQiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAidWRldiIKK0lOSVRTQ1JJUFRfTkFNRV91ZGV2ID0gInN5c3RlbWQtdWRldmQiCitJTklUU0NSSVBUX1BBUkFNU191ZGV2ID0gInN0YXJ0IDAzIFMgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworIyBUT0RPOgorIyB1LWEgZm9yIHJ1bmxldmVsIGFuZCB0ZWxpbml0CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImluaXQgaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgcmVzb2x2LWNvbmYiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtpbml0XSA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5pdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2luaXQiCitBTFRFUk5BVElWRV9QUklPUklUWVtpbml0XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCitBTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgeworCWlmIHRlc3QgLW4gIiREIjsgdGhlbgorCQkke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSBcCisJCQktLXJvb3QgJEQKKwkJY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCisJZWxzZQorCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKwlmaQorfQorCitwa2dfcHJlcm1fdWRldi1od2RiICgpIHsKKwlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIKaW5kZXggNWI5YzQyMi4uODU4NWE0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl8yLjg4ZHNmLmJiCkBAIC01Myw4ICs1MywxNSBAQAogfQogCiBwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworIyBydW4gdGhpcyBvbiBob3N0IGFuZCBvbiB0YXJnZXQKK2lmIFsgIiR7U0VSSUFMX0NPTlNPTEVTX0NIRUNLfSIgPSAiIiBdOyB0aGVuCisgICAgICAgZXhpdCAwCitmaQorfQorCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkgewogIyBydW4gdGhpcyBvbiB0aGUgdGFyZ2V0Ci1pZiBbICJ4JEQiID0gIngiIF0gJiYgWyAtZSAvcHJvYy9jb25zb2xlcyBdOyB0aGVuCitpZiBbIC1lIC9wcm9jL2NvbnNvbGVzIF07IHRoZW4KIAl0bXA9IiR7U0VSSUFMX0NPTlNPTEVTX0NIRUNLfSIKIAlmb3IgaSBpbiAkdG1wCiAJZG8KQEAgLTY4LDExICs3NSw3IEBACiAJZG9uZQogCWtpbGwgLUhVUCAxCiBlbHNlCi0JaWYgWyAiJHtTRVJJQUxfQ09OU09MRVNfQ0hFQ0t9IiA9ICIiIF07IHRoZW4KLQkJZXhpdCAwCi0JZWxzZQotCQlleGl0IDEKLQlmaQorCWV4aXQgMQogZmkKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgppbmRleCAyMmEwZWNmLi5hZDY1ODE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgpAQCAtMjgsOSArMjgsMTEgQEAKIFMgPSAiJHtXT1JLRElSfS9zeXN2aW5pdC0ke1BWfSIKIEIgPSAiJHtTfS9zcmMiCiAKLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGRpc3Ryb19mZWF0dXJlc19jaGVjawogREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKIAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3Zpbml0IgorCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IG1vdW50cG9pbnQgaGFsdCByZWJvb3QgcnVubGV2ZWwgc2h1dGRvd24gcG93ZXJvZmYgbGFzdCBsYXN0YiBtZXNnIHV0bXBkdW1wIHdhbGwiCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKQEAgLTEwNSw4ICsxMDcsMyBAQAogCWNob3duIHJvb3Quc2h1dGRvd24gJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KIAljaG1vZCBvLXgsdStzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCiB9Ci0KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdmluaXQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJmYjIzYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLVNVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKLUxJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCi1MSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rldi5nZW50b28ub3JnL35ibHVlbmVzcy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1JldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGV2ZnMtdWRldi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2xpbmtzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbG9jYWwucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vcGVybWlzc2lvbnMucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vcnVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3VkZXYucnVsZXMgXAotIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZW50b28vZXVkZXYvcmVsZWFzZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWUxOWI3MDQ2MjY5MmZlZmQwNzJhM2YzODgxOGI2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZTRjNTZlYzJmYzE4NTRhZmQwYTMxZjNhZmZhNDhmOTIyYzYyZDQwZWUxMmEwYzFhNGI0ZjE1MmVmNWIwZjYzIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBxZW11IHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCi0gICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKLQotCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCi0KLQkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5Ci0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZQotCXNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkJJHtCfS9zcmMvdWRldi9rZXlib2FyZC1rZXlzLWZyb20tbmFtZS5oCi19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJ1ZGV2IgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDQgUyAuIgotCi1QQUNLQUdFUyA9KyAibGlidWRldiIKLVBBQ0tBR0VTID0rICJldWRldi1od2RiIgotCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7YmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKLUZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgotRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgotCi1SREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKLQotUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKLVJQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCi0KLXB5dGhvbiAoKSB7Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgewotICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgotICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgLS1yb290ICRECi0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotICAgIGVsc2UKLSAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCi0gICAgZmkKLX0KLQotcGtnX3ByZXJtX2V1ZGV2LWh3ZGIgKCkgewotICAgICAgICBybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGFkOGYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIKQEAgLTAsMCArMSw5MiBAQAorU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgorTElDRU5TRSA9ICJHUEx2Mi4wKyAmIExHUEwtMi4xKyIKK0xJQ0VOU0VfbGlidWRldiA9ICJMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGttb2QgbGlieHNsdC1uYXRpdmUgdXRpbC1saW51eCIKKworUFJPVklERVMgPSAidWRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vZGV2LmdlbnRvby5vcmcvfmJsdWVuZXNzLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2Y2EwOGMwZTE0MzgwZjg3ZGY4ZThhY2VhYzEyMzY3MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWMyZDA0MTA1Y2FkMjUyNjMwMjYyN2UwNDBmYTI0YjE5MTZhOWEzZTA1OTUzOWJjOGJiOTE5Yjk3Mzg5MGFmIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBxZW11IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisJc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcworCisJIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKKworCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lCisJc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCQkke0J9L3NyYy91ZGV2L2tleWJvYXJkLWtleXMtZnJvbS1uYW1lLmgKK30KKworSU5JVFNDUklQVF9OQU1FID0gInVkZXYiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNCBTIC4iCisKK1BBQ0tBR0VTID0rICJsaWJ1ZGV2IgorUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCisKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtiYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgorRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCitGSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCisKK1JERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgorCitSUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgorUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAorICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCmluZGV4IDZmYzZmNmUuLjc2ZDQzMTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vY2hlY2staWYtc3ltbGlua3MtYXJlLXZhbGlkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC10by1oYW5kbGUtcHJpb3JpdHktbnVtYmVycy1jb3JyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCmluZGV4IGYwZmZkMjUuLjBiN2RiNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC0yMCw3ICsyMCw3IEBACiAKICNndGstZG9jIGlzIG5vdCBlbmFibGVkIGFzIGl0IHJlcXVpcmVzIHhtbHRvIHdoaWNoIHJlcXVpcmVzIHV0aWwtbGludXgKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcyBweXRob24zLWRpciBiYXNoLWNvbXBsZXRpb24gcHRlc3QKLURFUEVORFMgPSAiemxpYiBuY3Vyc2VzIgorREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdmlydHVhbC9jcnlwdCIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgbHpvLW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbHpvLW5hdGl2ZSIKIApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgIHV0aWwtbGludXgtc3dhcG9ub2ZmIHV0aWwtbGludXgtbG9zZXR1cCB1dGlsLWxpbnV4LXVtb3VudCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXJlYWRwcm9maWxlIHV0aWwtbGludXgtdXVpZGQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtdXVpZGdlbiB1dGlsLWxpbnV4LWxzY3B1IHV0aWwtbGludXgtZnNjay5jcmFtZnMgdXRpbC1saW51eC1mc2NrIFwKLSAgICAgICAgICAgICB1dGlsLWxpbnV4LWJsa2lkIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1jb29raWUgdXRpbC1saW51eC1yZXNldCBcCisgICAgICAgICAgICAgdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tY29va2llIHV0aWwtbGludXgtcmZraWxsIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LWxzYmxrIHV0aWwtbGludXgtbWtmcy5jcmFtZnMgdXRpbC1saW51eC1mc3RyaW0gXAogICAgICAgICAgICAgIHV0aWwtbGludXgtcGFydHggdXRpbC1saW51eC1od2Nsb2NrIHV0aWwtbGludXgtbW91bnRwb2ludCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1maW5kZnMgdXRpbC1saW51eC1nZXRvcHQgdXRpbC1saW51eC1zdWxvZ2luIHV0aWwtbGludXgtcHJsaW1pdCBcCkBAIC00NCw3ICs0NCw3IEBACiBTSEFSRURfRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1ha2VpbnN0YWxsLWNob3duIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUta2lsbCAtLWVuYWJsZS1sYXN0IC0tZW5hYmxlLW1lc2cgLS1lbmFibGUtcGFydHggXAotICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1yYXcgLS1lbmFibGUtcmVzZXQgLS1kaXNhYmxlLWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtcmF3IC0tZW5hYmxlLXJma2lsbCAtLWRpc2FibGUtbG9naW4gXAogICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmlwdyAtLWRpc2FibGUtbmV3Z3JwIC0tZGlzYWJsZS1jaGZuLWNoc2ggXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS13cml0ZSAtLWVuYWJsZS1tb3VudCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYnV1aWQgLS1lbmFibGUtbGliYmxraWQgLS1lbmFibGUtZnNjayBcCkBAIC04Niw3ICs4Niw3IEBACiBGSUxFU191dGlsLWxpbnV4LXJlYWRwcm9maWxlID0gIiR7c2JpbmRpcn0vcmVhZHByb2ZpbGUuJHtCUE59IgogRklMRVNfdXRpbC1saW51eC11dWlkZ2VuID0gIiR7YmluZGlyfS91dWlkZ2VuIgogRklMRVNfdXRpbC1saW51eC11dWlkZCA9ICIke3NiaW5kaXJ9L3V1aWRkIgotRklMRVNfdXRpbC1saW51eC1yZXNldCA9ICIke2Jhc2VfYmluZGlyfS9yZXNldCoiCitGSUxFU191dGlsLWxpbnV4LXJma2lsbCA9ICIke3NiaW5kaXJ9L3Jma2lsbCoiCiBGSUxFU191dGlsLWxpbnV4LXBhcnR4ID0gIiR7c2JpbmRpcn0vcGFydHgiCiBGSUxFU191dGlsLWxpbnV4LWh3Y2xvY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2h3Y2xvY2suJHtCUE59IgogRklMRVNfdXRpbC1saW51eC1maW5kZnMgPSAiJHtzYmluZGlyfS9maW5kZnMiCkBAIC0xMTksOSArMTE5LDYgQEAKIFJDT05GTElDVFNfdXRpbC1saW51eC1ibGtpZCA9ICJlMmZzcHJvZ3MtYmxraWQiCiBSUkVQTEFDRVNfdXRpbC1saW51eC1ibGtpZCA9ICJlMmZzcHJvZ3MtYmxraWQiCiAKLSMgcmVzZXQgY2FsbHMgJ3RwdXQnCi1SREVQRU5EU191dGlsLWxpbnV4LXJlc2V0ICs9ICJuY3Vyc2VzIgotCiBSREVQRU5EU191dGlsLWxpbnV4LXJ1bnVzZXIgKz0gImxpYnBhbSIKIFJERVBFTkRTX3V0aWwtbGludXgtc3UgKz0gImxpYnBhbSIKIApAQCAtMTYwLDcgKzE1Nyw3IEBACiAKICAgICAgICAgc2JpbnByb2dzPSJhZ2V0dHkgY3RybGFsdGRlbCBjZmRpc2sgdmlwdyB2aWdyIgogICAgICAgICBzYmlucHJvZ3NfYT0icGl2b3Rfcm9vdCBod2Nsb2NrIG1rc3dhcCBta2ZzLm1pbml4IGZzY2subWluaXggbG9zZXR1cCBzd2Fwb24gc3dhcG9mZiBmZGlzayBmc2NrIGJsa2lkIGJsb2NrZGV2IGZzdHJpbSBzdWxvZ2luIHN3aXRjaF9yb290IG5vbG9naW4iCi0gICAgICAgIGJpbnByb2dzX2E9ImRtZXNnIGdldG9wdCBraWxsIG1vcmUgdW1vdW50IG1vdW50IGxvZ2luIHJlc2V0IHN1IG1vdW50cG9pbnQiCisgICAgICAgIGJpbnByb2dzX2E9ImRtZXNnIGdldG9wdCBraWxsIG1vcmUgdW1vdW50IG1vdW50IGxvZ2luIHN1IG1vdW50cG9pbnQiCiAKICAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgogICAgICAgICAJbWtkaXIgLXAgJHtEfSR7YmFzZV9zYmluZGlyfQpAQCAtMTk4LDE3ICsxOTUsMTggQEAKIAlmaQogfQogCi0jIHJlc2V0IGFuZCBub2xvZ2luIGNhdXNlcyBhIGNvbmZsaWN0IHdpdGggbmN1cnNlcy1uYXRpdmUgYW5kIHNoYWRvdy1uYXRpdmUKKyMgbm9sb2dpbiBjYXVzZXMgYSBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKKyMga2lsbCBjYXVzZXMgYSBjb25mbGljdCB3aXRoIGNvcmV1dGlscy1uYXRpdmUgKGlmICR7YmluZGlyfT09JHtiYXNlX2JpbmRpcn0pCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCXJtIC1mICR7RH0ke2Jhc2VfYmluZGlyfS9yZXNldAogCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbgorCXJtIC1mICR7RH0ke2Jhc2VfYmluZGlyfS9raWxsCiB9CiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgogCiBBTFRFUk5BVElWRV8ke1BOfSAgPSAiZG1lc2cga2lsbCBtb3JlIG1rc3dhcCBibG9ja2RldiBwaXZvdF9yb290IHN3aXRjaF9yb290IgogQUxURVJOQVRJVkVfJHtQTn0gKz0gImhleGR1bXAgbGFzdCBsYXN0YiBsb2dnZXIgbWVzZyByZW5pY2Ugd2FsbCIKLUFMVEVSTkFUSVZFXyR7UE59ICs9ICJzZXRzaWQgY2hydCBmbG9jayB1dG1wZHVtcCBlamVjdCBub2xvZ2luIgorQUxURVJOQVRJVkVfJHtQTn0gKz0gInNldHNpZCBjaHJ0IGZsb2NrIHV0bXBkdW1wIGVqZWN0IG5vbG9naW4gdGFza3NldCIKIAogQUxURVJOQVRJVkVfTElOS19OQU1FW2RtZXNnXSA9ICIke2Jhc2VfYmluZGlyfS9kbWVzZyIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsXSA9ICIke2Jhc2VfYmluZGlyfS9raWxsIgpAQCAtMjIwLDE0ICsyMTgsMTQgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtlamVjdF0gPSAiJHtiaW5kaXJ9L2VqZWN0IgogQUxURVJOQVRJVkVfTElOS19OQU1FW25vbG9naW5dID0gIiR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIgogCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAibW91bnRwb2ludC4xIGxhc3QuMSBsYXN0Yi4xIG1lc2cuMSB3YWxsLjEgbm9sb2dpbi44IHN1bG9naW4uOCB1dG1wZHVtcC4xIHJlc2V0LjEga2lsbC4xIGxpYmJsa2lkLjMgYmxraWQuOCBmaW5kZnMuOCBmc2NrLjggdXVpZC4zIGVqZWN0LjEgbG9nZ2VyLjEiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAibW91bnRwb2ludC4xIGxhc3QuMSBsYXN0Yi4xIG1lc2cuMSB3YWxsLjEgbm9sb2dpbi44IHN1bG9naW4uOCB1dG1wZHVtcC4xIHJma2lsbC44IGtpbGwuMSBsaWJibGtpZC4zIGJsa2lkLjggZmluZGZzLjggZnNjay44IHV1aWQuMyBlamVjdC4xIGxvZ2dlci4xIgogCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0LjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdGIuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdGIuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVttZXNnLjFdID0gIiR7bWFuZGlyfS9tYW4xL21lc2cuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vdW50cG9pbnQuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L25vbG9naW4uOCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNldC4xXSA9ICIke21hbmRpcn0vbWFuMS9yZXNldC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jma2lsbC44XSA9ICIke21hbmRpcn0vbWFuOC9yZmtpbGwuOCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L3N1bG9naW4uOCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt1dG1wZHVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS91dG1wZHVtcC4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3dhbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEvd2FsbC4xIgpAQCAtMjcyLDkgKzI3MCw4IEBACiBBTFRFUk5BVElWRV91dGlsLWxpbnV4LWJsa2lkID0gImJsa2lkIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2Jsa2lkXSA9ICIke2Jhc2Vfc2JpbmRpcn0vYmxraWQiCiAKLUFMVEVSTkFUSVZFX3V0aWwtbGludXgtcmVzZXQgPSAicmVzZXQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzZXRdID0gIiR7YmluZGlyfS9yZXNldCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNldF0gPSAiJHtiYXNlX2JpbmRpcn0vcmVzZXQiCitBTFRFUk5BVElWRV91dGlsLWxpbnV4LXJma2lsbCA9ICJyZmtpbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmZraWxsXSA9ICIke3NiaW5kaXJ9L3Jma2lsbCIKIAogQUxURVJOQVRJVkVfdXRpbC1saW51eC1nZXRvcHQgPSAiZ2V0b3B0IgogQUxURVJOQVRJVkVfTElOS19OQU1FW2dldG9wdF0gPSAiJHtiYXNlX2JpbmRpcn0vZ2V0b3B0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggNDZkNGQzNy4uNzQ4YjZlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCkBAIC01LDE1ICs1LDE2IEBACiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgIDx0dWRvci5mbG9yZWFAZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgCiAKLWRpZmYgLXJ1TiBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotLS0tIGEvY29uZmlndXJlLmFjCTIwMTQtMDUtMjcgMTI6Mzc6NDIuMTE5NzcyNjU4ICswMjAwCi0rKysgYi9jb25maWd1cmUuYWMJMjAxNC0wNS0yNyAxMjo0MTo0Ni4yMjU1NzMyNzIgKzAyMDAKLUBAIC0xMCw3ICsxMCw3IEBACitJbmRleDogdXRpbC1saW51eC0yLjMyL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHV0aWwtbGludXgtMi4zMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHV0aWwtbGludXgtMi4zMi9jb25maWd1cmUuYWMKK0BAIC0xMSw3ICsxMSw3IEBAIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKICBkbmwgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgbWFjcm9zIHRoYXQgcnVuCiAgZG5sIHRoZSBjb21waWxlciAobGlrZSBBQ19QUk9HX0xJQlRPT0wpIHRvIGF2b2lkIGF1dG9jb25mIGVycm9ycy4KICBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLS1BTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIDEuMTAgdGFyLXBheCBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3ppcCBkaXN0LXh6IC1Xbm8tcG9ydGFiaWxpdHkgc3ViZGlyLW9iamVjdHNdKQotK0FNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ24gMS4xMCB0YXItcGF4IGRpc3QtYnppcDIgbm8tZGlzdC1nemlwIGRpc3QteHogLVduby1wb3J0YWJpbGl0eSBzdWJkaXItb2JqZWN0cyBzZXJpYWwtdGVzdHNdKQotCistQU1fSU5JVF9BVVRPTUFLRShbLVdhbGwgZm9yZWlnbiAxLjEwIHRhci1wYXggbm8tZGlzdC1nemlwIGRpc3QteHogc3ViZGlyLW9iamVjdHNdKQorK0FNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ24gMS4xMCB0YXItcGF4IG5vLWRpc3QtZ3ppcCBkaXN0LXh6IHN1YmRpci1vYmplY3RzIHNlcmlhbC10ZXN0c10pCisgCiAgbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSwKICAJCQkgICAgW0FDX1NVQlNUKFtBTV9ERUZBVUxUX1ZFUkJPU0lUWV0sIFsxXSldKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvY29uZmlndXJlLXNiaW5kaXIucGF0Y2gKaW5kZXggYTViMWZmMS4uZTQ3NTI4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9jb25maWd1cmUtc2JpbmRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoCkBAIC01LDExICs1LDExIEBACiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20KIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAotSW5kZXg6IHV0aWwtbGludXgtMi4yMi4xL2NvbmZpZ3VyZS5hYworSW5kZXg6IHV0aWwtbGludXgtMi4zMS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1dGlsLWxpbnV4LTIuMjIuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIHV0aWwtbGludXgtMi4yMi4xL2NvbmZpZ3VyZS5hYwotQEAgLTczLDcgKzczLDEwIEBAIEFDX1NVQlNUKFtsb2NhbHN0YXRlZGlyXSkKKy0tLSB1dGlsLWxpbnV4LTIuMzEub3JpZy9jb25maWd1cmUuYWMKKysrKyB1dGlsLWxpbnV4LTIuMzEvY29uZmlndXJlLmFjCitAQCAtODksNyArODksMTAgQEAgQUNfU1VCU1QoW3J1bnN0YXRlZGlyXSkKICB1c3JiaW5fZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vYmluJwogIEFDX1NVQlNUKFt1c3JiaW5fZXhlY2Rpcl0pCiAgCkBAIC0yMCw0ICsyMCw0IEBACiArZmkKICBBQ19TVUJTVChbdXNyc2Jpbl9leGVjZGlyXSkKICAKLSBjYXNlICRsaWJkaXIgaW4KKyBBU19DQVNFKFskbGliZGlyXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmExY2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1nZXRyYW5kb20oKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBnbGliYyAyLjI1KyBhbmQgdW5pbmF0aXZlIG1heSByZWxvY2F0ZSAKLWJpbmFyaWVzIG9udG8gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdGhpcyBmdW5jdGlvbi4gRm9yIG5vdywgZm9yY2UgdGhlIAotY29kZSB0byB0aGUgb2xkZXIgY29kZXBhdGggdW50aWwgd2UgY2FuIGNvbWUgdXAgd2l0aCBhIGJldHRlciBzb2x1dGlvbiAKLWZvciB0aGlzIGtpbmQgb2YgaXNzdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAKLTIwMTYvOC8xNQotCi1JbmRleDogdXRpbC1saW51eC0yLjMwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHV0aWwtbGludXgtMi4zMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIHV0aWwtbGludXgtMi4zMC9jb25maWd1cmUuYWMKLUBAIC0zOTksNyArMzk5LDYgQEAgQUNfQ0hFQ0tfRlVOQ1MoWyBcCi0gCWdldGR0YWJsZXNpemUgXAotIAlnZXRleGVjbmFtZSBcCi0gCWdldG1udGluZm8gXAotLQlnZXRyYW5kb20gXAotIAlnZXRybGltaXQgXAotIAlnZXRzZ25hbSBcCi0gCWlub3RpZnlfaW5pdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NDQ5ZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotTUFKT1JfVkVSU0lPTiA9ICIyLjMwIgotcmVxdWlyZSB1dGlsLWxpbnV4LmluYwotCi0jIFRvIHN1cHBvcnQgb2xkZXIgaG9zdHMsIHdlIG5lZWQgdG8gcGF0Y2ggYW5kL29yIHJldmVydAotIyBzb21lIHVwc3RyZWFtIGNoYW5nZXMuICBPbmx5IGRvIHRoaXMgZm9yIG5hdGl2ZSBwYWNrYWdlcy4KLU9MREhPU1QgPSAiIgotT0xESE9TVF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovL3V0aWwtbGludXgtbmF0aXZlLXFzb3J0LnBhdGNoIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAotICAgICAgICAgICAgJHtPTERIT1NUfSBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vbm9fZ2V0cmFuZG9tLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImVhYTM0MjkxNTAyNjgwMjc5MDhhMWI4YWU2ZWU5YTYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMDhhNGZmNjkwNmNiN2Y1Nzk0MGFhNWJjM2E2ZWVkMTQ2ZTUwYTdjYzBhMDkyZjUyZWYyYWI2NTA1N2EwOGQiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCi0JCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAotCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWNjOThjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMyLmJiCkBAIC0wLDAgKzEsMzAgQEAKK01BSk9SX1ZFUlNJT04gPSAiMi4zMiIKK3JlcXVpcmUgdXRpbC1saW51eC5pbmMKKworIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKKyMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCitPTERIT1NUID0gIiIKK09MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS1xc29ydC5wYXRjaCIKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKKyAgICAgICAgICAgICR7T0xESE9TVH0gXAorICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGQ4YTI1ODUzZjg4Y2QxNWZmNTU3ZTVkOGNiNGVhNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzczOTdhYmM3NjRlMzJlODE1OWMyZTk2MDQyODc0YTE5MDMwM2U3N2FkY2ViNGFjNWJkNTAyYTI3MmE0NzM0IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAic2NhbmZfY3ZfYWxsb2NfbW9kaWZpZXI9bXMiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAorCQkJICAgICAtLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKKwkJCQktLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvdm9sYXRpbGUtYmluZHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvdm9sYXRpbGUtYmluZHMuYmIKaW5kZXggYTZlMzI1NC4uZDg2MWE3MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL3ZvbGF0aWxlLWJpbmRzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy92b2xhdGlsZS1iaW5kcy5iYgpAQCAtNjcsNyArNjcsNyBAQAogICAgIGluc3RhbGwgLW0gMDc1NSBtb3VudC1jb3B5YmluZCAke0R9JHtiYXNlX3NiaW5kaXJ9LwogCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGZvciBzZXJ2aWNlIGluICR7U1lTVEVNRF9TRVJWSUNFX3ZvbGF0aWxlLWJpbmRzfTsgZG8KKyAgICBmb3Igc2VydmljZSBpbiAke1NZU1RFTURfU0VSVklDRV8ke1BOfX07IGRvCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAkc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KICAgICBkb25lCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYi0xLjIuMTEvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2gKaW5kZXggNDAzYjQ4Mi4uN2NjYmUxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYi0xLjIuMTEvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYi0xLjIuMTEvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2gKQEAgLTcsMTQgKzcsMTUgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXNhYmxlIGZlYXR1cmVdCiAKLWRpZmYgLXVOciB6bGliLTEuMi42Lm9yaWcvTWFrZWZpbGUuaW4gemxpYi0xLjIuNi9NYWtlZmlsZS5pbgotLS0tIHpsaWItMS4yLjYub3JpZy9NYWtlZmlsZS5pbgkyMDEyLTAxLTI4IDIzOjQ4OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIHpsaWItMS4yLjYvTWFrZWZpbGUuaW4JMjAxMi0wMi0xMyAxNTozODoyMC41Nzc3MDA3MjMgKzAxMDAKLUBAIC0xOTksNyArMTk5LDYgQEAKK0luZGV4OiB6bGliLTEuMi4xMS9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHpsaWItMS4yLjExLm9yaWcvTWFrZWZpbGUuaW4KKysrKyB6bGliLTEuMi4xMS9NYWtlZmlsZS5pbgorQEAgLTMyMiw3ICszMjIsNiBAQCBpbnN0YWxsLWxpYnM6ICQoTElCUykKICAJICBybSAtZiAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpLyQoU0hBUkVETElCKSAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpLyQoU0hBUkVETElCTSk7IFwKICAJICBsbiAtcyAkKFNIQVJFRExJQlYpICQoREVTVERJUikkKHNoYXJlZGxpYmRpcikvJChTSEFSRURMSUIpOyBcCiAgCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpLyQoU0hBUkVETElCTSk7IFwKIC0JICAoJChMRENPTkZJRykgfHwgdHJ1ZSkgID4vZGV2L251bGwgMj4mMTsgXAogIAlmaQotIAljcCB6bGliLjMgJChERVNURElSKSQobWFuM2RpcikKLSAJY2htb2QgNjQ0ICQoREVTVERJUikkKG1hbjNkaXIpL3psaWIuMworIAlybSAtZiAkKERFU1RESVIpJChtYW4zZGlyKS96bGliLjMKKyAJY3AgJChTUkNESVIpemxpYi4zICQoREVTVERJUikkKG1hbjNkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCmluZGV4IDY4ZjFiM2MuLmVmMjMyYzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCkBAIC02Nyw0ICs2NywxMCBAQAogCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYXB0L2FyY2hpdmVzL3BhcnRpYWwKIAogCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nL2FwdC8KKworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vYXB0LXBrZworCWZvciBoIGluIGBmaW5kICR7U30vYXB0LXBrZyAke1N9L2FwdC1pbnN0IC1uYW1lICcqLmgnYAorCWRvCisJCWluc3RhbGwgLW0gMDY0NCAkaCAke0R9JHtpbmNsdWRlZGlyfS9hcHQtcGtnCisJZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2Rpc2FibGUtdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2gKaW5kZXggMDUzMjY3MS4uZDE2YjVjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2Rpc2FibGUtdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZGlzYWJsZS10ZXN0LnBhdGNoCkBAIC0xNywxMCArMTcsMTAgQEAKICBjb25maWd1cmUuYWMgfCA3IC0tLS0tLS0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA3NjgwZjA4Li42OTUyN2E1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCitJbmRleDogYXB0LTEuMi4yNC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFwdC0xLjIuMjQub3JpZy9NYWtlZmlsZQorKysrIGFwdC0xLjIuMjQvTWFrZWZpbGUKIEBAIC05LDggKzksOCBAQCBlbmRpZgogIC5QSE9OWTogZGVmYXVsdAogIGRlZmF1bHQ6IHN0YXJ0dXAgYWxsCkBAIC0zMiw5ICszMiw5IEBACiAgCSQoTUFLRSkgLUMgdmVuZG9yICRACiAgCSQoTUFLRSkgLUMgYXB0LXBrZyAkQAogIAkkKE1BS0UpIC1DIGFwdC1pbnN0ICRACi1AQCAtMjEsOCArMjEsNiBAQCBhbGwgaGVhZGVycyBsaWJyYXJ5IGNsZWFuIHZlcnljbGVhbiBiaW5hcnkgcHJvZ3JhbSBkb2MgbWFucGFnZXMgZG9jYm9vayB0ZXN0IHVwZAorQEAgLTIxLDggKzIxLDYgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYQogIAkkKE1BS0UpIC1DIGRzZWxlY3QgJEAKLSAJJChNQUtFKSAtQyBkb2MgJEAKKyAjCSQoTUFLRSkgLUMgZG9jICRACiAgCSQoTUFLRSkgLUMgcG8gJEAKIC0JIyBGSVhNRTogLUMgdGVzdCBoYXMgaXNzdWUgc3dpdGggcGFyYWxsZWwgYnVpbGRzLCBpbnZlc3RpZ2F0ZSEKIC0JLSQoTUFLRSkgLUMgdGVzdCAkQApAQCAtNTIsMTAgKzUyLDEwIEBACiAgCiAgZGlyczogc3RhcnR1cAogIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWYwNWRhNS4uZTQ3ZjQ1OSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCitJbmRleDogYXB0LTEuMi4yNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgYXB0LTEuMi4yNC9jb25maWd1cmUuYWMKIEBAIC05MCwxMyArOTAsNiBAQCBBQ19DSEVDS19MSUIoY3VybCwgY3VybF9lYXN5X2luaXQsCiAgICAgICBBQ19NU0dfRVJST1IoW2ZhaWxlZDogSSBuZWVkIENVUkwgZHVlIGh0dHBzIHN1cHBvcnRdKSwKICApCkBAIC03MCw2ICs3MCwzIEBACiAgQUNfU1VCU1QoQkRCTElCKQogIAogIEhBVkVfWkxJQj1ubwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9maXgtZ2NjLTQuNi1udWxsLW5vdC1kZWZpbmVkLnBhdGNoCmluZGV4IDgwMWFlNmQuLjg5OWM2ZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9maXgtZ2NjLTQuNi1udWxsLW5vdC1kZWZpbmVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9maXgtZ2NjLTQuNi1udWxsLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0xLDEyICsxLDE0IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotLS0tIGEvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAotKysrIGIvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAorSW5kZXg6IGFwdC0xLjIuMjQvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFwdC0xLjIuMjQub3JpZy9hcHQtcGtnL2NvbnRyaWIvd2Vha3B0ci5oCisrKysgYXB0LTEuMi4yNC9hcHQtcGtnL2NvbnRyaWIvd2Vha3B0ci5oCiBAQCAtMjEsNiArMjEsNyBAQAogICNpZm5kZWYgV0VBS19QT0lOVEVSX0gKICAjZGVmaW5lIFdFQUtfUE9JTlRFUl9ICiAgCiArI2luY2x1ZGUgPGNzdGRsaWI+CiAgI2luY2x1ZGUgPHNldD4KLSAvKioKLSAgKiBDbGFzcyBmb3Igb2JqZWN0cyBwcm92aWRpbmcgc3VwcG9ydCBmb3Igd2VhayBwb2ludGVycy4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbWFrZXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbWFrZXJhY2UucGF0Y2gKaW5kZXggNDZlMzE2MS4uMGM2ODZkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L21ha2VyYWNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9tYWtlcmFjZS5wYXRjaApAQCAtOCwxNiArOCwxNiBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGFwdC0wLjkuOS40L2J1aWxkbGliL2xpYnJhcnkubWFrCitJbmRleDogYXB0LTEuMi4yNC9idWlsZGxpYi9saWJyYXJ5Lm1hawogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwdC0wLjkuOS40Lm9yaWcvYnVpbGRsaWIvbGlicmFyeS5tYWsJMjAxMy0wNy0zMSAxNTo0NTowNy4zMjA0NDA1NzUgKzAzMDAKLSsrKyBhcHQtMC45LjkuNC9idWlsZGxpYi9saWJyYXJ5Lm1hawkyMDEzLTA3LTMxIDE1OjQ2OjQ5LjQ0MDQ0MDU2MSArMDMwMAotQEAgLTYxLDcgKzYxLDcgQEAKKy0tLSBhcHQtMS4yLjI0Lm9yaWcvYnVpbGRsaWIvbGlicmFyeS5tYWsKKysrKyBhcHQtMS4yLjI0L2J1aWxkbGliL2xpYnJhcnkubWFrCitAQCAtNjUsNyArNjUsNyBAQCAkKExJQikvbGliJChMSUJSQVJZKS5zby4kKE1BSk9SKS4kKE1JTk9SCiAgCiAgIyBDb21waWxhdGlvbiBydWxlcwogIHZwYXRoICUuY2MgJChTVUJESVJTKQogLSQoT0JKKS8lLm9waWM6ICUuY2MgJChMSUJSQVJZREVQRU5EUykKICskKE9CSikvJS5vcGljOiAlLmNjICQoTElCUkFSWURFUEVORFMpICQoJChMT0NBTCktSEVBREVSUykKICAJZWNobyBDb21waWxpbmcgJDwgdG8gJEAKLSAJJChDWFgpIC1jICQoSU5MSU5FREVQRkxBRykgJChDUFBGTEFHUykgJChDWFhGTEFHUykgJChQSUNGTEFHUykgLW8gJEAgJDwKKyAJJChDWFgpIC1jICQoSU5MSU5FREVQRkxBRykgJChDUFBGTEFHUykgJChDWFhTVEQpICQoQ1hYRkxBR1MpICQoUElDRkxBR1MpIC1vICRAICckKGFic3BhdGggJDwpJwogIAkkKERvRGVwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vLW5scy1kcGtnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vLW5scy1kcGtnLnBhdGNoCmluZGV4IGEwOTk2ZDQuLjk4YjZjOTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9uby1ubHMtZHBrZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm8tbmxzLWRwa2cucGF0Y2gKQEAgLTEsOCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotKysrIGIvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCi1AQCAtNDIsNiArNDIsMTIgQEAKK0luZGV4OiBhcHQtMS4yLjI0L2FwdC1wa2cvZGViL2Rwa2dwbS5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFwdC0xLjIuMjQub3JpZy9hcHQtcGtnL2RlYi9kcGtncG0uY2MKKysrKyBhcHQtMS4yLjI0L2FwdC1wa2cvZGViL2Rwa2dwbS5jYworQEAgLTU0LDYgKzU0LDEyIEBACiAgI2luY2x1ZGUgPGFwdGkxOG4uaD4KICAJCQkJCQkJCQkvKn19fSovCiAgCkBAIC0xNCw4ICsxNiw4IEBACiArCiAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAKLSBuYW1lc3BhY2UKLUBAIC0xMjc5LDcgKzEyODUsNyBAQCB2b2lkIHBrZ0RQa2dQTTo6V3JpdGVBcHBvcnRSZXBvcnQoY29uc3QKKyBBUFRfUFVSRSBzdGF0aWMgc3RyaW5nCitAQCAtMTcwMyw3ICsxNzA5LDcgQEAgdm9pZCBwa2dEUGtnUE06OldyaXRlQXBwb3J0UmVwb3J0KGNvbnN0CiAgICAgfQogIAogICAgIC8vIGNoZWNrIGlmIGl0cyBub3QgYSBmb2xsb3cgdXAgZXJyb3IgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm9kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm9kb2MucGF0Y2gKaW5kZXggNDQ5ZTQyZC4uNzhjZjUzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vZG9jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9ub2RvYy5wYXRjaApAQCAtMywxNiArMywxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgogCi1JbmRleDogYXB0LTAuOS43LjcvTWFrZWZpbGUKK0luZGV4OiBhcHQtMS4yLjI0L01ha2VmaWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXB0LTAuOS43Ljcub3JpZy9NYWtlZmlsZQotKysrIGFwdC0wLjkuNy43L01ha2VmaWxlCi1AQCAtMTcsNyArMTcsNyBAQCBhbGwgaGVhZGVycyBsaWJyYXJ5IGNsZWFuIHZlcnljbGVhbiBiaW5hCistLS0gYXB0LTEuMi4yNC5vcmlnL01ha2VmaWxlCisrKysgYXB0LTEuMi4yNC9NYWtlZmlsZQorQEAgLTE5LDcgKzE5LDcgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYQogIAkkKE1BS0UpIC1DIGNtZGxpbmUgJEAKICAJJChNQUtFKSAtQyBmdHBhcmNoaXZlICRACiAgCSQoTUFLRSkgLUMgZHNlbGVjdCAkQAogLQkkKE1BS0UpIC1DIGRvYyAkQAogKyMJJChNQUtFKSAtQyBkb2MgJEAKICAJJChNQUtFKSAtQyBwbyAkQAotIAkkKE1BS0UpIC1DIHRlc3QgJEAKLSAKKyAJIyBGSVhNRTogLUMgdGVzdCBoYXMgaXNzdWUgc3dpdGggcGFyYWxsZWwgYnVpbGRzLCBpbnZlc3RpZ2F0ZSEKKyAJLSQoTUFLRSkgLUMgdGVzdCAkQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKaW5kZXggMTA0ZGMzOC4uODlkNTdhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiCkBAIC05LDYgKzksMTAgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZjE5ZDRjZGRjZTI2MGIzYzNlMWQ1MWQ0MjUwOTA3MSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGYyZWZkMjM1Zjg0MmJhZDJmNjkzOGJmNGE3MjI0MGE1ZTVmY2QyNDhlODQ0NDMzNWU2M2JlYjYwZmFiZDgyIgogCi1pbmhlcml0IGF1dG90b29scworaW5oZXJpdCBhdXRvdG9vbHMgYWxsYXJjaAorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMKaW5kZXggZWE2MmRmOC4uZGY4MWJjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMKQEAgLTQxLDYgKzQxLDEwIEBACiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKIAogZG9fY29uZmlndXJlKCkgeworCSMgbWFudWFsbHkgaW5zdGFsbCBhIG5ld2VyIGNvbmZpZy5ndWVzcy8uc3ViCisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfS9idWlsZC1hdXgKKwlpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfS9idWlsZC1hdXgKKwogCW9lX3J1bmNvbmYKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2gKaW5kZXggNjRlYjI1My4uOTZiNWEzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICB0L3dyYXAvYXV0b21ha2UuaW4gfCAzICsrLQogIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYmluL2FjbG9jYWwuaW4gYi9iaW4vYWNsb2NhbC5pbgotaW5kZXggMzQ5ZjI0YS4uNTBjYjhkMyAxMDA2NDQKLS0tLSBhL2Jpbi9hY2xvY2FsLmluCi0rKysgYi9iaW4vYWNsb2NhbC5pbgorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9iaW4vYWNsb2NhbC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2Jpbi9hY2xvY2FsLmluCisrKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hY2xvY2FsLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACkBAIC00MCwxNyArNDAsMTcgQEAKICAKICB1c2UgQXV0b21ha2U6OkNvbmZpZzsKICB1c2UgQXV0b21ha2U6OkdlbmVyYWw7Ci1kaWZmIC0tZ2l0IGEvYmluL2F1dG9tYWtlLmluIGIvYmluL2F1dG9tYWtlLmluCi1pbmRleCBlZWRjOGJjLi5lMGEwMWNmIDEwMDY0NAotLS0tIGEvYmluL2F1dG9tYWtlLmluCi0rKysgYi9iaW4vYXV0b21ha2UuaW4KK0luZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2F1dG9tYWtlLmluCisrKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgogQEAgLTEsNCArMSw0IEBACiAtIyFAUEVSTEAgLXcKICsjIUBQRVJMQAogICMgLSotIHBlcmwgLSotCiAgIyBAY29uZmlndXJlX2lucHV0QAogIAotQEAgLTI4LDYgKzI4LDcgQEAgZXZhbCAnY2FzZSAkIyBpbiAwKSBleGVjIEBQRVJMQCAtUyAiJDAiOzsgKikgZXhlYyBAUEVSTEAgLVMgIiQwIiAiJEAiOzsgZXNhYycKK0BAIC0yOCw2ICsyOCw3IEBAIGV2YWwgJ2Nhc2UgJCMgaW4gMCkgZXhlYyBAUEVSTEAgLVMgIiQwIjsKICBwYWNrYWdlIEF1dG9tYWtlOwogIAogIHVzZSBzdHJpY3Q7CkBAIC01OCwxNiArNTgsMTYgQEAKICAKICBCRUdJTgogIHsKLWRpZmYgLS1naXQgYS90L3dyYXAvYWNsb2NhbC5pbiBiL3Qvd3JhcC9hY2xvY2FsLmluCi1pbmRleCBlNjRiNTQ2Li45OTk2ODk5IDEwMDY0NAotLS0tIGEvdC93cmFwL2FjbG9jYWwuaW4KLSsrKyBiL3Qvd3JhcC9hY2xvY2FsLmluCitJbmRleDogYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hY2xvY2FsLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvdC93cmFwL2FjbG9jYWwuaW4KKysrKyBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2FjbG9jYWwuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIEBjb25maWd1cmVfaW5wdXRACiAgCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogQEAgLTE5LDYgKzE5LDcgQEAKICBCRUdJTgogIHsKQEAgLTc2LDE2ICs3NiwxNiBAQAogICAgQEFjbG9jYWw6OnBlcmxfbGliZGlycyA9ICgnQGFic190b3Bfc3JjZGlyQC9saWInKTsKICAgIHVuc2hpZnQgQEFjbG9jYWw6OnBlcmxfbGliZGlycywgJ0BhYnNfdG9wX2J1aWxkZGlyQC9saWInCiAgICAgIGlmICdAc3JjZGlyQCcgbmUgJy4nOwotZGlmZiAtLWdpdCBhL3Qvd3JhcC9hdXRvbWFrZS5pbiBiL3Qvd3JhcC9hdXRvbWFrZS5pbgotaW5kZXggOGI5NDNiMS4uYmU2MTIyNiAxMDA2NDQKLS0tLSBhL3Qvd3JhcC9hdXRvbWFrZS5pbgotKysrIGIvdC93cmFwL2F1dG9tYWtlLmluCitJbmRleDogYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hdXRvbWFrZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL3Qvd3JhcC9hdXRvbWFrZS5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYXV0b21ha2UuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIEBjb25maWd1cmVfaW5wdXRACiAgCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogQEAgLTE5LDYgKzE5LDcgQEAKICBCRUdJTgogIHsKQEAgLTk0LDYgKzk0LDMgQEAKICAgIEBBdXRvbWFrZTo6cGVybF9saWJkaXJzID0gKCdAYWJzX3RvcF9zcmNkaXJAL2xpYicpOwogICAgdW5zaGlmdCBAQXV0b21ha2U6OnBlcmxfbGliZGlycywgJ0BhYnNfdG9wX2J1aWxkZGlyQC9saWInCiAgICAgIGlmICdAc3JjZGlyQCcgbmUgJy4nOwotLS0gCi0yLjMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoCmluZGV4IDFkZDUzMzcuLmMzMmNkMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoCkBAIC00LDIxICs0LDIzIEBACiBTaWduZWQtb2ZmLWJ5OiBCasO2cm4gU3RlbmJlcmcgPGJqc3RAZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotLS0tIGEvbGliL2FtL2NoZWNrLmFtCTIwMTItMTEtMTQgMTM6NDY6MTYuMzM1NDc1OTk1ICswMTAwCi0rKysgYi9saWIvYW0vY2hlY2suYW0JMjAxMi0wOC0xMyAxODo0MDoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NCw3ICs0NCw3IEBACi0gYW1fX3R0eV9jb2xvcnMgPSAkKGFtX190dHlfY29sb3JzX2R1bW15KQotIGVuZGlmICElP0NPTE9SJQotCitJbmRleDogYXV0b21ha2UtMS4xNS4xL2xpYi9hbS9jaGVjay5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2xpYi9hbS9jaGVjay5hbQorKysrIGF1dG9tYWtlLTEuMTUuMS9saWIvYW0vY2hlY2suYW0KK0BAIC00MSw3ICs0MSw3IEBAIGFtX190dHlfY29sb3JzID0geyBcCisgICBmaTsgXAorIH0KKyAKIC0uUEhPTlk6IGNoZWNrLVRFU1RTCiArLlBIT05ZOiBjaGVjay1URVNUUyBidWlsZHRlc3QtVEVTVFMgcnVudGVzdC1URVNUUwotCi0gaWYgJT9QQVJBTExFTF9URVNUUyUKLQotQEAgLTQ2NSw3ICs0NjUsMTQgQEAKLQotIGVsc2UgISU/UEFSQUxMRUxfVEVTVFMlCi0KKyAKKyBpZiAhJT9TRVJJQUxfVEVTVFMlCisgCitAQCAtNDY2LDcgKzQ2NiwxNCBAQCBlbHNlICU/U0VSSUFMX1RFU1RTJQorIAorICMjIE9ic29sZXNjZW50IHNlcmlhbCB0ZXN0c3VpdGUgZHJpdmVyLgorIAogLWNoZWNrLVRFU1RTOiAkKFRFU1RTKQogK0FNX1JFQ1VSU0lWRV9UQVJHRVRTICs9IGJ1aWxkdGVzdCBydW50ZXN0CiArCkBAIC0yOCw2ICszMCw2IEBACiArCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHJ1bnRlc3QtVEVTVFMKICsKICtydW50ZXN0LVRFU1RTOgotCUBmYWlsZWQ9MDsgYWxsPTA7IHhmYWlsPTA7IHhwYXNzPTA7IHNraXA9MDsgXAotCXNyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7IFwKKyAJQGZhaWxlZD0wOyBhbGw9MDsgeGZhaWw9MDsgeHBhc3M9MDsgc2tpcD0wOyBcCisgCXNyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7IFwKICAjIyBNYWtlIHN1cmUgU29sYXJpcyBWUEFUSC1leHBhbmRzIGFsbCBtZW1iZXJzIG9mIHRoaXMgbGlzdCwgZXZlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI5LjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI5LjEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2E3MmUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPz0gIjkwMjc2ZjE1Mzc5ZDM4MDc2MWZjNDk5ZGEyYmEyNGNmYjNjMTJhOTQiCi1CSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQiCi1TUkNfVVJJID0gIlwKLSAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCi0gICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzg4M2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYwpAQCAtMCwwICsxLDQzIEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID89ICJjYWE4MzlmYmE2NjYwMGE2YzM2ZDM2Mzk5MDZlZDkxMTBiNzljMzA3IgorQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSA9ICJcCisgICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAorICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCisiCitTICA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjkuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI5LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAppbmRleCAwYjUxNWQ4Li4yZGY4MzYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNThhYzlmOTVhM2Q4M2MyOWVmYWY3YTg5MDZmYjZhZWZlYThjOGU3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmUxYjVlMjRhNjc1OWRlN2Y3M2FhNjA2MGE1NzQ4NDhkOTEzMWI1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NTg6NTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKQEAgLTE4LDcgKzE4LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL2dlbnNjcmlwdHMuc2ggYi9sZC9nZW5zY3JpcHRzLnNoCi1pbmRleCBiNjk0MGQzNzZkLi5hNDJjNGQ3YTRiIDEwMDc1NQoraW5kZXggODczMjQyMmIzYS4uMWYyNTdlOTljYSAxMDA3NTUKIC0tLSBhL2xkL2dlbnNjcmlwdHMuc2gKICsrKyBiL2xkL2dlbnNjcmlwdHMuc2gKIEBAIC0yNzcsNiArMjc3LDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgpAQCAtMzcsMTYgKzM3LDE2IEBACiAgKCBlY2hvICIvKiBTY3JpcHQgZm9yIGxkIC1VcjogbGluayB3L291dCByZWxvY2F0aW9uLCBkbyBjcmVhdGUgY29uc3RydWN0b3JzICovIgogICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQogICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKLSApIHwgc2VkIC1lICcvXiAqJC9kO3MvWyAJXSokLy8nID4gbGRzY3JpcHRzLyR7RU1VTEFUSU9OX05BTUV9Lnh1CisgKSB8IHNlZCAtZSAnL14gKiQvZDtzL1sJIF0qJC8vJyA+IGxkc2NyaXB0cy8ke0VNVUxBVElPTl9OQU1FfS54dQogK3Vuc2V0IFBBUlRJQUxfTElOS0lORwogIAotIExEX0ZMQUc9CiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF99CisgUkVMT0NBVElORz0iICIKIGRpZmYgLS1naXQgYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLWluZGV4IGQ5MTM4YmMwNTkuLmU0OGZhZWNhNDMgMTAwNjQ0CitpbmRleCA5Nzg3YWI1ZGFjLi4wYzhhOTNjMmM4IDEwMDY0NAogLS0tIGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCiArKysgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLUBAIC0xMzgsOCArMTM4LDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KK0BAIC0xMzksOCArMTM5LDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KICAgICAgREFUQV9TRUdNRU5UX1JFTFJPX0VORD0iLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKCR7U0VQQVJBVEVfR09UUExULTB9LCAuKTsiCiAgICBmaQogIGZpCkBAIC01OCw1ICs1OCw1IEBACiAgaWYgdGVzdCAteiAiJFBMVCI7IHRoZW4KICAgIElQTFQ9Ii5pcGx0ICAgICAgICAgJHtSRUxPQ0FUSU5HLTB9IDogeyAqKC5pcGx0KSB9IgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCmluZGV4IDM3MDMzM2QuLmJhYzdmYjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4ZjkyOWM2MTYyMDgzNTFkMDk3MWQ3ZGZkNzU3NGQ0OGQzMTQ0NjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1OGRkZjM4ZmE1M2FiYjQ4YjY5ZGQ3NmUzOThjNzM0NTFhZDFhNWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozNzowNSAtMDgwMAogU3ViamVjdDogW1BBVENIIDAyLzE1XSBiaW51dGlscy1jcm9zczogRG8gbm90IGdlbmVyYXRlIGxpbmtlciBzY3JpcHQKQEAgLTIzLDcgKzIzLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggYTQyYzRkN2E0Yi4uZDcyN2I0ZDA3ZSAxMDA3NTUKK2luZGV4IDFmMjU3ZTk5Y2EuLjE1ODNiNzNhMmIgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCiBAQCAtMTg5LDI5ICsxODksNiBAQCBhcHBlbmRfdG9fbGliX3BhdGgoKQpAQCAtNTcsNSArNTcsNSBAQAogICAgbGlicz0ke05BVElWRV9MSUJfRElSU30KICAgIGlmIFsgIngke05BVElWRX0iID0gInh5ZXMiIF0gOyB0aGVuCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaAppbmRleCBiNmMwOWNjLi4zMDZhZmU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlNWE4MDZhYWUwMmExMDI5MGM3MWRlYjcyZjYyOTRjOTgwNjgzNjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MDg5YmU4OGY2NzBiY2FkZjdkYjBlNzc4ODk0ZjkwMGIyYzA1ZDdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAogU3ViamVjdDogW1BBVENIIDAzLzE1XSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKQEAgLTE0LDEyICsxNCwxMiBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGJlOWRkODlkOWIuLmQ4YWYxNTVhYjUgMTAwNzU1CitpbmRleCAyZDYxNWE5OTk2Li5jNGFkNDVjMDZjIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC0zODQ0LDcgKzM4NDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBvcjFrKi0qLSopCi0gICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBnZGIiCitAQCAtMzgzNSw3ICszODM1LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgbnZwdHgqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJzc3AgdGFyZ2V0LWxpYnN0ZGMrKy12MyB0YXJnZXQtbGlib2JqYyIKICAgICAgOzsKIC0gIHNoLSotKikKICsgIHNoKi0qLSogfCBzaDY0LSotKikKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICBzaCotKi1lbGYpCiAgICAgICAgICAgOzsKIGRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IGU3MWZlOGI5ZTQuLjY3OWUwZGNlNzcgMTAwNzU1CitpbmRleCAxZTI1MTAyOTc2Li42YjQzYmYyYjE4IDEwMDc1NQogLS0tIGEvZ3Byb2YvY29uZmlndXJlCiArKysgYi9ncHJvZi9jb25maWd1cmUKIEBAIC01ODc0LDYgKzU4NzQsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQpAQCAtNDMsNSArNDMsNSBAQAogICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAppbmRleCAzOGVlZTMwLi4zZTI5YzU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzNjM0ZWMzNTQ3YmMwZjhhNWQxYjhhZDE1MzY1ZTJmODM2Y2RhNjQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMGU4OTNlYTA5NGM0OGZhODAzMDQ2ZmZhODllMzE5MDdhZWUwNTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAogU3ViamVjdDogW1BBVENIIDA0LzE1XSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgpAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQotaW5kZXggNjI1MzQ3ZmY2Mi4uZDUzMzRkMjY4MSAxMDA2NDQKK2luZGV4IDYyNDNjMTI1MjguLjNjNWQ2YzgyMDIgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5hbQogKysrIGIvbGQvTWFrZWZpbGUuYW0KIEBAIC01Nyw3ICs1Nyw3IEBAIGVuZGlmCkBAIC0yNSw3ICsyNSw3IEBACiAgRU1VTCA9IEBFTVVMQAogIEVNVUxBVElPTl9PRklMRVMgPSBARU1VTEFUSU9OX09GSUxFU0AKIGRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCi1pbmRleCBiYTI1MTc3N2IwLi5hMmNmMjI4MmI1IDEwMDY0NAoraW5kZXggNzYwYzAzN2Y5ZC4uNmRlYTY5Mjg2OSAxMDA2NDQKIC0tLSBhL2xkL01ha2VmaWxlLmluCiArKysgYi9sZC9NYWtlZmlsZS5pbgogQEAgLTQ0Niw3ICs0NDYsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCkBAIC0zOCw1ICszOCw1IEBACiAgQkZERElSID0gJChCQVNFRElSKS9iZmQKICBJTkNESVIgPSAkKEJBU0VESVIpL2luY2x1ZGUKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAppbmRleCA1OTE1MGEyLi4yZjQ5OTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOWQzN2M4ZjY4YzA3ZGE2MzE4NmNiOTkzZjEyMjFmNmMxMWVjYTQyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTE4YWJiMTk1ZDBlYjQ3ZDhlZWY1ODFkN2ZkMGE1ZmQ5ZmE3M2Y3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xNV0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKQEAgLTE1LDEwICsxNSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbSBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotaW5kZXggOWFjMTg0MDMxNi4uOWRjNGMxNDliYyAxMDA2NDQKK2luZGV4IGMwOTI1ZmM5YjkuLjdkNzY3MGE4OWYgMTAwNjQ0CiAtLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KICsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0NjMsNiArMTQ2Myw4IEBAIGZyYWdtZW50IDw8RU9GCitAQCAtMTQ3MCw2ICsxNDcwLDggQEAgZnJhZ21lbnQgPDxFT0YKICAJICAgICAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCiAgCSAgICB7CiAgCSAgICAgIHBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMjcsNyArMjcsNyBAQAogIAkgICAgICBpZiAocGF0aAogIAkJICAmJiBnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChwYXRoLCAmbiwgZm9yY2UpKQogIAkJYnJlYWs7Ci1AQCAtMTc0MCw2ICsxNzQyLDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitAQCAtMTc1MCw2ICsxNzUyLDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCiAgICBycGF0aCA9IGNvbW1hbmRfbGluZS5ycGF0aDsKICAgIGlmIChycGF0aCA9PSBOVUxMKQogICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CkBAIC0zNyw1ICszNyw1IEBACiAgICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKaW5kZXggZTg3ZWZlNi4uMzMzZTJlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3MWM3MzRiYjM3NTQzMTkwMjlkY2ZjODk4Y2VkYmFkZTQyMjc0ZGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmYWQwNTNjYzU5YmFhNjI3NzE4MmIwZmM5MDQxNWEyMTQwNjBiYTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNi8xNV0gVXNlIGxpYnRvb2wgMi40CkBAIC0xMiw3ICsxMiw2IEBACiAgYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgYmZkL2NvbmZpZ3VyZS5hYyAgICAgfCAgICAyICstCiAgYmludXRpbHMvY29uZmlndXJlICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gY29uZmlndXJlICAgICAgICAgICAgfCAgICAyICstCiAgZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE0ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgbGQvY29uZmlndXJlICAgICAgICAgfCAxNjkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCkBAIC0yNCwxMCArMjMsMTAgQEAKICBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KICBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMTYgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxNSBmaWxlcyBjaGFuZ2VkLCA5OTI3IGluc2VydGlvbnMoKyksIDM2OTQgZGVsZXRpb25zKC0pCisgMTQgZmlsZXMgY2hhbmdlZCwgOTkyNiBpbnNlcnRpb25zKCspLCAzNjkzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKLWluZGV4IDQ4Mjc2NTk0ZWQuLjNlY2U4OTQzZjMgMTAwNzU1CitpbmRleCA2YzJiMjRlYmUzLi41ZmRkNzIzYjdmIDEwMDc1NQogLS0tIGEvYmZkL2NvbmZpZ3VyZQogKysrIGIvYmZkL2NvbmZpZ3VyZQogQEAgLTY3Miw2ICs2NzIsOSBAQCBPVE9PTApAQCAtMTkzMSw3ICsxOTMwLDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKLWluZGV4IDhmZDAzYTdlYTguLjg4MTZjMzI4NmMgMTAwNjQ0CitpbmRleCAyMzQyZjNmYWVhLi5hNjQ1MWZjY2RhIDEwMDY0NAogLS0tIGEvYmZkL2NvbmZpZ3VyZS5hYwogKysrIGIvYmZkL2NvbmZpZ3VyZS5hYwogQEAgLTI1NCw3ICsyNTQsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubApAQCAtMTk0NCw3ICsxOTQzLDcgQEAKICAKICAjIE1vcmUgaGFja3MgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzLgogZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZ3VyZSBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotaW5kZXggMjJlMWIxNzM2ZS4uMzIxYjYzNTM1YiAxMDA3NTUKK2luZGV4IDVkOWM5MTA1YTcuLmE2NWIyYjQ1MTggMTAwNzU1CiAtLS0gYS9iaW51dGlscy9jb25maWd1cmUKICsrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQogQEAgLTY1OSw4ICs2NTksMTEgQEAgT1RPT0wKQEAgLTM4NDEsMjEgKzM4NDAsOCBAQAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGQ4YWYxNTVhYjUuLjAwNWVkODI3YWIgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTM4NDQsNyArMzg0NCw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAgIG9yMWsqLSotKikKLSAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdkYiIKLSAgICAgOzsKLS0gIHNoKi0qLSogfCBzaDY0LSotKikKLSsgIHNoLSotKiB8IHNoNjQtKi0qKQotICAgICBjYXNlICIke3RhcmdldH0iIGluCi0gICAgICAgc2gqLSotZWxmKQotICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IDkzYWZiMjBjOGYuLjgxZGQ0Y2JkOTcgMTAwNzU1CitpbmRleCBmYmFjOGY0NGQ1Li5hNDBhYzIxNDRmIDEwMDc1NQogLS0tIGEvZ2FzL2NvbmZpZ3VyZQogKysrIGIvZ2FzL2NvbmZpZ3VyZQogQEAgLTY1MCw4ICs2NTAsMTEgQEAgT1RPT0wKQEAgLTUxNTYsNyArNTE0Miw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTQzNiwxMyArMTYwODksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NDM3LDEzICsxNjA5MCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC01MTc3LDcgKzUxNjMsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0NTcsMTQgKzE2MTE3LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTU0NTgsMTQgKzE2MTE4LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTE5Niw3ICs1MTgyLDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ5NywxMiArMTYxNjAsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xNTQ5OCwxMiArMTYxNjEsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC01MjEwLDcgKzUxOTYsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NTcsOCArMTYyMjAsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE1NTU4LDggKzE2MjIxLDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtNTIyNCw3ICs1MjEwLDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTU1NjgsMTIgKzE2MjM2LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE1NTY5LDEyICsxNjIzNywxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtNTI0MCw3ICs1MjI2LDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xNTU4OSw3ICsxNjI1OSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xNTU5MCw3ICsxNjI2MCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTUyNDgsNyArNTIzNCw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYyNSw2ICsxNjI5NCw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xNTYyNiw2ICsxNjI5NSw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC01MjU2LDcgKzUyNDIsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE2Mzg5LDcgKzE3MDU5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE2MzkwLDcgKzE3MDYwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtNTI2Niw3ICs1MjUyLDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTY0OTIsMTkgKzE3MTYzLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE2NDkzLDE5ICsxNzE2NCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC01MzEwLDcgKzUyOTYsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTY1MzQsNiArMTcyMjgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xNjUzNSw2ICsxNzIyOSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC01MzIzLDcgKzUzMDksNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTY1NDMsNiArMTcyNDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE2NTQ0LDYgKzE3MjQ0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTUzMzMsNyArNTMxOSw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE2NjU3LDEyICsxNzM2MCwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTY2NTgsMTIgKzE3MzYxLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtNTM0OSw3ICs1MzM1LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xNjc0OSw5ICsxNzQ1Miw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xNjc1MCw5ICsxNzQ1Myw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC01MzU5LDcgKzUzNDUsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTY3NjcsNiArMTc0NjcsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE2NzY4LDYgKzE3NDY4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC01MzY5LDcgKzUzNTUsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE2Nzk5LDIxMCArMTc1MDIsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE2ODAwLDIxMCArMTc1MDMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC01NzQ0LDcgKzU3MzAsNyBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIGRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IDY3OWUwZGNlNzcuLmFjNGMwMTZhNjMgMTAwNzU1CitpbmRleCA2YjQzYmYyYjE4Li4yNDVlZTQ4YmMzIDEwMDc1NQogLS0tIGEvZ3Byb2YvY29uZmlndXJlCiArKysgYi9ncHJvZi9jb25maWd1cmUKIEBAIC02MzEsOCArNjMxLDExIEBAIE9UT09MCkBAIC03NjU0LDcgKzc2NDAsNyBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IGQ3ZjY2ZjhjZGMuLjRlNzE1MTFiZDEgMTAwNzU1CitpbmRleCAwY2M2ZThhNTBmLi5kYjhiOTk4NzIyIDEwMDc1NQogLS0tIGEvbGQvY29uZmlndXJlCiArKysgYi9sZC9jb25maWd1cmUKIEBAIC02NTUsOCArNjU1LDExIEBAIE9UT09MCkBAIC0xNzMzNiw3ICsxNzMyMiw3IEBACiAgIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCiAgIwogZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlIGIvb3Bjb2Rlcy9jb25maWd1cmUKLWluZGV4IDE3NTMwZjU0YjkuLjc5YjM5NjExYzIgMTAwNzU1CitpbmRleCA0ZjI5ODg3MDk4Li4yMTI3ZDM5Mjg4IDEwMDc1NQogLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKICsrKyBiL29wY29kZXMvY29uZmlndXJlCiBAQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCkBAIC0xOTI0MCw3ICsxOTIyNiw3IEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlLmFjIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLWluZGV4IGE5ZmJmZDYxZjEuLmM0Mzc4MGY2NGQgMTAwNjQ0CitpbmRleCBiMDdmM2YzNjI5Li41YTMyZDliMWZjIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMKICsrKyBiL29wY29kZXMvY29uZmlndXJlLmFjCiBAQCAtMTY3LDcgKzE2Nyw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCkBAIC0yMTE1Myw1ICsyMTEzOSw1IEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAppbmRleCA4ODAxOTYwLi40YTUxMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJiODdhYWQxNzQxYmM0ODFkZDA5ODJmMTAwYWQ1ZWE3ZjkzN2JiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDY5NzkwMzI1NmUwOTUzMzc3OGJhYThhZjY2NDAyYzQ0ZDcwMjE5ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM3OjEwICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIEFkZCB0aGUgYXJtdjVlIGFyY2hpdGVjdHVyZSB0byBiaW51dGlscwpAQCAtMTksMTAgKzE5LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWFybS5jIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotaW5kZXggYTg4NWVmZTRmYy4uNzM1ZWFhNzQ0NyAxMDA2NDQKK2luZGV4IGVjNTA0MjA1MTguLmEyNWQxNzIxYWYgMTAwNjQ0CiAtLS0gYS9nYXMvY29uZmlnL3RjLWFybS5jCiArKysgYi9nYXMvY29uZmlnL3RjLWFybS5jCi1AQCAtMjU5OTAsNiArMjU5OTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CitAQCAtMjYxOTUsNiArMjYxOTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NHQiLAlBUk1fQVJDSF9WNFQsCSBGUFVfQVJDSF9GUEEpLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0eG0iLAlBUk1fQVJDSF9WNFR4TSwJIEZQVV9BUkNIX0ZQQSksCiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NSIsCUFSTV9BUkNIX1Y1LAkgRlBVX0FSQ0hfVkZQKSwKQEAgLTMxLDUgKzMxLDUgQEAKICAgIEFSTV9BUkNIX09QVCAoImFybXY1dHhtIiwJQVJNX0FSQ0hfVjVUeE0sCSBGUFVfQVJDSF9WRlApLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCmluZGV4IDMwYTIyYjUuLjkzOWJlNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzMzE0NDNhODdhMzFlYzUwNGU1NjUyZmMwOTlkOTEyOWE5YTRkZWI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MjJkNjY2MzRlYjJlNTA5ZDQxMjZmNWJkY2FiMjZkZTM2NzI0MWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozOTowMSArMDAwMAogU3ViamVjdDogW1BBVENIIDA4LzE1XSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saWJpYmVydHkvTWFrZWZpbGUuaW4gYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KLWluZGV4IDI1Y2ZhMjlhZDUuLmNlNjdhNzEwZTMgMTAwNjQ0CitpbmRleCBlZDFiMzM0YzM2Li5kNGZmZDhiNTdiIDEwMDY0NAogLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCiArKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KIEBAIC0zNjQsNyArMzY0LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbApAQCAtMzEsNSArMzEsNSBAQAogIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAogIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAppbmRleCBlMGUyNTc4Li5lNzUxMDQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMGE0YWZkY2YwNzAwZWZkNDU5NjM1NjhlMmQwMDQ5MTI3Y2RmNDQzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjdlMzhlZTkyYzI0ZmNhODZiMWMzZjZlZjE1NmExODkyZGQwNmJmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZwpAQCAtNzcsNyArNzcsNyBAQAogICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KICAKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IDRlNzE1MTFiZDEuLjcxYzZhZDFmZDEgMTAwNzU1CitpbmRleCBkYjhiOTk4NzIyLi40ODllYWQ1YzEzIDEwMDc1NQogLS0tIGEvbGQvY29uZmlndXJlCiArKysgYi9sZC9jb25maWd1cmUKIEBAIC03ODksNiArNzg5LDcgQEAgd2l0aF9saWJfcGF0aApAQCAtMTE4LDcgKzExOCw3IEBACiAgaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6CiAgICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCi1pbmRleCAwMDA4MGY4NWZkLi4zYWE5OGUzN2ZiIDEwMDY0NAoraW5kZXggYmFkYTFiNTBiMC4uZDA3NGEzODIwYiAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS5hYwogKysrIGIvbGQvY29uZmlndXJlLmFjCiBAQCAtOTUsNiArOTUsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCkBAIC0xMzksMTAgKzEzOSwxMCBAQAogIGRubCAiaW5zdGFsbF9hc19kZWZhdWx0IiBpcyBzZXQgdG8gZmFsc2UgaWYgZ29sZCBpcyB0aGUgZGVmYXVsdCBsaW5rZXIuCiAgZG5sICJpbnN0YWxsZWRfbGlua2VyIiBpcyB0aGUgaW5zdGFsbGVkIEJGRCBsaW5rZXIgbmFtZS4KIGRpZmYgLS1naXQgYS9sZC9sZC5oIGIvbGQvbGQuaAotaW5kZXggYzZmYTEyNDdmMC4uMDFjMzczNDk4ZiAxMDA2NDQKK2luZGV4IGJhOTE0YjkyMWUuLjlkZjE3ZGFiNmMgMTAwNjQ0CiAtLS0gYS9sZC9sZC5oCiArKysgYi9sZC9sZC5oCi1AQCAtMTc0LDYgKzE3NCwxNCBAQCB0eXBlZGVmIHN0cnVjdAorQEAgLTE4MCw2ICsxODAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KICAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247CiAgCkBAIC0xNTgsMTAgKzE1OCwxMCBAQAogICAgZW51bSBlbmRpYW5fZW51bSBlbmRpYW47CiAgCiBkaWZmIC0tZ2l0IGEvbGQvbGQudGV4aW5mbyBiL2xkL2xkLnRleGluZm8KLWluZGV4IGViZTdlN2I3YmQuLjMzYWEyYzYyZmEgMTAwNjQ0CitpbmRleCBjODk5MTVmMWFhLi5kZjQzMDgzN2UyIDEwMDY0NAogLS0tIGEvbGQvbGQudGV4aW5mbwogKysrIGIvbGQvbGQudGV4aW5mbwotQEAgLTI0ODAsNiArMjQ4MCwxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KK0BAIC0yNDk4LDYgKzI0OTgsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCiAgCiAgUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKICBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KQEAgLTE4MSw3ICsxODEsNyBAQAogIAogIEBjIG1hbiBlbmQKIGRpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCi1pbmRleCAzYjM3YTBhM2UyLi41Yzg1YjAxODQ5IDEwMDY0NAoraW5kZXggNjUzMmE1N2Q5Ni4uZjk0M2YwYjJlNSAxMDA2NDQKIC0tLSBhL2xkL2xkZmlsZS5jCiArKysgYi9sZC9sZGZpbGUuYwogQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCkBAIC0yMDksNyArMjA5LDcgQEAKICAKICAvKiBUcnkgdG8gb3BlbiBhIEJGRCBmb3IgYSBsYW5nX2lucHV0X3N0YXRlbWVudC4gICovCiBkaWZmIC0tZ2l0IGEvbGQvbGRsZXguaCBiL2xkL2xkbGV4LmgKLWluZGV4IDVhYTdmNmJjM2UuLmNiNjU1ZTAzOTkgMTAwNjQ0CitpbmRleCAxNDBlZDFkOWRhLi45OTY1Y2JjMDRmIDEwMDY0NAogLS0tIGEvbGQvbGRsZXguaAogKysrIGIvbGQvbGRsZXguaAogQEAgLTE0Nyw2ICsxNDcsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKQEAgLTIyMiw3ICsyMjIsNyBAQAogIAogIC8qIFRoZSBpbml0aWFsIHBhcnNlciBzdGF0ZXMuICAqLwogZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKLWluZGV4IDJiMDlmMjA0MTMuLjg5ZTJhM2E4MDUgMTAwNjQ0CitpbmRleCBjNDczZWQyNGMzLi5hZGFlMGI0NjEwIDEwMDY0NAogLS0tIGEvbGQvbGRtYWluLmMKICsrKyBiL2xkL2xkbWFpbi5jCiBAQCAtMjYxLDYgKzI2MSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKQEAgLTIzNSw3ICsyMzUsNyBAQAogICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQogZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKLWluZGV4IGVmZmEyNzdiMTYuLmU0OTI5NjA3ZTkgMTAwNjQ0CitpbmRleCBmMjE5MTYwMmQ0Li5iY2NiM2JkZWVmIDEwMDY0NAogLS0tIGEvbGQvbGV4c3VwLmMKICsrKyBiL2xkL2xleHN1cC5jCiBAQCAtNTM4LDYgKzUzOCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQpAQCAtMjY5LDUgKzI2OSw1IEBACiAgICAgIH0KICAKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmluZGV4IDQ5NjI0MmUuLjMzZGZmZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDg4ZmFjMDhmMWM0NzJjNjEyZjM4MWNiYjk0MDg3NTZmMmY1OGI0ZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGUyMDVhZTA1YzQxYThjYzhkNDc3MDhmMGEzYjZmNzQwZTJiZjI1MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCkBAIC00OCw1ICs0OCw1IEBACiAgCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KICAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCmluZGV4IGFjODdhMmQuLjgwZmNiYzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDQ5NzY2MGJkYmViNjc4ODc4NjU1M2E1ZDczMzEwNWY3Zjg5OGRjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc5NzhjMTI5OTAyMTAzM2MzNWMyOWM5NGUwOTk3MjM1ZjdlZGUyNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMTEvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CkBAIC0xNCwxMCArMTQsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IGRjMjRhYWJhZDUuLjQ1MTEwMjRmMjIgMTAwNjQ0CitpbmRleCBmMDRhOTkzZjA2Li44Nzc3Zjk2YmQyIDEwMDY0NAogLS0tIGEvYmZkL2NvbmZpZy5iZmQKICsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtMTE4NiwxMiArMTE4NiwxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTExODksMTIgKzExODksMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KICAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKICAgICAgOzsKICAgIG1pcHM2NCplbC0qLWxpbnV4KikKQEAgLTM1LDEyICszNSwxMiBAQAogICAgbWlwcyplbC0qLWxpbnV4KikKICAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCA0N2M3MTljZDA1Li5mZTdiOTIzOGIyIDEwMDY0NAoraW5kZXggNjE4M2E4NWIzZC4uMWQ3ODQ2NTU5MCAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC01MzAsMTEgKzUzMCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcworQEAgLTUzNSwxMSArNTM1LDExIEBAIG1pcHMqZWwtKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWxtaXB2eHdvcmtzCiAgbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCi0gCQkgICAgICAgIHRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OworIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwogIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKIC1taXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXBuMzIKIC0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGx0c21pcCBlbGY2NGJ0c21pcCIKQEAgLTU1LDUgKzU1LDUgQEAKICBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKaW5kZXggZGM1ZTU4MC4uMWZlZmI2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDhjNjBhNTVkMzY3ODU4OWQ5MzczOWJkMjdmZWMyMTY5MTFkODA5NjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNiNDBiZjU4NDYxNWY3OTRiODVmZDUwZDRkMGE1YzBhMWQyZWU3YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAogU3ViamVjdDogW1BBVENIIDEyLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCkBAIC0zNCw3ICszNCw3IEBACiAgMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCi1pbmRleCAzZDM4ZmRhMTRiLi4wYWVjNDliYmIzIDEwMDY0NAoraW5kZXggZWVjOWM0YWQyYS4uM2JmMGE3MWU2MyAxMDA2NDQKIC0tLSBhL2JmZC9hb3V0eC5oCiArKysgYi9iZmQvYW91dHguaAogQEAgLTgxNCw2ICs4MTQsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKQEAgLTQ2LDM0ICs0NiwzNCBAQAogIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOwogIAkgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKLWluZGV4IDQzM2I5NWZhMDguLjA2M2I3OTQzYTEgMTAwNjQ0CitpbmRleCBlODNjNTdhMmYzLi4zMDE2ZWExYmFlIDEwMDY0NAogLS0tIGEvYmZkL2FyY2h1cmVzLmMKICsrKyBiL2JmZC9hcmNodXJlcy5jCiBAQCAtMjAxLDYgKzIwMSw3IEBAIERFU0NSSVBUSU9OCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgeyogZGVjaW1hbCAnWExSJyAgKn0KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgeyogZGVjaW1hbCAnSUEyJyAgKn0KLSsuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgeyogZGVjaW1hbCAnWExQJyAgKn0KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMJCTY1MDMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscgkJODg3NjgyCSB7KiBkZWNpbWFsICdYTFInLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyCTczNjU1MAkgeyogZGVjaW1hbCAnSUEyJy4gICp9CisrLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcuICAqfQorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMgkJMzIKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMgkJMzMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMwkJMzQKIGRpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAotaW5kZXggZDEyNmFlZDA4Ni4uMmI3NTNiM2E5MyAxMDA2NDQKK2luZGV4IDQyOTkxZTc4NDguLjI3YWJjNWQ1YTggMTAwNjQ0CiAtLS0gYS9iZmQvYmZkLWluMi5oCiArKysgYi9iZmQvYmZkLWluMi5oCi1AQCAtMjA2MCw2ICsyMDYwLDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCitAQCAtMjA2Miw2ICsyMDYyLDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIC8qIGRlY2ltYWwgJ1hMUicgICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJyAgKi8KLSsjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnICAqLworICNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIC8qIGRlY2ltYWwgJ1hMUicuICAqLworICNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIC8qIGRlY2ltYWwgJ0lBMicuICAqLworKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcuICAqLwogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKICAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDQ1MTEwMjRmMjIuLmYwZjkwNzJmMTAgMTAwNjQ0CitpbmRleCA4Nzc3Zjk2YmQyLi43YjgwYmRhOGM5IDEwMDY0NAogLS0tIGEvYmZkL2NvbmZpZy5iZmQKICsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtMTE2OSw2ICsxMTY5LDExIEBAIGNhc2UgIiR7dGFyZ30iIGluCitAQCAtMTE3Miw2ICsxMTcyLDExIEBAIGNhc2UgIiR7dGFyZ30iIGluCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbGVfdmVjCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9iZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCiAgICAgIDs7CkBAIC04Niw3ICs4Niw3IEBACiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfYmVfdmVjCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCiBkaWZmIC0tZ2l0IGEvYmZkL2NwdS1taXBzLmMgYi9iZmQvY3B1LW1pcHMuYwotaW5kZXggMjQ5MzA5NGJlZi4uODM3NWQxYWU5NiAxMDA2NDQKK2luZGV4IGNiNTBjNjQzNzEuLjJiOWQxZDZlY2YgMTAwNjQ0CiAtLS0gYS9iZmQvY3B1LW1pcHMuYwogKysrIGIvYmZkL2NwdS1taXBzLmMKIEBAIC0xMDUsNyArMTA1LDggQEAgZW51bQpAQCAtMTAwLDcgKzEwMCw3IEBACiAgCiAgI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKIEBAIC0xNTgsNyArMTU5LDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwgICAgICAgRkFMU0UsIE5OKElfeGxyKSksCisgICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxyLCAibWlwczp4bHIiLAkgIEZBTFNFLCBOTihJX3hscikpLAogICAgTiAoMzIsIDMyLCBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyLCAibWlwczppbnRlcmFwdGl2LW1yMiIsIEZBTFNFLAogICAgICAgTk4oSV9pbnRlcmFwdGl2X21yMikpLAogLSAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLDApCkBAIC0xMTAsMTAgKzExMCwxMCBAQAogIAogIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKIGRpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYwotaW5kZXggZmRkZjY4YzgxNi4uMzU0Yzg1ZDAwYiAxMDA2NDQKK2luZGV4IDI4NTQwMTM2N2QuLjE0ZWJiNWYxNzUgMTAwNjQ0CiAtLS0gYS9iZmQvZWxmeHgtbWlwcy5jCiArKysgYi9iZmQvZWxmeHgtbWlwcy5jCi1AQCAtNjc5Niw2ICs2Nzk2LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKK0BAIC02ODA2LDYgKzY4MDYsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQogICAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOgogICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyOwogIApAQCAtMTIzLDcgKzEyMyw3IEBACiAgICAgIGRlZmF1bHQ6CiAgICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKICAJewotQEAgLTExOTU2LDYgKzExOTU5LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQorQEAgLTExOTYzLDYgKzExOTY2LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQogICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOwogICAgICAgIGJyZWFrOwogIApAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgogICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOwogICAgICAgIGJyZWFrOwotQEAgLTEzOTg5LDYgKzEzOTk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQorQEAgLTEzOTM2LDYgKzEzOTQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQogICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbnAsIGJmZF9tYWNoX21pcHNfb2N0ZW9uIH0sCiAgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9uLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAogICAgeyBiZmRfbWFjaF9taXBzX2xvb25nc29uXzNhLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LApAQCAtMTQzLDEwICsxNDMsMTAgQEAKICAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KICAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAogZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggMmIxNWYwZjJjYi4uMDkyNzQ0NzA4ZSAxMDA2NDQKK2luZGV4IGFlMWNkYTlhN2IuLmZlZDAzODdhOTQgMTAwNjQ0CiAtLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKICsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTMzMzUsNiArMzMzNSw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzICh1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCitAQCAtMzM3MCw2ICszMzcwLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKICAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7CiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7CiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOwpAQCAtMTU1LDcgKzE1NSw3IEBACiAgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgogIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotaW5kZXggMzgwNGRmMjk1OC4uOTU3NmM5ODZkYiAxMDA2NDQKK2luZGV4IGMxMzUxMzFiNTkuLmQ4ZmJkYThlMzEgMTAwNjQ0CiAtLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYwogKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKIEBAIC01NTIsNiArNTUyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICApCiAgCiAgLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCi1AQCAtMTk3MzgsNyArMTk3NDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KK0BAIC0xOTczNyw3ICsxOTczOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQogICAgLyogQnJvYWRjb20gWExQLgogICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCiAgICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwpAQCAtMTg0LDcgKzE4NCw3IEBACiAgICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLwogICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAogZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCA4MWRkNGNiZDk3Li45NWJkZjNiMTliIDEwMDc1NQoraW5kZXggYTQwYWMyMTQ0Zi4uNjVhNjk5NTI0MyAxMDA3NTUKIC0tLSBhL2dhcy9jb25maWd1cmUKICsrKyBiL2dhcy9jb25maWd1cmUKIEBAIC0xMjk4OSw2ICsxMjk4OSw5IEBAIF9BQ0VPRgpAQCAtMTk4LDcgKzE5OCw3IEBACiAgCSAgICBtaXBzX2NwdT1yMzkwMAogIAkgICAgOzsKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9taXBzLmggYi9pbmNsdWRlL2VsZi9taXBzLmgKLWluZGV4IGE0YmVhNDNmZjguLjczZDkwNGUyNWYgMTAwNjQ0CitpbmRleCA5ZGUwYjRlMTc1Li43NGZjNGY3ZTU1IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCiArKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKIEBAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCkBAIC0yMTAsNyArMjEwLDcgQEAKICAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjMJMHgwMDhlMDAwMAogICNkZWZpbmUgRV9NSVBTX01BQ0hfNTQwMAkweDAwOTEwMDAwCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1pbmRleCBjZWFlOWVjNTBhLi4yNzZlZTNjNmMxIDEwMDY0NAoraW5kZXggNWVlYTcyZjEzOS4uOTBmNmQ1N2UxNSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAogKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCiBAQCAtMTI1OSw2ICsxMjU5LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewpAQCAtMjQxLDEwICsyNDEsMTAgQEAKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgIH0KIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggZmU3YjkyMzhiMi4uMmFkZjEwOGIxNyAxMDA2NDQKK2luZGV4IDFkNzg0NjU1OTAuLjMwN2U3ODdiNjQgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUudGd0CiArKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTE2LDYgKzUxNiw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKK0BAIC01MjEsNiArNTIxLDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQogIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKICAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKQEAgLTI1NCw3ICsyNTQsNyBAQAogIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHI1OTAwIgogIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwogZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1kaXMuYyBiL29wY29kZXMvbWlwcy1kaXMuYwotaW5kZXggNDUxOTUwMDdjMS4uNGE4MGEwNWQxOSAxMDA2NDQKK2luZGV4IDk4NGZjYmI4MDIuLjk1YjEwN2QyMTYgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKICsrKyBiL29wY29kZXMvbWlwcy1kaXMuYwogQEAgLTY1NSwxMyArNjU1LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCiAgICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLwogZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYwotaW5kZXggMTlmY2E0MDhjOS4uZDAyMDY5YzUyOCAxMDA2NDQKK2luZGV4IDE4MGQ2MTNjOTMuLjY1YjdiOGNjMjMgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL21pcHMtb3BjLmMKICsrKyBiL29wY29kZXMvbWlwcy1vcGMuYwogQEAgLTMyOCw2ICszMjgsNyBAQCBkZWNvZGVfbWlwc19vcGVyYW5kIChjb25zdCBjaGFyICpwKQpAQCAtMzg5LDUgKzM4OSw1IEBACiAgeyJzd2MwIiwJCSJFLEEoYikiLAkwLCAgICAoaW50KSBNX1NXQzBfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAogIHsic3djMSIsCQkiVCxvKGIpIiwJMHhlNDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNfEZQX1MsCTAsCQlJMSwJCTAsCTAgfSwKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCmluZGV4IDI0NzM3NmIuLmMzZTFiMTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU0NjIwMmJlY2FiNjI1YzZjMDhjYWY5MWUwOGNjYmJjMWJmNzk5YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI3ZWMyMmNhM2NkNTZjZmRmMDYwZDJlMWY0MTRiZWRjZTI2OWIzMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KIERhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKIFN1YmplY3Q6IFtQQVRDSCAxMy8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKQEAgLTExLDEwICsxMSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLWluZGV4IDQyNjI2MWFiMjEuLjBkMzU5MTZjZGQgMTAwNjQ0CitpbmRleCBiYjE3ZjI2YzJlLi5kYmRkNzYyYjRlIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKICsrKyBiL29wY29kZXMvcHBjLW9wYy5jCi1AQCAtNDg4MSw3ICs0ODgxLDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworQEAgLTUzMzgsNyArNTMzOCw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKICB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKICAKICB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCkBAIC0yMiw3ICsyMiw3IEBACiAgCiAgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCiAgCi1AQCAtNDkzNSw3ICs0OTM0LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworQEAgLTUzOTIsNyArNTM5MSw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKICAKICB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAogIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LApAQCAtMzIsNSArMzIsNSBAQAogIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCiAgCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaAppbmRleCA0MmIxMDY1Li5jZjM2OTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiZjIwZDU4MjM2NjJkMWYyZWI0N2RlMmNkZmQxNzM2MjdhMjA1YjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZGZiZDY4ODlkODY4YTA5ZDY5NWRkMjczNjEwNDg0OGMxYTljOWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAxNC8xNV0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKQEAgLTE0LDcgKzE0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzZDYzMDI3Mjk3Li5jMWY5MmExMzYwIDEwMDY0NAoraW5kZXggOGFlZjIyYTMxOC4uNzAzMDAyNmZmYSAxMDA2NDQKIC0tLSBhL2dvbGQvY29uZmlndXJlLnRndAogKysrIGIvZ29sZC9jb25maWd1cmUudGd0CiBAQCAtMTUzLDYgKzE1MywxMyBAQCBhYXJjaDY0Ki0qKQpAQCAtNDYsNSArNDYsNSBAQAogICB0YXJnX29iaj1taXBzCiAgIHRhcmdfbWFjaGluZT1FTV9NSVBTCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKaW5kZXggMmM4OTAwYy4uOGM5ZmQyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDliNDU2YTBlNGYyODRmZDQxYWMzNjU5NTE0NGVkNDRkYzgyNDEwZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI5ODgwNGY0MzA5MzlkNmNjOTRiMDk3MzJlZTkzZTY0YzVlNmJlMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKQEAgLTg1LDUgKzg1LDUgQEAKICAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI5LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi9tNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vbTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMzlkYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi9tNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cubW4tbG9naXN0aWsuZGUvdW5zdXBwb3J0ZWQvcHhhMjUwL3BhdGNoZXIKLSMKLQotSW5kZXg6IGJpc29uLTIuNC4yL200L2xjbWVzc2FnZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGJpc29uLTIuNC4yL200L2xjbWVzc2FnZS5tNAotQEAgLTAsMCArMSwzMiBAQAotKyMgbGNtZXNzYWdlLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotKwotKyMgQ2hlY2sgd2hldGhlciBMQ19NRVNTQUdFUyBpcyBhdmFpbGFibGUgaW4gPGxvY2FsZS5oPi4KLSsKLStBQ19ERUZVTihbQU1fTENfTUVTU0FHRVNdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgTENfTUVTU0FHRVNdLCBhbV9jdl92YWxfTENfTUVTU0FHRVMsCi0rICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxvY2FsZS5oPl0sIFtyZXR1cm4gTENfTUVTU0FHRVNdLAotKyAgICAgICBhbV9jdl92YWxfTENfTUVTU0FHRVM9eWVzLCBhbV9jdl92YWxfTENfTUVTU0FHRVM9bm8pXSkKLSsgIGlmIHRlc3QgJGFtX2N2X3ZhbF9MQ19NRVNTQUdFUyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9MQ19NRVNTQUdFUywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdXIgPGxvY2FsZS5oPiBmaWxlIGRlZmluZXMgTENfTUVTU0FHRVMuXSkKLSsgIGZpCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC91aW50bWF4X3QubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC91aW50bWF4X3QubTQKLUBAIC0wLDAgKzEsMjkgQEAKLSsjIHVpbnRtYXhfdC5tNCBzZXJpYWwgNiAoZ2V0dGV4dC0wLjExKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotK0FDX1BSRVJFUSgyLjEzKQotKwotKyMgRGVmaW5lIHVpbnRtYXhfdCB0byBgdW5zaWduZWQgbG9uZycgb3IgYHVuc2lnbmVkIGxvbmcgbG9uZycKLSsjIGlmIDxpbnR0eXBlcy5oPiBkb2VzIG5vdCBleGlzdC4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9VSU5UTUFYX1RdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9TVERJTlRfSF0pCi0rICBpZiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCA9IG5vICYmIHRlc3QgJGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaCA9IG5vOyB0aGVuCi0rICAgIEFDX1JFUVVJUkUoW2ptX0FDX1RZUEVfVU5TSUdORURfTE9OR19MT05HXSkKLSsgICAgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcgPSB5ZXMgXAotKyAgICAgICYmIGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcgbG9uZycgXAotKyAgICAgIHx8IGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcnCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRCh1aW50bWF4X3QsICRhY190eXBlLAotKyAgW0RlZmluZSB0byB1bnNpZ25lZCBsb25nIG9yIHVuc2lnbmVkIGxvbmcgbG9uZwotKyAgIGlmIDxpbnR0eXBlcy5oPiBhbmQgPHN0ZGludC5oPiBkb24ndCBkZWZpbmUuXSkKLSsgIGZpCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC91bG9uZ2xvbmcubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC91bG9uZ2xvbmcubTQKLUBAIC0wLDAgKzEsMjMgQEAKLSsjIHVsb25nbG9uZy5tNCBzZXJpYWwgMiAoZmlsZXV0aWxzLTQuMC4zMiwgZ2V0dGV4dC0wLjEwLjQwKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotK0FDX0RFRlVOKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNpZ25lZCBsb25nIGxvbmddLCBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZywKLSsgIFtBQ19UUllfTElOSyhbdW5zaWduZWQgbG9uZyBsb25nIHVsbCA9IDE7IGludCBpID0gNjM7XSwKLSsgICAgW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGxtYXggPSAodW5zaWduZWQgbG9uZyBsb25nKSAtMTsKLSsgICAgIHJldHVybiB1bGwgPDwgaSB8IHVsbCA+PiBpIHwgdWxsbWF4IC8gdWxsIHwgdWxsbWF4ICUgdWxsO10sCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPXllcywKLSsgICAgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmc9bm8pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1VOU0lHTkVEX0xPTkdfTE9ORywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB1bnNpZ25lZCBsb25nIGxvbmcgdHlwZS5dKQotKyAgZmkKLStdKQotSW5kZXg6IGJpc29uLTIuNC4yL200L2ludGRpdjAubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC9pbnRkaXYwLm00Ci1AQCAtMCwwICsxLDcyIEBACi0rIyBpbnRkaXYwLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtndF9JTlRESVYwXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLSsKLSsgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgU0lHRlBFXSwKLSsgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUsCi0rICAgIFsKLSsgICAgICBBQ19UUllfUlVOKFsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKwotK3N0YXRpYyB2b2lkCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rc2lnZnBlX2hhbmRsZXIgKGludCBzaWcpCi0rI2Vsc2UKLStzaWdmcGVfaGFuZGxlciAoc2lnKSBpbnQgc2lnOwotKyNlbmRpZgotK3sKLSsgIC8qIEV4aXQgd2l0aCBjb2RlIDAgaWYgU0lHRlBFLCB3aXRoIGNvZGUgMSBpZiBhbnkgb3RoZXIgc2lnbmFsLiAgKi8KLSsgIGV4aXQgKHNpZyAhPSBTSUdGUEUpOwotK30KLSsKLStpbnQgeCA9IDE7Ci0raW50IHkgPSAwOwotK2ludCB6OwotK2ludCBuYW47Ci0rCi0raW50IG1haW4gKCkKLSt7Ci0rICBzaWduYWwgKFNJR0ZQRSwgc2lnZnBlX2hhbmRsZXIpOwotKy8qIElSSVggYW5kIEFJWCAod2hlbiAieGxjIC1xY2hlY2siIGlzIHVzZWQpIHlpZWxkIHNpZ25hbCBTSUdUUkFQLiAgKi8KLSsjaWYgKGRlZmluZWQgKF9fc2dpKSB8fCBkZWZpbmVkIChfQUlYKSkgJiYgZGVmaW5lZCAoU0lHVFJBUCkKLSsgIHNpZ25hbCAoU0lHVFJBUCwgc2lnZnBlX2hhbmRsZXIpOwotKyNlbmRpZgotKy8qIExpbnV4L1NQQVJDIHlpZWxkcyBzaWduYWwgU0lHSUxMLiAgKi8KLSsjaWYgZGVmaW5lZCAoX19zcGFyY19fKSAmJiBkZWZpbmVkIChfX2xpbnV4X18pCi0rICBzaWduYWwgKFNJR0lMTCwgc2lnZnBlX2hhbmRsZXIpOwotKyNlbmRpZgotKwotKyAgeiA9IHggLyB5OwotKyAgbmFuID0geSAvIHk7Ci0rICBleGl0ICgxKTsKLSt9Ci0rXSwgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9eWVzLCBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT1ubywKLSsgICAgICAgIFsKLSsgICAgICAgICAgIyBHdWVzcyBiYXNlZCBvbiB0aGUgQ1BVLgotKyAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0rICAgICAgICAgICAgYWxwaGEqIHwgaVszNDU2N104NiB8IG02OGsgfCBzMzkwKikKLSsgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyB5ZXMiOzsKLSsgICAgICAgICAgICAqKQotKyAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIG5vIjs7Ci0rICAgICAgICAgIGVzYWMKLSsgICAgICAgIF0pCi0rICAgIF0pCi0rICBjYXNlICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiIGluCi0rICAgICp5ZXMpIHZhbHVlPTE7OwotKyAgICAqKSB2YWx1ZT0wOzsKLSsgIGVzYWMKLSsgIEFDX0RFRklORV9VTlFVT1RFRChJTlRESVYwX1JBSVNFU19TSUdGUEUsICR2YWx1ZSwKLSsgICAgW0RlZmluZSBpZiBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHNpZ25hbCBTSUdGUEUuXSkKLStdKQotSW5kZXg6IGJpc29uLTIuNC4yL200L2dsaWIubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC9nbGliLm00Ci1AQCAtMCwwICsxLDE5NiBAQAotKyMgQ29uZmlndXJlIHBhdGhzIGZvciBHTElCCi0rIyBPd2VuIFRheWxvciAgICAgOTctMTEtMwotKwotK2RubCBBTV9QQVRIX0dMSUIoW01JTklNVU0tVkVSU0lPTiwgW0FDVElPTi1JRi1GT1VORCBbLCBBQ1RJT04tSUYtTk9ULUZPVU5EIFssIE1PRFVMRVNdXV1dKQotK2RubCBUZXN0IGZvciBHTElCLCBhbmQgZGVmaW5lIEdMSUJfQ0ZMQUdTIGFuZCBHTElCX0xJQlMsIGlmICJnbW9kdWxlIiBvciAKLStkbmwgZ3RocmVhZCBpcyBzcGVjaWZpZWQgaW4gTU9EVUxFUywgcGFzcyB0byBnbGliLWNvbmZpZwotK2RubAotK0FDX0RFRlVOKEFNX1BBVEhfR0xJQiwKLStbZG5sIAotK2RubCBHZXQgdGhlIGNmbGFncyBhbmQgbGlicmFyaWVzIGZyb20gdGhlIGdsaWItY29uZmlnIHNjcmlwdAotK2RubAotK0FDX0FSR19XSVRIKGdsaWItcHJlZml4LFsgIC0td2l0aC1nbGliLXByZWZpeD1QRlggICBQcmVmaXggd2hlcmUgR0xJQiBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0rICAgICAgICAgICAgZ2xpYl9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIGdsaWJfY29uZmlnX3ByZWZpeD0iIikKLStBQ19BUkdfV0lUSChnbGliLWV4ZWMtcHJlZml4LFsgIC0td2l0aC1nbGliLWV4ZWMtcHJlZml4PVBGWCBFeGVjIHByZWZpeCB3aGVyZSBHTElCIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSwKLSsgICAgICAgICAgICBnbGliX2NvbmZpZ19leGVjX3ByZWZpeD0iJHdpdGh2YWwiLCBnbGliX2NvbmZpZ19leGVjX3ByZWZpeD0iIikKLStBQ19BUkdfRU5BQkxFKGdsaWJ0ZXN0LCBbICAtLWRpc2FibGUtZ2xpYnRlc3QgICAgICAgRG8gbm90IHRyeSB0byBjb21waWxlIGFuZCBydW4gYSB0ZXN0IEdMSUIgcHJvZ3JhbV0sCi0rCQkgICAgLCBlbmFibGVfZ2xpYnRlc3Q9eWVzKQotKwotKyAgaWYgdGVzdCB4JGdsaWJfY29uZmlnX2V4ZWNfcHJlZml4ICE9IHggOyB0aGVuCi0rICAgICBnbGliX2NvbmZpZ19hcmdzPSIkZ2xpYl9jb25maWdfYXJncyAtLWV4ZWMtcHJlZml4PSRnbGliX2NvbmZpZ19leGVjX3ByZWZpeCIKLSsgICAgIGlmIHRlc3QgeCR7R0xJQl9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotKyAgICAgICAgR0xJQl9DT05GSUc9JGdsaWJfY29uZmlnX2V4ZWNfcHJlZml4L2Jpbi9nbGliLWNvbmZpZwotKyAgICAgZmkKLSsgIGZpCi0rICBpZiB0ZXN0IHgkZ2xpYl9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCi0rICAgICBnbGliX2NvbmZpZ19hcmdzPSIkZ2xpYl9jb25maWdfYXJncyAtLXByZWZpeD0kZ2xpYl9jb25maWdfcHJlZml4IgotKyAgICAgaWYgdGVzdCB4JHtHTElCX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCi0rICAgICAgICBHTElCX0NPTkZJRz0kZ2xpYl9jb25maWdfcHJlZml4L2Jpbi9nbGliLWNvbmZpZwotKyAgICAgZmkKLSsgIGZpCi0rCi0rICBmb3IgbW9kdWxlIGluIC4gJDQKLSsgIGRvCi0rICAgICAgY2FzZSAiJG1vZHVsZSIgaW4KLSsgICAgICAgICBnbW9kdWxlKSAKLSsgICAgICAgICAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgZ21vZHVsZSIKLSsgICAgICAgICA7OwotKyAgICAgICAgIGd0aHJlYWQpIAotKyAgICAgICAgICAgICBnbGliX2NvbmZpZ19hcmdzPSIkZ2xpYl9jb25maWdfYXJncyBndGhyZWFkIgotKyAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgZG9uZQotKwotKyAgQUNfUEFUSF9QUk9HKEdMSUJfQ09ORklHLCBnbGliLWNvbmZpZywgbm8pCi0rICBtaW5fZ2xpYl92ZXJzaW9uPWlmZWxzZShbJDFdLCAsMC45OS43LCQxKQotKyAgQUNfTVNHX0NIRUNLSU5HKGZvciBHTElCIC0gdmVyc2lvbiA+PSAkbWluX2dsaWJfdmVyc2lvbikKLSsgIG5vX2dsaWI9IiIKLSsgIGlmIHRlc3QgIiRHTElCX0NPTkZJRyIgPSAibm8iIDsgdGhlbgotKyAgICBub19nbGliPXllcwotKyAgZWxzZQotKyAgICBHTElCX0NGTEFHUz1gJEdMSUJfQ09ORklHICRnbGliX2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAotKyAgICBHTElCX0xJQlM9YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLWxpYnNgCi0rICAgIGdsaWJfY29uZmlnX21ham9yX3ZlcnNpb249YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLXZlcnNpb24gfCBcCi0rICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS5cKFtbMC05XV0qXCkvXDEvJ2AKLSsgICAgZ2xpYl9jb25maWdfbWlub3JfdmVyc2lvbj1gJEdMSUJfQ09ORklHICRnbGliX2NvbmZpZ19hcmdzIC0tdmVyc2lvbiB8IFwKLSsgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS9cMi8nYAotKyAgICBnbGliX2NvbmZpZ19taWNyb192ZXJzaW9uPWAkR0xJQl9DT05GSUcgJGdsaWJfY29uZmlnX2FyZ3MgLS12ZXJzaW9uIHwgXAotKyAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKS5cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpL1wzLydgCi0rICAgIGlmIHRlc3QgIngkZW5hYmxlX2dsaWJ0ZXN0IiA9ICJ4eWVzIiA7IHRoZW4KLSsgICAgICBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsgICAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgotKyAgICAgIENGTEFHUz0iJENGTEFHUyAkR0xJQl9DRkxBR1MiCi0rICAgICAgTElCUz0iJEdMSUJfTElCUyAkTElCUyIKLStkbmwKLStkbmwgTm93IGNoZWNrIGlmIHRoZSBpbnN0YWxsZWQgR0xJQiBpcyBzdWZmaWNpZW50bHkgbmV3LiAoQWxzbyBzYW5pdHkKLStkbmwgY2hlY2tzIHRoZSByZXN1bHRzIG9mIGdsaWItY29uZmlnIHRvIHNvbWUgZXh0ZW50Ci0rZG5sCi0rICAgICAgcm0gLWYgY29uZi5nbGlidGVzdAotKyAgICAgIEFDX1RSWV9SVU4oWwotKyNpbmNsdWRlIDxnbGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotK2ludCAKLSttYWluICgpCi0rewotKyAgaW50IG1ham9yLCBtaW5vciwgbWljcm87Ci0rICBjaGFyICp0bXBfdmVyc2lvbjsKLSsKLSsgIHN5c3RlbSAoInRvdWNoIGNvbmYuZ2xpYnRlc3QiKTsKLSsKLSsgIC8qIEhQL1VYIDkgKCVAIyEpIHdyaXRlcyB0byBzc2NhbmYgc3RyaW5ncyAqLwotKyAgdG1wX3ZlcnNpb24gPSBnX3N0cmR1cCgiJG1pbl9nbGliX3ZlcnNpb24iKTsKLSsgIGlmIChzc2NhbmYodG1wX3ZlcnNpb24sICIlZC4lZC4lZCIsICZtYWpvciwgJm1pbm9yLCAmbWljcm8pICE9IDMpIHsKLSsgICAgIHByaW50ZigiJXMsIGJhZCB2ZXJzaW9uIHN0cmluZ1xuIiwgIiRtaW5fZ2xpYl92ZXJzaW9uIik7Ci0rICAgICBleGl0KDEpOwotKyAgIH0KLSsKLSsgIGlmICgoZ2xpYl9tYWpvcl92ZXJzaW9uICE9ICRnbGliX2NvbmZpZ19tYWpvcl92ZXJzaW9uKSB8fAotKyAgICAgIChnbGliX21pbm9yX3ZlcnNpb24gIT0gJGdsaWJfY29uZmlnX21pbm9yX3ZlcnNpb24pIHx8Ci0rICAgICAgKGdsaWJfbWljcm9fdmVyc2lvbiAhPSAkZ2xpYl9jb25maWdfbWljcm9fdmVyc2lvbikpCi0rICAgIHsKLSsgICAgICBwcmludGYoIlxuKioqICdnbGliLWNvbmZpZyAtLXZlcnNpb24nIHJldHVybmVkICVkLiVkLiVkLCBidXQgR0xJQiAoJWQuJWQuJWQpXG4iLCAKLSsgICAgICAgICAgICAgJGdsaWJfY29uZmlnX21ham9yX3ZlcnNpb24sICRnbGliX2NvbmZpZ19taW5vcl92ZXJzaW9uLCAkZ2xpYl9jb25maWdfbWljcm9fdmVyc2lvbiwKLSsgICAgICAgICAgICAgZ2xpYl9tYWpvcl92ZXJzaW9uLCBnbGliX21pbm9yX3ZlcnNpb24sIGdsaWJfbWljcm9fdmVyc2lvbik7Ci0rICAgICAgcHJpbnRmICgiKioqIHdhcyBmb3VuZCEgSWYgZ2xpYi1jb25maWcgd2FzIGNvcnJlY3QsIHRoZW4gaXQgaXMgYmVzdFxuIik7Ci0rICAgICAgcHJpbnRmICgiKioqIHRvIHJlbW92ZSB0aGUgb2xkIHZlcnNpb24gb2YgR0xJQi4gWW91IG1heSBhbHNvIGJlIGFibGUgdG8gZml4IHRoZSBlcnJvclxuIik7Ci0rICAgICAgcHJpbnRmKCIqKiogYnkgbW9kaWZ5aW5nIHlvdXIgTERfTElCUkFSWV9QQVRIIGVudmlyb21lbnQgdmFyaWFibGUsIG9yIGJ5IGVkaXRpbmdcbiIpOwotKyAgICAgIHByaW50ZigiKioqIC9ldGMvbGQuc28uY29uZi4gTWFrZSBzdXJlIHlvdSBoYXZlIHJ1biBsZGNvbmZpZyBpZiB0aGF0IGlzXG4iKTsKLSsgICAgICBwcmludGYoIioqKiByZXF1aXJlZCBvbiB5b3VyIHN5c3RlbS5cbiIpOwotKyAgICAgIHByaW50ZigiKioqIElmIGdsaWItY29uZmlnIHdhcyB3cm9uZywgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBHTElCX0NPTkZJR1xuIik7Ci0rICAgICAgcHJpbnRmKCIqKiogdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgY29weSBvZiBnbGliLWNvbmZpZywgYW5kIHJlbW92ZSB0aGUgZmlsZSBjb25maWcuY2FjaGVcbiIpOwotKyAgICAgIHByaW50ZigiKioqIGJlZm9yZSByZS1ydW5uaW5nIGNvbmZpZ3VyZVxuIik7Ci0rICAgIH0gCi0rICBlbHNlIGlmICgoZ2xpYl9tYWpvcl92ZXJzaW9uICE9IEdMSUJfTUFKT1JfVkVSU0lPTikgfHwKLSsJICAgKGdsaWJfbWlub3JfdmVyc2lvbiAhPSBHTElCX01JTk9SX1ZFUlNJT04pIHx8Ci0rICAgICAgICAgICAoZ2xpYl9taWNyb192ZXJzaW9uICE9IEdMSUJfTUlDUk9fVkVSU0lPTikpCi0rICAgIHsKLSsgICAgICBwcmludGYoIioqKiBHTElCIGhlYWRlciBmaWxlcyAodmVyc2lvbiAlZC4lZC4lZCkgZG8gbm90IG1hdGNoXG4iLAotKwkgICAgIEdMSUJfTUFKT1JfVkVSU0lPTiwgR0xJQl9NSU5PUl9WRVJTSU9OLCBHTElCX01JQ1JPX1ZFUlNJT04pOwotKyAgICAgIHByaW50ZigiKioqIGxpYnJhcnkgKHZlcnNpb24gJWQuJWQuJWQpXG4iLAotKwkgICAgIGdsaWJfbWFqb3JfdmVyc2lvbiwgZ2xpYl9taW5vcl92ZXJzaW9uLCBnbGliX21pY3JvX3ZlcnNpb24pOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAoKGdsaWJfbWFqb3JfdmVyc2lvbiA+IG1ham9yKSB8fAotKyAgICAgICAgKChnbGliX21ham9yX3ZlcnNpb24gPT0gbWFqb3IpICYmIChnbGliX21pbm9yX3ZlcnNpb24gPiBtaW5vcikpIHx8Ci0rICAgICAgICAoKGdsaWJfbWFqb3JfdmVyc2lvbiA9PSBtYWpvcikgJiYgKGdsaWJfbWlub3JfdmVyc2lvbiA9PSBtaW5vcikgJiYgKGdsaWJfbWljcm9fdmVyc2lvbiA+PSBtaWNybykpKQotKyAgICAgIHsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAgICB9Ci0rICAgICBlbHNlCi0rICAgICAgewotKyAgICAgICAgcHJpbnRmKCJcbioqKiBBbiBvbGQgdmVyc2lvbiBvZiBHTElCICglZC4lZC4lZCkgd2FzIGZvdW5kLlxuIiwKLSsgICAgICAgICAgICAgICBnbGliX21ham9yX3ZlcnNpb24sIGdsaWJfbWlub3JfdmVyc2lvbiwgZ2xpYl9taWNyb192ZXJzaW9uKTsKLSsgICAgICAgIHByaW50ZigiKioqIFlvdSBuZWVkIGEgdmVyc2lvbiBvZiBHTElCIG5ld2VyIHRoYW4gJWQuJWQuJWQuIFRoZSBsYXRlc3QgdmVyc2lvbiBvZlxuIiwKLSsJICAgICAgIG1ham9yLCBtaW5vciwgbWljcm8pOwotKyAgICAgICAgcHJpbnRmKCIqKiogR0xJQiBpcyBhbHdheXMgYXZhaWxhYmxlIGZyb20gZnRwOi8vZnRwLmd0ay5vcmcuXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIElmIHlvdSBoYXZlIGFscmVhZHkgaW5zdGFsbGVkIGEgc3VmZmljaWVudGx5IG5ldyB2ZXJzaW9uLCB0aGlzIGVycm9yXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHdyb25nIGNvcHkgb2YgdGhlIGdsaWItY29uZmlnIHNoZWxsIHNjcmlwdCBpc1xuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBiZWluZyBmb3VuZC4gVGhlIGVhc2llc3Qgd2F5IHRvIGZpeCB0aGlzIGlzIHRvIHJlbW92ZSB0aGUgb2xkIHZlcnNpb25cbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogb2YgR0xJQiwgYnV0IHlvdSBjYW4gYWxzbyBzZXQgdGhlIEdMSUJfQ09ORklHIGVudmlyb25tZW50IHRvIHBvaW50IHRvIHRoZVxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBjb3JyZWN0IGNvcHkgb2YgZ2xpYi1jb25maWcuIChJbiB0aGlzIGNhc2UsIHlvdSB3aWxsIGhhdmUgdG9cbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogbW9kaWZ5IHlvdXIgTERfTElCUkFSWV9QQVRIIGVudmlyb21lbnQgdmFyaWFibGUsIG9yIGVkaXQgL2V0Yy9sZC5zby5jb25mXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIHNvIHRoYXQgdGhlIGNvcnJlY3QgbGlicmFyaWVzIGFyZSBmb3VuZCBhdCBydW4tdGltZSkpXG4iKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIHJldHVybiAxOwotK30KLStdLCwgbm9fZ2xpYj15ZXMsW2VjaG8gJGFjX24gImNyb3NzIGNvbXBpbGluZzsgYXNzdW1lZCBPSy4uLiAkYWNfYyJdKQotKyAgICAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKLSsgICAgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKLSsgICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAieCRub19nbGliIiA9IHggOyB0aGVuCi0rICAgICBBQ19NU0dfUkVTVUxUKHllcykKLSsgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pICAgICAKLSsgIGVsc2UKLSsgICAgIEFDX01TR19SRVNVTFQobm8pCi0rICAgICBpZiB0ZXN0ICIkR0xJQl9DT05GSUciID0gIm5vIiA7IHRoZW4KLSsgICAgICAgZWNobyAiKioqIFRoZSBnbGliLWNvbmZpZyBzY3JpcHQgaW5zdGFsbGVkIGJ5IEdMSUIgY291bGQgbm90IGJlIGZvdW5kIgotKyAgICAgICBlY2hvICIqKiogSWYgR0xJQiB3YXMgaW5zdGFsbGVkIGluIFBSRUZJWCwgbWFrZSBzdXJlIFBSRUZJWC9iaW4gaXMgaW4iCi0rICAgICAgIGVjaG8gIioqKiB5b3VyIHBhdGgsIG9yIHNldCB0aGUgR0xJQl9DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIgotKyAgICAgICBlY2hvICIqKiogZnVsbCBwYXRoIHRvIGdsaWItY29uZmlnLiIKLSsgICAgIGVsc2UKLSsgICAgICAgaWYgdGVzdCAtZiBjb25mLmdsaWJ0ZXN0IDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgICBlbHNlCi0rICAgICAgICAgIGVjaG8gIioqKiBDb3VsZCBub3QgcnVuIEdMSUIgdGVzdCBwcm9ncmFtLCBjaGVja2luZyB3aHkuLi4iCi0rICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkR0xJQl9DRkxBR1MiCi0rICAgICAgICAgIExJQlM9IiRMSUJTICRHTElCX0xJQlMiCi0rICAgICAgICAgIEFDX1RSWV9MSU5LKFsKLSsjaW5jbHVkZSA8Z2xpYi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotK10sICAgICAgWyByZXR1cm4gKChnbGliX21ham9yX3ZlcnNpb24pIHx8IChnbGliX21pbm9yX3ZlcnNpb24pIHx8IChnbGliX21pY3JvX3ZlcnNpb24pKTsgXSwKLSsgICAgICAgIFsgZWNobyAiKioqIFRoZSB0ZXN0IHByb2dyYW0gY29tcGlsZWQsIGJ1dCBkaWQgbm90IHJ1bi4gVGhpcyB1c3VhbGx5IG1lYW5zIgotKyAgICAgICAgICBlY2hvICIqKiogdGhhdCB0aGUgcnVuLXRpbWUgbGlua2VyIGlzIG5vdCBmaW5kaW5nIEdMSUIgb3IgZmluZGluZyB0aGUgd3JvbmciCi0rICAgICAgICAgIGVjaG8gIioqKiB2ZXJzaW9uIG9mIEdMSUIuIElmIGl0IGlzIG5vdCBmaW5kaW5nIEdMSUIsIHlvdSdsbCBuZWVkIHRvIHNldCB5b3VyIgotKyAgICAgICAgICBlY2hvICIqKiogTERfTElCUkFSWV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBlZGl0IC9ldGMvbGQuc28uY29uZiB0byBwb2ludCIKLSsgICAgICAgICAgZWNobyAiKioqIHRvIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24gIEFsc28sIG1ha2Ugc3VyZSB5b3UgaGF2ZSBydW4gbGRjb25maWcgaWYgdGhhdCIKLSsgICAgICAgICAgZWNobyAiKioqIGlzIHJlcXVpcmVkIG9uIHlvdXIgc3lzdGVtIgotKwkgIGVjaG8gIioqKiIKLSsgICAgICAgICAgZWNobyAiKioqIElmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIGluc3RhbGxlZCwgaXQgaXMgYmVzdCB0byByZW1vdmUgaXQsIGFsdGhvdWdoIgotKyAgICAgICAgICBlY2hvICIqKiogeW91IG1heSBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoaW5ncyB0byB3b3JrIGJ5IG1vZGlmeWluZyBMRF9MSUJSQVJZX1BBVEgiCi0rICAgICAgICAgIGVjaG8gIioqKiIKLSsgICAgICAgICAgZWNobyAiKioqIElmIHlvdSBoYXZlIGEgUmVkSGF0IDUuMCBzeXN0ZW0sIHlvdSBzaG91bGQgcmVtb3ZlIHRoZSBHVEsgcGFja2FnZSB0aGF0IgotKyAgICAgICAgICBlY2hvICIqKiogY2FtZSB3aXRoIHRoZSBzeXN0ZW0gd2l0aCB0aGUgY29tbWFuZCIKLSsgICAgICAgICAgZWNobyAiKioqIgotKyAgICAgICAgICBlY2hvICIqKiogICAgcnBtIC0tZXJhc2UgLS1ub2RlcHMgZ3RrIGd0ay1kZXZlbCIgXSwKLSsgICAgICAgIFsgZWNobyAiKioqIFRoZSB0ZXN0IHByb2dyYW0gZmFpbGVkIHRvIGNvbXBpbGUgb3IgbGluay4gU2VlIHRoZSBmaWxlIGNvbmZpZy5sb2cgZm9yIHRoZSIKLSsgICAgICAgICAgZWNobyAiKioqIGV4YWN0IGVycm9yIHRoYXQgb2NjdXJlZC4gVGhpcyB1c3VhbGx5IG1lYW5zIEdMSUIgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKLSsgICAgICAgICAgZWNobyAiKioqIG9yIHRoYXQgeW91IGhhdmUgbW92ZWQgR0xJQiBzaW5jZSBpdCB3YXMgaW5zdGFsbGVkLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHlvdSIKLSsgICAgICAgICAgZWNobyAiKioqIG1heSB3YW50IHRvIGVkaXQgdGhlIGdsaWItY29uZmlnIHNjcmlwdDogJEdMSUJfQ09ORklHIiBdKQotKyAgICAgICAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKLSsgICAgICAgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKLSsgICAgICAgZmkKLSsgICAgIGZpCi0rICAgICBHTElCX0NGTEFHUz0iIgotKyAgICAgR0xJQl9MSUJTPSIiCi0rICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotKyAgZmkKLSsgIEFDX1NVQlNUKEdMSUJfQ0ZMQUdTKQotKyAgQUNfU1VCU1QoR0xJQl9MSUJTKQotKyAgcm0gLWYgY29uZi5nbGlidGVzdAotK10pCi1JbmRleDogYmlzb24tMi40LjIvbTQvaXNjLXBvc2l4Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvaXNjLXBvc2l4Lm00Ci1AQCAtMCwwICsxLDI2IEBACi0rIyBpc2MtcG9zaXgubTQgc2VyaWFsIDIgKGdldHRleHQtMC4xMS4yKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotKyMgVGhpcyBmaWxlIGlzIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZi0yLjUzIGFuZCBuZXdlci4gIFJlbW92ZSBpdCBpbiAyMDA1LgotKwotKyMgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvbmUgaW4gYXV0b2NvbmYuCi0rIyBDdXJyZW50bHkgdGhpcyBtYWNybyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdXRvY29uZiBtYWNybwotKyMgYmVjYXVzZSBnZXR0ZXh0J3MgZ2V0dGV4dC5tNCAoZGlzdHJpYnV0ZWQgaW4gdGhlIGF1dG9tYWtlIHBhY2thZ2UpCi0rIyBzdGlsbCB1c2VzIGl0LiAgT3RoZXJ3aXNlLCB0aGUgdXNlIGluIGdldHRleHQubTQgbWFrZXMgYXV0b2hlYWRlcgotKyMgZ2l2ZSB0aGVzZSBkaWFnbm9zdGljczoKLSsjICAgY29uZmlndXJlLmluOjU1NjogQUNfVFJZX0NPTVBJTEUgd2FzIGNhbGxlZCBiZWZvcmUgQUNfSVNDX1BPU0lYCi0rIyAgIGNvbmZpZ3VyZS5pbjo1NTY6IEFDX1RSWV9SVU4gd2FzIGNhbGxlZCBiZWZvcmUgQUNfSVNDX1BPU0lYCi0rCi0rdW5kZWZpbmUoW0FDX0lTQ19QT1NJWF0pCi0rCi0rQUNfREVGVU4oW0FDX0lTQ19QT1NJWF0sCi0rICBbCi0rICAgIGRubCBUaGlzIHRlc3QgcmVwbGFjZXMgdGhlIG9ic29sZXNjZW50IEFDX0lTQ19QT1NJWCBrbHVkZ2UuCi0rICAgIEFDX0NIRUNLX0xJQihjcG9zaXgsIHN0cmVycm9yLCBbTElCUz0iJExJQlMgLWxjcG9zaXgiXSkKLSsgIF0KLSspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgppbmRleCA3ZDA2NmJlLi41ODcyOGY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKQEAgLTEwLDcgKzEwLDYgQEAKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmlzb24vYmlzb24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL200LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtbG9jYWwubWstZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKQEAgLTIzLDkgKzIyLDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjMzQyMjAxZGUxMDRjYzljZTBhMjFlMGFkMTBkNDAyMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzI0MjhjNzkxN2JkZjlmYTkzY2I4MTgxYzk3MWI2ZTIyODM0MTI1ODQ4Y2YxZDAzY2UxMGIxYmIwNzE2ZmUxIgogCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIgotCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworIyBUaGUgYXV0b21hdGljIG00IHBhdGggZGV0ZWN0aW9uIGdldHMgY29uZnVzZWQsIHNvIGZvcmNlIHRoZSByaWdodCB2YWx1ZQogYWNwYXRocyA9ICItSSAke1N9L200IgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKaW5kZXggYTMxMDEzNS4uYjNjODg5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgpAQCAtOTAsNyArOTAsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21tZWVrcy9ib290Y2hhcnQuZ2l0IFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94cm14L2Jvb3RjaGFydC5naXQgXAogICAgICAgICAgICBmaWxlOi8vYm9vdGNoYXJ0ZF9zdG9wLnNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtTWlzc2luZy1kZWZhdWx0LXZhbHVlLWZvci1CT09UTE9HX0RFU1QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb2xsZWN0b3ItQWxsb2NhdGUtc3BhY2Utb24taGVhcC1mb3ItY2h1bmtzLnBhdGNoIFwKQEAgLTEzOSw3ICsxMzksNyBAQAogCiBQQUNLQUdFUyA9KyAicHlib290Y2hhcnRndWkiCiBGSUxFU19weWJvb3RjaGFydGd1aSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlib290Y2hhcnRndWkgJHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpIgotUkRFUEVORFNfcHlib290Y2hhcnRndWkgPSAicHl0aG9uMy1weWNhaXJvIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1pbWFnZSBweXRob24zLXRleHR1dGlscyBweXRob24zLXNoZWxsIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1jb2RlY3MiCitSREVQRU5EU19weWJvb3RjaGFydGd1aSA9ICJweXRob24zLXB5Y2Fpcm8gcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLWltYWdlIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLWNvZGVjcyIKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdzeXN2aW5pdC1waWRvZicsICdwcm9jcHMnLCBkKX0iCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImxzYiIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcHl0aG9uMy1weWNhaXJvLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLW1pc3NpbmctaGVhZGVyLWluY2x1ZGUtZm9yLWRldl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwNjc2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLW1pc3NpbmctaGVhZGVyLWluY2x1ZGUtZm9yLWRldl90LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYmMzNWM0Y2FlYmI1N2NjOGI5NmMzMGMyNTQzMmIxMmNhOGRjMThkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA2IE9jdCAyMDE3IDE1OjAzOjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgKG1pc3NpbmcgaGVhZGVyIGluY2x1ZGUgZm9yIGRldl90KS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbnZlcnQvc291cmNlLWZzLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbnZlcnQvc291cmNlLWZzLmggYi9jb252ZXJ0L3NvdXJjZS1mcy5oCitpbmRleCAyM2YzMzU2Li42ZmQ3NzBmIDEwMDY0NAorLS0tIGEvY29udmVydC9zb3VyY2UtZnMuaAorKysrIGIvY29udmVydC9zb3VyY2UtZnMuaAorQEAgLTIwLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSAia2VybmNvbXBhdC5oIgorICNpbmNsdWRlIDxsaW51eC9rZGV2X3QuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyAjZGVmaW5lIENPTlZfSU1BR0VfU1VCVk9MX09CSkVDVElEIEJUUkZTX0ZJUlNUX0ZSRUVfT0JKRUNUSUQKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2gKaW5kZXggYTgxOTAwZS4uNDY3ZGUzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2gKQEAgLTEyLDE5ICsxMiwxNiBAQAogIE1ha2VmaWxlIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYjNlMmI2My4uMzQ3YWFmMSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTMyMyw3ICszMjMsNyBAQCB2ZXJzaW9uLmg6IHZlcnNpb24uc2ggdmVyc2lvbi5oLmluIGNvbmZpZ3VyZS5hYworSW5kZXg6IGdpdC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlCisrKysgZ2l0L01ha2VmaWxlCitAQCAtMzQzLDcgKzM0Myw3IEBAIHZlcnNpb24uaDogdmVyc2lvbi5zaCB2ZXJzaW9uLmguaW4gY29uZmkKICAKICBta3RhYmxlczoga2VybmVsLWxpYi9ta3RhYmxlcy5jCiAgCUBlY2hvICIgICAgW0NDXSAgICAgJEAiCiAtCSQoUSkkKENDKSAkKENGTEFHUykgJDwgLW8gJEAKICsJJChRKSQoQlVJTERfQ0MpICQoQlVJTERfQ0ZMQUdTKSAkPCAtbyAkQAogIAotIGtlcm5lbC1saWIvdGFibGVzLmM6IG1rdGFibGVzCi0gCUBlY2hvICIgICAgW1RBQkxFXSAgJEAiCi0tLSAKLTIuMTMuMgotCisgIyB0aGUgdGFyZ2V0IGNhbiBiZSByZWdlbmVyYXRlZCBtYW51YWxseSB1c2luZyBta3RhYmxlcywgYnV0IGEgbG9jYWwgY29weSBpcworICMga2VwdCBzbyB0aGUgYnVpbGQgcHJvY2VzcyBpcyBzaW1wbGVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzY2M4OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAotaW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCi1lYXN5IGFkbWluaXN0cmF0aW9uLiBcCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAotYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLQotU1JDUkVWID0gIjA2MDcxMzJjMzIwMGJjZWFkMTQyNmU2ZGM2ODU0MzIwMDhkZTk1ZGUiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KLQlta2RpciAtcCAke1N9L2NvbmZpZwotCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCi19Ci0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzE1N2UyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAoraW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCitlYXN5IGFkbWluaXN0cmF0aW9uLiBcCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAorYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKKworU1JDUkVWID0gImE3YTFlYTBmNGYyYTFkNmVlZWIzZDEwNmUwNjJjN2YxMDM0ZjE2ZDQiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaCBcCisgICAgICAgICAgICIKKworUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiV2FpdGluZyBmb3IgcmVzb2x1dGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2RhdmUvYnRyZnMtcHJvZ3MvaXNzdWVzLzEwOSIKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgorCW1rZGlyIC1wICR7U30vY29uZmlnCisJY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KK30KKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKaW5kZXggODRkMDRjZi4uZWZjZjZiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgpAQCAtMjIsNyArMjIsNyBAQAogU1JDUkVWID0gImM1MzUyYzA1NGM2ZWYxNTczNWRhMzFiNzZkNmQ4ODYyMGY0YWZmMGEiCiBQRSA9ICIxIgogUFYgPSAiMjAxNS4wMi4xMCtnaXQke1NSQ1BWfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNTM1YjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBjY2FjaGUuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdmZTIxZjk0NzBmMjMwNWU5NWU3ZDhhNjMyMjU1MDc5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTVhYjNjNTYyODQxMjljYzJhMzI0NjBjMjMwNjk1MTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjRmMTViZjM4OWUzOGM0MTU0OGM5YzI1OTUzMjE4Nzc3NGVjMGNiOTY4NmMzNDk3YmJiNzU1MDRjOGRjNDA0ZiIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtQ3JlYXRlLW1hbi1wYWdlLWluLXRoZS1tYWtlLWluc3RhbGwtZnJvbS1naXQtLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjlmMGYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy41LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgY2NhY2hlLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1kYWUzNzlhODViYjZlOWQ1OTQ3NzNlMGFhNjQ4NzZmNiIKKworU1JDX1VSSVttZDVzdW1dID0gImVlZTU4ZGI3Y2NlODkyZmViZGRiOTg5MzA4ZGM1NjhmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5MDU3NmE2ZTkzODc2MGVjODExMzUyM2U2ZmQzODAxNDExMTczMDNlOTA3NjZjYzQ4MDJlNzcwNDIyYjMwYzYiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaAppbmRleCA4MzdjZmFkLi4zZjAxYzY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2gKQEAgLTE0LDEwICsxNCwxMCBAQAogIGRldi5tay5pbiB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2Rldi5tay5pbiBiL2Rldi5tay5pbgotaW5kZXggMTI2MWFkMy4uZWM1NWFjNCAxMDA2NDQKLS0tLSBhL2Rldi5tay5pbgotKysrIGIvZGV2Lm1rLmluCitJbmRleDogY2NhY2hlLTMuMy40L2Rldi5tay5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNjYWNoZS0zLjMuNC5vcmlnL2Rldi5tay5pbgorKysrIGNjYWNoZS0zLjMuNC9kZXYubWsuaW4KIEBAIC0xLDcgKzEsNyBAQAogICMgR05VIG1ha2Ugc3ludGF4IHJlaWducyBpbiB0aGlzIGZpbGUuCiAgCkBAIC0yNiw3ICsyNiw0IEBACiArYWxsX2NwcGZsYWdzICs9IC1NRCAtTVAgLU1GIC5kZXBzLyQoc3Vic3QgLi5fLCwkKHN1YnN0IC8sXywkKHN1YnN0ICQoc3JjZGlyKS8sLCQ8KSkpLmQKICAKICBBU0NJSURPQyA9IGFzY2lpZG9jCi0gR1BFUkYgPSBncGVyZgotLS0gCi0xLjcuOS41Ci0KKyBDUFBDSEVDSyA9IGNwcGNoZWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgppbmRleCAwZTBiZTYyLi43OGUxNTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKQEAgLTgsNiArOCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmY2ODE3MGJlNDI0YzJjZDY0ODA0MzM3NzI2YjMxMiIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9jZHJ0b29scy9jZHJ0b29scy0ke1JFQUxQVn0udGFyLmJ6MiIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Q0NWM1YjdlMWY3OGQ4NWQxNTgzYjM2MWFlZTZlOGIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQyODJlYjYyNzZjNDE1NGNlNmEwYjVkZWUwYmRiODE5NDBkMGNiYmZjN2QwM2Y3NjljNDczNWVmNWY1ODYwZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjguMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xMC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCmluZGV4IDZhZWIyNWYuLjM5NGM5ZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCkBAIC02LDQxICs2LDIzIEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9wdWJsaWMua2l0d2FyZS5jb20vQnVnL215X3ZpZXdfcGFnZS5waHAiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodC50eHQ7bWQ1PThkOGM3YmMzMmY4Nzk3ZDIzZjVjZjYwNWQ5MzM5ZDJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9jbWFrZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MzttZDU9NDQ5NGRlZTE4NDIxMmZjODljNDY5YzNhY2Q1NTVhMTQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQudHh0O21kNT03OWI1Yjc4MTk3Yzc0ZDVjNWY5YzdjY2FkZWVlNGU4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvY21ha2UuaDttZDU9NDQ5NGRlZTE4NDIxMmZjODljNDY5YzNhY2Q1NTVhMTQ7YmVnaW5saW5lPTE7ZW5kbGluZT0zIFwKKyAgICAgICAgICAgICAgICAgICAgIgogCiBDTUFLRV9NQUpPUl9WRVJTSU9OID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgogCiBTUkNfVVJJID0gImh0dHBzOi8vY21ha2Uub3JnL2ZpbGVzL3Yke0NNQUtFX01BSk9SX1ZFUlNJT059L2NtYWtlLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9zdXBwb3J0LW9lLXF0NC10b29scy1uYW1lcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9xdDQtZmFpbC1zaWxlbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kQm9vc3QtQm9vc3QtMS42Ni4wLWRlcGVuZGVuY3ktYW5kLXJlbGVhc2UtdXBkYXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVkZmY2MWY2YTdmMTMwNTI3MWFiM2Y2YWUyNjE0MTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGEzMDcyNzk0ZWI0YzA5ZjJkNzgyZmNlZTA0Mzg0N2I5OWJiNGNmOGQ0NTczOTc4ZDliMjAyNDIxNGQ2ZTkyZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzM4YzY3Mjk1Y2E2OTZhZWFmZDhjMDU5ZDc0OGIzOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzNhMWRjZjBiZTAzZTQwY2Y0ZjM0MWRkYTc5Yzk2ZmZiNmMzNWFlMzVmMmY5MTE4NDViNzJkYWIzNTU5Y2Y4IgogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbWFrZS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotIyBVZ2x5IGhhY2sgdG8gd29yayBhcm91bmQgdW5kZWZpbmVkIE9FX1FNQUtFX1BBVEhfRVhURVJOQUxfSE9TVF9CSU5TIHZhcmlhYmxlCi0jIGFuZCBwb3NzaWJseSBtaXNzaW5nIHFtYWtlIGJpbmFyeSAocXRiYXNlLW5hdGl2ZSBjYW4gYmUgcmVtb3ZlZCBmcm9tIHN5c3Jvb3QKLSMgZS5nLiBpbiBvcmRlciB0byB1cGdyYWRlIGl0LCBldmVuIHdoZW4gdGhlcmUgaXMgdGFyZ2V0IHF0YmFzZSkKLQotIyBGaXhlcyBlcnJvcnMgbGlrZSB0aGlzIGluIGNtYWtlKC1uYXRpdmUpLmRvX2NvbmZpZ3VyZToKLSN8IC0tIFBlcmZvcm1pbmcgVGVzdCBydW5fcGljX3Rlc3QgLSBTdWNjZXNzCi0jfCBDTWFrZSBFcnJvciBhdCB0bXAtZWdsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2xpYi9jbWFrZS9RdDVDb3JlL1F0NUNvcmVDb25maWcuY21ha2U6MjcgKG1lc3NhZ2UpOgotI3wgICBUaGUgaW1wb3J0ZWQgdGFyZ2V0ICJRdDU6OkNvcmUiIHJlZmVyZW5jZXMgdGhlIGZpbGUKLSN8Ci0jfCAgICAgICIvcW1ha2UiCi0jfAotI3wgICBidXQgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0LiAgUG9zc2libGUgcmVhc29ucyBpbmNsdWRlOgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlzZWQgLWkgJ3MvXmZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKSQvI2ZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKS9nJyAke1N9L1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0Ci0Jc2VkIC1pICdzL14gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKS8jICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvZycgJHtTfS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpLyMgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkvZycgJHtTfS9UZXN0cy9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpLyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkvZycgJHtTfS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXiAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpLyMgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKS9nJyAke1N9L1Rlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0Ci0Jc2VkIC1pICdzL14gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKS8jICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvZycgJHtTfS9UZXN0cy9RdEF1dG9nZW4vYXV0b3JjY19kZXBlbmRzL0NNYWtlTGlzdHMudHh0Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtQm9vc3QtMS42Ni4wLWRlcGVuZGVuY3ktYW5kLXJlbGVhc2UtdXBkYXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYTYwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDQzM2EyZDQ5NWEyNDgxYzYzYjgyYzExYTMwZjdjNjQyZDZhYmU2M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDE5OjU1OjQ5ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpbmRCb29zdDogQm9vc3QgMS42Ni4wIGRlcGVuZGVuY3kgYW5kIHJlbGVhc2UgdXBkYXRlCisKK1JlbGVhc2Ugbm90ZXM6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2hpc3RvcnkvdmVyc2lvbl8xXzY2XzAuaHRtbAorCisqIEFsbCBuZXcgbGlicmFyaWVzIGFyZSBoZWFkZXItb25seS4KKyogX0Jvb3N0X0NPTVBPTkVOVF9ERVBFTkRFTkNJRVMgaXMgdW5jaGFuZ2VkIGZyb20gMS42NS4xCisqIF9Cb29zdF9GSUJFUl9DT01QSUxFUl9GRUFUVVJFUyBpcyB1bmNoYW5nZWQgZnJvbSAxLjY0LjAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW1lvY3RvIDEyNzYyXQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworLS0tCisgTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtNzk3LDcgKzc5Nyw3IEBAIGZ1bmN0aW9uKF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTIGMKKyAgICAgICBzZXQoX0Jvb3N0X1dBVkVfREVQRU5ERU5DSUVTIGZpbGVzeXN0ZW0gc3lzdGVtIHNlcmlhbGl6YXRpb24gdGhyZWFkIGNocm9ubyBkYXRlX3RpbWUgYXRvbWljKQorICAgICAgIHNldChfQm9vc3RfV1NFUklBTElaQVRJT05fREVQRU5ERU5DSUVTIHNlcmlhbGl6YXRpb24pCisgICAgIGVuZGlmKCkKKy0gICAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjYwMCkKKysgICAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjcwMCkKKyAgICAgICBtZXNzYWdlKFdBUk5JTkcgIk5ldyBCb29zdCB2ZXJzaW9uIG1heSBoYXZlIGluY29ycmVjdCBvciBtaXNzaW5nIGRlcGVuZGVuY2llcyBhbmQgaW1wb3J0ZWQgdGFyZ2V0cyIpCisgICAgICAgc2V0KF9Cb29zdF9JTVBPUlRFRF9UQVJHRVRTIEZBTFNFKQorICAgICBlbmRpZigpCitAQCAtOTMxLDggKzkzMSw4IEBAIGVuZGZ1bmN0aW9uKCkKKyAjIGAke0Jvb3N0X1JPT1R9L2xpYnMvZmliZXIvYnVpbGQvSmFtZmlsZS52MmAuCisgIworIGZ1bmN0aW9uKF9Cb29zdF9DT01QSUxFUl9GRUFUVVJFUyBjb21wb25lbnQgX3JldCkKKy0gICMgQm9vc3QgPj0gMS42MiBhbmQgPCAxLjY1CistICBpZihOT1QgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2MjAwIEFORCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY1MDApCisrICAjIEJvb3N0ID49IDEuNjIgYW5kIDwgMS42NworKyAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjIwMCBBTkQgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NzAwKQorICAgICBzZXQoX0Jvb3N0X0ZJQkVSX0NPTVBJTEVSX0ZFQVRVUkVTCisgICAgICAgICBjeHhfYWxpYXNfdGVtcGxhdGVzCisgICAgICAgICBjeHhfYXV0b190eXBlCitAQCAtMTAzOCw3ICsxMDM4LDcgQEAgZWxzZSgpCisgICAjIF9Cb29zdF9DT01QT05FTlRfSEVBREVSUy4gIFNlZSB0aGUgaW5zdHJ1Y3Rpb25zIGF0IHRoZSB0b3Agb2YKKyAgICMgX0Jvb3N0X0NPTVBPTkVOVF9ERVBFTkRFTkNJRVMuCisgICBzZXQoX0Jvb3N0X0tOT1dOX1ZFUlNJT05TICR7Qm9vc3RfQURESVRJT05BTF9WRVJTSU9OU30KKy0gICAgIjEuNjUuMSIgIjEuNjUuMCIgIjEuNjUiCisrICAgICIxLjY2LjAiICIxLjY2IiAiMS42NS4xIiAiMS42NS4wIiAiMS42NSIKKyAgICAgIjEuNjQuMCIgIjEuNjQiICIxLjYzLjAiICIxLjYzIiAiMS42Mi4wIiAiMS42MiIgIjEuNjEuMCIgIjEuNjEiICIxLjYwLjAiICIxLjYwIgorICAgICAiMS41OS4wIiAiMS41OSIgIjEuNTguMCIgIjEuNTgiICIxLjU3LjAiICIxLjU3IiAiMS41Ni4wIiAiMS41NiIgIjEuNTUuMCIgIjEuNTUiCisgICAgICIxLjU0LjAiICIxLjU0IiAiMS41My4wIiAiMS41MyIgIjEuNTIuMCIgIjEuNTIiICIxLjUxLjAiICIxLjUxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDVlZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBiMWU5ZjY3MTM3NzMzYmMxMDlkMzU1NDUwZmNkMDZlZGRhNDc4NGM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgorRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAyMDowNzozMSArMTEwMAorU3ViamVjdDogW1BBVENIIDEvNl0gRmluZEJvb3N0OiBGaXggaW5jb3JyZWN0IGFscGhhYmV0aXNhdGlvbiBvZiBoZWFkZXJzIGxpc3QKKworQWZmZWN0cyBjbWFrZSA8IDMuMTEuMAorCitVcHN0ZWFtLVN0YXR1czogQmFja3BvcnQKK1tZb2N0byAxMjc2Ml0KK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKKy0tLQorIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY21ha2UtMy4xMC4zLm9yaWcvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKysrKyBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKK0BAIC04MzEsOCArODMxLDggQEAgZnVuY3Rpb24oX0Jvb3N0X0NPTVBPTkVOVF9IRUFERVJTIGNvbXBvbgorICAgc2V0KF9Cb29zdF9DT05UQUlORVJfSEVBREVSUyAgICAgICAgICAgImJvb3N0L2NvbnRhaW5lci9jb250YWluZXJfZndkLmhwcCIpCisgICBzZXQoX0Jvb3N0X0NPTlRFWFRfSEVBREVSUyAgICAgICAgICAgICAiYm9vc3QvY29udGV4dC9hbGwuaHBwIikKKyAgIHNldChfQm9vc3RfQ09ST1VUSU5FX0hFQURFUlMgICAgICAgICAgICJib29zdC9jb3JvdXRpbmUvYWxsLmhwcCIpCistICBzZXQoX0Jvb3N0X0VYQ0VQVElPTl9IRUFERVJTICAgICAgICAgICAiYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHAiKQorICAgc2V0KF9Cb29zdF9EQVRFX1RJTUVfSEVBREVSUyAgICAgICAgICAgImJvb3N0L2RhdGVfdGltZS9kYXRlLmhwcCIpCisrICBzZXQoX0Jvb3N0X0VYQ0VQVElPTl9IRUFERVJTICAgICAgICAgICAiYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHAiKQorICAgc2V0KF9Cb29zdF9GSUJFUl9IRUFERVJTICAgICAgICAgICAgICAgImJvb3N0L2ZpYmVyL2FsbC5ocHAiKQorICAgc2V0KF9Cb29zdF9GSUxFU1lTVEVNX0hFQURFUlMgICAgICAgICAgImJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHAiKQorICAgc2V0KF9Cb29zdF9HUkFQSF9IRUFERVJTICAgICAgICAgICAgICAgImJvb3N0L2dyYXBoL2FkamFjZW5jeV9saXN0LmhwcCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjgyMGRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA0NmQyNWU3ODJlYmQ5YjZjNTA3NzFiNmYzMDQzM2M1OGZhZTAzYTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF4aW1lIFJvdXNzaW4tQsOpbGFuZ2VyIDxtYXhpbWUucm91c3NpbmJlbGFuZ2VyQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTE6MzA6MDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IFVzZSBmaW5kX3Byb2dyYW0gaWYgZmluZF9ob3N0X3Byb2dyYW0gaXMgbm90Ci0gYXZhaWxhYmxlCi0KLUNNYWtlIGRvZXMgbm90IGRlZmluZSB0aGUgYGZpbmRfaG9zdF9wcm9ncmFtYCBjb21tYW5kIHdlJ3ZlIGJlZW4gdXNpbmcKLWluIHRoZSBjcm9zcy1jb21waWxpbmcgY29kZSBwYXRoLiAgSXQgd2FzIHByb3ZpZGVkIGJ5IGEgd2lkZWx5IHVzZWQKLUFuZHJvaWQgdG9vbGNoYWluIGZpbGUuICBGb3IgY29tcGF0aWJpbGl0eSwgY29udGludWUgdG8gdXNlCi1gZmluZF9ob3N0X3Byb2dyYW1gIGlmIGF2YWlsYWJsZSwgYnV0IG90aGVyd2lzZSB1c2UganVzdCBgZmluZF9wcm9ncmFtYC4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotW2h0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2NtYWtlL2NtYWtlL21lcmdlX3JlcXVlc3RzLzEwMDldCi0gICAgICAgIC0gV2lsbCBiZSBpbiAzLjEwCi0KLVNpZ25lZC1vZmYtYnk6IE1heGltZSBSb3Vzc2luLULDqWxhbmdlciA8bWF4aW1lLnJvdXNzaW5iZWxhbmdlckBnbWFpbC5jb20+Ci0tLS0KLSBNb2R1bGVzL0ZpbmRDVURBLmNtYWtlIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlIGIvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQotaW5kZXggYTRkY2E1NC4uNzdjYTM1MSAxMDA2NDQKLS0tLSBhL01vZHVsZXMvRmluZENVREEuY21ha2UKLSsrKyBiL01vZHVsZXMvRmluZENVREEuY21ha2UKLUBAIC02NzksNyArNjc5LDExIEBAIGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQotICAgIyBhZGQga25vd24gQ1VEQSB0YXJnZXRyIHJvb3QgcGF0aCB0byB0aGUgc2V0IG9mIGRpcmVjdG9yaWVzIHdlIHNlYXJjaCBmb3IgcHJvZ3JhbXMsIGxpYnJhcmllcyBhbmQgaGVhZGVycwotICAgc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSCAiJHtDVURBX1RPT0xLSVRfVEFSR0VUX0RJUn07JHtDTUFLRV9GSU5EX1JPT1RfUEFUSH0iKQotICAgbWFjcm8oIGN1ZGFfZmluZF9ob3N0X3Byb2dyYW0gKQotLSAgICBmaW5kX2hvc3RfcHJvZ3JhbSggJHtBUkdOfSApCi0rICAgIGlmIChDT01NQU5EIGZpbmRfaG9zdF9wcm9ncmFtKQotKyAgICAgIGZpbmRfaG9zdF9wcm9ncmFtKCAke0FSR059ICkKLSsgICAgZWxzZSgpCi0rICAgICAgZmluZF9wcm9ncmFtKCAke0FSR059ICkKLSsgICAgZW5kaWYoKQotICAgZW5kbWFjcm8oKQotIGVsc2UoKQotICAgIyBmb3Igbm9uLWNyb3NzLWNvbXBpbGUsIGZpbmRfaG9zdF9wcm9ncmFtID09IGZpbmRfcHJvZ3JhbSBhbmQgQ1VEQV9UT09MS0lUX1RBUkdFVF9ESVIgPT0gQ1VEQV9UT09MS0lUX1JPT1RfRElSCi0tLQotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItRmluZEJvb3N0LUltcGxlbWVudC1BcmNoaXRlY3R1cmUtYW5kLUFkZHJlc3MtTW9kZWwtdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODMwMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2gKQEAgLTAsMCArMSwxMzIgQEAKK0Zyb20gYjA0NGY2OWE0MTMxMjNmMTVhMDUwMzRjMDBhOGUzNzYzNzY0YTFlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjE6NTA6NTQgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIEZpbmRCb29zdDogSW1wbGVtZW50ICJBcmNoaXRlY3R1cmUgYW5kIEFkZHJlc3MgTW9kZWwiIHRhZworCitUaGlzIHRhZyBpcyBuZXcgaW4gQm9vc3QgMS42Ni4wLCBhbmQgaXMgcHJlc2VudCBpbiB0aGUgJ3ZlcnNpb25lZCcKK2xpYnJhcnkgZmlsZSBuYW1lIGxheW91dC4KKworQWZmZWN0cyBjbWFrZSA8IDMuMTEuMAorCitVcHN0ZWFtLVN0YXR1czogQmFja3BvcnQKK1tZb2N0byAxMjc2Ml0KK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKKy0tLQorIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtMTM4NSw4ICsxMzg1LDExIEBAIGlmKEJvb3N0X0RFQlVHKQorIGVuZGlmKCkKKyAKKyAjPT09PT09PT09PT09PT09PT09PT09PQorLSMgU3lzdGVtYXRpY2FsbHkgYnVpbGQgdXAgdGhlIEJvb3N0IEFCSSB0YWcKKy0jIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV80MV8wL21vcmUvZ2V0dGluZ19zdGFydGVkL3dpbmRvd3MuaHRtbCNsaWJyYXJ5LW5hbWluZworKyMgU3lzdGVtYXRpY2FsbHkgYnVpbGQgdXAgdGhlIEJvb3N0IEFCSSB0YWcgZm9yIHRoZSAndGFnZ2VkJyBhbmQgJ3ZlcnNpb25lZCcgbGF5b3V0cworKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvbW9yZS9nZXR0aW5nX3N0YXJ0ZWQvd2luZG93cy5odG1sI2xpYnJhcnktbmFtaW5nCisrIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC9ib29zdC9jb25maWcvYXV0b19saW5rLmhwcAorKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2NvbW1vbi5qYW0KKysjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL2Jvb3N0Y3BwLmphbQorIHNldCggX2Jvb3N0X1JFTEVBU0VfQUJJX1RBRyAiLSIpCisgc2V0KCBfYm9vc3RfREVCVUdfQUJJX1RBRyAgICItIikKKyAjIEtleSAgICAgICBVc2UgdGhpcyBsaWJyYXJ5IHdoZW46CitAQCAtMTQxOCwxMSArMTQyMSw0MCBAQCBpZihCb29zdF9VU0VfU1RMUE9SVCkKKyAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0RFQlVHX0FCSV9UQUcgInAiKQorIGVuZGlmKCkKKyAjICBuICAgICAgICB1c2luZyB0aGUgU1RMcG9ydCBkZXByZWNhdGVkICJuYXRpdmUgaW9zdHJlYW1zIiBmZWF0dXJlCisrIyAgICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGluIDEuNDMuMCBidXQgc3RpbGwgcHJlc2VudCBpbgorKyMgICAgICAgICAgIGJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwCisgaWYoQm9vc3RfVVNFX1NUTFBPUlRfREVQUkVDQVRFRF9OQVRJVkVfSU9TVFJFQU1TKQorICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfUkVMRUFTRV9BQklfVEFHICJuIikKKyAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0RFQlVHX0FCSV9UQUcgIm4iKQorIGVuZGlmKCkKKyAKKysjICAteDg2ICAgICBBcmNoaXRlY3R1cmUgYW5kIGFkZHJlc3MgbW9kZWwgdGFnCisrIyAgICAgICAgICAgRmlyc3QgY2hhcmFjdGVyIGlzIHRoZSBhcmNoaXRlY3R1cmUsIHRoZW4gd29yZC1zaXplLCBlaXRoZXIgMzIgb3IgNjQKKysjICAgICAgICAgICBPbmx5IHVzZWQgaW4gJ3ZlcnNpb25lZCcgbGF5b3V0LCBhZGRlZCBpbiBCb29zdCAxLjY2LjAKKytzZXQoX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIiIpCisrIyB7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gaXMgbm90IGN1cnJlbnRseSBzZXQgZm9yIGFsbCBjb21waWxlcnMKKytpZihOT1QgIngke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IiBTVFJFUVVBTCAieCIgQU5EIE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY2MDApCisrICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICItIikKKysgICMgVGhpcyBuZWVkcyB0byBiZSBrZXB0IGluLXN5bmMgd2l0aCB0aGUgc2VjdGlvbiBvZiBDTWFrZVBsYXRmb3JtSWQuaC5pbgorKyAgIyBpbnNpZGUgJ2RlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9NU0NfVkVSKScKKysgIGlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIklBNjQiKQorKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJpIikKKysgIGVsc2VpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJYODYiCisrICAgICAgICAgICAgT1IgJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAieDY0IikKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAieCIpCisrICBlbHNlaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBNQVRDSEVTICJeQVJNIikKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiYSIpCisrICBlbHNlaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAiTUlQUyIpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIm0iKQorKyAgZW5kaWYoKQorKworKyAgaWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA4KQorKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICI2NCIpCisrICBlbHNlKCkKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiMzIiKQorKyAgZW5kaWYoKQorK2VuZGlmKCkKKysKKyBpZihCb29zdF9ERUJVRykKKyAgIG1lc3NhZ2UoU1RBVFVTICJbICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0ZJTEV9OiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0xJTkV9IF0gIgorICAgICAiX2Jvb3N0X1JFTEVBU0VfQUJJX1RBRyA9ICR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30iKQorQEAgLTE2MTYsMjIgKzE2NDgsMjIgQEAgZm9yZWFjaChDT01QT05FTlQgJHtCb29zdF9GSU5EX0NPTVBPTkVOVAorICAgdW5zZXQoX2Jvb3N0X1JFTEVBU0VfTkFNRVMpCisgICBmb3JlYWNoKGNvbXBpbGVyIElOIExJU1RTIF9ib29zdF9DT01QSUxFUikKKyAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisrICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSApCisgICBlbmRmb3JlYWNoKCkKKyAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCistICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisrICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0gKQorICAgaWYoX2Jvb3N0X1NUQVRJQ19SVU5USU1FX1dPUktBUk9VTkQpCisgICAgIHNldChfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBRyAiLXMke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9IikKKyAgICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKKy0gICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisrICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSApCisgICAgIGVuZGZvcmVhY2goKQorICAgICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUworLSAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9ICkKKyAgIGVuZGlmKCkKKyAgIGlmKEJvb3N0X1RIUkVBREFQSSBBTkQgJHtDT01QT05FTlR9IFNUUkVRVUFMICJ0aHJlYWQiKQorQEAgLTE2NjYsMTEgKzE2OTgsMTEgQEAgZm9yZWFjaChDT01QT05FTlQgJHtCb29zdF9GSU5EX0NPTVBPTkVOVAorICAgdW5zZXQoX2Jvb3N0X0RFQlVHX05BTUVTKQorICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUworLSAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisrICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9ICkKKyAgIGVuZGZvcmVhY2goKQorICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCistICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfQorICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSApCitAQCAtMTY3OCwxMSArMTcxMCwxMSBAQCBmb3JlYWNoKENPTVBPTkVOVCAke0Jvb3N0X0ZJTkRfQ09NUE9ORU5UCisgICAgIHNldChfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUcgIi1zJHtfYm9vc3RfREVCVUdfQUJJX1RBR30iKQorICAgICBmb3JlYWNoKGNvbXBpbGVyIElOIExJU1RTIF9ib29zdF9DT01QSUxFUikKKyAgICAgICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKKy0gICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSApCisgICAgIGVuZGZvcmVhY2goKQorICAgICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisrICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSApCisgICBlbmRpZigpCisgICBpZihCb29zdF9USFJFQURBUEkgQU5EICR7Q09NUE9ORU5UfSBTVFJFUVVBTCAidGhyZWFkIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLUZpbmRCb29zdC1TZWFyY2gtZm9yLXVwc3RyZWFtLXBhY2thZ2VkLWxpYnMtbmV4dC10by0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3OGY1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZDU2ZGVmZjdkMTI3YjAzMDczOWJkMDAzNDYwOWQwMDQ2MTIxZDhjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjI6Mzg6MzYgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIEZpbmRCb29zdDogU2VhcmNoIGZvciB1cHN0cmVhbS1wYWNrYWdlZCBsaWJzIG5leHQgdG8KKyBpbmNsdWRlcworCitVcHN0cmVhbSBwYWNrYWdlcyBCb29zdCBiaW5hcmllcyBmb3IgV2luZG93cyB3aXRoIHRoZSAnYm9vc3QnIGRpcmVjdG9yeQorKHRoZSBJTkNMVURFX0RJUikgbmV4dCB0byB0aGUgbGliLS4uLiBkaXJlY3RvcnkgKHRoZSBMSUJSQVJZX0RJUikuCisKK0FmZmVjdHMgY21ha2UgPCAzLjExLjAKKworVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0CitbWW9jdG8gMTI3NjJdCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCistLS0KKyBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY21ha2UtMy4xMC4zLm9yaWcvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKysrKyBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKK0BAIC0xNTAyLDYgKzE1MDIsNyBAQCBmb3JlYWNoKGMgREVCVUcgUkVMRUFTRSkKKyAgICAgICAke0Jvb3N0X0lOQ0xVREVfRElSfS9zdGFnZS9saWIKKyAgICAgICApCisgICAgIF9Cb29zdF9VUERBVEVfV0lORE9XU19MSUJSQVJZX1NFQVJDSF9ESVJTX1dJVEhfUFJFQlVJTFRfUEFUSFMoX2Jvb3N0X0xJQlJBUllfU0VBUkNIX0RJUlNfJHtjfSAiJHtCb29zdF9JTkNMVURFX0RJUn0vLi4iKQorKyAgICBfQm9vc3RfVVBEQVRFX1dJTkRPV1NfTElCUkFSWV9TRUFSQ0hfRElSU19XSVRIX1BSRUJVSUxUX1BBVEhTKF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gIiR7Qm9vc3RfSU5DTFVERV9ESVJ9IikKKyAgICAgaWYoIEJvb3N0X05PX1NZU1RFTV9QQVRIUyApCisgICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0xJQlJBUllfU0VBUkNIX0RJUlNfJHtjfSBOT19DTUFLRV9TWVNURU1fUEFUSCBOT19TWVNURU1fRU5WSVJPTk1FTlRfUEFUSCkKKyAgICAgZWxzZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiN2U5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaApAQCAtMCwwICsxLDIxNSBAQAorRnJvbSA4NzVjMTFkYmY4N2QxMjU4YWQ3ZDM2OTdhNDBkNjA1ZDUwM2U1NjczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6MDI6MTQgLTAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IFByZXZlbnQgdGhlIGRldGVjdGlvbiBvZiBRdDUKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0NNYWtlIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmN5IG9uIHF0NC9xdDUsIHNvIHRoZXNlIHRlc3RzIHVzdWFsbHkgZmFpbAorYnV0IHN0aWxsIGNhbiBjYXVzZSB1bmRldGVybWluaXN0aWMgcmVzdWx0cyBvciBidWlsZCBmYWlsdXJlcyAod2hlbgorT0VfUU1BS0VfUEFUSF9FWFRFUk5BTF9IT1NUX0JJTlMgaXMgdW5kZWZpbmVkIG9yIG5hdGl2ZSBxbWFrZSByZW1vdmVkCit3aGlsZSBydW5uaW5nIHRoZSB0ZXN0IGluIGNtYWtlKQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBTb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICB8IDQgKystLQorIFRlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlbi9tYWNvc0ZXL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgIHwgNCArKy0tCisgVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0ICAgICAgfCAyICstCisgVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQgICAgICAgfCAyICstCisgVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCAgICAgfCAyICstCisgVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UgfCAyICstCisgMTMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKK2luZGV4IGIzODc5N2JjYS4uYjVmYmZjNWZhIDEwMDY0NAorLS0tIGEvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CisrKysgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKK0BAIC02LDcgKzYsNyBAQCBpZihQT0xJQ1kgQ01QMDAyMCkKKyAgIGNtYWtlX3BvbGljeShTRVQgQ01QMDAyMCBORVcpICMgRHJvcCB3aGVuIENNYWtlID49IDIuOC4xMSByZXF1aXJlZAorIGVuZGlmKCkKKyBDTWFrZV9PUFRJT05BTF9DT01QT05FTlQoY21ha2UtZ3VpKQorLWZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKQorKyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkKKyBpZiAoUXQ1V2lkZ2V0c19GT1VORCkKKyAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtRdDVXaWRnZXRzX0lOQ0xVREVfRElSU30pCisgICBhZGRfZGVmaW5pdGlvbnMoJHtRdDVXaWRnZXRzX0RFRklOSVRPTlN9KQorZGlmZiAtLWdpdCBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDUzMzc4OGE0NC4uMzJlZjAzYzU1IDEwMDY0NAorLS0tIGEvVGVzdHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0CitAQCAtMTI2MCw3ICsxMjYwLDcgQEAgJHtDTWFrZV9CSU5BUllfRElSfS9iaW4vY21ha2UgLURESVI9ZGV2IC1QICR7Q01ha2VfU09VUkNFX0RJUn0vVXRpbGl0aWVzL1JlbGVhc2UKKyAgICAgc2V0KENNYWtlX1RFU1RfUXQ1IDEpCisgICBlbmRpZigpCisgICBpZihDTWFrZV9URVNUX1F0NSkKKy0gICAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKQorKyAgICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKQorICAgZW5kaWYoKQorICAgaWYoQ01ha2VfVEVTVF9RdDUgQU5EIFF0NVdpZGdldHNfRk9VTkQpCisgICAgIGFkZF90ZXN0KE5BTUUgUXQ1QXV0b2dlbiBDT01NQU5EICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0KK2RpZmYgLS1naXQgYS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0CitpbmRleCBhZDc0OTYxZDkuLmE5ZGQ3NGIxNSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAorQEAgLTMsMTEgKzMsMTEgQEAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKKyBwcm9qZWN0KFF0NEFuZDVBdXRvbW9jKQorIAorIGlmIChRVF9SRVZFUlNFX0ZJTkRfT1JERVIpCistICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyAgIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCisgZWxzZSgpCisgICBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgZW5kaWYoKQorIAorIHNldChDTUFLRV9BVVRPTU9DIE9OKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTVjMmQ5OWIyLi4yZDY0MGU0YTMgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dAorQEAgLTE0LDcgKzE0LDcgQEAgZWxzZSgpCisgICBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKy0gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorIAorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyAgIHNldChRVF9HVUlfVEFSR0VUIFF0NTo6V2lkZ2V0cykKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQKK2luZGV4IGRmZjlkMGM2Ni4uYzZlOGZjM2Y1IDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQKK0BAIC0yMyw3ICsyMyw3IEBAIGVsc2UoKQorICAgaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCistICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyAgIHNldChRVF9RVENPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyAKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlbi9tYWNvc0ZXL0NNYWtlTGlzdHMudHh0CitpbmRleCAxMTRkOWJhYzAuLjE1N2ZlMGFhYSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9tYWNvc0ZXL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAorQEAgLTEsNyArMSw3IEBACisgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuOCkKKyBwcm9qZWN0KG1hY29zLWZ3LXRlc3QpCisgCistZmluZF9wYWNrYWdlKFF0NVRlc3QgUkVRVUlSRUQpCisrI2ZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQorIAorIHNldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEpCisgc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L291dHB1dC9iaW4pCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAoraW5kZXggODIxN2I4ZGJmLi44NmJiN2JjN2YgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKK0BAIC0xMCw3ICsxMCw3IEBAIGVsc2UoKQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKyAKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyBlbmRpZigpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZTcyYzE5MTJlLi5kN2U2ODg0Y2UgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKK0BAIC0yLDcgKzIsNyBAQCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy45KQorIGNtYWtlX3BvbGljeShTRVQgQ01QMDA3MSBORVcpCisgcHJvamVjdChRdEF1dG9nZW5SZXJ1bikKKyAKKy0jIFRlbGwgZmluZF9wYWNrYWdlKFF0NSkgd2hlcmUgdG8gZmluZCBRdC4KKysjIFRlbGwgI2ZpbmRfcGFja2FnZShRdDUpIHdoZXJlIHRvIGZpbmQgUXQuCisgaWYoUVRfUU1BS0VfRVhFQ1VUQUJMRSkKKyAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoUXRfQklOX0RJUiAiJHtRVF9RTUFLRV9FWEVDVVRBQkxFfSIgUEFUSCkKKyAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoUXRfUFJFRklYX0RJUiAiJHtRdF9CSU5fRElSfSIgUEFUSCkKK0BAIC0yMyw3ICsyMyw3IEBAIGVsc2UoKQorICAgaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCistICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyAgIHNldChRVF9RVENPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyAKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NQbHVnaW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NQbHVnaW4vQ01ha2VMaXN0cy50eHQKK2luZGV4IGI3Y2M1ZTlmZi4uZTFkMTA5OTUzIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NQbHVnaW4vQ01ha2VMaXN0cy50eHQKK0BAIC05LDcgKzksNyBAQCBzZXQoQ01BS0VfQVVUT01PQ19ERVBFTkRfRklMVEVSUworIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCisgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyBlbmRpZigpCistZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorIAorIGlmKFF0NV9QT1NJVElPTl9JTkRFUEVOREVOVF9DT0RFIEFORCBDTUFLRV9DWFhfQ09NUElMRV9PUFRJT05TX1BJQykKKyAgIGFkZF9kZWZpbml0aW9ucygke0NNQUtFX0NYWF9DT01QSUxFX09QVElPTlNfUElDfSkKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0CitpbmRleCBiYWZkOWNmNDguLjQzZWM5MzNkMiAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAorQEAgLTEwLDcgKzEwLDcgQEAgZWxzZSgpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorIAorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgICBzZXQoUVRfQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQorIGVuZGlmKCkKKyAKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9yY2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjkxNTkyZTdkLi40MGNkNTI4NjggMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9yY2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9yY2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0CitAQCAtOSw3ICs5LDcgQEAgZWxzZSgpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorIAorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgICBzZXQoUVRfQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQorIGVuZGlmKCkKKyAKK2RpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CitpbmRleCAyOTMyNWZmMGEuLmQzMGQwMWU3OCAxMDA2NDQKKy0tLSBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAorQEAgLTI3NCw3ICsyNzQsNyBAQCBhZGRfUnVuQ01ha2VfdGVzdChjb25maWd1cmVfZmlsZSkKKyBhZGRfUnVuQ01ha2VfdGVzdChDVGVzdFRpbWVvdXRBZnRlck1hdGNoKQorIAorIGZpbmRfcGFja2FnZShRdDQgUVVJRVQpCistZmluZF9wYWNrYWdlKFF0NUNvcmUgUVVJRVQpCisrI2ZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQorIGlmIChRVDRfRk9VTkQgQU5EIFF0NUNvcmVfRk9VTkQgQU5EIE5PVCBRdDVDb3JlX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDUuMS4wKQorICAgYWRkX1J1bkNNYWtlX3Rlc3QoSW5jb21wYXRpYmxlUXQpCisgZW5kaWYoKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UKK2luZGV4IDRmY2NkYzQxOC4uYjc2ZTFlNTMxIDEwMDY0NAorLS0tIGEvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UKKysrKyBiL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQorLWZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyAKKyBhZGRfZXhlY3V0YWJsZShtYWluZXhlIG1haW4uY3BwKQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhtYWluZXhlIFF0NDo6UXRDb3JlIFF0NTo6Q29yZSkKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoCmluZGV4IDE1Y2JjYTguLjY4NDE1NTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9zdXBwb3J0LW9lLXF0NC10b29scy1uYW1lcy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLWNtYWtlOiBzdXBwb3J0IE9wZW5FbWJlZGRlZCBRdDQgdG9vbCBiaW5hcnkgbmFtZXMKK0Zyb20gMTBiOGI1MjM4NjkxMjRkMmZjOGNkOThkOWUwMjhjMGJjZmZkNjFiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUaHUsIDEyIE1heSAyMDExIDE1OjM2OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBjbWFrZTogc3VwcG9ydCBPcGVuRW1iZWRkZWQgUXQ0IHRvb2wgYmluYXJ5IG5hbWVzCiAKIFRoZSBGaW5kUXQ0IG1vZHVsZSBsb29rcyBmb3IgUXQ0IGJpbmFyaWVzIHRvIGJlIGFibGUgdG8gZ2F0aGVyIHRoZQogcGF0aHMgdXNlZCBmb3IgY29tcGlsYXRpb24gYW5kIGFsc28gdG8gYmUgdXNpbmcgZHVyaW5nIG90aGVyIHByb2Nlc3NlcwpAQCAtMTUsMTUgKzE4LDE2IEBACiBJbnN0ZWFkIG9mIGZpbmRfcHJvZ3JhbSwgX2ZpbmRfcXQ0X3Byb2dyYW0gaXMgbm93IHVzZWQuCiAKIFNpZ25lZC1vZmYtYnk6IE1vcml0eiBCbHVtZSA8bW9yaXR6LmJsdW1lQGJtdy1jYXJpdC5kZT4KKwogLS0tCiAgTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIHwgMTAgKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IDExMDkxYjUuLjY3MDQ3NjkgMTAwNjQ0CitpbmRleCBjNjdkMGJlLi4wY2YxNjliIDEwMDY0NAogLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiArKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLUBAIC01MjIsNyArNTIyLDcgQEAgZW5kZnVuY3Rpb24oKQorQEAgLTUxNiw3ICs1MTYsNyBAQCBlbmRmdW5jdGlvbigpCiAgCiAgc2V0KFFUNF9JTlNUQUxMRURfVkVSU0lPTl9UT09fT0xEIEZBTFNFKQogIApAQCAtMzIsNyArMzYsNyBAQAogIF9xdDRfZmluZF9xbWFrZSgiJHtfUVQ0X1FNQUtFX05BTUVTfSIgUVRfUU1BS0VfRVhFQ1VUQUJMRSBRVFZFUlNJT04pCiAgCiAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECi1AQCAtMTE0OCwxMiArMTE0OCwxMiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKK0BAIC0xMTQyLDEyICsxMTQyLDEyIEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAogICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTU9DX0VYRUNVVEFCTEUgUXQ0Ojptb2MgbW9jLXF0NCBtb2M0IG1vYykKICAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1VJQ19FWEVDVVRBQkxFIFF0NDo6dWljIHVpYy1xdDQgdWljNCB1aWMpCiAgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9VSUMzX0VYRUNVVEFCTEUgUXQ0Ojp1aWMzIHVpYzMpCkBAIC01MCw1ICs1NCw1IEBACiAgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9MSU5HVUlTVF9FWEVDVVRBQkxFIFF0NDo6bGluZ3Vpc3QgbGluZ3Vpc3QtcXQ0IGxpbmd1aXN0NCBsaW5ndWlzdCkKICAKIC0tIAotMS45LjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjguMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEwLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCmluZGV4IDdiNzBkYWEuLjFjODRmYjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgpAQCAtNDEsNiArNDEsNyBAQAogICAgIFsgLXogIiR7Y3ZlX2Rpcn0iIF0gJiYgY3ZlX2Rpcj0iJHtETF9ESVJ9L0NWRV9DSEVDSyIKICAgICBbIC16ICIke2N2ZV9maWxlfSIgXSAmJiBjdmVfZmlsZT0iJHtUTVBESVJ9L2N2ZV9jaGVjayIKIAorICAgIHVudXNlZD0iJHtAYmIudXRpbHMuZXhwb3J0X3Byb3hpZXMoZCl9IgogICAgIGJiZGVidWcgMiAiVXBkYXRpbmcgY3ZlLWNoZWNrLXRvb2wgZGF0YWJhc2UgbG9jYXRlZCBpbiAkY3ZlX2RpciIKICAgICAjIC0tY2FjZXJ0IHdvcmtzIGFyb3VuZCBjdXJsLW5hdGl2ZSBub3QgZmluZGluZyB0aGUgQ0EgYnVuZGxlCiAgICAgaWYgY3ZlLWNoZWNrLXVwZGF0ZSAtLWNhY2VydCAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IC1kICIkY3ZlX2RpciIgOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgppbmRleCBlNmYxNTljLi42NjA0NjQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKQEAgLTIzLDcgKzIzLDYgQEAKICAgICAgICAgICAgZmlsZTovL2Rpc3RjYy5zZXJ2aWNlIgogU1JDUkVWID0gImQ4YjE4ZGYzZTlkY2JlNGYwOTJiZWQ1NjU4MzVkMzk3NWU5OTQzMmMiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKIApAQCAtNDEsNyArNDAsOSBAQAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkaXN0Y2Muc2VydmljZSIKIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Citkb19pbnN0YWxsKCkgeworICAgICMgSW1wcm92ZSByZXByb2R1Y2liaWxpdHk6IGNvbXByZXNzIHcvbyB0aW1lc3RhbXBzCisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAgIkdaSVBfQklOPWd6aXAgLW4iIGluc3RhbGwKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kaXN0Y2MgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZjMxNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMTY2ODMzYTg4YTkyOGE1NzRiZjkxNDNiOWI2NWY1NDRiZTQ4MmM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxOCBBdWcgMjAxNyAxNTo1NToxNSArMDMwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBjb25mLnJlbGVhc2V2ZXIgaW5zdGVhZCBvZiByZWxlYXNldmVyCi0KLVRoZSBzdWJzdGl0dXRpb25zIG1heSBhY3R1YWxseSBzZXQgdGhlIGNvbmYucmVsZWFzZXZlciBjb3JyZWN0bHksCi1hbmQgc28gdGhlIGNoZWNrIHNob3VsZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBwYXNzZWQtaW4gZnVuY3Rpb24KLXBhcmFtZXRlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYvcHVsbC85MDFdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGRuZi9jbGkvY2xpLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZG5mL2NsaS9jbGkucHkgYi9kbmYvY2xpL2NsaS5weQotaW5kZXggMmQ2MzQyMGMuLjE2Nzk0M2I4IDEwMDY0NAotLS0tIGEvZG5mL2NsaS9jbGkucHkKLSsrKyBiL2RuZi9jbGkvY2xpLnB5Ci1AQCAtOTE0LDcgKzkxNCw3IEBAIGNsYXNzIENsaShvYmplY3QpOgotICAgICAgICAgY29uZi5yZWxlYXNldmVyID0gcmVsZWFzZXZlcgotICAgICAgICAgc3Vic3QgPSBjb25mLnN1YnN0aXR1dGlvbnMKLSAgICAgICAgIHN1YnN0LnVwZGF0ZV9mcm9tX2V0Yyhjb25mLmluc3RhbGxyb290KQotLSAgICAgICAgaWYgcmVsZWFzZXZlciBpcyBOb25lOgotKyAgICAgICAgaWYgY29uZi5yZWxlYXNldmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoXygiVW5hYmxlIHRvIGRldGVjdCByZWxlYXNlIHZlcnNpb24gKHVzZSAnLS1yZWxlYXNldmVyJyB0byBzcGVjaWZ5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWxlYXNlIHZlcnNpb24pIikpCi0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoCmluZGV4IGM5ZGY0NTguLjY2OTJiNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoCkBAIC0xLDEwICsxLDExIEBACi1Gcm9tIDhjZTE4MTcxNDY0MDMxNWQyZGQzN2VlNzk0YWNiYjIyMDYzY2Q2NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA1ZTA1OWNkNGU5OTEwYzAwYjMyZDM3N2Y0Zjk4ZTNjOGRkZTZiYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjYgSmFuIDIwMTcgMTY6MzY6MjAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ29ycmV0bHkgaW5zdGFsbCB0bXBmaWxlcy5kIGNvbmZpZ3VyYXRpb24KK1N1YmplY3Q6IFtQQVRDSCA0LzVdIENvcnJldGx5IGluc3RhbGwgdG1wZmlsZXMuZCBjb25maWd1cmF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBldGMvdG1wZmlsZXMuZC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTE3LDUgKzE4LDUgQEAKIC1JTlNUQUxMIChGSUxFUyBkbmYuY29uZiBERVNUSU5BVElPTiAvdXNyL2xpYi90bXBmaWxlcy5kLykKICtJTlNUQUxMIChGSUxFUyBkbmYuY29uZiBERVNUSU5BVElPTiAke1NZU0NPTkZESVJ9L3RtcGZpbGVzLmQvKQogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2gKaW5kZXggMGYyNjFlNS4uMTVhN2JmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaApAQCAtMSwxNiArMSwxNyBAQAotRnJvbSA0MzEzY2VkMTMyMDU5NDAxMzc5NWYxMWY2ZGIwMDM4MWUzZjRjYzQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOGVmODFjMTE1YTQ1ZjA1ZGFkMTQ1Yzk4ZTEwZjNjNDk0MGU0ZTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDI2IEphbiAyMDE3IDE2OjI1OjQ3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBoYXJkY29kZSAvZXRjIGFuZCBzeXN0ZW1kIHVuaXQgZGlyZWN0b3JpZXMKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIERvIG5vdCBoYXJkY29kZSAvZXRjIGFuZCBzeXN0ZW1kIHVuaXQgZGlyZWN0b3JpZXMKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIENNYWtlTGlzdHMudHh0IHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDZhMzE5OTM1Li5kYjIwY2NkNCAxMDA2NDQKK2luZGV4IDY1MGI2MjRhLi4xMDE5OTYxOCAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAogQEAgLTcsOCArNyw4IEBAIGlmIChOT1QgUFlUSE9OX0RFU0lSRUQpCkBAIC0yNSw1ICsyNiw1IEBACiAgaWYgKCR7UFlUSE9OX0RFU0lSRUR9IFNUUkVRVUFMICIyIikKICAJRklORF9QQUNLQUdFIChQeXRob25JbnRlcnAgUkVRVUlSRUQpCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwZTc3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMxNjUzZDMyNGNmOGM3YjFmMmY5ZTQ5ZDIyNjc2YmQyYWM1NDYzMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTU6MTA6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHByZXBlbmQgaW5zdGFsbHJvb3QgdG8gbG9nZGlyLgotCi1UaGlzIHdvdWxkIG90aGVyd2lzZSB3cml0ZSB0aGUgbG9ncyBpbnRvIHJvb3Rmcy92YXIvbG9nCi0od2hlcmVhcyB3ZSB3YW50IHRoZW0gaW4gJFQpLAotYW5kIHdpbGwgYnJlYWsgaW5zdGFsbGF0aW9uIG9mIGJhc2UtZmlsZXMgcnBtLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGRuZi9jbGkvY2xpLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZG5mL2NsaS9jbGkucHkgYi9kbmYvY2xpL2NsaS5weQotaW5kZXggYjc2NDgwMWEuLjg5M2Y0YmRhIDEwMDY0NAotLS0tIGEvZG5mL2NsaS9jbGkucHkKLSsrKyBiL2RuZi9jbGkvY2xpLnB5Ci1AQCAtODgxLDcgKzg4MSw3IEBAIGNsYXNzIENsaShvYmplY3QpOgotICAgICAgICAgc3Vic3QgPSBjb25mLnN1YnN0aXR1dGlvbnMKLSAgICAgICAgIHN1YnN0LnVwZGF0ZV9mcm9tX2V0Yyhjb25mLmluc3RhbGxyb290KQotIAotLSAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ2xvZ2RpcicsICdwZXJzaXN0ZGlyJyk6Ci0rICAgICAgICBmb3Igb3B0IGluICgnY2FjaGVkaXInLCAncGVyc2lzdGRpcicpOgotICAgICAgICAgICAgIGNvbmYucHJlcGVuZF9pbnN0YWxscm9vdChvcHQpCi0gCi0gICAgICAgICBzZWxmLmJhc2UuX2xvZ2dpbmcuX3NldHVwX2Zyb21fZG5mX2NvbmYoY29uZikKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTIwMDA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDUtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNjM2NTM4OTA3NGExYjg2OTYyZjNkOGIyMmEyZWFkMjIwMjAyNmE5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNToxMDoxMyArMDIwMAorU3ViamVjdDogW1BBVENIIDUvNV0gRG8gbm90IHByZXBlbmQgaW5zdGFsbHJvb3QgdG8gbG9nZGlyLgorCitUaGlzIHdvdWxkIG90aGVyd2lzZSB3cml0ZSB0aGUgbG9ncyBpbnRvIHJvb3Rmcy92YXIvbG9nCisod2hlcmVhcyB3ZSB3YW50IHRoZW0gaW4gJFQpLAorYW5kIHdpbGwgYnJlYWsgaW5zdGFsbGF0aW9uIG9mIGJhc2UtZmlsZXMgcnBtLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGRuZi9jbGkvY2xpLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jbGkucHkgYi9kbmYvY2xpL2NsaS5weQoraW5kZXggZDJkOWMwODIuLjgyMjcwZWNmIDEwMDY0NAorLS0tIGEvZG5mL2NsaS9jbGkucHkKKysrKyBiL2RuZi9jbGkvY2xpLnB5CitAQCAtOTIwLDcgKzkyMCw3IEBAIGNsYXNzIENsaShvYmplY3QpOgorICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKF8oIlVuYWJsZSB0byBkZXRlY3QgcmVsZWFzZSB2ZXJzaW9uICh1c2UgJy0tcmVsZWFzZXZlcicgdG8gc3BlY2lmeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVsZWFzZSB2ZXJzaW9uKSIpKQorIAorLSAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ2xvZ2RpcicsICdwZXJzaXN0ZGlyJyk6CisrICAgICAgICBmb3Igb3B0IGluICgnY2FjaGVkaXInLCAncGVyc2lzdGRpcicpOgorICAgICAgICAgICAgIGNvbmYucHJlcGVuZF9pbnN0YWxscm9vdChvcHQpCisgCisgICAgICAgICBzZWxmLmJhc2UuX2xvZ2dpbmcuX3NldHVwX2Zyb21fZG5mX2NvbmYoY29uZikKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKaW5kZXggOGM1OWY5Zi4uNmUwMTE5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKLUZyb20gM2RkYWE5MzBjZGE1N2E2MmEyMTc0ZmFlYmNjODdhZWJjNTk1OTFkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzIwNTAzM2U0NGQ4ZmJhMWQzYjE4YjQ5MGU3ZWFhYjgyZGExZmZhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyOTowNyArMDIwMAotU3ViamVjdDogW1BBVENIIDI5LzMwXSBEbyBub3Qgc2V0IFBZVEhPTl9JTlNUQUxMX0RJUiBieSBydW5uaW5nIHB5dGhvbgorU3ViamVjdDogW1BBVENIIDEvNV0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIENNYWtlTGlzdHMudHh0IHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNmEzMTk5MzUuLjQ2NmNhMWU2IDEwMDY0NAoraW5kZXggMjNlNWY4ODkuLjY1MGI2MjRhIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0CiBAQCAtMTgsNyArMTgsNyBAQCBlbHNlKCkKQEAgLTIzLDUgKzI0LDUgQEAKICBNRVNTQUdFKFNUQVRVUyAiUHl0aG9uIGluc3RhbGwgZGlyIGlzICR7UFlUSE9OX0lOU1RBTExfRElSfSIpCiAgCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCmluZGV4IDFhYmQ4ODAuLmVlZGJiNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaApAQCAtMSwxOSArMSwyMCBAQAotRnJvbSA5YzhkNTQ1MTUyYjM1ZDg5NDNiZTcyYjk1MDM0MTRhNTNlMWViZjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZDk3YjcyYTFkNzcxNDllMmY5MDQ4ZDFjYTZjZWY2NmRhMWE4YWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjI5OjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvMzBdIFJ1biBweXRob24gc2NyaXB0cyB1c2luZyBlbnYKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIFJ1biBweXRob24gc2NyaXB0cyB1c2luZyBlbnYKIAogT3RoZXJ3aXNlIHRoZSBidWlsZCB0b29scyBoYXJkY29kZSB0aGUgcHl0aG9uIHBhdGggaW50byB0aGVtLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgYmluL2RuZi1hdXRvbWF0aWMuaW4gfCAyICstCiAgYmluL2RuZi5pbiAgICAgICAgICAgfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iaW4vZG5mLWF1dG9tYXRpYy5pbiBiL2Jpbi9kbmYtYXV0b21hdGljLmluCi1pbmRleCA1YjA2YWEyNi4uOWY2ZjcwM2UgMTAwNzU1CitpbmRleCA1YjA2YWEyNi4uODkxYjRjMjQgMTAwNzU1CiAtLS0gYS9iaW4vZG5mLWF1dG9tYXRpYy5pbgogKysrIGIvYmluL2RuZi1hdXRvbWF0aWMuaW4KIEBAIC0xLDQgKzEsNCBAQApAQCAtMjMsNyArMjQsNyBAQAogICMKICAjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IFJlZCBIYXQsIEluYy4KIGRpZmYgLS1naXQgYS9iaW4vZG5mLmluIGIvYmluL2RuZi5pbgotaW5kZXggNjQ1ZDBmMDYuLmFiMTQxYWJkIDEwMDc1NQoraW5kZXggNjQ1ZDBmMDYuLmJkZjdiM2M0IDEwMDc1NQogLS0tIGEvYmluL2RuZi5pbgogKysrIGIvYmluL2RuZi5pbgogQEAgLTEsNCArMSw0IEBACkBAIC0zMyw1ICszNCw1IEBACiAgIwogICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgUmVkIEhhdCwgSW5jLgogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlZDZhNzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJQYWNrYWdlIG1hbmFnZXIgZm9ya2VkIGZyb20gWXVtLCB1c2luZyBsaWJzb2x2IGFzIGEgZGVwZW5kZW5jeSByZXNvbHZlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQUNLQUdFLUxJQ0VOU0lORzttZDU9YmZjMjk5MTZlMTEzMjFiZTA2OTI0YzRmYjA5NmZkY2MgXAotICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2RuZi5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiZTI1ODUxODNlYzQ0ODVlZTRkNWUxMjFmMjQyZDg2NjkyOTZmMDY1IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZSBzeXN0ZW1kCi0KLURFUEVORFMgKz0gImxpYmRuZiBsaWJyZXBvIGxpYmNvbXBzIHB5dGhvbjMtaW5pcGFyc2UiCi0KLSMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLwotRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj0wIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1uZXRjbGllbnQgcHl0aG9uMy1lbWFpbCBweXRob24zLXRocmVhZGluZyBweXRob24zLWRpc3R1dGlscyBsaWJyZXBvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1zdWJwcm9jZXNzIGxpYmNvbXBzIGxpYmRuZiBweXRob24zLXNxbGl0ZTMgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXJwbSBweXRob24zLWluaXBhcnNlIHB5dGhvbjMtanNvbiBweXRob24zLWltcG9ydGxpYiBweXRob24zLWN1cnNlcyBweXRob24zLWFyZ3BhcnNlIHB5dGhvbjMtbWlzYyBweXRob24zLWdwZyIKLSMgUmVjb21tZW5kIGdudXBnIHNvIHRoYXQgR1BHIHNpZ25hdHVyZSBjaGVjayBvbiByZXBvc2l0b3J5IG1ldGFkYXRhIGlzIHBvc3NpYmxlCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImdudXBnIgotCi0jIENyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkICdkbmYnIGFzICdtYWtlIGluc3RhbGwnIGRvZXMgbm90IGRvIGl0LCBidXQKLSMgLnNwZWMgZmlsZSBpbiBkbmYgc291cmNlIHRyZWUgZG9lcyAoYW5kIHRoZW4gRmVkb3JhIGFuZCBkbmYgZG9jdW1lbnRhdGlvbgotIyBzYXlzIHRoYXQgZG5mIGJpbmFyeSBpcyBwbGFpbiAnZG5mJykuCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi0zICR7RH0vJHtiaW5kaXJ9L2RuZgotICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYy0zICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMKLX0KLQotIyBEaXJlY3QgZG5mLW5hdGl2ZSB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9kbmYgXAotICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCi0gICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbmYtbWFrZWNhY2hlLnNlcnZpY2UgZG5mLW1ha2VjYWNoZS50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODhkZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNy41LmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiUGFja2FnZSBtYW5hZ2VyIGZvcmtlZCBmcm9tIFl1bSwgdXNpbmcgbGlic29sdiBhcyBhIGRlcGVuZGVuY3kgcmVzb2x2ZXIiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFDS0FHRS1MSUNFTlNJTkc7bWQ1PWJmYzI5OTE2ZTExMzIxYmUwNjkyNGM0ZmIwOTZmZGNjIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICI1NjRjNDQ2NjdjNzAxNDg0M2ZhNmYxNzMyNjIxMDkzMTE0ZWM1OWIyIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZSBzeXN0ZW1kCisKK0RFUEVORFMgKz0gImxpYmRuZiBsaWJyZXBvIGxpYmNvbXBzIHB5dGhvbjMtaW5pcGFyc2UiCisKKyMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLworRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj0wIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgIHB5dGhvbjMtY29yZSBcCisgIHB5dGhvbjMtY29kZWNzIFwKKyAgcHl0aG9uMy1uZXRjbGllbnQgXAorICBweXRob24zLWVtYWlsIFwKKyAgcHl0aG9uMy10aHJlYWRpbmcgXAorICBweXRob24zLWRpc3R1dGlscyBcCisgIHB5dGhvbjMtbG9nZ2luZyBcCisgIHB5dGhvbjMtZmNudGwgXAorICBsaWJyZXBvIFwKKyAgcHl0aG9uMy1zaGVsbCBcCisgIGxpYmNvbXBzIFwKKyAgbGliZG5mIFwKKyAgcHl0aG9uMy1zcWxpdGUzIFwKKyAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCisgIHB5dGhvbjMtcnBtIFwKKyAgcHl0aG9uMy1pbmlwYXJzZSBcCisgIHB5dGhvbjMtanNvbiBcCisgIHB5dGhvbjMtY3Vyc2VzIFwKKyAgcHl0aG9uMy1taXNjIFwKKyAgcHl0aG9uMy1ncGcgXAorICAiCisKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiZ251cGciCisKKyMgQ3JlYXRlIGEgc3ltbGluayBjYWxsZWQgJ2RuZicgYXMgJ21ha2UgaW5zdGFsbCcgZG9lcyBub3QgZG8gaXQsIGJ1dAorIyAuc3BlYyBmaWxlIGluIGRuZiBzb3VyY2UgdHJlZSBkb2VzIChhbmQgdGhlbiBGZWRvcmEgYW5kIGRuZiBkb2N1bWVudGF0aW9uCisjIHNheXMgdGhhdCBkbmYgYmluYXJ5IGlzIHBsYWluICdkbmYnKS4KK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLTMgJHtEfS8ke2JpbmRpcn0vZG5mCisgICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljLTMgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYworfQorCisjIERpcmVjdCBkbmYtbmF0aXZlIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2RuZiBcCisgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKK30KKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRuZi1tYWtlY2FjaGUuc2VydmljZSBkbmYtbWFrZWNhY2hlLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtYXJjaC1BZGQtc3VwcG9ydC1mb3ItcmlzY3Y2NC1DUFUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YzYwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gMzE5ZjMyZDc0M2Y1YjVlNzI1MDEyNjU0ZDEyNGU0OTIyNmQ1ZGU5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IE1hciAyMDE4IDIwOjI4OjI0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFyY2g6IEFkZCBzdXBwb3J0IGZvciByaXNjdjY0IENQVQorCisgICogQXJjaGl0ZWN0dXJlIHN1cHBvcnQ6CisgICAgLSBBZGQgc3VwcG9ydCBmb3IgcmlzY3Y2NCBDUFUuIENsb3NlczogIzgyMjkxNAorICAgICAgVGhhbmtzIHRvIE1hbnVlbCBBLiBGZXJuYW5kZXogTW9udGVjZWxvIDxtYWZtQGRlYmlhbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcGx1Z2lucy9zY21naXQvY2dpLWJpbi9naXR3ZWIuY2dpP3A9ZHBrZyUyRmRwa2cuZ2l0O2E9Y29tbWl0ZGlmZl9wbGFpbjtoPWVlMDg1NWNjNjYwNzY2OTFkZTQ3OTZiZTQ4ZjhhMGQ4ODlmZGUwMDE7aHA9MmY1ODE2ZDhiZTQwYjQ0OWQyNDczYjIyZjllMGMzM2IzMmYzYmQ3OF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRhdGEvY3B1dGFibGUgICAgICAgICB8IDEgKworIHNjcmlwdHMvdC9EcGtnX0FyY2gudCB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGF0YS9jcHV0YWJsZSBiL2RhdGEvY3B1dGFibGUKK2luZGV4IGEyYmQ3ZDYuLjlmMmE4ZTAgMTAwNjQ0CistLS0gYS9kYXRhL2NwdXRhYmxlCisrKysgYi9kYXRhL2NwdXRhYmxlCitAQCAtNDEsNiArNDEsNyBAQCBwb3dlcnBjCQlwb3dlcnBjCQkocG93ZXJwY3xwcGMpCQkzMgliaWcKKyBwb3dlcnBjZWwJcG93ZXJwY2xlCXBvd2VycGNsZQkJMzIJbGl0dGxlCisgcHBjNjQJCXBvd2VycGM2NAkocG93ZXJwY3xwcGMpNjQJCTY0CWJpZworIHBwYzY0ZWwJCXBvd2VycGM2NGxlCXBvd2VycGM2NGxlCQk2NAlsaXR0bGUKKytyaXNjdjY0CQlyaXNjdjY0CQlyaXNjdjY0CQkJNjQJbGl0dGxlCisgczM5MAkJczM5MAkJczM5MAkJCTMyCWJpZworIHMzOTB4CQlzMzkweAkJczM5MHgJCQk2NAliaWcKKyBzaDMJCXNoMwkJc2gzCQkJMzIJbGl0dGxlCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy90L0Rwa2dfQXJjaC50IGIvc2NyaXB0cy90L0Rwa2dfQXJjaC50CitpbmRleCBkNDc4YjQ5Li5lY2Q1ZDY2IDEwMDY0NAorLS0tIGEvc2NyaXB0cy90L0Rwa2dfQXJjaC50CisrKysgYi9zY3JpcHRzL3QvRHBrZ19BcmNoLnQKK0BAIC0xNiw3ICsxNiw3IEBACisgdXNlIHN0cmljdDsKKyB1c2Ugd2FybmluZ3M7CisgCistdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTYzNjc7CisrdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTY4MzI7CisgCisgdXNlX29rKCdEcGtnOjpBcmNoJywgcXcoZGViYXJjaF90b19kZWJ0dXBsZSBkZWJhcmNoX3RvX211bHRpYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlYmFyY2hfZXEgZGViYXJjaF9pcyBkZWJhcmNoX2lzX3dpbGRjYXJkCitAQCAtMTYyLDcgKzE2Miw3IEBAIGlzKGdudXRyaXBsZXRfdG9fZGViYXJjaCh1bmRlZiksIHVuZGVmLCAndW5kZWYgZ251dHJpcGxldCcpOworIGlzKGdudXRyaXBsZXRfdG9fZGViYXJjaCgndW5rbm93bi11bmtub3duLXVua25vd24nKSwgdW5kZWYsICd1bmtub3duIGdudXRyaXBsZXQnKTsKKyBpcyhnbnV0cmlwbGV0X3RvX2RlYmFyY2goJ3g4Nl82NC1saW51eC1nbnUnKSwgJ2FtZDY0JywgJ2tub3duIGdudXRyaXBsZXQnKTsKKyAKKy1pcyhzY2FsYXIgZ2V0X3ZhbGlkX2FyY2hlcygpLCA1MjQsICdleHBlY3RlZCBhbW91bnQgb2Yga25vd24gYXJjaGl0ZWN0dXJlcycpOworK2lzKHNjYWxhciBnZXRfdmFsaWRfYXJjaGVzKCksIDUzOSwgJ2V4cGVjdGVkIGFtb3VudCBvZiBrbm93biBhcmNoaXRlY3R1cmVzJyk7CisgCisgeworICAgICBsb2NhbCAkRU5We0NDfSA9ICdmYWxzZSc7CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCmluZGV4IGQ5Mjk0NjYuLjg3OTdlYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCkBAIC01LDYgKzUsNyBAQAogCiBoZWxwcyBjb21waWxpbmcgZHBrZyBmb3IgbXVzbC9hcm0tc29mdGZsb2F0CiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2gKaW5kZXggZDU2YjhhNi4uZDQ4Mzg2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2dsaWJjMi41LXN5bmNfZmlsZV9yYW5nZS5wYXRjaApAQCAtMSwxMiArMSwxNyBAQAorRnJvbSA5ZDI2MGQ0MDhmOWUxN2FiZDFkMWRjY2Q2ODViZDdlODBhMzY1NWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG9ubiBTZWVsZXkgPGRvbm4uc2VlbGV5QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI1IEZlYiAyMDE0IDE3OjQ0OjA0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRwa2c6IGZpeCBhIGxpbmsgcHJvYmxlbSBmb3IgZHBrZy1uYXRpdmUgb24gQ2VudE9TIDUuOAorCiBDZW50T1MgNS44IGtlcm5lbHMgYW5kIGhlYWRlcnMgc3VwcG9ydCB0aGUgc3luY19maWxlX3JhbmdlKCkgc3lzdGVtIGNhbGwsCiBidXQgZ2xpYmMgMi41IGRvZXNuJ3QgcHJvdmlkZSB0aGUgc3lzY2FsbCBzdHViLiAgSXQgYXBwZWFycyB0aGF0IHRoaXMKIHByb2JsZW0gaXMga25vd24gYnV0IHdpbGwgbmV2ZXIgYmUgZml4ZWQ6CiAKICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01MTg1ODEKIAotICBCdWcgNTE4NTgxIC0gW1JIRUw1XSBnbGliYyBtaXNzZXMgc3luY19maWxlX3JhbmdlIHN5c2NhbGwgaW50ZXJmYWNlIAorICBCdWcgNTE4NTgxIC0gW1JIRUw1XSBnbGliYyBtaXNzZXMgc3luY19maWxlX3JhbmdlIHN5c2NhbGwgaW50ZXJmYWNlCiAKLSAgU3RhdHVzOiAgICAgICBDTE9TRUQgQ0FOVEZJWCAKKyAgU3RhdHVzOiAgICAgICBDTE9TRUQgQ0FOVEZJWAogICBMYXN0IENsb3NlZDogIDIwMDktMTEtMjIgMjI6MTk6NTUKIAogICBLaXJieSBaaG91IDIwMDktMDgtMjAgMjM6Mzc6NTUgRURUCkBAIC02MCwxMyArNjUsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogRG9ubiBTZWVsZXkgPGRvbm4uc2VlbGV5QHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBMZWkgTGl1IDxsZWkubGl1MkB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBzcmMvYXJjaGl2ZXMuYyB8ICAgIDQgKystLQorIHNyYy9hcmNoaXZlcy5jIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAorZGlmZiAtLWdpdCBhL3NyYy9hcmNoaXZlcy5jIGIvc3JjL2FyY2hpdmVzLmMKK2luZGV4IDRiMmZjOTIuLmE5MmI3OTUgMTAwNjQ0CiAtLS0gYS9zcmMvYXJjaGl2ZXMuYwogKysrIGIvc3JjL2FyY2hpdmVzLmMKLUBAIC03NSw3ICs3NSw3IEBACitAQCAtNjksNyArNjksNyBAQCBmZF93cml0ZWJhY2tfaW5pdChpbnQgZmQpCiAgICAvKiBJZ25vcmUgdGhlIHJldHVybiBjb2RlIGFzIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQgdG8gYW4KICAgICAqIGFzeW5jaHJvbm91cyBoaW50IGZvciB0aGUga2VybmVsLCB3ZSBhcmUgZG9pbmcgYW4gZnN5bmMoKSBsYXRlciBvbgogICAgICogYW55d2F5LiAqLwpAQCAtNzUsNyArODMsNyBAQAogICAgc3luY19maWxlX3JhbmdlKGZkLCAwLCAwLCBTWU5DX0ZJTEVfUkFOR0VfV1JJVEUpOwogICNlbGlmIGRlZmluZWQoSEFWRV9QT1NJWF9GQURWSVNFKQogICAgcG9zaXhfZmFkdmlzZShmZCwgMCwgMCwgUE9TSVhfRkFEVl9ET05UTkVFRCk7Ci1AQCAtMTE3OSw3ICsxMTc5LDcgQEAKK0BAIC0xMDc4LDcgKzEwNzgsNyBAQCB0YXJvYmplY3Qodm9pZCAqY3R4LCBzdHJ1Y3QgdGFyX2VudHJ5ICp0aSkKICAgIHJldHVybiAwOwogIH0KICAKQEAgLTg0LDMgKzkyLDYgQEAKICBzdGF0aWMgdm9pZAogIHRhcl93cml0ZWJhY2tfYmFycmllcihzdHJ1Y3QgZmlsZWlubGlzdCAqZmlsZXMsIHN0cnVjdCBwa2dpbmZvICpwa2cpCiAgeworLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIKaW5kZXggYzBjNTlmMS4uNmQ4ZWMzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjI0LmJiCkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRwa2ctU3VwcG9ydC1tdXNseDMyLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJjaC1BZGQtc3VwcG9ydC1mb3ItcmlzY3Y2NC1DUFUucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2ggIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9kd2FyZnNyY2ZpbGVzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OWEwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgcHJpbnRpbmcgZGViaWcgc291cmNlIGZpbGUgbG9jYXRpb25zIGVtYmVkZGVkIGluIGJpbmFyaWVzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9kd2FyZnNyY2ZpbGVzLmM7bWQ1PTMxNDgzODk0ZTQ1M2E3N2FjYmI2Nzg0NzU2NWYxYjVjO2JlZ2lubGluZT0xO2VuZGxpbmU9OCIKKworU1JDX1VSSSA9ICJmaWxlOi8vZHdhcmZzcmNmaWxlcy5jIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitERVBFTkRTID0gImVsZnV0aWxzIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK2RvX2NvbXBpbGUgKCkgeworCSR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vIGR3YXJmc3JjZmlsZXMgLi4vZHdhcmZzcmNmaWxlcy5jIC1sZWxmIC1sZHcKK30KKworZG9fY29tcGlsZV9saWJjLW11c2wgKCkgeworCSR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vIGR3YXJmc3JjZmlsZXMgLi4vZHdhcmZzcmNmaWxlcy5jIC1sZWxmIC1sZHcgLWxhcmdwIAorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC10ICR7RH0ke2JpbmRpcn0gZHdhcmZzcmNmaWxlcworfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZmlsZXMvZHdhcmZzcmNmaWxlcy5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2ZpbGVzL2R3YXJmc3JjZmlsZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjdhZjUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2ZpbGVzL2R3YXJmc3JjZmlsZXMuYwpAQCAtMCwwICsxLDExMSBAQAorLy8gZHdhcmZzcmNmaWxlcy5jIC0gR2V0IHNvdXJjZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGR3YXJmIGluIGEgZWxmIGZpbGUuCisvLyBnY2MgLVdhbGwgLWcgLU8yIC1sZWxmIC1sZHcgLW8gZHdhcmZzcmNmaWxlcyBkd2FyZnNyY2ZpbGVzLmMgCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDExLCBNYXJrIFdpZWxhYXJkIDxtandAcmVkaGF0LmNvbT4KKy8vCisvLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZS4gIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCk7IGVpdGhlcgorLy8gdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjaW5jbHVkZSA8YXJncC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlIDxkd2FyZi5oPgorI2luY2x1ZGUgPGVsZnV0aWxzL2xpYmR3Lmg+CisjaW5jbHVkZSA8ZWxmdXRpbHMvbGliZHdmbC5oPgorCitzdGF0aWMgaW50Citwcm9jZXNzX2N1IChEd2FyZl9EaWUgKmN1X2RpZSkKK3sKKyAgRHdhcmZfQXR0cmlidXRlIGF0dHI7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIGNvbnN0IGNoYXIgKmRpciA9IE5VTEw7CisgIAorICBEd2FyZl9GaWxlcyAqZmlsZXM7CisgIHNpemVfdCBuOworICBpbnQgaTsKKyAgCisgIGlmIChkd2FyZl90YWcgKGN1X2RpZSkgIT0gRFdfVEFHX2NvbXBpbGVfdW5pdCkKKyAgICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJESUUgaXNuJ3QgYSBjb21waWxlIHVuaXQiKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIAorICBpZiAoZHdhcmZfYXR0ciAoY3VfZGllLCBEV19BVF9uYW1lLCAmYXR0cikgPT0gTlVMTCkKKyAgICB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNVIGRvZXNuJ3QgaGF2ZSBhIERXX0FUX25hbWUiKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIAorICBuYW1lID0gZHdhcmZfZm9ybXN0cmluZyAoJmF0dHIpOworICBpZiAobmFtZSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgZ2V0IERXX0FUX25hbWUgYXMgc3RyaW5nLCAlcyIsCisJICAgICBkd2FyZl9lcnJtc2cgKC0xKSk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAKKyAgaWYgKGR3YXJmX2F0dHIgKGN1X2RpZSwgRFdfQVRfY29tcF9kaXIsICZhdHRyKSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGRpciA9IGR3YXJmX2Zvcm1zdHJpbmcgKCZhdHRyKTsKKyAgICAgIGlmIChkaXIgPT0gTlVMTCkKKwl7CisJICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGdldCBEV19BVF9jb21wX2RpZSBhcyBzdHJpbmcsICVzIiwKKwkJIGR3YXJmX2Vycm1zZyAoLTEpKTsKKwkgIHJldHVybiAtMTsKKwl9CisgICAgfQorICAKKyAgaWYgKGRpciA9PSBOVUxMKQorICAgIHByaW50ZiAoIiVzXG4iLCBuYW1lKTsKKyAgZWxzZQorICAgIHByaW50ZiAoIiVzLyVzXG4iLCBkaXIsIG5hbWUpOworICAKKyAgaWYgKGR3YXJmX2dldHNyY2ZpbGVzIChjdV9kaWUsICZmaWxlcywgJm4pICE9IDApCisgICAgeworICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBnZXQgQ1UgZmlsZSB0YWJsZSwgJXMiLAorCSAgICAgZHdhcmZfZXJybXNnICgtMSkpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgCisgIGZvciAoaSA9IDE7IGkgPCBuOyBpKyspCisgICAgeworICAgICAgY29uc3QgY2hhciAqZmlsZSA9IGR3YXJmX2ZpbGVzcmMgKGZpbGVzLCBpLCBOVUxMLCBOVUxMKTsKKyAgICAgIGlmIChkaXIgIT0gTlVMTCAmJiBmaWxlWzBdICE9ICcvJykKKwlwcmludGYgKCJcdCVzLyVzXG4iLCBkaXIsIGZpbGUpOworICAgICAgZWxzZQorCXByaW50ZiAoIlx0JXNcbiIsIGZpbGUpOworICAgIH0KKyAgCisgIHJldHVybiAwOworfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgY2hhciogYXJnc1szXTsKKyAgaW50IHJlcyA9IDA7CisgIER3ZmwgKmR3Zmw7CisgIER3YXJmX0FkZHIgYmlhczsKKyAgCisgIGlmIChhcmdjICE9IDIpCisgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZSAlcyA8ZmlsZT4iLCBhcmd2WzBdKTsKKyAgCisgIC8vIFByZXRlbmQgImR3YXJmc3JjZmlsZXMgLWUgPGZpbGU+IiB3YXMgZ2l2ZW4sIHNvIHdlIGNhbiB1c2Ugc3RhbmRhcmQKKyAgLy8gZHdmbCBhcmdwIHBhcnNlciB0byBvcGVuIHRoZSBmaWxlIGZvciB1cyBhbmQgZ2V0IG91ciBEd2ZsLiBVc2VmdWwKKyAgLy8gaW4gY2FzZSBhcmd1bWVudCBpcyBhbiBFVF9SRUwgZmlsZSAobGlrZSBrZXJuZWwgbW9kdWxlcykuIGxpYmR3ZmwKKyAgLy8gd2lsbCBmaXggdXAgcmVsb2NhdGlvbnMgZm9yIHVzLgorICBhcmdzWzBdID0gYXJndlswXTsKKyAgYXJnc1sxXSA9ICItZSI7CisgIGFyZ3NbMl0gPSBhcmd2WzFdOworICAKKyAgYXJncF9wYXJzZSAoZHdmbF9zdGFuZGFyZF9hcmdwICgpLCAzLCBhcmdzLCAwLCBOVUxMLCAmZHdmbCk7CisgIAorICBEd2FyZl9EaWUgKmN1ID0gTlVMTDsKKyAgd2hpbGUgKChjdSA9IGR3ZmxfbmV4dGN1IChkd2ZsLCBjdSwgJmJpYXMpKSAhPSBOVUxMKQorICAgIHJlcyB8PSBwcm9jZXNzX2N1IChjdSk7CisgIAorICBkd2ZsX2VuZCAoZHdmbCk7CisKKyAgcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWxpYmV4dDJmcy1maXgtYnVpbGQtZmFpbHVyZS1pbi1zd2FwZnMuYy1vbi1iaWctZW5kaWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMTI4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gYWU2NjAzMjA2MTc2Yjc3MWM5ZWQxZjgyNTY5ZjY4ZmMxMjU3ZjAxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitEYXRlOiBXZWQsIDMgSmFuIDIwMTggMDE6MzI6MDIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZXh0MmZzOiBmaXggYnVpbGQgZmFpbHVyZSBpbiBzd2FwZnMuYyBvbiBiaWctZW5kaWFuCisgc3lzdGVtcworCitBZGRyZXNzZXMtRGViaWFuLUJ1ZzogIzg4NjExOQorCitSZXBvcnRlZC1ieTogSmFtZXMgQ2xhcmtlIDxqcnRjMjdAZGViaWFuLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIGxpYi9leHQyZnMvc3dhcGZzLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvc3dhcGZzLmMgYi9saWIvZXh0MmZzL3N3YXBmcy5jCitpbmRleCA2ZTVjZmY5Ny4uYjEzZGM0MjIgMTAwNjQ0CistLS0gYS9saWIvZXh0MmZzL3N3YXBmcy5jCisrKysgYi9saWIvZXh0MmZzL3N3YXBmcy5jCitAQCAtMTksNiArMTksNyBAQAorIAorICNpbmNsdWRlICJleHQyX2ZzLmgiCisgI2luY2x1ZGUgImV4dDJmcy5oIgorKyNpbmNsdWRlICJleHQyZnNQLmgiCisgI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+CisgCisgI2lmZGVmIFdPUkRTX0JJR0VORElBTgorQEAgLTM1OCw3ICszNTksNyBAQCB2b2lkIGV4dDJmc19zd2FwX2lub2RlX2Z1bGwoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICp0LAorIAlpZiAoaW5vZGVfaW5jbHVkZXMoaW5vZGVfc2l6ZSwgaV9wcm9qaWQpKQorICAgICAgICAgICAgICAgICB0LT5pX3Byb2ppZCA9IGV4dDJmc19zd2FiMTYoZi0+aV9wcm9qaWQpOworIAkvKiBjYXRjaCBuZXcgc3RhdGljIGZpZWxkcyBhZGRlZCBhZnRlciBpX3Byb2ppZCAqLworLQlFWFQyRlNfQlVJTERfQlVHX09OKHNpemVvZihleHQyX2lub2RlX2xhcmdlKSAhPSAxNjApOworKwlFWFQyRlNfQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSkgIT0gMTYwKTsKKyAKKyAJaSA9IHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkgKyBleHRyYV9pc2l6ZSArIHNpemVvZihfX3UzMik7CisgCWlmIChidWZzaXplIDwgKGludCkgaSkKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLW1pc2MtcmVuYW1lLWNvcHlfZmlsZV9yYW5nZS10by1jb3B5X2ZpbGVfY2h1bmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDhmZTBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLW1pc2MtcmVuYW1lLWNvcHlfZmlsZV9yYW5nZS10by1jb3B5X2ZpbGVfY2h1bmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDY0NzM1M2Y3YzNmZDI5ZTFmZmQ0NjhkN2ZmNTZkOTY0MzA0N2FiMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYWxtZXIgRGFiYmVsdCA8cGFsbWVyQGRhYmJlbHQuY29tPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxMDoxOTo1MSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBtaXNjOiByZW5hbWUgY29weV9maWxlX3JhbmdlIHRvIGNvcHlfZmlsZV9jaHVuawotCi1BcyBvZiAyLjI3LCBnbGliYyB3aWxsIGhhdmUgYSBjb3B5X2ZpbGVfcmFuZ2UgbGlicmFyeSBjYWxsIHRvIHdyYXAgdGhlCi1uZXcgY29weV9maWxlX3JhbmdlIHN5c3RlbSBjYWxsLiAgVGhpcyBjb25mbGljdHMgd2l0aCB0aGUgZnVuY3Rpb24gaW4KLW1pc2MvY3JlYXRlX2lub2RlLmMsIHdoaWNoIHRoaXMgcGF0Y2ggcmVuYW1lcyBfY29weV9maWxlX3JhbmdlLgotCi1TaWduZWQtb2ZmLWJ5OiBQYWxtZXIgRGFiYmVsdCA8cGFsbWVyQGRhYmJlbHQuY29tPgotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBtaXNjL2NyZWF0ZV9pbm9kZS5jIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9taXNjL2NyZWF0ZV9pbm9kZS5jIGIvbWlzYy9jcmVhdGVfaW5vZGUuYwotaW5kZXggOGNlM2ZhZmEuLmNkODkxNDZmIDEwMDY0NAotLS0tIGEvbWlzYy9jcmVhdGVfaW5vZGUuYwotKysrIGIvbWlzYy9jcmVhdGVfaW5vZGUuYwotQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgc3NpemVfdCBteV9wcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCi0gfQotICNlbmRpZiAvKiAhZGVmaW5lZCBIQVZFX1BSRUFENjQgJiYgIWRlZmluZWQgSEFWRV9QUkVBRCAqLwotIAotLXN0YXRpYyBlcnJjb2RlX3QgY29weV9maWxlX3JhbmdlKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsIGV4dDJfZmlsZV90IGUyX2ZpbGUsCi0rc3RhdGljIGVycmNvZGVfdCBjb3B5X2ZpbGVfY2h1bmsoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgZXh0Ml9maWxlX3QgZTJfZmlsZSwKLSAJCQkJIG9mZl90IHN0YXJ0LCBvZmZfdCBlbmQsIGNoYXIgKmJ1ZiwKLSAJCQkJIGNoYXIgKnplcm9idWYpCi0gewotQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0aWMgZXJyY29kZV90IHRyeV9sc2Vla19jb3B5KGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdGF0YnVmLAotIAotIAkJZGF0YV9ibGsgPSBkYXRhICYgfihmcy0+YmxvY2tzaXplIC0gMSk7Ci0gCQlob2xlX2JsayA9IChob2xlICsgKGZzLT5ibG9ja3NpemUgLSAxKSkgJiB+KGZzLT5ibG9ja3NpemUgLSAxKTsKLS0JCWVyciA9IGNvcHlfZmlsZV9yYW5nZShmcywgZmQsIGUyX2ZpbGUsIGRhdGFfYmxrLCBob2xlX2JsaywgYnVmLAotKwkJZXJyID0gY29weV9maWxlX2NodW5rKGZzLCBmZCwgZTJfZmlsZSwgZGF0YV9ibGssIGhvbGVfYmxrLCBidWYsCi0gCQkJCSAgICAgIHplcm9idWYpOwotIAkJaWYgKGVycikKLSAJCQlyZXR1cm4gZXJyOwotQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgZXJyY29kZV90IHRyeV9maWVtYXBfY29weShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBleHQyX2ZpbGVfdCBlMl9maWxlLAotIAkJCWdvdG8gb3V0OwotIAkJZm9yIChpID0gMCwgZXh0ID0gZXh0X2J1ZjsgaSA8IGZpZW1hcF9idWYtPmZtX21hcHBlZF9leHRlbnRzOwotIAkJICAgICBpKyssIGV4dCsrKSB7Ci0tCQkJZXJyID0gY29weV9maWxlX3JhbmdlKGZzLCBmZCwgZTJfZmlsZSwgZXh0LT5mZV9sb2dpY2FsLAotKwkJCWVyciA9IGNvcHlfZmlsZV9jaHVuayhmcywgZmQsIGUyX2ZpbGUsIGV4dC0+ZmVfbG9naWNhbCwKLSAJCQkJCSAgICAgIGV4dC0+ZmVfbG9naWNhbCArIGV4dC0+ZmVfbGVuZ3RoLAotIAkJCQkJICAgICAgYnVmLCB6ZXJvYnVmKTsKLSAJCQlpZiAoZXJyKQotQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgZXJyY29kZV90IGNvcHlfZmlsZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZiwKLSAJCWdvdG8gb3V0OwotICNlbmRpZgotIAotLQllcnIgPSBjb3B5X2ZpbGVfcmFuZ2UoZnMsIGZkLCBlMl9maWxlLCAwLCBzdGF0YnVmLT5zdF9zaXplLCBidWYsCi0rCWVyciA9IGNvcHlfZmlsZV9jaHVuayhmcywgZmQsIGUyX2ZpbGUsIDAsIHN0YXRidWYtPnN0X3NpemUsIGJ1ZiwKLSAJCQkgICAgICB6ZXJvYnVmKTsKLSBvdXQ6Ci0gCWV4dDJmc19mcmVlX21lbSgmemVyb2J1Zik7Ci0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCmluZGV4IDM4ZmIwN2UuLjM4ZTFiZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCkBAIC0xOSwxMCArMTksMTAgQEAKICBtaXNjL21rZTJmcy5jb25mLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9taXNjL21rZTJmcy5jb25mLmluIGIvbWlzYy9ta2UyZnMuY29uZi5pbgotaW5kZXggODEyZjdjNy4uMDI4MDM5OCAxMDA2NDQKLS0tLSBhL21pc2MvbWtlMmZzLmNvbmYuaW4KLSsrKyBiL21pc2MvbWtlMmZzLmNvbmYuaW4KK0luZGV4OiBnaXQvbWlzYy9ta2UyZnMuY29uZi5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL21pc2MvbWtlMmZzLmNvbmYuaW4KKysrKyBnaXQvbWlzYy9ta2UyZnMuY29uZi5pbgogQEAgLTExLDggKzExLDkgQEAKICAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwKICAJfQpAQCAtMzIsNSArMzIsNSBAQAogIAkJaW5vZGVfc2l6ZSA9IDI1NgogKwkJYXV0b182NC1iaXRfc3VwcG9ydCA9IDEKICAJfQotIAlleHQ0ZGV2ID0gewotIAkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGlubGluZV9kYXRhLDY0Yml0LGRpcl9ubGluayxleHRyYV9pc2l6ZQorIAlzbWFsbCA9IHsKKyAJCWJsb2Nrc2l6ZSA9IDEwMjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9hY2luY2x1ZGUubTQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvYWNpbmNsdWRlLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGJkN2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotIyBFeHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSdzIHNoaXBwZWQgYWNsb2NhbC5tNC4gQ3VzdG9tIG1hY3JvcyBzaG91bGQgYmUgaW4KLSMgYWNpbmNsdWRlLm00IHNvIHJ1bm5pbmcgYWNsb2NhbCBkb2Vzbid0IGJsb3cgdGhlbSBhd2F5LgotIwotIyBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi0jIGZyb20gaHR0cDovL2F1dG9jb25mLWFyY2hpdmUuY3J5cC50by9heF90bHMuaHRtbAotIwotIyBUaGlzIHdhcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb246Ci0jCi0jIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0Ci0jIG93bmVyIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUKLSMgY29uZmlndXJlIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcKLSMgdGhlIE1hY3JvLiBZb3UgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2Ugd2hlbiB1c2luZyBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaAotIyBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbAotIyBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybiBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0Ci0jIGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KLSMKLSMgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlCi0jIEF1dG9jb25mIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBNYWNybyBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlCi0jIGFuZCBkaXN0cmlidXRlIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkKLSMgZXh0ZW5kIHRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkCi0jIHZlcnNpb24gYXMgd2VsbC4KLSMKLUFDX0RFRlVOKFtBWF9UTFNdLCBbCi0gIEFDX01TR19DSEVDS0lORyhmb3IgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgY2xhc3MpCi0gIEFDX0NBQ0hFX1ZBTChhY19jdl90bHMsIFsKLSAgICBheF90bHNfa2V5d29yZHM9Il9fdGhyZWFkIF9fZGVjbHNwZWModGhyZWFkKSBub25lIgotICAgIGZvciBheF90bHNfa2V5d29yZCBpbiAkYXhfdGxzX2tleXdvcmRzOyBkbwotICAgICAgIGNhc2UgJGF4X3Rsc19rZXl3b3JkIGluCi0gICAgICAgICAgbm9uZSkgYWNfY3ZfdGxzPW5vbmUgOyBicmVhayA7OwotICAgICAgICAgICopCi0gICAgICAgICAgICAgQUNfVFJZX0NPTVBJTEUoCi0gICAgICAgICAgICAgICAgWyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAgICAgICAgICAgICAgICAgc3RhdGljIHZvaWQKLSAgICAgICAgICAgICAgICAgZm9vKHZvaWQpIHsKLSAgICAgICAgICAgICAgICAgc3RhdGljIF0gJGF4X3Rsc19rZXl3b3JkIFsgaW50IGJhcjsKLSAgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgICAgICBbYWNfY3ZfdGxzPSRheF90bHNfa2V5d29yZCA7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfdGxzPW5vbmUKLSAgICAgICAgICAgICApCi0gICAgICAgICAgZXNhYwotICAgIGRvbmUKLV0pCi0KLSAgaWYgdGVzdCAiJGFjX2N2X3RscyIgIT0gIm5vbmUiOyB0aGVuCi0gICAgZG5sIEFDX0RFRklORShbVExTXSwgW10sIFtJZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgYSBUTFMgc3RvcmFnZSBjbGFzcyBkZWZpbmUgaXQgdG8gdGhhdCBoZXJlXSkKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1RMU10sICRhY19jdl90bHMsIFtJZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgYSBUTFMgc3RvcmFnZSBjbGFzcyBkZWZpbmUgaXQgdG8gdGhhdCBoZXJlXSkKLSAgZmkKLSAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfdGxzKQotXSkKLQotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgICAgICBodHRwOi8vd3d3Lm5vbmdudS5vcmcvYXV0b2NvbmYtYXJjaGl2ZS9jaGVja19nbnVfbWFrZS5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIENIRUNLX0dOVV9NQUtFKCkKLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUaGlzIG1hY3JvIHNlYXJjaGVzIGZvciBhIEdOVSB2ZXJzaW9uIG9mIG1ha2UuIElmIGEgbWF0Y2ggaXMgZm91bmQsIHRoZQotIyAgIG1ha2VmaWxlIHZhcmlhYmxlIGBpZkdOVW1ha2UnIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgaXQKLSMgICBpcyBzZXQgdG8gIiMiLiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW5jbHVkaW5nIGEgc3BlY2lhbCBmZWF0dXJlcyBpbiBhCi0jICAgTWFrZWZpbGUsIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IG90aGVyIHZlcnNpb25zIG9mIG1ha2UuIFRoZQotIyAgIHZhcmlhYmxlIF9jdl9nbnVfbWFrZV9jb21tYW5kIGlzIHNldCB0byB0aGUgY29tbWFuZCB0byBpbnZva2UgR05VIG1ha2UKLSMgICBpZiBpdCBleGlzdHMsIHRoZSBlbXB0eSBzdHJpbmcgb3RoZXJ3aXNlLgotIwotIyAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBpdHMgdXNlOgotIwotIyAgIE1ha2VmaWxlLmluIG1pZ2h0IGNvbnRhaW46Ci0jCi0jICAgICAgICMgQSBmYWlsc2FmZSB3YXkgb2YgcHV0dGluZyBhIGRlcGVuZGVuY3kgcnVsZSBpbnRvIGEgbWFrZWZpbGUKLSMgICAgICAgJChERVBFTkQpOgotIyAgICAgICAgICAgICAgICQoQ0MpIC1NTSAkKHNyY2RpcikvKi5jID4gJChERVBFTkQpCi0jCi0jICAgICAgIEBpZkdOVW1ha2VAIGlmZXEgKCQoREVQRU5EKSwkKHdpbGRjYXJkICQoREVQRU5EKSkpCi0jICAgICAgIEBpZkdOVW1ha2VAIGluY2x1ZGUgJChERVBFTkQpCi0jICAgICAgIEBpZkdOVW1ha2VAIGVuZGlmCi0jCi0jICAgVGhlbiBjb25maWd1cmUuaW4gd291bGQgbm9ybWFsbHkgY29udGFpbjoKLSMKLSMgICAgICAgQ0hFQ0tfR05VX01BS0UoKQotIyAgICAgICBBQ19PVVRQVVQoTWFrZWZpbGUpCi0jCi0jICAgVGhlbiBwZXJoYXBzIHRvIGNhdXNlIGdudSBtYWtlIHRvIG92ZXJyaWRlIGFueSBvdGhlciBtYWtlLCB3ZSBjb3VsZCBkbwotIyAgIHNvbWV0aGluZyBsaWtlIHRoaXMgKG5vdGUgdGhhdCBHTlUgbWFrZSBhbHdheXMgbG9va3MgZm9yIEdOVW1ha2VmaWxlCi0jICAgZmlyc3QpOgotIwotIyAgICAgICBpZiAgISB0ZXN0IHgkX2N2X2dudV9tYWtlX2NvbW1hbmQgPSB4IDsgdGhlbgotIyAgICAgICAgICAgICAgIG12IE1ha2VmaWxlIEdOVW1ha2VmaWxlCi0jICAgICAgICAgICAgICAgZWNobyAuREVGQVVMVDogPiBNYWtlZmlsZSA7Ci0jICAgICAgICAgICAgICAgZWNobyBcICAkX2N2X2dudV9tYWtlX2NvbW1hbmQgXCRAID4+IE1ha2VmaWxlOwotIyAgICAgICBmaQotIwotIyAgIFRoZW4sIGlmIGFueSAod2VsbCBhbG1vc3QgYW55KSBvdGhlciBtYWtlIGlzIGNhbGxlZCwgYW5kIEdOVSBtYWtlIGFsc28KLSMgICBleGlzdHMsIHRoZW4gdGhlIG90aGVyIG1ha2Ugd3JhcHMgdGhlIEdOVSBtYWtlLgotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IEpvaG4gRGFycmluZ3RvbiA8ai5kYXJyaW5ndG9uQGVsdmlzLm11cmRvY2guZWR1LmF1PgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLgotIwotIyBOb3RlOiBNb2RpZmllZCBieSBUZWQgVHMnbyB0byBhZGQgQGlmTm90R05VTWFrZUAKLQotQUNfREVGVU4oCi0gICAgICAgIFtDSEVDS19HTlVfTUFLRV0sIFsgQUNfQ0FDSEVfQ0hFQ0soIGZvciBHTlUgbWFrZSxfY3ZfZ251X21ha2VfY29tbWFuZCwKLSAgICAgICAgICAgICAgICBfY3ZfZ251X21ha2VfY29tbWFuZD0nJyA7Ci1kbmwgU2VhcmNoIGFsbCB0aGUgY29tbW9uIG5hbWVzIGZvciBHTlUgbWFrZQotICAgICAgICAgICAgICAgIGZvciBhIGluICIkTUFLRSIgbWFrZSBnbWFrZSBnbnVtYWtlIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhIiA7IHRoZW4gY29udGludWUgOyBmaSA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAgKCBzaCAtYyAiJGEgLS12ZXJzaW9uIiAyPiAvZGV2L251bGwgfCBncmVwIEdOVSAgMj4mMSA+IC9kZXYvbnVsbCApIDsgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2N2X2dudV9tYWtlX2NvbW1hbmQ9JGEgOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICAgZG9uZSA7Ci0gICAgICAgICkgOwotZG5sIElmIHRoZXJlIHdhcyBhIEdOVSB2ZXJzaW9uLCB0aGVuIHNldCBAaWZHTlVtYWtlQCB0byB0aGUgZW1wdHkgc3RyaW5nLCAnIycgb3RoZXJ3aXNlCi0gICAgICAgIGlmIHRlc3QgICJ4JF9jdl9nbnVfbWFrZV9jb21tYW5kIiAhPSAieCIgIDsgdGhlbgotICAgICAgICAgICAgICAgIGlmR05VbWFrZT0nJyA7Ci0gICAgICAgICAgICAgICAgaWZOb3RHTlVtYWtlPScjJyA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpZkdOVW1ha2U9JyMnIDsKLSAgICAgICAgICAgICAgICBpZk5vdEdOVW1ha2U9JycgOwotICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoIk5vdCBmb3VuZCIpOwotICAgICAgICBmaQotICAgICAgICBBQ19TVUJTVChpZkdOVW1ha2UpCi0gICAgICAgIEFDX1NVQlNUKGlmTm90R05VbWFrZSkKLV0gKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaAppbmRleCAzMzA1NGM2Li42OWMwOWJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaApAQCAtMSwzICsxLDYgQEAKK0Zyb20gYzc5MTQzMDlhZWVlNjIwOWRkYjY5OTVjMDg0ODA1YTkxMWQ5Y2M4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEwIEF1ZyAyMDE2IDExOjE5OjQ0ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBtaXNzaW5nIGNoZWNrIGZvciBwZXJtaXNzaW9uIGRlbmllZC4KIAogSWYgdGhlIHBhdGggdG8gIlJPT1RfU1lTQ09ORkRJUi9ta2UyZnMuY29uZiIgaGFzIGEgcGVybWlzc2lvbiBkZW5pZWQgcHJvYmxlbSwKQEAgLTEwLDE1ICsxMywxNiBAQAogV3JpdHRlbi1ieTogSGVucmlrIFdhbGxpbiA8aGVucmlrLmIud2FsbGluQGVyaWNzc29uLmNvbT4KIAogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgbGliL3N1cHBvcnQvcHJvZmlsZS5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliL3N1cHBvcnQvcHJvZmlsZS5jIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCi1pbmRleCA1MWEzMzE0Li4xYzEwMzlmIDEwMDY0NAoraW5kZXggOWU5NjY3M2IuLjMyZDgzMDAyIDEwMDY0NAogLS0tIGEvbGliL3N1cHBvcnQvcHJvZmlsZS5jCiArKysgYi9saWIvc3VwcG9ydC9wcm9maWxlLmMKLUBAIC0zMzUsNyArMzM1LDcgQEAgcHJvZmlsZV9pbml0KGNvbnN0IGNoYXIgKipmaWxlcywgcHJvZmlsZV90ICpyZXRfcHJvZmlsZSkKK0BAIC0zMzUsNyArMzM1LDcgQEAgcHJvZmlsZV9pbml0KGNvbnN0IGNoYXIgKiBjb25zdCAqZmlsZXMsIHByb2ZpbGVfdCAqcmV0X3Byb2ZpbGUpCiAgCQkJCSpsYXN0ID0gbmV3X2ZpbGU7CiAgCQkJCWxhc3QgPSAmbmV3X2ZpbGUtPm5leHQ7CiAgCQkJfQpAQCAtMjgsNSArMzIsNSBAQAogIAkJCWdvdG8gZXJyb3V0OwogIAogLS0gCi0yLjcuNAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ta2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ta2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEzYWVmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvbWtkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IE1laSBMZWkgPGxlaS5tZWlAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjMWZlMjI0Li5mNWFjNjI4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzc0LDcgKzEzNzQsOCBAQCBpZiB0ZXN0IC1uICIkV0lUSF9ESUVUX0xJQkMiIDsgdGhlbgotIAlJTkNMVURFUz0iJElOQ0xVREVTIC1EX1JFRU5UUkFOVCIKLSBmaQotIEFDX1NVQlNUKElOQ0xVREVTKQotLUFNX01LSU5TVEFMTERJUlMKLStNS0lOU1RBTExESVJTPSJta2RpciAtcCIKLStBQ19TVUJTVChNS0lOU1RBTExESVJTKQotIGRubAotIGRubCBCdWlsZCBDRkxBR1MKLSBkbmwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAppbmRleCA3ZGYwOTY3Li43YzRiYjM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCkBAIC0xLDEwICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluIGIvdGVzdHMvTWFrZWZpbGUuaW4KLWluZGV4IGMxMzBmNGEuLmQyYWRlMDMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5pbgotKysrIGIvdGVzdHMvTWFrZWZpbGUuaW4KLUBAIC0xOCw3ICsxOCw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUgbWtlMmZzLmNvbmYKK0luZGV4OiBnaXQvdGVzdHMvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0cy9NYWtlZmlsZS5pbgorKysrIGdpdC90ZXN0cy9NYWtlZmlsZS5pbgorQEAgLTE4LDcgKzE4LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZQogIAlAZWNobyAiIyEvYmluL3NoIiA+IHRlc3Rfb25lCiAgCUBlY2hvICJIVFJFRT15IiA+PiB0ZXN0X29uZQogIAlAZWNobyAiUVVPVEE9eSIgPj4gdGVzdF9vbmUKQEAgLTEyLDggKzEyLDggQEAKICsJQGVjaG8gIlNSQ0RJUj0ke3ByZWZpeH0ke2xpYmRpcn0vZTJmc3Byb2dzL3B0ZXN0L3Rlc3QiID4+IHRlc3Rfb25lCiAgCUBlY2hvICJESUZGX09QVFM9QFVOSV9ESUZGX09QVFNAIiA+PiB0ZXN0X29uZQogIAlAZWNobyAiU0laRU9GX1RJTUVfVD1AU0laRU9GX1RJTUVfVEAiID4+IHRlc3Rfb25lCi0gCUBjYXQgJChzcmNkaXIpL3Rlc3Rfb25lLmluID4+IHRlc3Rfb25lCi1AQCAtMjcsNyArMjcsNyBAQCB0ZXN0X29uZTogJChzcmNkaXIpL3Rlc3Rfb25lLmluIE1ha2VmaWxlIG1rZTJmcy5jb25mCisgCUBlY2hvICJERD1ARERAIiA+PnRlc3Rfb25lCitAQCAtMjgsNyArMjgsNyBAQCB0ZXN0X29uZTogJChzcmNkaXIpL3Rlc3Rfb25lLmluIE1ha2VmaWxlCiAgdGVzdF9zY3JpcHQ6IHRlc3Rfb25lIHRlc3Rfc2NyaXB0LmluIE1ha2VmaWxlIG1rZTJmcy5jb25mCiAgCUBlY2hvICJDcmVhdGluZyB0ZXN0X3NjcmlwdC4uLiIKICAJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X3NjcmlwdApAQCAtMjIsMTAgKzIyLDEwIEBACiAgCUBjYXQgJChzcmNkaXIpL3Rlc3Rfc2NyaXB0LmluID4+IHRlc3Rfc2NyaXB0CiAgCUBjaG1vZCAreCB0ZXN0X3NjcmlwdAogIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RfY29uZmlnIGIvdGVzdHMvdGVzdF9jb25maWcKLWluZGV4IDU0N2VmNGMuLmUxMWU2ZjQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90ZXN0X2NvbmZpZwotKysrIGIvdGVzdHMvdGVzdF9jb25maWcKK0luZGV4OiBnaXQvdGVzdHMvdGVzdF9jb25maWcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0cy90ZXN0X2NvbmZpZworKysrIGdpdC90ZXN0cy90ZXN0X2NvbmZpZwogQEAgLTMsMjQgKzMsMjQgQEAKICAjCiAgCkBAIC02NywxMCArNjcsMTAgQEAKICBDTEVBTl9PVVRQVVQ9InNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIgogIExEX0xJQlJBUllfUEFUSD0uLi9saWI6Li4vbGliL2V4dDJmczouLi9saWIvZTJwOi4uL2xpYi9ldDouLi9saWIvc3M6JHtMRF9MSUJSQVJZX1BBVEh9CiAgRFlMRF9MSUJSQVJZX1BBVEg9Li4vbGliOi4uL2xpYi9leHQyZnM6Li4vbGliL2UycDouLi9saWIvZXQ6Li4vbGliL3NzOiR7RFlMRF9MSUJSQVJZX1BBVEh9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9zY3JpcHQuaW4gYi90ZXN0cy90ZXN0X3NjcmlwdC5pbgotaW5kZXggOTk1OWUzMC4uNDQyOTk5ZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCi0rKysgYi90ZXN0cy90ZXN0X3NjcmlwdC5pbgorSW5kZXg6IGdpdC90ZXN0cy90ZXN0X3NjcmlwdC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCisrKysgZ2l0L3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCiBAQCAtMzksNyArMzksNyBAQCBmb3IgaTsgZG8KICBkb25lCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9yZXByb2R1Y2libGUtZG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTVkMWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9yZXByb2R1Y2libGUtZG9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi1TdXBwcG9ydCBmb3IgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eS4KLVdoZW4gY29tcHJlc3NpbmcsIGRvIG5vdCBzYXZlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYW5kIHRpbWUgc3RhbXAuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtUaGVvZG9yZSBUcydvIHR5dHNvQG1pdC5lZHUgKG1haW50YWluZXIpXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmluIGIvZG9jL01ha2VmaWxlLmluCi1pbmRleCA5Y2I1ODRjLi4wYmVlNGU0IDEwMDY0NAotLS0tIGEvZG9jL01ha2VmaWxlLmluCi0rKysgYi9kb2MvTWFrZWZpbGUuaW4KLUBAIC0yOCw3ICsyOCw3IEBAIGluc3RhbGwtZG9jLWxpYnM6IGxpYmV4dDJmcy5pbmZvIGxpYmV4dDJmcy5kdmkKLSAJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQoaW5mb2RpcikvJCRpIDsgXAotIAlkb25lCi0gCSQoRSkgIglHWklQICQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qIgotLQktJChRKSBnemlwIC05ICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgotKwktJChRKSBnemlwIC05IC1uICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgotIAotIHVuaW5zdGFsbC1kb2MtbGliczoKLSAJJChSTSkgLXJmICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDdjMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1yZXF1aXJlIGUyZnNwcm9ncy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtZG9jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtcmVuYW1lLWNvcHlfZmlsZV9yYW5nZS10by1jb3B5X2ZpbGVfY2h1bmsucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIgotCi1TUkNSRVYgPSAiMmExM2M4NGI1MTNhYTA5NGQxY2RhNzI3ZTkyZDM1YTg5ZGQ3NzdkYSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbGlidXVpZCAtLWRpc2FibGUtdXVpZGQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJibGtpZCAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIgotCi1FWFRSQV9PRUNPTkZfZGFyd2luID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gLS1lbmFibGUtYnNkLXNobGlicyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZnVzZV0gPSAnLS1lbmFibGUtZnVzZTJmcywtLWRpc2FibGUtZnVzZTJmcyxmdXNlJwotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWxpYnMKLQkjIFdlIHVzZSBibGtpZCBmcm9tIHV0aWwtbGludXggbm93IHNvIHJlbW92ZSBmcm9tIGhlcmUKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliYmxraWQqCi0Jcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYwotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vYmxraWQKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZzY2sKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZpbmRmcwotCi0JIyBlMmluaXRyZF9oZWxwZXIgYW5kIHRoZSBwa2djb25maWcgZmlsZXMgYmVsb25nIGluIGxpYmRpcgotCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLQkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgZXh0MmZzL2V4dDJfdHlwZXMuaAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JbXYgJHtEfSR7YmluZGlyfS9jaGF0dHIgJHtEfSR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MKLQotCWluc3RhbGwgLXYgLW0gNzU1ICR7U30vY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCAke0R9JHtiYXNlX3NiaW5kaXJ9LwotCi0JIyBDbGVhbiBob3N0IHBhdGggKGJ1aWxkIGRpcmVjdG9yeSkgaW4gY29tcGlsZV9ldCwgbWtfY21kcwotCXNlZCAtaSAtZSAicyxcKEVUX0RJUj0uKlwpJHtTfS9saWIvZXRcKC4qXCksXDEke2RhdGFkaXJ9L2V0XDIsZyIgJHtEfSR7YmluZGlyfS9jb21waWxlX2V0Ci0Jc2VkIC1pIC1lICJzLFwoU1NfRElSPS4qXCkke1N9L2xpYi9zc1woLipcKSxcMSR7ZGF0YWRpcn0vc3NcMixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKLX0KLQotIyBOZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IG1rZTJmcy5jb25mIGZpbGUKLWUyZnNwcm9nc19jb25mX2ZpeHVwICgpIHsKLQlmb3IgaSBpbiBta2UyZnMgbWtmcy5leHQyIG1rZnMuZXh0MyBta2ZzLmV4dDQ7IGRvCi0JCWNyZWF0ZV93cmFwcGVyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGkgTUtFMkZTX0NPTkZJRz0ke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mCi0JZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JZTJmc3Byb2dzX2NvbmZfZml4dXAKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLVJERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgotUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKLQotUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCi1QQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCi0KLUZJTEVTX2UyZnNwcm9ncy1yZXNpemUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3Jlc2l6ZTJmcyoiCi1GSUxFU19lMmZzcHJvZ3MtZTJmc2NrID0gIiR7YmFzZV9zYmluZGlyfS9lMmZzY2sgJHtiYXNlX3NiaW5kaXJ9L2ZzY2suZXh0KiIKLUZJTEVTX2UyZnNwcm9ncy1ta2UyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZTJmcyAke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQqICR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYiCi1GSUxFU19lMmZzcHJvZ3MtdHVuZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke2Jhc2Vfc2JpbmRpcn0vZTJsYWJlbCIKLUZJTEVTX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiJHtiYXNlX3NiaW5kaXJ9L2JhZGJsb2NrcyIKLUZJTEVTX2xpYmNvbWVyciA9ICIke2Jhc2VfbGliZGlyfS9saWJjb21fZXJyLnNvLioiCi1GSUxFU19saWJzcyA9ICIke2Jhc2VfbGliZGlyfS9saWJzcy5zby4qIgotRklMRVNfbGliZTJwID0gIiR7YmFzZV9saWJkaXJ9L2xpYmUycC5zby4qIgotRklMRVNfbGliZXh0MmZzID0gIiR7bGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtiYXNlX2xpYmRpcn0vbGliZXh0MmZzLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vKi8qLmF3ayAke2RhdGFkaXJ9LyovKi5zZWQgJHtiYXNlX2xpYmRpcn0vKi5zbyAke2JpbmRpcn0vY29tcGlsZV9ldCAke2JpbmRpcn0vbWtfY21kcyIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiY2hhdHRyIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyIgotQUxURVJOQVRJVkVfVEFSR0VUW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncyIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImZzY2suOCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmc2NrLjhdID0gIiR7bWFuZGlyfS9tYW44L2ZzY2suOCIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59ICR7UE59LXR1bmUyZnMgY29yZXV0aWxzIHByb2NwcyBiYXNoIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0Jc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shZTJmc2NrIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCi0KLQkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAotCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCi0JICAgIC1leGVjICBybSAtZiB7fSArCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmFiYjNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuOC5iYgpAQCAtMCwwICsxLDEyMCBAQAorcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKKyIKKworU1JDUkVWID0gImFmMmVhYzQ4MWNmNDI2YzA1YWUxMmI5NDYzOTY5ODBlMTZjOGFiMTkiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKKworRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKKworIyBtYWtlIGxvY2FsZSBydWxlcyBzb21ldGltZXMgZmlyZSwgc29tZXRpbWVzIGRvbid0IGFzIGdpdCBkb2Vzbid0IHByZXNlcnZlCisjIGZpbGUgbWt0aW1lLiBUb3VjaCB0aGUgZmlsZXMgaW50cm9kdWNpbmcgbm9uLWRldGVybWluaXNtIHRvIHRoZSBidWlsZAorZG9fY29tcGlsZV9wcmVwZW5kICgpeworCWZpbmQgJHtTfS9wbyAtdHlwZSBmIC1uYW1lICIqLnBvIiAtZXhlYyB0b3VjaCB7fSArCit9CisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCisJIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgorCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKKworCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCisKKwlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KKworCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKKwlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAorCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCit9CisKKyMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCitlMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7CisJZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbworCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgorCWRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitSREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKK1JSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCisKK1BBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgorCitGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgorRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCitGSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgorRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCitGSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCitGSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgorRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKK0ZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKK0ZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyBcCisJICAgIC1lICdzIS4uL21pc2MvdHVuZTJmcyF0dW5lMmZzIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCisJc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Lyovc2NyaXB0CisKKwkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAorCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisJICAgIC1leGVjICBybSAtZiB7fSArCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgppbmRleCAzYjgxZTI4Li4xNGFjMjJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIKQEAgLTUsNDAgKzUsMzEgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgogREVQRU5EUyA9ICJsaWJ0b29sIGJ6aXAyIHpsaWIgdmlydHVhbC9saWJpbnRsIgogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUgZnRzICIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9mdHAvJHtQVn0vJHtCUH0udGFyLmJ6MiIKKyMgVGhlIERlYmlhbiBwYXRjaGVzIGJlbG93IGFyZSBmcm9tOgorIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LTAuMi5kZWJpYW4udGFyLnh6CitTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2giCiBTUkNfVVJJW21kNXN1bV0gPSAiMDM1OTlhZWU5OGM5YjcyNmM3YTczMmEyZGQwMjQ1ZDUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWY4NDQ3NzU1NzZiNzliZGM5ZjljNzE3YTUwMDU4ZDA4NjIwMzIzYzFlOTM1NDU4MjIzYTEyZjI0OWM5ZTA2NiIKIAotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2giCi0KLSMgUGljayBwYXRjaGVzIGZyb20gZGViaWFuCi0jIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjgtMC4yLmRlYmlhbi50YXIueHoKLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAotIgotIyBGaXggdGhlIHBhdGNoZXMgZnJvbSBEZWJpYW4gd2l0aCBHQ0M3Ci1TUkNfVVJJICs9ICJmaWxlOi8vZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoIgotCi0jIFRoZSBidWlsZHN5c3RlbSB3YW50cyB0byBnZW5lcmF0ZSAyIC5oIGZpbGVzIGZyb20gc291cmNlIHVzaW5nIGEgYmluYXJ5IGl0IGp1c3QgYnVpbHQsCi0jIHdoaWNoIGNhbiBub3QgcGFzcyB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyBsZXQncyB3b3JrIGFyb3VuZCBpdCBieSBhZGRpbmcgMiAuaCBmaWxlcwotIyBhbG9uZyB3aXRoIHRoZSBkb19jb25maWd1cmVfcHJlcGVuZCgpCi0KIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKIAogRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtRW5zdXJlLXRoYXQtcGFja2VkLXN0cnVjdHMtZm9sbG93LXRoZS1nY2MtbWVtb3J5LWxheS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjRkMWRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA3MzI5MTNhOGMzNWM3YjI1YzBjYmY2OTAzY2FiMWFkNmI2MDJiNTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMjI6NDQ6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRW5zdXJlIHRoYXQgcGFja2VkIHN0cnVjdHMgZm9sbG93IHRoZSBnY2MgbWVtb3J5IGxheW91dAorCitQYXJ0aWFsIGJhY2twb3J0IG9mCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD0xN2Q3MTk0ZDI5MWJmOTFkMTMwYjc4ZTA2Y2JlMjdiMjkwZTAzNzZkCisKK0hlbHBzIGZpeGluZyBhbGlnbm1lbnQgZXJyb3JzIGUuZy4KK2xpbnV4LWNvcmUtbm90ZS5jOjExNjoxOiBlcnJvcjogYWxpZ25tZW50IDIgb2YgJ3N0cnVjdCBtNjhrX3Byc3RhdHVzCisnIGlzIGxlc3MgdGhhbiA0IFstV2Vycm9yPXBhY2tlZC1ub3QtYWxpZ25lZF0KKyA7CisgXgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD0xN2Q3MTk0ZDI5MWJmOTFkMTMwYjc4ZTA2Y2JlMjdiMjkwZTAzNzZkXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCitpbmRleCA1ZjA2Yzg5Ni4uOWZhYWU0YzMgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworKysrIGIvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKK0BAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IEVCTEhPT0socHJzdGF0dXMpCisgICBGSUVMRCAoSU5ULCBwcl9mcHZhbGlkKTsKKyB9CisgI2lmZGVmIEFMSUdOX1BSU1RBVFVTCistICBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVkIChBTElHTl9QUlNUQVRVUykpKQorKyAgYXR0cmlidXRlX3BhY2tlZCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoQUxJR05fUFJTVEFUVVMpKSkKKyAjZW5kaWYKKyA7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1Vc2UtZmFsbHRocm91Z2gtYXR0cmlidXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMjE1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDc5MSBAQAorRnJvbSA1Y2I4ODNmNjdkMDBhNjM1MzFlZjE5NWMyNDI3NjNkMzZiMTkwNWNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+CitEYXRlOiBGcmksIDkgRmViIDIwMTggMTI6NDY6MzggLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZQorCitVc2UgX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSkgdG8gaW5kaWNhdGUgc3dpdGNoIGNhc2UgZmFsbCB0aHJvdWdoCitpbnN0ZWFkIG9mIGEgY29tbWVudC4gVGhpcyBlbnN1cmUgdGhhdCB0aGUgZmFsbHRocm91Z2ggd2FybmluZyBpcyBub3QKK3RyaWdnZXJlZCBldmVuIGlmIHRoZSBmaWxlIGlzIHByZS1wcm9jZXNzZWQgKGhlbmNlIHN0cmlwcGluZyB0aGUKK2NvbW1lbnRzKSBiZWZvcmUgaXQgaXMgY29tcGlsZWQuCisKK1RoZSBhY3R1YWwgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgaGlkZGVuIGJlaGluZCBhIEZBTExCQUNLIG1hY3JvIGluCitjYXNlIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgaXQuCisKK0ZpbmFsbHksIHRoZSAtV2ltcGxpY3QtZmFsbHRocm91Z2ggd2FybmluZyB3YXMgdXBncmFkZWQgdG8gb25seSBhbGxvdwordGhlIGF0dHJpYnV0ZSB0byBzYXRpc2Z5IGl0OyBhIGNvbW1lbnQgYWxvbmUgaXMgbm8gbG9uZ2VyIHN1ZmZpY2llbnQuCisKK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCisKK1sxXSBodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2VsZnV0aWxzLWRldmVsLzIwMTgtcTEvbXNnMDAwMjcuaHRtbAorLS0tCisgYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYyAgICB8IDIgKy0KKyBiYWNrZW5kcy9hbHBoYV9yZXR2YWwuYyAgICAgIHwgNCArKy0tCisgYmFja2VuZHMvYXJtX3JlZ3MuYyAgICAgICAgICB8IDIgKy0KKyBiYWNrZW5kcy9hcm1fcmV0dmFsLmMgICAgICAgIHwgMiArLQorIGJhY2tlbmRzL2kzODZfcmVncy5jICAgICAgICAgfCAyICstCisgYmFja2VuZHMvaTM4Nl9yZXR2YWwuYyAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL2lhNjRfcmV0dmFsLmMgICAgICAgfCAyICstCisgYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgICB8IDIgKy0KKyBiYWNrZW5kcy9tNjhrX3JldHZhbC5jICAgICAgIHwgNCArKy0tCisgYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgICAgfCA1ICsrKy0tCisgYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMgICAgICB8IDYgKysrLS0tCisgYmFja2VuZHMvcHBjX3JlZ3MuYyAgICAgICAgICB8IDIgKy0KKyBiYWNrZW5kcy9wcGNfcmV0dmFsLmMgICAgICAgIHwgNCArKy0tCisgYmFja2VuZHMvczM5MF9yZXR2YWwuYyAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL3NoX3JldHZhbC5jICAgICAgICAgfCAyICstCisgYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMgICAgICB8IDIgKy0KKyBiYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMgICAgIHwgNCArKy0tCisgYmFja2VuZHMveDg2XzY0X3JlZ3MuYyAgICAgICB8IDIgKy0KKyBiYWNrZW5kcy94ODZfNjRfcmV0dmFsLmMgICAgIHwgMiArLQorIGNvbmZpZy9ldS5hbSAgICAgICAgICAgICAgICAgfCA0ICsrKy0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgNiArKysrKysKKyBsaWIvZXUtY29uZmlnLmggICAgICAgICAgICAgIHwgNyArKysrKysrCisgbGliY3B1L2kzODZfZGlzYXNtLmMgICAgICAgICB8IDIgKy0KKyBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgIHwgNCArKy0tCisgbGliZHcvY2ZpLmMgICAgICAgICAgICAgICAgICB8IDQgKystLQorIGxpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMgfCAyICstCisgbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYyAgICB8IDIgKy0KKyBsaWJkd2ZsL2ZyYW1lX3Vud2luZC5jICAgICAgIHwgMiArLQorIGxpYmVibC9lYmxvYmpub3RlLmMgICAgICAgICAgfCAyICstCisgbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyAgICB8IDIgKy0KKyBsaWJlbGYvZWxmX2JlZ2luLmMgICAgICAgICAgIHwgNCArKy0tCisgbGliZWxmL2VsZl9jbnRsLmMgICAgICAgICAgICB8IDIgKy0KKyBzcmMvYWRkcjJsaW5lLmMgICAgICAgICAgICAgIHwgMiArLQorIHNyYy9lbGZjb21wcmVzcy5jICAgICAgICAgICAgfCAyICstCisgc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICB8IDggKysrKy0tLS0KKyBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCisgc3JjL3N0cmluZ3MuYyAgICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL2VsZnN0cm1lcmdlLmMgICAgICAgICAgfCAzICsrLQorIDQxIGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMKK2luZGV4IDY4ZGUzMDcuLjEzMDgzNDAgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCitAQCAtMjkyLDcgKzI5Miw3IEBAIGFhcmNoNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgYXNzZXJ0IChjb3VudCA+IDApOworIAkgIGlmIChjb3VudCA8PSA0KQorIAkgICAgcmV0dXJuIHBhc3NfaGZhIChsb2NwLCBiYXNlX3NpemUsIGNvdW50KTsKKy0JICAvKiBGYWxsIHRocm91Z2guICAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAljYXNlIDE6CisgCSAgLyogTm90IGEgSEZBLiAgKi8KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCitpbmRleCA1M2RiZmE0Li5kOWJhZTNiIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCitAQCAtODUsNyArODUsNyBAQCBhbHBoYV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xMzEsNyArMTMxLDcgQEAgYWxwaGFfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgfQorICAgICAgIH0KKyAKKy0gICAgICAvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZWdzLmMgYi9iYWNrZW5kcy9hcm1fcmVncy5jCitpbmRleCA0ZWUxMDM5Li40MThjOTMxIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYXJtX3JlZ3MuYworKysrIGIvYmFja2VuZHMvYXJtX3JlZ3MuYworQEAgLTgxLDcgKzgxLDcgQEAgYXJtX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgICAgICAgKiBidXQgZ2NjIG1hcHMgRlBBIHJlZ2lzdGVycyBoZXJlCisgICAgICAgICovCisgICAgICAgcmVnbm8gKz0gOTYgLSAxNjsKKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIDk2ICsgMCAuLi4gOTYgKyA3OgorICAgICAgICpzZXRuYW1lID0gIkZQQSI7CisgICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYXJtX3JldHZhbC5jIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCitpbmRleCA4Njg3ZWFiLi4zMTNlNGViIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYXJtX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKK0BAIC05MCw3ICs5MCw3IEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvaTM4Nl9yZWdzLmMgYi9iYWNrZW5kcy9pMzg2X3JlZ3MuYworaW5kZXggZmQ5NjNhNi4uN2VjOTNiYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2kzODZfcmVncy5jCisrKysgYi9iYWNrZW5kcy9pMzg2X3JlZ3MuYworQEAgLTkyLDcgKzkyLDcgQEAgaTM4Nl9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgIGNhc2UgNToKKyAgICAgY2FzZSA4OgorICAgICAgICp0eXBlID0gRFdfQVRFX2FkZHJlc3M7CistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSAwIC4uLiAzOgorICAgICBjYXNlIDYgLi4uIDc6CisgICAgICAgbmFtZVswXSA9ICdlJzsKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9pMzg2X3JldHZhbC5jIGIvYmFja2VuZHMvaTM4Nl9yZXR2YWwuYworaW5kZXggNGFhNjQ2Zi4uMzJmZWM3MiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKK0BAIC04NSw3ICs4NSw3IEBAIGkzODZfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTIzLDcgKzEyMyw3IEBAIGkzODZfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCWlmIChzaXplIDw9IDgpCisgCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKyAgICAgICB9CistICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9pYTY0X3JldHZhbC5jIGIvYmFja2VuZHMvaWE2NF9yZXR2YWwuYworaW5kZXggZGNkNWYyOC4uMDNlYTRkOCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKK0BAIC0yNjAsNyArMjYwLDcgQEAgaWE2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCitpbmRleCA2NzYzOGQ3Li41ZjA2Yzg5IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKKysrKyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCitAQCAtMjI2LDcgKzIyNiw3IEBAIEVCTEhPT0soY29yZV9ub3RlKSAoY29uc3QgR0VsZl9OaGRyICpuaGRyLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgIGlmIChtZW1jbXAgKG5hbWUsICJDT1JFIiwgbmhkci0+bl9uYW1lc3opID09IDApCisgCWJyZWFrOworICAgICAgIC8qIEJ1Z2d5IG9sZCBMaW51eCBrZXJuZWxzIGRpZG4ndCB0ZXJtaW5hdGUgIkxJTlVYIi4gICovCistICAgICAgLyogRmFsbCB0aHJvdWdoLiAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIHNpemVvZiAiTElOVVgiOgorICAgICAgIGlmIChtZW1jbXAgKG5hbWUsICJMSU5VWCIsIG5oZHItPm5fbmFtZXN6KSA9PSAwKQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL202OGtfcmV0dmFsLmMgYi9iYWNrZW5kcy9tNjhrX3JldHZhbC5jCitpbmRleCBjNjhlZDAyLi5hNjUzYmEzIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvbTY4a19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvbTY4a19yZXR2YWwuYworQEAgLTkyLDcgKzkyLDcgQEAgbTY4a19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xMzUsNyArMTM1LDcgQEAgbTY4a19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJaWYgKHNpemUgPD0gOCkKKyAJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOworICAgICAgIH0KKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworaW5kZXggNTc0ODdiYi4uYzZlMWZmZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK0BAIC0zMDYsNyArMzA2LDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTM4OSw3ICszODksNyBAQCBtaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAvKiBGYWxsdGhyb3VnaCB0byBoYW5kbGUgbGFyZ2UgdHlwZXMgKi8KKysgICAgICBGQUxMVEhST1VHSDsgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCisgCisgICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6CisgICAgIGxhcmdlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworaW5kZXggZGY3ZWMzYS4uMWYxZTkxYSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCitAQCAtMTE2LDcgKzExNiw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xNjcsNiArMTY3LDcgQEAgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwgaW4KKyAKKyAJLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworICAgICAgIH0KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitAQCAtMTg5LDcgKzE5MCw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCisgICAgICAgICAqbG9jcCA9IGxvY19hZ2dyZWdhdGU7CisgICAgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7CisgI2VuZGlmCistCS8qIGZhbGwgdGhyb3VnaC4gICovCisrCUZBTExUSFJPVUdIOworICAgICAgIH0KKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jIGIvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKK2luZGV4IGEyNTE5ODMuLmViMWMxMWUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wcGM2NF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKK0BAIC05Niw3ICs5Niw3IEBAIHBwYzY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTE0MSw3ICsxNDEsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICByZXR1cm4gbmxvY19pbnRyZWc7CisgCX0KKyAKKy0gICAgICAvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorICAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgorQEAgLTE2MSw3ICsxNjEsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICAgIHJldHVybiBubG9jX3ZteHJlZzsKKyAJICB9CisgICAgICAgfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX3N0cmluZ190eXBlOgorICAgICAgIGlmIChkd2FyZl9hZ2dyZWdhdGVfc2l6ZSAodHlwZWRpZSwgJnNpemUpID09IDAgJiYgc2l6ZSA8PSA4KQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19yZWdzLmMgYi9iYWNrZW5kcy9wcGNfcmVncy5jCitpbmRleCBjMmQ1MDExLi40M2QyNTM0IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvcHBjX3JlZ3MuYworKysrIGIvYmFja2VuZHMvcHBjX3JlZ3MuYworQEAgLTE0MCw3ICsxNDAsNyBAQCBwcGNfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICBjYXNlIDEwMDoKKyAgICAgICBpZiAoKmJpdHMgPT0gMzIpCisgCXJldHVybiBzdHBjcHkgKG5hbWUsICJtcSIpICsgMSAtIG5hbWU7CistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSAxMDIgLi4uIDEwNzoKKyAgICAgICBuYW1lWzBdID0gJ3MnOworICAgICAgIG5hbWVbMV0gPSAncCc7CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvcHBjX3JldHZhbC5jIGIvYmFja2VuZHMvcHBjX3JldHZhbC5jCitpbmRleCBiMTRhOTlmLi4zOWI0MmRhIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvcHBjX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9wcGNfcmV0dmFsLmMKK0BAIC0xMDgsNyArMTA4LDcgQEAgcHBjX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTE3Miw3ICsxNzIsNyBAQCBwcGNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgICAgIHJldHVybiBubG9jX2ludHJlZ3F1YWQ7CisgCSAgICB9CisgICAgICAgfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMgYi9iYWNrZW5kcy9zMzkwX3JldHZhbC5jCitpbmRleCBhOTI3ZDQ2Li4yMDQzZjk4IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvczM5MF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvczM5MF9yZXR2YWwuYworQEAgLTg3LDcgKzg3LDcgQEAgczM5MF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xMjcsNyArMTI3LDcgQEAgczM5MF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICAgIHJldHVybiBzaXplIDw9IGFzaXplID8gbmxvY19pbnRyZWcgOiBubG9jX2ludHJlZ3BhaXI7CisgCSAgfQorICAgICAgIH0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9zaF9yZXR2YWwuYyBiL2JhY2tlbmRzL3NoX3JldHZhbC5jCitpbmRleCBkNDRmMjYwLi4zM2Q3ZDk2IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvc2hfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3NoX3JldHZhbC5jCitAQCAtODQsNyArODQsNyBAQCBzaF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYyBiL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCitpbmRleCBlMWIxNzc1Li5mYjgxY2RjIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCitAQCAtOTEsNyArOTEsNyBAQCBzcGFyY19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMgYi9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKK2luZGV4IGRiODFhMjAuLjdmN2QyNGIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3RpbGVneF9yZXR2YWwuYworQEAgLTc5LDcgKzc5LDcgQEAgdGlsZWd4X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTExMyw3ICsxMTMsNyBAQCB0aWxlZ3hfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgcmV0dXJuIG5sb2NfaW50cmVnOworIAl9CisgCistICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy94ODZfNjRfcmVncy5jIGIvYmFja2VuZHMveDg2XzY0X3JlZ3MuYworaW5kZXggODQzMDQ0MC4uZWY5ODdkYSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKKysrKyBiL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKK0BAIC04Nyw3ICs4Nyw3IEBAIHg4Nl82NF9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCisgICAgIGNhc2UgNiAuLi4gNzoKKyAgICAgICAqdHlwZSA9IERXX0FURV9hZGRyZXNzOworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgMCAuLi4gNToKKyAgICAgICBuYW1lWzBdID0gJ3InOworICAgICAgIG5hbWVbMV0gPSBiYXNlcmVnc1tyZWdub11bMF07CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jIGIvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCitpbmRleCBiMzc5OWFlLi5mOTExNGNiIDEwMDY0NAorLS0tIGEvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy94ODZfNjRfcmV0dmFsLmMKK0BAIC0xMDAsNyArMTAwLDcgQEAgeDg2XzY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorZGlmZiAtLWdpdCBhL2NvbmZpZy9ldS5hbSBiL2NvbmZpZy9ldS5hbQoraW5kZXggOGZlMWUyNS4uYjZlYzU4MSAxMDA2NDQKKy0tLSBhL2NvbmZpZy9ldS5hbQorKysrIGIvY29uZmlnL2V1LmFtCitAQCAtNjIsNyArNjIsOSBAQCBOVUxMX0RFUkVGRVJFTkNFX1dBUk5JTkc9CisgZW5kaWYKKyAKKyBpZiBIQVZFX0lNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkcKKy1JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HPS1XaW1wbGljaXQtZmFsbHRocm91Z2gKKysjIFVzZSBzdHJpY3QgZmFsbHRocm91Z2guIE9ubHkgX19hdHRyaWJ1dGVfXygoZmFsbHRocm91Z2gpKSB3aWxsIHByZXZlbnQgdGhlCisrIyB3YXJuaW5nCisrSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0tV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTUKKyBlbHNlCisgSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0KKyBlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMWYxODU2ZC4uNjk4ZWZiYiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzYwLDYgKzM2MCwxMiBAQCBDRkxBR1M9IiRvbGRfQ0ZMQUdTIl0pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HLAorIAkgICAgICAgW3Rlc3QgIngkYWNfY3ZfaW1wbGljaXRfZmFsbHRocm91Z2giICE9ICJ4bm8iXSkKKyAKKysjIEFzc3VtZSB0aGUgZmFsbHRocm91Z2ggYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBpZiAtV2ltcGxpY3QtZmFsbHRocm91Z2ggaXMgc3VwcG9ydGVkCisraWYgdGVzdCAiJGFjX2N2X2ltcGxpY2l0X2ZhbGx0aHJvdWdoIiA9ICJ5ZXMiOyB0aGVuCisrCUFDX0RFRklORShbSEFWRV9GQUxMVEhST1VHSF0sIFsxXSwKKysJCSAgW0RlZmluZWQgaWYgX19hdHRyaWJ1dGVfXygoZmFsbHRocm91Z2gpKSBpcyBzdXBwb3J0ZWRdKQorK2ZpCisrCisgZG5sIENoZWNrIGlmIHdlIGhhdmUgYXJncCBhdmFpbGFibGUgZnJvbSBvdXIgbGliYworIEFDX0xJTktfSUZFTFNFKAorIAlbQUNfTEFOR19QUk9HUkFNKAorZGlmZiAtLWdpdCBhL2xpYi9ldS1jb25maWcuaCBiL2xpYi9ldS1jb25maWcuaAoraW5kZXggNDAwY2RjNi4uZThkNGVjMiAxMDA2NDQKKy0tLSBhL2xpYi9ldS1jb25maWcuaAorKysrIGIvbGliL2V1LWNvbmZpZy5oCitAQCAtMTg2LDUgKzE4NiwxMiBAQCBhc20gKCIuc2VjdGlvbiBwcmVkaWN0X2RhdGEsIFwiYXdcIjsgLnByZXZpb3VzXG4iCisgIyBkZWZpbmUgQ09NUEFUX1ZFUlNJT04obmFtZSwgdmVyc2lvbiwgcHJlZml4KSBlcnJvciAic2hvdWxkIHVzZSAjaWZkZWYgU1lNQk9MX1ZFUlNJT05JTkciCisgI2VuZGlmCisgCisrI2lmbmRlZiBGQUxMVEhST1VHSAorKyMgaWZkZWYgSEFWRV9GQUxMVEhST1VHSAorKyMgIGRlZmluZSBGQUxMVEhST1VHSCBfX2F0dHJpYnV0ZV9fICgoZmFsbHRocm91Z2gpKQorKyMgZWxzZQorKyMgIGRlZmluZSBGQUxMVEhST1VHSCAoKHZvaWQpIDApCisrIyBlbmRpZgorKyNlbmRpZgorIAorICNlbmRpZgkvKiBldS1jb25maWcuaCAqLworZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK2luZGV4IDYwZmQ2ZDQuLjgzN2EzYTggMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYworKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK0BAIC04MTksNyArODE5LDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorIAkJCSAgICAgICsrcGFyYW1fc3RhcnQ7CisgCQkJICAgICAgYnJlYWs7CisgCQkJICAgIH0KKy0JCQkgIC8qIEZhbGx0aHJvdWdoICovCisrCQkJICBGQUxMVEhST1VHSDsKKyAJCQlkZWZhdWx0OgorIAkJCSAgc3RyID0gIiI7CisgCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKK2RpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9wYXJzZS5jIGIvbGliY3B1L2kzODZfcGFyc2UuYworaW5kZXggZWYxYWMzNS4uNmZhN2NlMyAxMDA2NDQKKy0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKKysrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKK0BAIC0xMDQ3LDcgKzEwNDcsNyBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0cikKKyAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKyAgICAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKy0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIGlmICh5eXJlcykKKyAgICAgICAgICAgICAgIHl5cmVzW3l5bl0gPSAqeXlwOworQEAgLTIwNDIsNyArMjA0Miw3IEBAIHl5YWJvcnRsYWI6CisgeXlleGhhdXN0ZWRsYWI6CisgICB5eWVycm9yIChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CisgICB5eXJlc3VsdCA9IDI7CistICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgRkFMTFRIUk9VR0g7CisgI2VuZGlmCisgCisgeXlyZXR1cm46CitkaWZmIC0tZ2l0IGEvbGliZHcvY2ZpLmMgYi9saWJkdy9jZmkuYworaW5kZXggZGFhODQ1Zi4uMzQxZTA1NSAxMDA2NDQKKy0tLSBhL2xpYmR3L2NmaS5jCisrKysgYi9saWJkdy9jZmkuYworQEAgLTEzOCw3ICsxMzgsNyBAQCBleGVjdXRlX2NmaSAoRHdhcmZfQ0ZJICpjYWNoZSwKKyAKKyAJY2FzZSBEV19DRkFfYWR2YW5jZV9sb2MxOgorIAkgIG9wZXJhbmQgPSAqcHJvZ3JhbSsrOworLQkgIC8qIEZhbGx0aHJvdWdoICovCisrCSAgRkFMTFRIUk9VR0g7CisgCWNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jICsgMCAuLi4gRFdfQ0ZBX2FkdmFuY2VfbG9jICsgQ0ZJX1BSSU1BUllfTUFYOgorIAlhZHZhbmNlX2xvYzoKKyAJICBsb2MgKz0gb3BlcmFuZCAqIGNpZS0+Y29kZV9hbGlnbm1lbnRfZmFjdG9yOworQEAgLTMwMSw3ICszMDEsNyBAQCBleGVjdXRlX2NmaSAoRHdhcmZfQ0ZJICpjYWNoZSwKKyAKKyAJY2FzZSBEV19DRkFfcmVzdG9yZV9leHRlbmRlZDoKKyAJICBnZXRfdWxlYjEyOCAob3BlcmFuZCwgcHJvZ3JhbSwgZW5kKTsKKy0JICAvKiBGYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIERXX0NGQV9yZXN0b3JlICsgMCAuLi4gRFdfQ0ZBX3Jlc3RvcmUgKyBDRklfUFJJTUFSWV9NQVg6CisgCisgCSAgaWYgKHVubGlrZWx5IChhYmlfY2ZpKSAmJiBsaWtlbHkgKG9wY29kZSA9PSBEV19DRkFfcmVzdG9yZSkpCitkaWZmIC0tZ2l0IGEvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYyBiL2xpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMKK2luZGV4IDM3ZThlOTEuLmQwMTU5ZmIgMTAwNjQ0CistLS0gYS9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCisrKysgYi9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCitAQCAtNjIsNyArNjIsNyBAQCBkd2FyZl9mcmFtZV9yZWdpc3RlciAoRHdhcmZfRnJhbWUgKmZzLCBpbnQgcmVnbm8sIER3YXJmX09wICpvcHNfbWVtLAorICAgICAgIC8qIFVzZSB0aGUgZGVmYXVsdCBydWxlIGZvciByZWdpc3RlcnMgbm90IHlldCBtZW50aW9uZWQgaW4gQ0ZJLiAgKi8KKyAgICAgICBpZiAoZnMtPmNhY2hlLT5kZWZhdWx0X3NhbWVfdmFsdWUpCisgCWdvdG8gc2FtZV92YWx1ZTsKKy0gICAgICAvKkZBTExUSFJPVUdIKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSByZWdfdW5kZWZpbmVkOgorICAgICAgIC8qIFRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSB1bmF2YWlsYWJsZS4gICovCisgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMKK2luZGV4IDY5NTBhMzcuLjNmYzkzODQgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCisrKysgYi9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCitAQCAtMTc0LDcgKzE3NCw3IEBAIF9fbGliZHdmbF9lbGZfYWRkcmVzc19yYW5nZSAoRWxmICplbGYsIEdFbGZfQWRkciBiYXNlLCBib29sIGFkZF9wX3ZhZGRyLAorICAgICAgIC8qIEFuIGFzc2lnbmVkIGJhc2UgYWRkcmVzcyBpcyBtZWFuaW5nbGVzcyBmb3IgdGhlc2UuICAqLworICAgICAgIGJhc2UgPSAwOworICAgICAgIGFkZF9wX3ZhZGRyID0gdHJ1ZTsKKy0gICAgICAvKiBGYWxsdGhyb3VnaC4gKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSBFVF9EWU46CisgICAgIGRlZmF1bHQ6OworICAgICAgIHNpemVfdCBwaG51bTsKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jIGIvbGliZHdmbC9mcmFtZV91bndpbmQuYworaW5kZXggNGRjOWM0My4uZWFlYTQ5NSAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKKysrKyBiL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKK0BAIC00NDIsNyArNDQyLDcgQEAgZXhwcl9ldmFsIChEd2ZsX0ZyYW1lICpzdGF0ZSwgRHdhcmZfRnJhbWUgKmZyYW1lLCBjb25zdCBEd2FyZl9PcCAqb3BzLAorIAkgICAgfQorIAkgIGlmICh2YWwxID09IDApCisgCSAgICBicmVhazsKKy0JICAvKiBGQUxMVEhSVSAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIERXX09QX3NraXA6OworIAkgIER3YXJmX1dvcmQgb2Zmc2V0ID0gb3AtPm9mZnNldCArIDEgKyAyICsgKGludDE2X3QpIG9wLT5udW1iZXI7CisgCSAgY29uc3QgRHdhcmZfT3AgKmZvdW5kID0gYnNlYXJjaCAoKHZvaWQgKikgKHVpbnRwdHJfdCkgb2Zmc2V0LCBvcHMsIG5vcHMsCitkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9iam5vdGUuYyBiL2xpYmVibC9lYmxvYmpub3RlLmMKK2luZGV4IGY4MGExYTUuLmNhNGYxNTUgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb2Jqbm90ZS5jCisrKysgYi9saWJlYmwvZWJsb2Jqbm90ZS5jCitAQCAtMjIzLDcgKzIyMyw3IEBAIGVibF9vYmplY3Rfbm90ZSAoRWJsICplYmwsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHR5cGUsCisgCQlmcmVlIChidWYpOworIAkgICAgICBicmVhazsKKyAJICAgIH0KKy0JICAvKiBGQUxMVEhST1VHSCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAlkZWZhdWx0OgorIAkgIC8qIFVua25vd24gdHlwZS4gICovCitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKK2luZGV4IGE1MWJmNzAuLjUzNTE1MTggMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCisrKysgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitAQCAtMjMyLDcgKzIzMiw3IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVudWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVfdCBzaG51bSkKKyAJCSAgICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9HUk9VUF9OT1RfUkVMKTsKKyAJCSAgICAgIHJldHVybiAtMTsKKyAJCSAgICB9CistCQkgIC8qIEZBTExUSFJPVUdIICovCisrCQkgIEZBTExUSFJPVUdIOworIAkJY2FzZSBTSFRfU1lNVEFCX1NITkRYOgorIAkJICBzaF9lbnRzaXplID0gZWxmX3R5cGVzaXplICgzMiwgRUxGX1RfV09SRCwgMSk7CisgCQkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfYmVnaW4uYyBiL2xpYmVsZi9lbGZfYmVnaW4uYworaW5kZXggNmY4NTAzOC4uNmRlMjA2YSAxMDA2NDQKKy0tLSBhL2xpYmVsZi9lbGZfYmVnaW4uYworKysrIGIvbGliZWxmL2VsZl9iZWdpbi5jCitAQCAtNTgyLDcgKzU4Miw3IEBAIHJlYWRfdW5tbWFwZWRfZmlsZSAoaW50IGZpbGRlcywgb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbWF4c2l6ZSwgRWxmX0NtZCBjbWQsCisgCQkJICAgICA/IHNpemVvZiAoRWxmMzJfRWhkcikgOiBzaXplb2YgKEVsZjY0X0VoZHIpKSkKKyAJcmV0dXJuIGZpbGVfcmVhZF9lbGYgKGZpbGRlcywgTlVMTCwgbWVtLmhlYWRlciwgb2Zmc2V0LCBtYXhzaXplLCBjbWQsCisgCQkJICAgICAgcGFyZW50KTsKKy0gICAgICAvKiBGQUxMVEhST1VHSCAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBkZWZhdWx0OgorICAgICAgIGJyZWFrOworQEAgLTEwOTcsNyArMTA5Nyw3IEBAIGVsZl9iZWdpbiAoaW50IGZpbGRlcywgRWxmX0NtZCBjbWQsIEVsZiAqcmVmKQorIAkgIHJldHZhbCA9IE5VTEw7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICAvKiBGQUxMVEhST1VHSCAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIEVMRl9DX1JFQUQ6CisgICAgIGNhc2UgRUxGX0NfUkVBRF9NTUFQOgorZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfY250bC5jIGIvbGliZWxmL2VsZl9jbnRsLmMKK2luZGV4IGFiMTNmZmIuLmZkNjgxNzggMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmX2NudGwuYworKysrIGIvbGliZWxmL2VsZl9jbnRsLmMKK0BAIC02Miw3ICs2Miw3IEBAIGVsZl9jbnRsIChFbGYgKmVsZiwgRWxmX0NtZCBjbWQpCisgCSAgcmVzdWx0ID0gLTE7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICAvKiBGQUxMVEhST1VHSCAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIEVMRl9DX0ZERE9ORToKKyAgICAgICAvKiBNYXJrIHRoZSBmaWxlIGRlc2NyaXB0b3IgYXMgbm90IHVzYWJsZS4gICovCitkaWZmIC0tZ2l0IGEvc3JjL2FkZHIybGluZS5jIGIvc3JjL2FkZHIybGluZS5jCitpbmRleCBiYTQxNGE3Li40NDRlZTUyIDEwMDY0NAorLS0tIGEvc3JjL2FkZHIybGluZS5jCisrKysgYi9zcmMvYWRkcjJsaW5lLmMKK0BAIC02MTgsNyArNjE4LDcgQEAgaGFuZGxlX2FkZHJlc3MgKGNvbnN0IGNoYXIgKnN0cmluZywgRHdmbCAqZHdmbCkKKyAJY2FzZSAxOgorIAkgIGFkZHIgPSAwOworIAkgIGogPSBpOworLQkgIC8qIEZhbGx0aHJvdWdoICovCisrCSAgRkFMTFRIUk9VR0g7CisgCWNhc2UgMjoKKyAJICBpZiAoc3RyaW5nW2pdICE9ICdcMCcpCisgCSAgICBicmVhazsKK2RpZmYgLS1naXQgYS9zcmMvZWxmY29tcHJlc3MuYyBiL3NyYy9lbGZjb21wcmVzcy5jCitpbmRleCA4ZTBkNWM1Li4yNTM3OGE0IDEwMDY0NAorLS0tIGEvc3JjL2VsZmNvbXByZXNzLmMKKysrKyBiL3NyYy9lbGZjb21wcmVzcy5jCitAQCAtMTQ5LDcgKzE0OSw3IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAJCSAgICBOXygiT25seSBvbmUgaW5wdXQgZmlsZSBhbGxvd2VkIHRvZ2V0aGVyIHdpdGggJy1vJyIpKTsKKyAgICAgICAvKiBXZSBvbmx5IHVzZSB0aGlzIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgd2UgZG9uJ3QKKyAJIGFjdHVhbGx5IHdhbnQgdG8gY29uc3VtZSB0aGVtLiAgKi8KKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBBUkdQX0VSUl9VTktOT1dOOworICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKK2luZGV4IDUxZTUzYzIuLmRmMWIzYTAgMTAwNjQ0CistLS0gYS9zcmMvZWxmbGludC5jCisrKysgYi9zcmMvZWxmbGludC5jCitAQCAtMTc2NCw3ICsxNzY0LDcgQEAgc2VjdGlvbiBbJTJkXSAnJXMnOiBlbnRyeSAlenU6IHBvaW50ZXIgZG9lcyBub3QgbWF0Y2ggYWRkcmVzcyBvZiBzZWN0aW9uIFslMmRdICcKKyAJICBpZiAoZHluLT5kX3RhZyA8IERUX0FERFJSTkdMTyB8fCBkeW4tPmRfdGFnID4gRFRfQUREUlJOR0hJKQorIAkgICAgLyogVmFsdWUgaXMgbm8gcG9pbnRlci4gICovCisgCSAgICBicmVhazsKKy0JICAvKiBGQUxMVEhST1VHSCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAljYXNlIERUX0FVWElMSUFSWToKKyAJY2FzZSBEVF9GSUxURVI6CitAQCAtMzk5Myw3ICszOTkzLDcgQEAgc2VjdGlvbiBbJTJ6dV0gJyVzJzogbWVyZ2UgZmxhZyBzZXQgYnV0IGVudHJ5IHNpemUgaXMgemVyb1xuIiksCisgCSAgICBjYXNlIFNIVF9OT0JJVFM6CisgCSAgICAgIGlmIChpc19kZWJ1Z2luZm8pCisgCQlicmVhazsKKy0JICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysJICAgICAgRkFMTFRIUk9VR0g7CisgCSAgICBkZWZhdWx0OgorIAkgICAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKKyBzZWN0aW9uIFslMnp1XSAnJXMnIGhhcyB1bmV4cGVjdGVkIHR5cGUgJWQgZm9yIGFuIGV4ZWN1dGFibGUgc2VjdGlvblxuIiksCitAQCAtNDEzNyw3ICs0MTM3LDcgQEAgc2VjdGlvbiBbJTJ6dV0gJyVzJzogRUxGIGhlYWRlciBzYXlzIHRoaXMgaXMgdGhlIHNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZSBidXQKKyAJICAgIEVSUk9SIChnZXR0ZXh0ICgiXAorIHNlY3Rpb24gWyUyenVdICclcyc6IHJlbG9jYXRhYmxlIGZpbGVzIGNhbm5vdCBoYXZlIGR5bmFtaWMgc3ltYm9sIHRhYmxlc1xuIiksCisgCQkgICBjbnQsIHNlY3Rpb25fbmFtZSAoZWJsLCBjbnQpKTsKKy0JICAvKiBGQUxMVEhST1VHSCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIFNIVF9TWU1UQUI6CisgCSAgY2hlY2tfc3ltdGFiIChlYmwsIGVoZHIsIHNoZHIsIGNudCk7CisgCSAgYnJlYWs7CitAQCAtNDMzNiw3ICs0MzM2LDcgQEAgc2VjdGlvbiBbJTJkXSAnJXMnOiB1bmtub3duIGNvcmUgZmlsZSBub3RlIHR5cGUgJSIgUFJJdTMyCisgCSAgICBpZiAobmhkci5uX25hbWVzeiA9PSBzaXplb2YgIkxpbnV4IgorIAkJJiYgIW1lbWNtcCAoZGF0YS0+ZF9idWYgKyBuYW1lX29mZnNldCwgIkxpbnV4Iiwgc2l6ZW9mICJMaW51eCIpKQorIAkgICAgICBicmVhazsKKy0JICAgIC8qIEZhbGx0aHJvdWdoICovCisrCSAgICBGQUxMVEhST1VHSDsKKyAJICBkZWZhdWx0OgorIAkgICAgaWYgKHNobmR4ID09IDApCisgCSAgICAgIEVSUk9SIChnZXR0ZXh0ICgiXAorZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCitpbmRleCA4NjBjZmFjLi4wZGQ5YTZhIDEwMDY0NAorLS0tIGEvc3JjL29iamR1bXAuYworKysrIGIvc3JjL29iamR1bXAuYworQEAgLTIyMyw3ICsyMjMsNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywKKyAJfQorICAgICAgIC8qIFdlIG9ubHkgdXNlIHRoaXMgZm9yIGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLCB3ZSBkb24ndAorIAkgYWN0dWFsbHkgd2FudCB0byBjb25zdW1lIHRoZW0uICAqLworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIEFSR1BfRVJSX1VOS05PV047CisgICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvcmVhZGVsZi5jIGIvc3JjL3JlYWRlbGYuYworaW5kZXggMzQ2ZWNjZC4uNmEyN2U3ZSAxMDA2NDQKKy0tLSBhL3NyYy9yZWFkZWxmLmMKKysrKyBiL3NyYy9yZWFkZWxmLmMKK0BAIC00NjUsNyArNDY1LDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCisgCSAgcHJpbnRfc3RyaW5nX3NlY3Rpb25zID0gdHJ1ZTsKKyAJICBicmVhazsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgJ3gnOgorICAgICAgIGFkZF9kdW1wX3NlY3Rpb24gKGFyZywgZmFsc2UpOworICAgICAgIGFueV9jb250cm9sX29wdGlvbiA9IHRydWU7CitAQCAtNjAyOSw3ICs2MDI5LDcgQEAgYXR0cl9jYWxsYmFjayAoRHdhcmZfQXR0cmlidXRlICphdHRycCwgdm9pZCAqYXJnKQorIAkJCWR3YXJmX2Zvcm1fbmFtZSAoZm9ybSksICh1aW50bWF4X3QpIG51bSk7CisgCSAgICAgIHJldHVybiBEV0FSRl9DQl9PSzsKKyAJICAgIH0KKy0JICAvKiBlbHNlIGZhbGx0aHJvdWdoICovCisrCSAgRkFMTFRIUk9VR0g7CisgCisgCS8qIFRoZXNlIGNhc2VzIGFsd2F5cyB0YWtlIGEgbG9jbGlzdHB0ciBhbmQgbm8gY29uc3RhbnQuICovCisgCWNhc2UgRFdfQVRfbG9jYXRpb246CitAQCAtNjE5NSw3ICs2MTk1LDcgQEAgYXR0cl9jYWxsYmFjayAoRHdhcmZfQXR0cmlidXRlICphdHRycCwgdm9pZCAqYXJnKQorIAkgICAgICBwcmludF9ibG9jayAoYmxvY2subGVuZ3RoLCBibG9jay5kYXRhKTsKKyAJICAgICAgYnJlYWs7CisgCSAgICB9CistCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJY2FzZSBEV19BVF9sb2NhdGlvbjoKKyAJY2FzZSBEV19BVF9kYXRhX2xvY2F0aW9uOgorQEAgLTkyMjcsNyArOTIyNyw3IEBAIGhhbmRsZV9hdXh2X25vdGUgKEVibCAqZWJsLCBFbGYgKmNvcmUsIEdFbGZfV29yZCBkZXNjc3osIEdFbGZfT2ZmIGRlc2NfcG9zKQorIAkJcHJpbnRmICgiICAgICVzXG4iLCBuYW1lKTsKKyAJCWJyZWFrOworIAkgICAgICB9CistCSAgICAvKiBGYWxsIHRocm91Z2ggKi8KKysJICAgIEZBTExUSFJPVUdIOworIAkgIGNhc2UgJ3gnOgkJLyogaGV4ICovCisgCSAgY2FzZSAncCc6CQkvKiBhZGRyZXNzICovCisgCSAgY2FzZSAncyc6CQkvKiBhZGRyZXNzIG9mIHN0cmluZyAqLworZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmdzLmMgYi9zcmMvc3RyaW5ncy5jCitpbmRleCBkMjE0MzU2Li4wM2QwZjEzIDEwMDY0NAorLS0tIGEvc3JjL3N0cmluZ3MuYworKysrIGIvc3JjL3N0cmluZ3MuYworQEAgLTI0Niw3ICsyNDYsNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywKKyAJY2FzZSAnYic6CisgCWNhc2UgJ0InOgorIAkgIGJpZ19lbmRpYW4gPSB0cnVlOworLQkgIC8qIEZBTExUSFJPVUdIICovCisrCSAgRkFMTFRIUk9VR0g7CisgCisgCWNhc2UgJ2wnOgorIAljYXNlICdMJzoKK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitpbmRleCAyMWFiZThhLi5mNWRkNzYxIDEwMDY0NAorLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitAQCAtMTI3LDcgKzEyNyw3IEBAIGNhbGxiYWNrX3ZlcmlmeSAocGlkX3QgdGlkLCB1bnNpZ25lZCBmcmFtZW5vLCBEd2FyZl9BZGRyIHBjLAorIAkgIGFzc2VydCAoc3ltbmFtZTIgPT0gTlVMTCB8fCBzdHJjbXAgKHN5bW5hbWUyLCAiam1wIikgIT0gMCk7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICAvKiBGQUxMVEhSVSAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIDQ6CisgICAgICAgLyogU29tZSBzaW1wbGUgZnJhbWUgdW53aW5kZXJzIGdldCB0aGlzIHdyb25nIGFuZCB0aGluayBzaWd1c3IyCisgCSBpcyBjYWxsaW5nIGl0c2VsZiBhZ2Fpbi4gQWxsb3cgaXQgYW5kIGp1c3QgcHJldGVuZCB0aGVyZSBpcworZGlmZiAtLWdpdCBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMgYi90ZXN0cy9lbGZzdHJtZXJnZS5jCitpbmRleCA4ZDViNTNjLi42MmM1NDlkIDEwMDY0NAorLS0tIGEvdGVzdHMvZWxmc3RybWVyZ2UuYworKysrIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworQEAgLTU3OCw3ICs1NzgsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSAgICAgIGJyZWFrOworIAorIAkgICAgY2FzZSBTSFRfRFlOQU1JQzoKKy0JICAgICAgLyogRmFsbHRocm91Z2guICBUaGVyZSBhcmUgc3RyaW5nIGluZGV4ZXMgaW4gaGVyZSwgYnV0CisrCSAgICAgIEZBTExUSFJPVUdIOworKwkgICAgICAvKiBUaGVyZSBhcmUgc3RyaW5nIGluZGV4ZXMgaW4gaGVyZSwgYnV0CisgCQkgdGhleSAoc2hvdWxkKSBwb2ludCB0byBhIGFsbG9jYXRlZCBzdHJpbmcgdGFibGUsCisgCQkgd2hpY2ggd2UgZG9uJ3QgYWx0ZXIuICAqLworIAkgICAgZGVmYXVsdDoKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKaW5kZXggODg2NGQ0NC4uYTQyY2U3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDAxMGIwYzU3ZTc0ODQ0MGViMWNlYjNkOTc3ODc1ZjI0ODhkMmI0Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVmMDk4MTc0NDY2OTE0OWEwMGRkMDQzOWE1NGRhYzMwZGU3YjU2YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDowNjoyNiArMDgwMAogU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCkBAIC0xMCw2ICsxMCw3IEBACiBSZWJhc2UgdG8gMC4xNzAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgbGliL2NvbG9yLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKy0KQEAgLTgzLDcgKzg0LDcgQEAKICA2OSBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJmZjQ0NGUuLjQxZjc3ZGYgMTAwNjQ0CitpbmRleCAyZmY0NDRlNy4uNDFmNzdkZjggMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0yOCw3ICsyOCw3IEBAIHBrZ2luY2x1ZGVfSEVBREVSUyA9IHZlcnNpb24uaApAQCAtOTYsNyArOTcsNyBAQAogIEVYVFJBX0RJU1QgPSBlbGZ1dGlscy5zcGVjIEdQRy1LRVkgTk9URVMgQ09OVFJJQlVUSU5HIFwKICAJICAgICBDT1BZSU5HIENPUFlJTkctR1BMVjIgQ09QWUlORy1MR1BMVjMKIGRpZmYgLS1naXQgYS9saWIvY29sb3IuYyBiL2xpYi9jb2xvci5jCi1pbmRleCBmNjIzODlkLi5hMmE4NGI0IDEwMDY0NAoraW5kZXggZjYyMzg5ZDUuLmEyYTg0YjQ2IDEwMDY0NAogLS0tIGEvbGliL2NvbG9yLmMKICsrKyBiL2xpYi9jb2xvci5jCiBAQCAtMzIsMTMgKzMyLDE0IEBACkBAIC0xMTYsNyArMTE3LDcgQEAKICAvKiBQcm90b3R5cGUgZm9yIG9wdGlvbiBoYW5kbGVyLiAgKi8KICBzdGF0aWMgZXJyb3JfdCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKTsKIGRpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAotaW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKK2luZGV4IGRhYzJhNWY1Li40MzAxNmZjMyAxMDA2NDQKIC0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKICsrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKIEBAIC0zMCw3ICszMCw2IEBACkBAIC0xMjgsNyArMTI5LDcgQEAKICAjaW5jbHVkZSA8c3lzdGVtLmg+CiAgCiBkaWZmIC0tZ2l0IGEvbGliL3N5c3RlbS5oIGIvbGliL3N5c3RlbS5oCi1pbmRleCA5MjAzMzM1Li4xYTYwMTMxIDEwMDY0NAoraW5kZXggOTIwMzMzNTUuLjFhNjAxMzE5IDEwMDY0NAogLS0tIGEvbGliL3N5c3RlbS5oCiArKysgYi9saWIvc3lzdGVtLmgKIEBAIC01MCw2ICs1MCwxNiBAQApAQCAtMTQ5LDcgKzE1MCw3IEBACiAgI2lmbmRlZiBNQVgKICAjZGVmaW5lIE1BWChtLCBuKSAoKG0pIDwgKG4pID8gKG4pIDogKG0pKQogZGlmZiAtLWdpdCBhL2xpYi94bWFsbG9jLmMgYi9saWIveG1hbGxvYy5jCi1pbmRleCAwY2RlMzg0Li4yMTdiMDU0IDEwMDY0NAoraW5kZXggMGNkZTM4NGYuLjIxN2IwNTQxIDEwMDY0NAogLS0tIGEvbGliL3htYWxsb2MuYwogKysrIGIvbGliL3htYWxsb2MuYwogQEAgLTMwLDcgKzMwLDcgQEAKQEAgLTE2Miw3ICsxNjMsNyBAQAogICNpbmNsdWRlIDxzdGRkZWYuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9lbmQuYyBiL2xpYmFzbS9hc21fZW5kLmMKLWluZGV4IGNlZDI0ZjUuLjRhZDkxOGMgMTAwNjQ0CitpbmRleCBjZWQyNGY1MC4uNGFkOTE4YzQgMTAwNjQ0CiAtLS0gYS9saWJhc20vYXNtX2VuZC5jCiArKysgYi9saWJhc20vYXNtX2VuZC5jCiBAQCAtMzIsNyArMzIsNyBAQApAQCAtMTc1LDcgKzE3Niw3IEBACiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fbmV3c2NuLmMgYi9saWJhc20vYXNtX25ld3Njbi5jCi1pbmRleCBkZGJiMjVkLi43NGE1OThkIDEwMDY0NAoraW5kZXggZGRiYjI1ZGYuLjc0YTU5OGQ5IDEwMDY0NAogLS0tIGEvbGliYXNtL2FzbV9uZXdzY24uYwogKysrIGIvbGliYXNtL2FzbV9uZXdzY24uYwogQEAgLTMyLDcgKzMyLDcgQEAKQEAgLTE4OCw3ICsxODksNyBAQAogICNpbmNsdWRlIDxzdGRsaWIuaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+CiBkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfZ2VuZGlzLmMgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYwotaW5kZXggYWFlNWVhZS4uNmQ3NjAxNiAxMDA2NDQKK2luZGV4IGFhZTVlYWU2Li42ZDc2MDE2NSAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jCiArKysgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYwogQEAgLTMxLDcgKzMxLDcgQEAKQEAgLTIwMSw3ICsyMDIsNyBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9sZXguYyBiL2xpYmNwdS9pMzg2X2xleC5jCi1pbmRleCBiYTVmNGFhLi5iMWU0MTkxIDEwMDY0NAoraW5kZXggYmE1ZjRhYTUuLmIxZTQxOTE2IDEwMDY0NAogLS0tIGEvbGliY3B1L2kzODZfbGV4LmMKICsrKyBiL2xpYmNwdS9pMzg2X2xleC5jCiBAQCAtNTc3LDcgKzU3Nyw3IEBAIGNoYXIgKmkzODZfdGV4dDsKQEAgLTIxNCw3ICsyMTUsNyBAQAogIAogICNpbmNsdWRlIDxsaWJldS5oPgogZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLmMgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1pbmRleCBlZjFhYzM1Li40OGYyZTY0IDEwMDY0NAoraW5kZXggNmZhN2NlM2QuLmJiMjcwMDYxIDEwMDY0NAogLS0tIGEvbGliY3B1L2kzODZfcGFyc2UuYwogKysrIGIvbGliY3B1L2kzODZfcGFyc2UuYwogQEAgLTEwNyw3ICsxMDcsNyBAQApAQCAtMjI3LDcgKzIyOCw3IEBACiAgI2luY2x1ZGUgPGxpYmludGwuaD4KICAjaW5jbHVkZSA8bWF0aC5oPgogZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KLWluZGV4IGZmOGMyOTEuLjg5ZTc5MmEgMTAwNjQ0CitpbmRleCBmZjhjMjkxZS4uODllNzkyYWEgMTAwNjQ0CiAtLS0gYS9saWJkdy9NYWtlZmlsZS5hbQogKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KIEBAIC0xMDUsNyArMTA1LDggQEAgYW1fbGliZHdfcGljX2FfT0JKRUNUUyA9ICQobGliZHdfYV9TT1VSQ0VTOi5jPS5vcykKQEAgLTI0MSw3ICsyNDIsNyBAQAogIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwICQobGliZHdfc29fTElCUykgJChsaWJkd19zb19ERVBTKQogICMgVGhlIHJwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgbGliZWJsIGJlY2F1c2UgaXRzICRPUklHSU4gdXNlIHdpbGwKIGRpZmYgLS1naXQgYS9saWJkdy9saWJkd19hbGxvYy5jIGIvbGliZHcvbGliZHdfYWxsb2MuYwotaW5kZXggMjhhOGNmNi4uMjlhZWIzZiAxMDA2NDQKK2luZGV4IDI4YThjZjZlLi4yOWFlYjNmNyAxMDA2NDQKIC0tLSBhL2xpYmR3L2xpYmR3X2FsbG9jLmMKICsrKyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKIEBAIC0zMSw3ICszMSw3IEBACkBAIC0yNTQsNyArMjU1LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgImxpYmR3UC5oIgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKLWluZGV4IGVlMGMxNjQuLmIwNmFiNTkgMTAwNjQ0CitpbmRleCBlZTBjMTY0Ni4uYjA2YWI1OTYgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYwogKysrIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKIEBAIC0zMSw2ICszMSw3IEBACkBAIC0yNzUsNyArMjc2LDcgQEAKICAJICAgIHsKICAJICAgICAgKmZpbGVfbmFtZSA9IG5hbWU7CiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotaW5kZXggN2JjZjYxYy4uYzM0NTc5NyAxMDA2NDQKK2luZGV4IDdiY2Y2MWNjLi5jMzQ1Nzk3YSAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jCiArKysgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYwogQEAgLTE0MCw2ICsxNDAsNyBAQCBfX2xpYmR3Zmxfc2V0ZXJybm8gKER3ZmxfRXJyb3IgZXJyb3IpCkBAIC0yOTcsNyArMjk4LDcgQEAKICAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOwogICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6CiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCi1pbmRleCA5Nzc1YWNlLi41MTFjNGE2IDEwMDY0NAoraW5kZXggOTc3NWFjZWQuLjUxMWM0YTZhIDEwMDY0NAogLS0tIGEvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCiArKysgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKIEBAIC0zNSw2ICszNSw3IEBACkBAIC0zMDksNyArMzEwLDcgQEAKICAjaW5jbHVkZSAiLi4vbGliZWxmL2xpYmVsZlAuaCIKICAjaW5jbHVkZSAic3lzdGVtLmgiCiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1pbmRleCA2ZDVhNDJhLi45MjY3Nzg4IDEwMDY0NAoraW5kZXggNmQ1YTQyYTYuLjkyNjc3ODhkIDEwMDY0NAogLS0tIGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCiArKysgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKIEBAIC0zODksNyArMzg5LDcgQEAgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKQEAgLTMyMiw3ICszMjMsNyBAQAogIAlmZCA9IGZpbmRfZGVidWdpbmZvX2luX3BhdGggKG1vZCwgY2Fub24sCiAgCQkJCSAgICAgZGVidWdsaW5rX2ZpbGUsIGRlYnVnbGlua19jcmMsCiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLWluZGV4IGY4NDkxMjguLjZmMGFjYTEgMTAwNjQ0CitpbmRleCBmODQ5MTI4ZC4uNmYwYWNhMWIgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCiArKysgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCiBAQCAtMjksNiArMjksMTUgQEAKQEAgLTM0Miw3ICszNDMsNyBAQAogICNkZWZpbmUgY3JjMzIgX19saWJkd2ZsX2NyYzMyCiAgI2luY2x1ZGUgPGxpYmR3ZmxQLmg+CiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1pbmRleCA5ZDBmZWYyLi45ZmMwOWI4IDEwMDY0NAoraW5kZXggOWQwZmVmMmMuLjlmYzA5Yjg4IDEwMDY0NAogLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCiArKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKIEBAIC00MCw2ICs0MCw3IEBACkBAIC0zNTQsNyArMzU1LDcgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KIGRpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1pbmRleCA1MzcxMzk2Li4yZTY2ZGZkIDEwMDY0NAoraW5kZXggNTM3MTM5NjMuLjJlNjZkZmRkIDEwMDY0NAogLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKICsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCiBAQCAtMzIsNyArMzIsNyBAQApAQCAtMzY3LDcgKzM2OCw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYuaCBiL2xpYmVsZi9lbGYuaAotaW5kZXggNWNmMmI5My4uOTkwYjNhZiAxMDA2NDQKK2luZGV4IDVjZjJiOTM0Li45OTBiM2FmYiAxMDA2NDQKIC0tLSBhL2xpYmVsZi9lbGYuaAogKysrIGIvbGliZWxmL2VsZi5oCiBAQCAtMjEsNyArMjEsOSBAQApAQCAtMzkyLDcgKzM5Myw3IEBACiAgCiAgI2VuZGlmCS8qIGVsZi5oICovCiBkaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZi5oIGIvbGliZWxmL2xpYmVsZi5oCi1pbmRleCA1NDdjMGY1Li5kZDc4Nzk5IDEwMDY0NAoraW5kZXggNTQ3YzBmNTAuLmRkNzg3OTllIDEwMDY0NAogLS0tIGEvbGliZWxmL2xpYmVsZi5oCiArKysgYi9saWJlbGYvbGliZWxmLmgKIEBAIC0yOSw2ICsyOSw3IEBACkBAIC00MDQsNyArNDA1LDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgCiBkaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZlAuaCBiL2xpYmVsZi9saWJlbGZQLmgKLWluZGV4IDdlZTY2MjUuLjU4NDA4OTkgMTAwNjQ0CitpbmRleCA3ZWU2NjI1YS4uNTg0MDg5OTcgMTAwNjQ0CiAtLS0gYS9saWJlbGYvbGliZWxmUC5oCiArKysgYi9saWJlbGYvbGliZWxmUC5oCiBAQCAtMzIsNiArMzIsNyBAQApAQCAtNDE2LDcgKzQxNyw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KIGRpZmYgLS1naXQgYS9zcmMvYWRkcjJsaW5lLmMgYi9zcmMvYWRkcjJsaW5lLmMKLWluZGV4IGJhNDE0YTcuLjA0YjcxMTYgMTAwNjQ0CitpbmRleCA0NDRlZTUyYy4uOTU5NmZhNjcgMTAwNjQ0CiAtLS0gYS9zcmMvYWRkcjJsaW5lLmMKICsrKyBiL3NyYy9hZGRyMmxpbmUuYwogQEAgLTIzLDcgKzIzLDcgQEAKQEAgLTQyOSw3ICs0MzAsNyBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxsaWJkd2ZsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FyLmMgYi9zcmMvYXIuYwotaW5kZXggZWMzMmNlZS4uNGVmZDcyOSAxMDA2NDQKK2luZGV4IGVjMzJjZWU1Li40ZWZkNzI5YyAxMDA2NDQKIC0tLSBhL3NyYy9hci5jCiArKysgYi9zcmMvYXIuYwogQEAgLTIyLDcgKzIyLDcgQEAKQEAgLTQ0Miw3ICs0NDMsNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPGxpYmludGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCi1pbmRleCBlMDgzOWFhLi4xMTQzNjU4IDEwMDY0NAoraW5kZXggZTA4MzlhYWIuLjExNDM2NThmIDEwMDY0NAogLS0tIGEvc3JjL2FybGliLmMKICsrKyBiL3NyYy9hcmxpYi5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNDU1LDcgKzQ1Niw3IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGxpYmludGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvYXJsaWIyLmMgYi9zcmMvYXJsaWIyLmMKLWluZGV4IDU1M2ZjNTcuLjQ2NDQzZDAgMTAwNjQ0CitpbmRleCA1NTNmYzU3Yi4uNDY0NDNkMGUgMTAwNjQ0CiAtLS0gYS9zcmMvYXJsaWIyLmMKICsrKyBiL3NyYy9hcmxpYjIuYwogQEAgLTIwLDcgKzIwLDcgQEAKQEAgLTQ2OCw3ICs0NjksNyBAQAogICNpbmNsdWRlIDxsaW1pdHMuaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2VsZmNtcC5jIGIvc3JjL2VsZmNtcC5jCi1pbmRleCA1MDQ2NDIwLi5jZmYxODNmIDEwMDY0NAoraW5kZXggNTA0NjQyMDcuLmNmZjE4M2ZhIDEwMDY0NAogLS0tIGEvc3JjL2VsZmNtcC5jCiArKysgYi9zcmMvZWxmY21wLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC00ODEsNyArNDgyLDcgQEAKICAjaW5jbHVkZSA8bG9jYWxlLmg+CiAgI2luY2x1ZGUgPGxpYmludGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvZWxmbGludC5jIGIvc3JjL2VsZmxpbnQuYwotaW5kZXggNTFlNTNjMi4uZGEwYjBkYyAxMDA2NDQKK2luZGV4IGRmMWIzYTAzLi42N2Q4ZDEzNCAxMDA2NDQKIC0tLSBhL3NyYy9lbGZsaW50LmMKICsrKyBiL3NyYy9lbGZsaW50LmMKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC00OTQsNyArNDk1LDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3NyYy9maW5kdGV4dHJlbC5jIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKLWluZGV4IDhmMWUyMzkuLjcxNDYzYWYgMTAwNjQ0CitpbmRleCA4ZjFlMjM5YS4uNzE0NjNhZjMgMTAwNjQ0CiAtLS0gYS9zcmMvZmluZHRleHRyZWwuYwogKysrIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC01MDcsNyArNTA4LDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxsaWJkdy5oPgogZGlmZiAtLWdpdCBhL3NyYy9ubS5jIGIvc3JjL25tLmMKLWluZGV4IDk2OWM2ZDMuLjMxMTNjMDQgMTAwNjQ0CitpbmRleCA5NjljNmQzNS4uMzExM2MwNGMgMTAwNjQ0CiAtLS0gYS9zcmMvbm0uYwogKysrIGIvc3JjL25tLmMKIEBAIC0yNiw3ICsyNiw3IEBACkBAIC01MjAsNyArNTIxLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCi1pbmRleCA4NjBjZmFjLi42MWU2N2JmIDEwMDY0NAoraW5kZXggMGRkOWE2YWEuLjljOGJmMTQ5IDEwMDY0NAogLS0tIGEvc3JjL29iamR1bXAuYwogKysrIGIvc3JjL29iamR1bXAuYwogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTUzMyw3ICs1MzQsNyBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3JhbmxpYi5jIGIvc3JjL3JhbmxpYi5jCi1pbmRleCBjYzBlZTIzLi5hZTg1MWU0IDEwMDY0NAoraW5kZXggY2MwZWUyMzMuLmFlODUxZTQwIDEwMDY0NAogLS0tIGEvc3JjL3JhbmxpYi5jCiArKysgYi9zcmMvcmFubGliLmMKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC01NDYsNyArNTQ3LDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKLWluZGV4IDM0NmVjY2QuLmM4MzFhYTggMTAwNjQ0CitpbmRleCA2YTI3ZTdlMC4uNDc1OWE5NjUgMTAwNjQ0CiAtLS0gYS9zcmMvcmVhZGVsZi5jCiArKysgYi9zcmMvcmVhZGVsZi5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtNTU5LDcgKzU2MCw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvc2l6ZS5jIGIvc3JjL3NpemUuYwotaW5kZXggYWQ4ZGJjYi4uZmQ4M2JlMCAxMDA2NDQKK2luZGV4IGFkOGRiY2JiLi5mZDgzYmUwNiAxMDA2NDQKIC0tLSBhL3NyYy9zaXplLmMKICsrKyBiL3NyYy9zaXplLmMKIEBAIC0yMSw3ICsyMSw3IEBACkBAIC01NzIsNyArNTczLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKLWluZGV4IDZmMmZmNjkuLjZkYTAyNDMgMTAwNjQ0CitpbmRleCA2ZjJmZjY5Zi4uNmRhMDI0M2QgMTAwNjQ0CiAtLS0gYS9zcmMvc3RhY2suYwogKysrIGIvc3JjL3N0YWNrLmMKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC01ODUsNyArNTg2LDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KIGRpZmYgLS1naXQgYS9zcmMvc3RyaW5ncy5jIGIvc3JjL3N0cmluZ3MuYwotaW5kZXggZDIxNDM1Ni4uNzZjYjI2YiAxMDA2NDQKK2luZGV4IDAzZDBmMTMzLi41YzMxMWNiZCAxMDA2NDQKIC0tLSBhL3NyYy9zdHJpbmdzLmMKICsrKyBiL3NyYy9zdHJpbmdzLmMKIEBAIC0yNSw3ICsyNSw3IEBACkBAIC01OTgsNyArNTk5LDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0cmlwLmMKLWluZGV4IGM3ODMwZWMuLjBkN2YxNDggMTAwNjQ0CitpbmRleCBjNzgzMGVjNi4uMGQ3ZjE0OGQgMTAwNjQ0CiAtLS0gYS9zcmMvc3RyaXAuYwogKysrIGIvc3JjL3N0cmlwLmMKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC02MTEsNyArNjEyLDcgQEAKICAjaW5jbHVkZSA8Zm5tYXRjaC5oPgogICNpbmNsdWRlIDxnZWxmLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3Vuc3RyaXAuYyBiL3NyYy91bnN0cmlwLmMKLWluZGV4IDUwNzQ5MDkuLjNkNGY5NTIgMTAwNjQ0CitpbmRleCA1MDc0OTA5My4uM2Q0Zjk1MjUgMTAwNjQ0CiAtLS0gYS9zcmMvdW5zdHJpcC5jCiArKysgYi9zcmMvdW5zdHJpcC5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtNjI0LDcgKzYyNSw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2FkZHJzY29wZXMuYyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotaW5kZXggNzkxNTY5Zi4uNTRmNDMxMSAxMDA2NDQKK2luZGV4IDc5MTU2OWY1Li41NGY0MzExYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2FkZHJzY29wZXMuYwogKysrIGIvdGVzdHMvYWRkcnNjb3Blcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtNjM3LDcgKzYzOCw3IEBACiAgCiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvYWxscmVncy5jIGIvdGVzdHMvYWxscmVncy5jCi1pbmRleCAyODZmN2UzLi5jOWRlMDg5IDEwMDY0NAoraW5kZXggMjg2ZjdlM2MuLmM5ZGUwODk3IDEwMDY0NAogLS0tIGEvdGVzdHMvYWxscmVncy5jCiArKysgYi90ZXN0cy9hbGxyZWdzLmMKIEBAIC0yMSw3ICsyMSw3IEBACkBAIC02NTAsNyArNjUxLDcgQEAKICAjaW5jbHVkZSA8YXJncC5oPgogICNpbmNsdWRlIDxhc3NlcnQuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotaW5kZXggYTM4N2Q4Zi4uOTU1YzI3ZCAxMDA2NDQKK2luZGV4IGEzODdkOGZmLi45NTVjMjdkMSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKICsrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKIEBAIC0yNyw3ICsyNyw3IEBACkBAIC02NjMsNyArNjY0LDcgQEAKICAjaW5jbHVkZSA8ZHdhcmYuaD4KICAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKIGRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi1pbmRleCAyZGM4YTlhLi4yNGNhN2ZiIDEwMDY0NAoraW5kZXggMmRjOGE5YTIuLjI0Y2E3ZmIwIDEwMDY0NAogLS0tIGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKICsrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCiBAQCAtMjIsNyArMjIsNyBAQApAQCAtNjc2LDcgKzY3Nyw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDxzeXMvd2FpdC5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS5jIGIvdGVzdHMvYmFja3RyYWNlLmMKLWluZGV4IDIxYWJlOGEuLmQ3MzMyNDggMTAwNjQ0CitpbmRleCBmNWRkNzYxZi4uYTkzYThmMDMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9iYWNrdHJhY2UuYwogKysrIGIvdGVzdHMvYmFja3RyYWNlLmMKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC02ODksNyArNjkwLDcgQEAKICAjaW5jbHVkZSA8ZHdhcmYuaD4KICAjaWZkZWYgX19saW51eF9fCiBkaWZmIC0tZ2l0IGEvdGVzdHMvYnVpbGRpZC5jIGIvdGVzdHMvYnVpbGRpZC5jCi1pbmRleCA4N2MxODc3Li4yOTUzZTZiIDEwMDY0NAoraW5kZXggODdjMTg3NzMuLjI5NTNlNmJiIDEwMDY0NAogLS0tIGEvdGVzdHMvYnVpbGRpZC5jCiArKysgYi90ZXN0cy9idWlsZGlkLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC03MDIsNyArNzAzLDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnYWx0bGluay5jIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKLWluZGV4IDZkOTdkNTAuLmVlN2U1NTkgMTAwNjQ0CitpbmRleCA2ZDk3ZDUwMC4uZWU3ZTU1OWUgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwogKysrIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC03MTUsNyArNzE2LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnbGluay5jIGIvdGVzdHMvZGVidWdsaW5rLmMKLWluZGV4IDkzNWQxMDIuLjc0MWNiODEgMTAwNjQ0CitpbmRleCA5MzVkMTAyOS4uNzQxY2I4MTQgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kZWJ1Z2xpbmsuYwogKysrIGIvdGVzdHMvZGVidWdsaW5rLmMKIEBAIC0yMSw3ICsyMSw3IEBACkBAIC03MjgsNyArNzI5LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2RlbGV0ZWQuYyBiL3Rlc3RzL2RlbGV0ZWQuYwotaW5kZXggNmJlMzViYy4uMDE5MDcxMSAxMDA2NDQKK2luZGV4IDZiZTM1YmMyLi4wMTkwNzExMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2RlbGV0ZWQuYwogKysrIGIvdGVzdHMvZGVsZXRlZC5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNzQxLDcgKzc0Miw3IEBACiAgI2lmZGVmIF9fbGludXhfXwogICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotaW5kZXggMjFlNDcwYS4uMWVhMWUzYiAxMDA2NDQKK2luZGV4IDIxZTQ3MGEzLi4xZWExZTNiMiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKICsrKyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC03NTQsNyArNzU1LDcgQEAKICAjaW5jbHVkZSA8YXJncC5oPgogICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotaW5kZXggYWE4MDMwZS4uMDJjOGJlZiAxMDA2NDQKK2luZGV4IGFhODAzMGUxLi4wMmM4YmVmOSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwogKysrIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtNzY3LDcgKzc2OCw3IEBACiAgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1pbmRleCA2ODljZGQ3Li41OTczZGEzIDEwMDY0NAoraW5kZXggNjg5Y2RkNzkuLjU5NzNkYTM5IDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCiArKysgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC03ODAsNyArNzgxLDcgQEAKICAjaW5jbHVkZSA8ZHdhcmYuaD4KICAKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLWluZGV4IDFlZTk4OWYuLmZkNjJlNjUgMTAwNjQ0CitpbmRleCAxZWU5ODlmOC4uZmQ2MmU2NTMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKICsrKyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwogQEAgLTE4LDcgKzE4LDcgQEAKQEAgLTc5Myw3ICs3OTQsNyBAQAogIHN0YXRpYyBjb25zdCBEd2ZsX0NhbGxiYWNrcyBjYWxsYmFja3MgPQogICAgewogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jIGIvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLWluZGV4IGE0ZTk3ZDMuLmY0NzE1ODcgMTAwNjQ0CitpbmRleCBhNGU5N2QzYy4uZjQ3MTU4N2MgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwogKysrIGIvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKIEBAIC0yMCw3ICsyMCw3IEBACkBAIC04MDYsNyArODA3LDcgQEAKICAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxsaW5lcy5jIGIvdGVzdHMvZHdmbGxpbmVzLmMKLWluZGV4IDkwMzc5ZGQuLmNiZGY2YzQgMTAwNjQ0CitpbmRleCA5MDM3OWRkMi4uY2JkZjZjNGMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsbGluZXMuYwogKysrIGIvdGVzdHMvZHdmbGxpbmVzLmMKIEBAIC0yNyw3ICsyNyw3IEBACkBAIC04MTksNyArODIwLDcgQEAKICBpbnQKICBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMgYi90ZXN0cy9kd2ZsbW9kdGVzdC5jCi1pbmRleCAwMDI3Zjk2Li5lNjhkM2JjIDEwMDY0NAoraW5kZXggMDAyN2Y5NmIuLmU2OGQzYmNhIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbG1vZHRlc3QuYwogKysrIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwogQEAgLTIzLDcgKzIzLDcgQEAKQEAgLTgzMiw3ICs4MzMsNyBAQAogICNpbmNsdWRlIDxhcmdwLmg+CiAgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbHN5bXMuYyBiL3Rlc3RzL2R3ZmxzeW1zLmMKLWluZGV4IDQ5YWMzMzQuLmNmMDc4MzAgMTAwNjQ0CitpbmRleCA0OWFjMzM0Ni4uY2YwNzgzMDEgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2Zsc3ltcy5jCiArKysgYi90ZXN0cy9kd2Zsc3ltcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtODQ1LDcgKzg0Niw3IEBACiAgCiAgc3RhdGljIGNvbnN0IGNoYXIgKgogZGlmZiAtLWdpdCBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLWluZGV4IDkyNGNiOWUuLjZmNjBkNWEgMTAwNjQ0CitpbmRleCA5MjRjYjllZi4uNmY2MGQ1YTMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9lYXJseS1vZmZzY24uYwogKysrIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC04NTgsNyArODU5LDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxzdGRpby5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2VjcC5jIGIvdGVzdHMvZWNwLmMKLWluZGV4IDM4YTY4NTkuLjc0M2NlYTUgMTAwNjQ0CitpbmRleCAzOGE2ODU5ZS4uNzQzY2VhNWQgMTAwNjQ0CiAtLS0gYS90ZXN0cy9lY3AuYwogKysrIGIvdGVzdHMvZWNwLmMKIEBAIC0yMCw3ICsyMCw3IEBACkBAIC04NzEsNyArODcyLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotaW5kZXggYmE4YWUzNy4uNzZmNWYwNCAxMDA2NDQKK2luZGV4IGJhOGFlMzcxLi43NmY1ZjA0NyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKICsrKyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKIEBAIC0yNSw3ICsyNSw3IEBACkBAIC04ODQsNyArODg1LDcgQEAKICAjaW5jbHVkZSA8Zm5tYXRjaC5oPgogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNyZXR2YWwuYyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwotaW5kZXggOGQxOWQxMS4uYzhhYWE5MyAxMDA2NDQKK2luZGV4IDhkMTlkMTE3Li5jOGFhYTkzZCAxMDA2NDQKIC0tLSBhL3Rlc3RzL2Z1bmNyZXR2YWwuYwogKysrIGIvdGVzdHMvZnVuY3JldHZhbC5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtODk3LDcgKzg5OCw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAKIGRpZmYgLS1naXQgYS90ZXN0cy9mdW5jc2NvcGVzLmMgYi90ZXN0cy9mdW5jc2NvcGVzLmMKLWluZGV4IDljOTAxODUuLmRiY2NiODkgMTAwNjQ0CitpbmRleCA5YzkwMTg1OC4uZGJjY2I4OWUgMTAwNjQ0CiAtLS0gYS90ZXN0cy9mdW5jc2NvcGVzLmMKICsrKyBiL3Rlc3RzL2Z1bmNzY29wZXMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTkxMCw3ICs5MTEsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ2V0c3JjX2RpZS5jIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCi1pbmRleCAwNTVhZWRlLi45YzM5NGRkIDEwMDY0NAoraW5kZXggMDU1YWVkZTAuLjljMzk0ZGQwIDEwMDY0NAogLS0tIGEvdGVzdHMvZ2V0c3JjX2RpZS5jCiArKysgYi90ZXN0cy9nZXRzcmNfZGllLmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC05MjMsNyArOTI0LDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGliZWxmLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvbGluZTJhZGRyLmMgYi90ZXN0cy9saW5lMmFkZHIuYwotaW5kZXggZTBkNjVkMy4uOWJmMDAyMyAxMDA2NDQKK2luZGV4IGUwZDY1ZDNkLi45YmYwMDIzYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2xpbmUyYWRkci5jCiArKysgYi90ZXN0cy9saW5lMmFkZHIuYwogQEAgLTI2LDcgKzI2LDcgQEAKQEAgLTkzNiw3ICs5MzcsNyBAQAogIAogIHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvdGVzdHMvbG93X2hpZ2hfcGMuYyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLWluZGV4IGQwZjQzMDIuLjhkYTRmYmQgMTAwNjQ0CitpbmRleCBkMGY0MzAyMy4uOGRhNGZiZGYgMTAwNjQ0CiAtLS0gYS90ZXN0cy9sb3dfaGlnaF9wYy5jCiArKysgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtOTQ5LDcgKzk1MCw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAKIGRpZmYgLS1naXQgYS90ZXN0cy9tZDUtc2hhMS10ZXN0LmMgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKLWluZGV4IGQ1MDM1NWUuLjNjNDFmNDAgMTAwNjQ0CitpbmRleCBkNTAzNTVlOS4uM2M0MWY0MGIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKICsrKyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwogQEAgLTE5LDcgKzE5LDcgQEAKQEAgLTk2Miw3ICs5NjMsNyBAQAogICNpbmNsdWRlICJtZDUuaCIKICAjaW5jbHVkZSAic2hhMS5oIgogZGlmZiAtLWdpdCBhL3Rlc3RzL3Jkd3JtbWFwLmMgYi90ZXN0cy9yZHdybW1hcC5jCi1pbmRleCA2ZjAyN2RmLi4xY2U1ZTZlIDEwMDY0NAoraW5kZXggNmYwMjdkZmUuLjFjZTVlNmVkIDEwMDY0NAogLS0tIGEvdGVzdHMvcmR3cm1tYXAuYwogKysrIGIvdGVzdHMvcmR3cm1tYXAuYwogQEAgLTE5LDcgKzE5LDcgQEAKQEAgLTk3NSw3ICs5NzYsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9zYXJpZHguYyBiL3Rlc3RzL3NhcmlkeC5jCi1pbmRleCA4YTQ1MGQ4Li5iMzg3ODAxIDEwMDY0NAoraW5kZXggOGE0NTBkODIuLmIzODc4MDEzIDEwMDY0NAogLS0tIGEvdGVzdHMvc2FyaWR4LmMKICsrKyBiL3Rlc3RzL3NhcmlkeC5jCiBAQCAtMTcsNyArMTcsNyBAQApAQCAtOTg4LDcgKzk4OSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9zZWN0aW9uZHVtcC5jIGIvdGVzdHMvc2VjdGlvbmR1bXAuYwotaW5kZXggMzAzM2ZlZC4uOGU4ODhkYiAxMDA2NDQKK2luZGV4IDMwMzNmZWRjLi44ZTg4OGRiMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL3NlY3Rpb25kdW1wLmMKICsrKyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC0xMDAxLDcgKzEwMDIsNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvdmFybG9jcy5jIGIvdGVzdHMvdmFybG9jcy5jCi1pbmRleCBjM2ZiYTg5Li5lMDQzZWEyIDEwMDY0NAoraW5kZXggYzNmYmE4OWUuLmUwNDNlYTJjIDEwMDY0NAogLS0tIGEvdGVzdHMvdmFybG9jcy5jCiArKysgYi90ZXN0cy92YXJsb2NzLmMKIEBAIC0yNSw3ICsyNSw3IEBACkBAIC0xMDE0LDcgKzEwMTUsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy92ZHNvc3ltcy5jIGIvdGVzdHMvdmRzb3N5bXMuYwotaW5kZXggYjg3NmMxMC4uYWZiMjgyMyAxMDA2NDQKK2luZGV4IGI4NzZjMTBiLi5hZmIyODIzMiAxMDA2NDQKIC0tLSBhL3Rlc3RzL3Zkc29zeW1zLmMKICsrKyBiL3Rlc3RzL3Zkc29zeW1zLmMKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC0xMDI2LDYgKzEwMjcsMyBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjYyM2Y5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotR0NDNyBhZGRzIC1XaW1wbGljaXQtZmFsbHRocm91Z2ggdG8gd2FybiB3aGVuIGEgc3dpdGNoIGNhc2UgZmFsbHMgdGhyb3VnaCwKLWhvd2V2ZXIgdGhpcyBjYXVzZXMgd2FybmluZ3MgKHdoaWNoIGFyZSBwcm9tb3RlZCB0byBlcnJvcnMpIHdpdGggdGhlIGVsZnV0aWxzCi1wYXRjaGVzIGZyb20gRGViaWFuIGZvciBtaXBzIGFuZCBwYXJpc2MsIHdoaWNoIHVzZSBmYWxsdGhyb3VnaCdzIGJ5IGRlc2lnbi4KLQotRXhwbGljaXRseSBtYXJrIHRoZSBpbnRlbnRpb25hbCBmYWxsdGhyb3VnaCBzd2l0Y2ggY2FzZXMgd2l0aCBhIGNvbW1lbnQgdG8KLWRpc2FibGUgdGhlIHdhcm5pbmdzIHdoZXJlIHRoZSBmYWxsdGhyb3VnaCBiZWhhdmlvdXIgaXMgZGVzaXJlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+Ci0KLUluZGV4OiBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2OC5vcmlnL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotKysrIGVsZnV0aWxzLTAuMTY4L2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotQEAgLTE2Niw3ICsxNjYsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllCi0gCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSAKLSAJLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotLSAgICAgIH0KLSsgICAgICB9IC8vIGZhbGx0aHJvdWdoCi0gCi0gICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotSW5kZXg6IGVsZnV0aWxzLTAuMTY4L2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2OC5vcmlnL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLSsrKyBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi1AQCAtMzg3LDcgKzM4Nyw3IEBAIG1pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmYKLSAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0rICAgICAgICB9IC8vIGZhbGx0aHJvdWdoCi0gCi0gICAgICAgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmluZGV4IDQ0ZmRhN2YuLjU2Zjg1MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCkBAIC0xLDEwICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGIvYmFja2VuZHMvcGFyaXNjX2luaXQuYworSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCiBAQCAtMCwwICsxLDczIEBACiArLyogSW5pdGlhbGl6YXRpb24gb2YgUEEtUklTQyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCiArICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2IFJlZCBIYXQsIEluYy4KQEAgLTc5LDEwICs3OSwxMCBAQAogKwogKyAgcmV0dXJuIE1PRFZFUlNJT047CiArfQotSW5kZXg6IGIvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYworSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCiBAQCAtMCwwICsxLDE1OSBAQAogKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBQQS1SSVNDIERXQVJGLgogKyAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCkBAIC0yNDMsMTAgKzI0MywxMCBAQAogKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKICsgIHJldHVybiBuYW1lbGVuOwogK30KLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgogQEAgLTAsMCArMSwxMjggQEAKICsvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBQQS1SSVNDLiAgLSotIEMgLSotCiArICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KQEAgLTM3NiwxMCArMzc2LDEwIEBACiArUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LAlEWU4pCiArCiArI2RlZmluZSBOT19SRUxBVElWRV9SRUxPQyAgICAgICAxCi1JbmRleDogYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwogQEAgLTAsMCArMSwyMTMgQEAKICsvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L1BBLVJJU0MgQUJJLgogKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCkBAIC01OTQsMTAgKzU5NCwxMCBAQAogKyAgcmV0dXJuIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMSk7CiArfQogKwotSW5kZXg6IGIvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMKIEBAIC0wLDAgKzEsMTEyIEBACiArLyogUEEtUklTQyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgogKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSBSZWQgSGF0LCBJbmMuCkBAIC03MTEsMTAgKzcxMSwxMCBAQAogKyAgICAgIHJldHVybiBFTEZfVF9OVU07CiArICAgIH0KICt9Ci1JbmRleDogYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAorKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAogQEAgLTAsMCArMSw5IEBACiArI2lmbmRlZiBfTElCRUJMX0hQUEFfSAogKyNkZWZpbmUgX0xJQkVCTF9IUFBBX0ggMQpAQCAtNzI1LDEwICs3MjUsMTAgQEAKICtleHRlcm4gaW50IHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fNjQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7CiArCiArI2VuZGlmCi1JbmRleDogYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQorSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQotKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KKy0tLSBlbGZ1dGlscy0wLjE3MC5vcmlnL2JhY2tlbmRzL01ha2VmaWxlLmFtCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvTWFrZWZpbGUuYW0KIEBAIC0zMywxMiArMzMsMTIgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSQogIAogIApAQCAtNzQ0LDcgKzc0NCw3IEBACiAgbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKICBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQogIAotQEAgLTEyOCw2ICsxMjgsOSBAQCBlbmRpZgorQEAgLTEyNCw2ICsxMjQsOSBAQCBjcHVfYnBmID0gLi4vbGliY3B1L2xpYmNwdV9icGYuYQogIGxpYmVibF9icGZfcGljX2FfU09VUkNFUyA9ICQoYnBmX1NSQ1MpCiAgYW1fbGliZWJsX2JwZl9waWNfYV9PQkpFQ1RTID0gJChicGZfU1JDUzouYz0ub3MpCiAgCkBAIC03NTIsMTMgKzc1MiwxMyBAQAogK2xpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCiArYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCiAgCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykKKyBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQogIAlAcm0gLWYgJChAOi5zbz0ubWFwKQotSW5kZXg6IGIvbGliZWxmL2VsZi5oCitJbmRleDogZWxmdXRpbHMtMC4xNzAvbGliZWxmL2VsZi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTIwNTUsMTYgKzIwNTUsMjQgQEAgZW51bQorLS0tIGVsZnV0aWxzLTAuMTcwLm9yaWcvbGliZWxmL2VsZi5oCisrKysgZWxmdXRpbHMtMC4xNzAvbGliZWxmL2VsZi5oCitAQCAtMjA1NiwxNiArMjA1NiwyNCBAQCBlbnVtCiAgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE3RgkxMgkvKiAxNyBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0UgkxNAkvKiBSaWdodCAxNCBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19EUFJFTDIxTAkxOAkvKiBMZWZ0IDIxIGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KQEAgLTc4Myw3ICs3ODMsNyBAQAogICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjMyCTU3CS8qIDMyIGJpdHMgTFQtcmVsLiBmdW5jdGlvbiBwb2ludGVyLiAqLwogICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjIxTAk1OAkvKiBMVC1yZWwuIGZjdCBwdHIsIGxlZnQgMjEgYml0cy4gKi8KICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIxNFIJNjIJLyogTFQtcmVsLiBmY3QgcHRyLCByaWdodCAxNCBiaXRzLiAqLwotQEAgLTIwNzMsNiArMjA4MSw3IEBAIGVudW0KK0BAIC0yMDc0LDYgKzIwODIsNyBAQCBlbnVtCiAgI2RlZmluZSBSX1BBUklTQ19QTEFCRUwyMUwJNjYJLyogTGVmdCAyMSBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMTRSCTcwCS8qIFJpZ2h0IDE0IGJpdHMgb2YgZmRlc2MgYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDY0CTcyCS8qIDY0IGJpdHMgUEMtcmVsLiBhZGRyZXNzLiAgKi8KQEAgLTc5MSw3ICs3OTEsNyBAQAogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwyMkYJNzQJLyogMjIgYml0cyBQQy1yZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFdSCTc1CS8qIFBDLXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0RFIJNzYJLyogUEMgcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLUBAIC0yMDk4LDYgKzIxMDcsOCBAQCBlbnVtCitAQCAtMjA5OSw2ICsyMTA4LDggQEAgZW51bQogICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNldGCTEwMgkvKiAxNiBiaXRzIExULXJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19MVE9GRjE2REYJMTAzCS8qIDE2IGJpdHMgTFQtcmVsLiBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1NFQ1JFTDY0CTEwNAkvKiA2NCBiaXRzIHNlY3Rpb24gcmVsLiBhZGRyZXNzLiAgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdC8wMDAxLWV4cGVjdC1GaXgtc2VnZmF1bHRzLWlmLVRjbC1pcy1idWlsdC13aXRoLXN0dWJzLWFuZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3QvMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZDMyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3QvMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gZjAwNDliNGIyZWE1NWIzYjNjNTNiZjZmMDI3NTY1NDgwMWM3NTVkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjggU2VwIDIwMTcgMTU6NTQ6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXhwZWN0OiBGaXggc2VnZmF1bHRzIGlmIFRjbCBpcyBidWlsdCB3aXRoIHN0dWJzIGFuZCBFeHBlY3QKKyBpcyB1c2VkIGRpcmVjdGx5IGZyb20gQyBwcm9ncmFtCisKK0Rlc2NyaXB0aW9uOiBUaGlzIGRpcnR5IGhhY2sgZml4ZXMgc2VnZmF1bHRzIGlmIFRjbCBpcyBidWlsdCB3aXRoIHN0dWJzCisgYW5kIEV4cGVjdCBpcyB1c2VkIGRpcmVjdGx5IGZyb20gQyBwcm9ncmFtLgorQnVnOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NTg4ODE3CitFeGFtcGxlOgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDx0Y2w4LjUvZXhwZWN0Lmg+CisgaW50IG1haW4oKQorIHsKKyAgICAgRklMRSAqcGlwZTsKKyAgICAgY2hhciAqc29tZV9jb21tYW5kID0gInVuYW1lIjsKKyAgICAgY2hhciBkYXR1bTsKKyAgICAgcGlwZSA9IGV4cF9wb3Blbihzb21lX2NvbW1hbmQpOworICAgICBpZiAocGlwZSA9PSBOVUxMKSByZXR1cm4gMTsKKyAgICAgd2hpbGUgKChkYXR1bSA9IGdldGMgKHBpcGUpKSAhPSBFT0YpCisgCXByaW50ZigiJWMiLGRhdHVtKTsKKyB9CitFeGFtcGxlOgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlICJleHBlY3QuaCIKKyBtYWluKCkKKyB7CisgICAgIGludCBmZCA9IDA7CisgICAgIGZkID0gZXhwX3NwYXdubCgiZWNobyIsICJlY2hvIiwgIkhlbGxvIFVzZXI6IFdoYXRzIHVwPyIsIChjaGFyKikgMCk7CisgICAgIHN3aXRjaCAoZXhwX2V4cGVjdGwoZmQsIGV4cF9yZWdleHAsICJzZXI6IiwgMSwgZXhwX2VuZCkpIHsKKyAJY2FzZSAxOiB7CisgCSAgICBwcmludGYoIkdPVCBzZXI6XG4iKTsKKyAJICAgIGJyZWFrOworIAl9CisgCWRlZmF1bHQ6IHsKKyAJICAgIHByaW50ZigiREVGQVVMVFxuIik7CisgCSAgICByZXR1cm4gMTsKKyAJfQorICAgICB9CisgICAgIHByaW50ZigiTm9ybWFsIEV4aXRcbiIpOworICAgICByZXR1cm4gMDsKKyB9CitBdXRob3I6IFNlcmdlaSBHb2xvdmFuIDxzZ29sb3ZhbkBkZWJpYW4ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1RoaXMgcGF0Y2ggaXMgYmFja3BvcnRlZCBmcm9tIGZlZG9yYSBjaGFuZ2VzIGZvciBleHBlY3Q6CitodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L3JwbXMvZXhwZWN0LmdpdC9jb21taXQvCis/aD1tYXN0ZXImaWQ9YjY3MzdlZWQ1NTBiZTkzMTgyZjJlZDE5NGU4MzZhNmNiYmNmNGZhMworU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgZXhwX2NsaWIuYyB8IDEwICsrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXhwX2NsaWIuYyBiL2V4cF9jbGliLmMKK2luZGV4IDE3MmMwNWUuLjE5MzQxZDUgMTAwNjQ0CistLS0gYS9leHBfY2xpYi5jCisrKysgYi9leHBfY2xpYi5jCitAQCAtMTE0LDcgKzExNCwxMSBAQCBleHRlcm4gdW5zaWduZWQgbG9uZwlzdHJ0b3VsIF9BTlNJX0FSR1NfKChDT05TVCBjaGFyICpzdHJpbmcsCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgkJLyogZm9yIG1hbGxvYyAqLworICNlbmRpZgorIAorLSNpbmNsdWRlIDx0Y2wuaD4KKysjZGVmaW5lIGNrYWxsb2MoeCkgVGNsX0FsbG9jKHgpCisrI2RlZmluZSBja2ZyZWUoeCkgVGNsX0ZyZWUoeCkKKytleHRlcm4gY2hhciAqVGNsX0Vycm5vTXNnKGludCBlcnIpOworK2V4dGVybiBjaGFyICpUY2xfQWxsb2ModW5zaWduZWQgaW50IHNpemUpOworK2V4dGVybiB2b2lkIFRjbF9GcmVlKGNoYXIgKnB0cik7CisgI2luY2x1ZGUgImV4cGVjdC5oIgorICNkZWZpbmUgVGNsUmVnRXJyb3IgZXhwX1RjbFJlZ0Vycm9yCisgCitAQCAtMzg5LDcgKzM5Myw3IEBAIGNoYXIgKmV4cDsKKyAJCUZBSUwoInJlZ2V4cCB0b28gYmlnIik7CisgCisgCS8qIEFsbG9jYXRlIHNwYWNlLiAqLworLQlyID0gKHJlZ2V4cCAqKWNrYWxsb2Moc2l6ZW9mKHJlZ2V4cCkgKyAodW5zaWduZWQpcmNzdGF0ZS0+cmVnc2l6ZSk7CisrCXIgPSAocmVnZXhwICopbWFsbG9jKHNpemVvZihyZWdleHApICsgKHVuc2lnbmVkKXJjc3RhdGUtPnJlZ3NpemUpOworIAlpZiAociA9PSBOVUxMKQorIAkJRkFJTCgib3V0IG9mIHNwYWNlIik7CisgCitAQCAtMzk5LDcgKzQwMyw3IEBAIGNoYXIgKmV4cDsKKyAJcmNzdGF0ZS0+cmVnY29kZSA9IHItPnByb2dyYW07CisgCXJlZ2MoTUFHSUMsIHJjc3RhdGUpOworIAlpZiAocmVnKDAsICZmbGFncywgcmNzdGF0ZSkgPT0gTlVMTCkgeworLQkgIGNrZnJlZSAoKGNoYXIqKSByKTsKKysJICBmcmVlKChjaGFyKikgcik7CisgCSAgcmV0dXJuKE5VTEwpOworIAl9CisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZWFjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS40LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAidG9vbCBmb3IgYXV0b21hdGluZyBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMgYWNjb3JkaW5nIHRvIGEgc2NyaXB0IgorREVTQ1JJUFRJT04gPSAiRXhwZWN0IGlzIGEgdG9vbCBmb3IgYXV0b21hdGluZyBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMgYWNjb3JkaW5nIHRvIGEgc2NyaXB0LiBcCitGb2xsb3dpbmcgdGhlIHNjcmlwdCwgRXhwZWN0IGtub3dzIHdoYXQgY2FuIGJlIGV4cGVjdGVkIGZyb20gYSBwcm9ncmFtIGFuZCB3aGF0IFwKK3RoZSBjb3JyZWN0IHJlc3BvbnNlIHNob3VsZCBiZS4gRXhwZWN0IGlzIGFsc28gdXNlZnVsIGZvciB0ZXN0aW5nIHRoZXNlIHNhbWUgXAorYXBwbGljYXRpb25zLiBBbmQgYnkgYWRkaW5nIFRrLCB5b3UgY2FuIGFsc28gd3JhcCBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMgaW4gXAorWDExIEdVSXMuIEFuIGludGVycHJldGVkIGxhbmd1YWdlIHByb3ZpZGVzIGJyYW5jaGluZyBhbmQgaGlnaC1sZXZlbCBjb250cm9sIFwKK3N0cnVjdHVyZXMgdG8gZGlyZWN0IHRoZSBkaWFsb2d1ZS4gSW4gYWRkaXRpb24sIHRoZSB1c2VyIGNhbiB0YWtlIGNvbnRyb2wgYW5kIFwKK2ludGVyYWN0IGRpcmVjdGx5IHdoZW4gZGVzaXJlZCwgYWZ0ZXJ3YXJkIHJldHVybmluZyBjb250cm9sIHRvIHRoZSBzY3JpcHQuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwZWN0LyIKK0xJQ0VOU0UgPSAiUEQiCitTRUNUSU9OID0gImRldmVsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWNlbnNlLnRlcm1zO21kNT1mYmYyZGU3ZTkxMDI1MDViMTQzOWRiMDZmYzM2Y2U1YyIKKworREVQRU5EUyArPSAidGNsIgorUkRFUEVORFNfJHtQTn0gPSAidGNsIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGVjdC9FeHBlY3QvJHtQVn0vJHtCUE59JHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdGNsLm00LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAxLWV4YW1wbGUtc2hlYmFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4cGVjdC1pbnN0YWxsLXNjcmlwdHMtd2l0aG91dC11c2luZy10aGUtZml4bGluZTEtdGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXNvbHZlLXN0cmluZy1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4cGVjdC1GaXgtc2VnZmF1bHRzLWlmLVRjbC1pcy1idWlsdC13aXRoLXN0dWJzLWFuZC0ucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMGZjZThkZTE1ODQyMmY1Y2NkMjY2NjUxMjMyOWJkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWE3ZGE4M2IwYmRkOWY0NmQwNGEwNGRlZWMxOWM3NzY3YmI5YTMyM2U0MGM0NzgxZjg5Y2FmNzYwYjkyYzM0IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBlY3QvZmlsZXMvRXhwZWN0LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9FeHBlY3QvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbyAgICR7RH0ke2xpYmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2ZpeGxpbmUxICAgICAgICAgICAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9leGFtcGxlLyogICAgICAgICAgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS8KKyAgICAgICAgcm0gJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS9saWJleHBlY3QqLnNvCisgICAgICAgIHNlZCAtZSAnc3wkZGlyfCR7bGliZGlyfXwnIC1pICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vcGtnSW5kZXgudGNsCit9CisKKyMgQXBwYXJlbnRseSB0aGUgcHVibGljIFRjbCBoZWFkZXJzIGFyZSBvbmx5IGluIC91c3IvaW5jbHVkZS90Y2w4LjYKKyMgd2hlbiBidWlsZGluZyBmb3IgdGhlIHRhcmdldC4KK1RDTF9JTkNMVURFX1BBVEggPSAiIgorVENMX0lOQ0xVREVfUEFUSF9jbGFzcy10YXJnZXQgPSAiLS13aXRoLXRjbGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0vdGNsOC42IgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC10Y2w9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgJHtUQ0xfSU5DTFVERV9QQVRIfSBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFX2luc3RhbGwgPSAiICdTQ1JJUFRTPScgIgorCitBTFRFUk5BVElWRV8ke1BOfSAgPSAibWtwYXNzd2QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWtwYXNzd2RdID0gIiR7YmluZGlyfS9ta3Bhc3N3ZCIKKyMgVXNlIGxvd2VyIHByaW9yaXR5IHRoYW4gYnVzeWJveCdzIG1rcGFzc3dkIChjcmVhdGVkIHdoZW4gYnVpbHQgd2l0aCBDT05GSUdfQ1JZUFRQVykKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW21rcGFzc3dkXSA9ICI0MCIKKworRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyX25hdGl2ZX0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3QuaCBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3RfdGNsLmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0X2NvbW0uaCBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS90Y2xkYmcuaCBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qLmggXAorICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmV4cGVjdCR7UFZ9LnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXhwZWN0JHtQVn0vKiBcCisgICAgICAgICAgICAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZDI0ZTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1TVU1NQVJZID0gInRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdCIKLURFU0NSSVBUSU9OID0gIkV4cGVjdCBpcyBhIHRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdC4gXAotRm9sbG93aW5nIHRoZSBzY3JpcHQsIEV4cGVjdCBrbm93cyB3aGF0IGNhbiBiZSBleHBlY3RlZCBmcm9tIGEgcHJvZ3JhbSBhbmQgd2hhdCBcCi10aGUgY29ycmVjdCByZXNwb25zZSBzaG91bGQgYmUuIEV4cGVjdCBpcyBhbHNvIHVzZWZ1bCBmb3IgdGVzdGluZyB0aGVzZSBzYW1lIFwKLWFwcGxpY2F0aW9ucy4gQW5kIGJ5IGFkZGluZyBUaywgeW91IGNhbiBhbHNvIHdyYXAgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGluIFwKLVgxMSBHVUlzLiBBbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBwcm92aWRlcyBicmFuY2hpbmcgYW5kIGhpZ2gtbGV2ZWwgY29udHJvbCBcCi1zdHJ1Y3R1cmVzIHRvIGRpcmVjdCB0aGUgZGlhbG9ndWUuIEluIGFkZGl0aW9uLCB0aGUgdXNlciBjYW4gdGFrZSBjb250cm9sIGFuZCBcCi1pbnRlcmFjdCBkaXJlY3RseSB3aGVuIGRlc2lyZWQsIGFmdGVyd2FyZCByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgc2NyaXB0LiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGVjdC8iCi1MSUNFTlNFID0gIlBEIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGljZW5zZS50ZXJtczttZDU9ZmJmMmRlN2U5MTAyNTA1YjE0MzlkYjA2ZmMzNmNlNWMiCi0KLURFUEVORFMgKz0gInRjbCIKLVJERVBFTkRTXyR7UE59ID0gInRjbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwZWN0L0V4cGVjdC8ke1BWfS8ke0JQTn0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi10Y2wubTQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDEtZXhhbXBsZS1zaGViYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZXhwZWN0LWluc3RhbGwtc2NyaXB0cy13aXRob3V0LXVzaW5nLXRoZS1maXhsaW5lMS10Yy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlc29sdmUtc3RyaW5nLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDRlMWE0ZjRjODc3ZTlkZGM1YTU0MmRmYTdlY2M5MmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjI4ZGNhOTA0MjhhM2IzMGU2NTA1MjVjZGMxNjI1NWQ3NmJiNmNjZDY1ZDQ0OGJlNTNlNjIwZDk1ZDVjYzA0MCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwZWN0L2ZpbGVzL0V4cGVjdC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvRXhwZWN0Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gICAke0R9JHtsaWJkaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9maXhsaW5lMSAgICAgICAgICAgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZXhhbXBsZS8qICAgICAgICAgICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vCi0gICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbwotICAgICAgICBzZWQgLWUgJ3N8JGRpcnwke2xpYmRpcn18JyAtaSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L3BrZ0luZGV4LnRjbAotfQotCi0jIEFwcGFyZW50bHkgdGhlIHB1YmxpYyBUY2wgaGVhZGVycyBhcmUgb25seSBpbiAvdXNyL2luY2x1ZGUvdGNsOC42Ci0jIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQuCi1UQ0xfSU5DTFVERV9QQVRIID0gIiIKLVRDTF9JTkNMVURFX1BBVEhfY2xhc3MtdGFyZ2V0ID0gIi0td2l0aC10Y2xpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9L3RjbDguNiIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgICR7VENMX0lOQ0xVREVfUEFUSH0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FTUFLRV9pbnN0YWxsID0gIiAnU0NSSVBUUz0nICIKLQotQUxURVJOQVRJVkVfJHtQTn0gID0gIm1rcGFzc3dkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21rcGFzc3dkXSA9ICIke2JpbmRpcn0vbWtwYXNzd2QiCi0jIFVzZSBsb3dlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBta3Bhc3N3ZCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0NSWVBUUFcpCi1BTFRFUk5BVElWRV9QUklPUklUWVtta3Bhc3N3ZF0gPSAiNDAiCi0KLUZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcl9uYXRpdmV9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0LmggXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0X3RjbC5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdF9jb21tLmggXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdGNsZGJnLmggXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKi5oIFwKLSAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJleHBlY3Qke1BWfS5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LyogXAotICAgICAgICAgICAgICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaAppbmRleCBkMzFhYzU5Li4zMTlmOWRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKQEAgLTE0LDE3ICsxNCwxNCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvbWFnaWMvTWFnZGlyL2NvbW1hbmRzIGIvbWFnaWMvTWFnZGlyL2NvbW1hbmRzCi1pbmRleCAxYTQ2ZWZkLi4yNTVjMDRiIDEwMDY0NAoraW5kZXggZjZhZDFjOC4uZjc5ZTdkZCAxMDA2NDQKIC0tLSBhL21hZ2ljL01hZ2Rpci9jb21tYW5kcwogKysrIGIvbWFnaWMvTWFnZGlyL2NvbW1hbmRzCiBAQCAtNTcsNiArNTcsNyBAQAogIDAJc3RyaW5nL3d0CSMhXCAvdXNyL2Jpbi9hd2sJYXdrIHNjcmlwdCB0ZXh0IGV4ZWN1dGFibGUKICAhOm1pbWUJdGV4dC94LWF3awotIDAJcmVnZXgvNDA5Ngk9XltBLVphLXowLTlfXXswLDEwMH1CRUdJTltBLVphLXowLTlfXXswLDEwMH1be10JYXdrIG9yIHBlcmwgc2NyaXB0IHRleHQKKyAwCXJlZ2V4LzQwOTYJPV5bXDA0MFx0XGZcclxuXXswLDEwMH1CRUdJTltcMDQwXHRcZlxyXG5dezAsMTAwfVt7XQlhd2sgb3IgcGVybCBzY3JpcHQgdGV4dAogKyE6c3RyZW5ndGggLSAxMgogIAogICMgQVQmVCBCZWxsIExhYnMnIFBsYW4gOSBzaGVsbAogIDAJc3RyaW5nL3d0CSMhXCAvYmluL3JjCVBsYW4gOSByYyBzaGVsbCBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjFmNTAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLSMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNSRVYgPSAiNzBjNWYxNTA2MGM3YWQ4MTE1MDE3N2RlODNhM2U2NDUwMGE1NGM5ZiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLXN0ZD1jOTkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUxNTkyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCisjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjaworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCisgICAgICAgICIKKworU1JDUkVWID0gImQ0NzRlMzU1MTM5NDBkYmNhMDM5YjUxMGI0ZGU3MDViNDRmNWJkOWMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaAppbmRleCAwMzI4MzNhLi4yOTc5MmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCkBAIC0yLDExICsyLDExIEBACiAKIFNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KIAotSW5kZXg6IGZsZXgtMi41LjM3L2RvYy9NYWtlZmlsZS5hbQorSW5kZXg6IGZsZXgtMi42LjAvZG9jL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxleC0yLjUuMzcub3JpZy9kb2MvTWFrZWZpbGUuYW0JMjAxMi0wNy0yMSAwNDoxODoyNy4wMDAwMDAwMDAgKzAzMDAKLSsrKyBmbGV4LTIuNS4zNy9kb2MvTWFrZWZpbGUuYW0JMjAxMy0wNy0zMCAxNzo1NzowOS44MzQ4MzQ1MzEgKzAzMDAKLUBAIC0yLDcgKzIsNyBAQAorLS0tIGZsZXgtMi42LjAub3JpZy9kb2MvTWFrZWZpbGUuYW0KKysrKyBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQorQEAgLTIsNyArMiw3IEBAIGhlbHAybWFuID0gQEhFTFAyTUFOQAogIAogIGluZm9fVEVYSU5GT1MgPQlmbGV4LnRleGkKICBkaXN0X21hbl9NQU5TID0gZmxleC4xCkBAIC0xNCw0ICsxNCw0IEBACiArRVhUUkFfRElTVD0gZmxleC5wZGYKICAKICBDTEVBTkZJTEVTID0gXAotIAlmbGV4LmhrcyBcCisgCWZsZXguYXV4IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKaW5kZXggYTkwNmZlOC4uYjg5Yjc1MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKQEAgLTQzLDYgKzQzLDEwIEBACiAJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmxleCBNND0ke000fQogfQogCitQQUNLQUdFUyA9KyAiJHtQTn0tbGliZmwiCisKK0ZJTEVTXyR7UE59LWxpYmZsID0gIiR7bGliZGlyfS9saWJmbC5zby4qICR7bGliZGlyfS9saWJmbF9waWMuc28uKiIKKwogUkRFUEVORFNfJHtQTn0gKz0gIm00IgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJlYWJlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi1yZXF1aXJlIGdjYy1jb21tb24uaW5jCi0KLSMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQotCi1QViA9ICI2LjQuMCIKLQotIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKLQotQklOViA9ICI2LjQuMCIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTYuNDoke0ZJTEVfRElSTkFNRX0vZ2NjLTYuNC9iYWNrcG9ydDoiCi0KLURFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIgotTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAotIgotCi0KLUJBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgotI1NSQ1JFViA9ICJiZDlhODI2ZDU0NDhkYjExZDI5ZDJlYzU4ODRlN2U2NzkwNjZmMTQwIgotI0JBU0VVUkkgPz0gImdpdDovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2M7YnJhbmNoPWdjYy02LWJyYW5jaDtwcm90b2NvbD1naXQiCi0jQkFTRVVSSSA/PSAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2djYy9zbmFwc2hvdHMvNi4yLjAtUkMtMjAxNjA4MTUvZ2NjLTYuMi4wLVJDLTIwMTYwODE1LnRhci5iejIiCi0KLVNSQ19VUkkgPSAiXAotICAgICAgICAgICAke0JBU0VVUkl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1EaXNhYmxlLXNkdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1leHBvcnQtQ1BQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ1LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ4LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoIFwKLSAgICAgICAgICAgJHtCQUNLUE9SVFN9IFwKLSIKLUJBQ0tQT1JUUyA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MTMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTctQVJNLVBSLTgyNDQ1LXN1cHByZXNzLTMyLWJpdC1hbGlnbmVkLWxkcmQtc3RyZC1wZWVwaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVuYWJsZS1GTF9MUEFFLWZsYWctZm9yLWFybXY3dmUtY29yZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pMzg2LU1vdmUtc3RydWN0LWl4ODZfZnJhbWUtdG8tbWFjaGluZV9mdW5jdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWkzODYtVXNlLXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm9pZC1jb3AucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1pMzg2LVVzZS1jb25zdC1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDcteDg2LUFkZC1WLXJlZ2lzdGVyLW9wZXJhbmQtbW9kaWZpZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktVXNlLUlOVkFMSURfUkVHTlVNLWluLWluZGlyZWN0LXRodW5rLXByb2Nlc3NpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1pMzg2LVVwZGF0ZS1tZnVuY3Rpb24tcmV0dXJuLWZvci1yZXR1cm4td2l0aC1wb3AucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1pMzg2LUFkZC1UQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTFiYTUxYTBjZmI4NDcxOTI3ZjM4N2M4ODk1ZmUyMzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODUwYmYyMWVhZmRmZTVjZDVmNjgyNzE0ODE4NGMwOGM0YTA4NTJhMzdjY2YzNmNlNjk4NTUzMzRkMmM5MTRkNCIKLQotUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgotCi0jIExhbmd1YWdlIE92ZXJyaWRlcwotRk9SVFJBTiA9ICIiCi1KQVZBID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgLS1lbmFibGUtbGlic3NwIFwKLSAgICAtLWVuYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLWRpc2FibGUtbGliZ29tcCBcCi0gICAgLS1kaXNhYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0tZGlzYWJsZS1sdG8gXAotICAgIC0tZGlzYWJsZS1wbHVnaW4gXAotICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAotICAgIC0td2l0aG91dC1pc2wgXAotICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAotIgotCi1FWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAotICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAotICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAotICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTVmMDkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA5MmVkMzBkYTE2Yjc0ODdiMzM0ZjczOWJlMTc3ZWIzOTg4NWFiNzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS80Nl0gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZSAgICB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDM1ZjIzMWUuLmJmYWRjMzMgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTc1NTAsNyArNzU1MCw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDc0YmY1OGEuLjE5N2Q2MWIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxNDksNyArMzE0OSw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZTdjOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNmRkZTNkYTI0ZWY0YjliMzU3YmNhNjcwZDg1NTFjYWIzZmRkYTg0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvNDZdIG1pc3NpbmctZXhlY2luZm9faAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGJvZWhtLWdjL2luY2x1ZGUvZ2MuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaCBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotaW5kZXggNmIzOGYyZC4uZmNhOThmZiAxMDA2NDQKLS0tLSBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotKysrIGIvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCi1AQCAtNTAzLDcgKzUwMyw3IEBAIEdDX0FQSSBHQ19QVFIgR0NfbWFsbG9jX2F0b21pY19pZ25vcmVfb2ZmX3BhZ2UgR0NfUFJPVE8oKHNpemVfdCBsYikpOwotICNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gIyBpbmNsdWRlIDxmZWF0dXJlcy5oPgotICMgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxIHx8IF9fR0xJQkNfXyA+IDIpIFwKLS0gICAgICYmICFkZWZpbmVkKF9faWE2NF9fKQotKyAgICAgJiYgIWRlZmluZWQoX19pYTY0X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0gIyAgIGlmbmRlZiBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgICAgZGVmaW5lIEdDX0hBVkVfQlVJTFRJTl9CQUNLVFJBQ0UKLSAjICAgZW5kaWYKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjM0MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYjc5NGYxZjFjMWM3YzA2ZjNmMGQ3OGNmNzZjNGZiOTBjMmFiOGRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjAzICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvNDZdIGM5OS1zbnByaW50ZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotaW5kZXggYTQxMTliYS4uODM5NmY0MyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHVzaW5nIDo6dnNwcmludGY7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8KLSsjaWYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTyB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gCi0gI3VuZGVmIHNucHJpbnRmCi0gI3VuZGVmIHZmc2NhbmYKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzRjZjQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi1Gcm9tIGQ3NjI1MDMyM2RhZDY5MjEyYzk1OGU0ODU3YTk4ZDk5YWI1MWEzOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzQ2XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KLS0tLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCi0gZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKwotIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCi0gZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IDY3MDQ4ZGIuLjczMzE4NWMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29tbW9uLm9wdAotKysrIGIvZ2NjL2NvbW1vbi5vcHQKLUBAIC02NTksNiArNjU5LDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgotIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCi0gV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KLSAKLStXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKLStXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCi0rCi0gV3NoYWRvdwotIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKLSBXYXJuIHdoZW4gb25lIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgotaW5kZXggMTE1Y2I2MS4uMTA1YjMwZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuaW4KLSsrKyBiL2djYy9jb25maWcuaW4KLUBAIC0xODcsNiArMTg3LDEyIEBACi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLwotKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQotICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KLSAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMWM2ZTM0MC4uOGY4MzE1MiAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC05NDIsNiArOTQyLDcgQEAgd2l0aF9zeXN0ZW1femxpYgotIGVuYWJsZV9tYWludGFpbmVyX21vZGUKLSBlbmFibGVfbGlua19tdXRleAotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0gZW5hYmxlX3BsdWdpbgotIGVuYWJsZV9ob3N0X3NoYXJlZAotIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0Ci1AQCAtMTY4MSw2ICsxNjgyLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicwotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5Ci0rICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKLSAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAotICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKLSAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0Ci1AQCAtMjg5MDgsNiArMjg5MTEsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotIGZpCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLStlbHNlCi0rICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubwotK2ZpCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDZjMWRjZDkuLjBmY2NhZWYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTg2MSw2ICs1ODYxLDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCi0gICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCi0gCi0rQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKLSsgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgICAgIFsxXSwKLSsgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIEFDX1NVQlNUKHN1YmRpcnMpCi0gQUNfU1VCU1Qoc3JjZGlyKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCA4MjFmOGZkLi44YmI0OWU3IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTI4NCw2ICsyODQsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLVdwYXJlbnRoZXNlcyAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCi0gLVdwbGFjZW1lbnQtbmV3IC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKLSAtV3BvaW50ZXItYXJpdGggIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCi0rLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKLSAtV25vLXByYWdtYXMgLVdyZWR1bmRhbnQtZGVjbHMgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAotIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKLSAtV3NoaWZ0LW92ZXJmbG93IC1Xc2hpZnQtb3ZlcmZsb3c9QHZhcntufSBAZ29sCi1AQCAtNDcyMyw2ICs0NzI0LDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCAxYWY1OTIwLi40Y2ZlZjdmIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDE3LDYgKzEwMTcsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgIiV7ZnVzZS1sZD0qOi1mdXNlLWxkPSUqfSAiIExJTktfQ09NUFJFU1NfREVCVUdfU1BFQyBcCi0gICAgIiVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAotICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolU319IFwKLSsgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKLSsgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKLSAgICAgJXtzdGF0aWM6fSAle0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCi0gICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIENIS1BfU1BFQyAiIFwKLSAgICAgJXtmb3BlbmFjY3xmb3Blbm1wfCU6Z3QoJXtmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiUqfSAxKTpcCi1kaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKLWluZGV4IGVhNDBmNGEuLjg1NmRhNDEgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzgxLDYgKzM4MiwyNCBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotIAl9Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgIHsKLSsgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7Ci0rCi0rICAgICAgIGZvciAocCA9IGhlYWRzW1FVT1RFXTsgcDsgcCA9IHAtPm5leHQpCi0rICAgICAgICAgewotKyAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKLSsgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0rICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7Ci0rICAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTczNmFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGExYzI0YjU5ZGVmMzkzZTQzY2Q1MGI2NzY4NjA0YTIxMmM3ODhlZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowMDozNCArMDQwMAotU3ViamVjdDogW1BBVENIIDExLzQ2XSBnY2MtcG9pc29uLWRpci1leHRlbmQKLQotQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi16ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCi0vdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKLWFib3J0ZWQuCi0KLUluc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCi13YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9pbmNwYXRoLmMgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggODU2ZGE0MS4uZDJmYzgyYyAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0zOTIsNyArMzkyLDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0gICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0tICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQotICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzliMDcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gMDBlZjVmMGYyYThkM2IzM2FlYjFlNTVjMGQyMzQzOWY0ZGQ0OTVhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvNDZdIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAotCi1CZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgotCi1UaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCi0KLU90aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKLQotLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgotCi0tIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCi0KLUJvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPwotCi1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGJmYWRjMzMuLjc1NWQzODIgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTY4MTksNiArNjgxOSwzOCBAQCBmaQotIAotIAotIAotKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCi0rIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKLSsjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgotKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCi0rIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCi0rIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KLStpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0gIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCi0gIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KLSBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzFjZGU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gN2ZjN2EwNzBhYzUzYTU1OTUwYTFlYWM3NmYwMjg3N2Q0MTA2YjRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvNDZdIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgotCi1HQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQotbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cwotY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKLWFuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Ci1rbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCi1wZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgotCi1UaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAotdGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCi1hbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQotZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbwotYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCi0KLVJQIDE1LzgvMTEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgfCAgNiArKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgfCAxMCArKystLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgIDUgKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotaW5kZXggYzBjYzhhMy4uMzY1YTVkNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLUBAIC0zMiw3ICszMiw1IEBACi0gIwotIGNvbW1hPSwKLSBNVUxUSUxJQl9PUFRJT05TICAgID0gJChzdWJzdCAkKGNvbW1hKSwvLCQoVE1fTVVMVElMSUJfQ09ORklHKSkKLS1NVUxUSUxJQl9ESVJOQU1FUyAgID0gJChwYXRzdWJzdCBtJSwgJSwgJChzdWJzdCAvLCAsJChNVUxUSUxJQl9PUFRJT05TKSkpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDppMzg2LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbXgzMj0uLi9saWJ4MzIkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251eDMyKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLWluZGV4IDE2YzhhZGYuLmI5MzJhY2UgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1AQCAtMTcsMTAgKzE3LDYgQEAKLSAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0Ci0tTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKLS1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKLS1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAotLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotKwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotaW5kZXggZmE3NTUwYi4uOWI1ZDllZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1AQCAtMjYsMTAgKzI2LDkgQEAKLSAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KLSAKLSBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKLS1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCi0rTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KLSBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0gCi0gcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCi0gCSQoQ09NUElMRSkgJDwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRiMGNjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1Gcm9tIDM2Mjc1Zjc5ODFiZGFmOTE5YmJjOWI1MWE3YzdmYWUxZTE5MmFkYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDE0LzQ2XSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKwotIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggNGY4Njg3Ni4uNjYwZGE2YyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAotKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1AQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAIG5vc3RkaW5jKysKLSBDKysgT2JqQysrCi0gRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKLWluZGV4IDAzY2JkZTAuLjM2NDI1NDAgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvZysrc3BlYy5jCi0rKysgYi9nY2MvY3AvZysrc3BlYy5jCi1AQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCi0gICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQotIAl7Ci0gCWNhc2UgT1BUX25vc3RkbGliOgotKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgotIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgotIAkgIGxpYnJhcnkgPSAtMTsKLSAJICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggOGJiNDllNy4uODRkNjhhYSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yMDcsNiArMjA3LDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAotKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSstZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLSAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yIC1XbGl0ZXJhbC1zdWZmaXggLVdtdWx0aXBsZS1pbmhlcml0YW5jZSBAZ29sCi1AQCAtNDcwLDcgKzQ3Myw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtcyAgLXN0YXRpYyAtc3RhdGljLWxpYmdjYyAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCi0gLXN0YXRpYy1saWJhc2FuIC1zdGF0aWMtbGlidHNhbiAtc3RhdGljLWxpYmxzYW4gLXN0YXRpYy1saWJ1YnNhbiBAZ29sCi0gLXN0YXRpYy1saWJtcHggLXN0YXRpYy1saWJtcHh3cmFwcGVycyBAZ29sCi0tLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKLSstc2hhcmVkIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAotIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKLSAtdSBAdmFye3N5bWJvbH0gLXogQHZhcntrZXl3b3JkfX0KLSAKLUBAIC0xMDYwMSw2ICsxMDYwNCwzMyBAQCBsaWJyYXJ5IHN1YnJvdXRpbmVzLgotIGNvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAotIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQotIAotK0BpdGVtIC1ub3N0ZGxpYisrCi0rQG9waW5kZXggbm9zdGRsaWIrKwotK0RvIG5vdCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBDKysgcnVudGltZSBsaWJyYXJpZXMgd2hlbiBsaW5raW5nLgotK09ubHkgdGhlIGxpYnJhcmllcyB5b3Ugc3BlY2lmeSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgbGlua2VyLgotKwotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbm9zdGRsaWJ9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKLStAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9kZWZhdWx0bGlic30KLStAY2luZGV4IEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKLStAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9kZWZhdWx0bGlic30KLStPbmUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyBieXBhc3NlZCBieSBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kCi0rQG9wdGlvbnstbm9kZWZhdWx0bGlic30gaXMgQGZpbGV7bGliZ2NjLmF9LCBhIGxpYnJhcnkgb2YgaW50ZXJuYWwgc3Vicm91dGluZXMKLSt3aGljaCBHQ0MgdXNlcyB0byBvdmVyY29tZSBzaG9ydGNvbWluZ3Mgb2YgcGFydGljdWxhciBtYWNoaW5lcywgb3Igc3BlY2lhbAotK25lZWRzIGZvciBzb21lIGxhbmd1YWdlcy4KLSsoQHhyZWZ7SW50ZXJmYWNlLCxJbnRlcmZhY2luZyB0byBHQ0MgT3V0cHV0LGdjY2ludCxHTlUgQ29tcGlsZXIKLStDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30sCi0rZm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiBAZmlsZXtsaWJnY2MuYX0uKQotK0luIG1vc3QgY2FzZXMsIHlvdSBuZWVkIEBmaWxle2xpYmdjYy5hfSBldmVuIHdoZW4geW91IHdhbnQgdG8gYXZvaWQKLStvdGhlciBzdGFuZGFyZCBsaWJyYXJpZXMuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB5b3Ugc3BlY2lmeSBAb3B0aW9uey1ub3N0ZGxpYn0KLStvciBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSB5b3Ugc2hvdWxkIHVzdWFsbHkgc3BlY2lmeSBAb3B0aW9uey1sZ2NjfSBhcyB3ZWxsLgotK1RoaXMgZW5zdXJlcyB0aGF0IHlvdSBoYXZlIG5vIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBHQ0MKLStsaWJyYXJ5IHN1YnJvdXRpbmVzLgotKyhBbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW50ZXJuYWwgc3Vicm91dGluZSBpcyBAY29kZXtfX21haW59LCB1c2VkIHRvIGVuc3VyZSBDKysKLStjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKLStHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKLSsKLSBAaXRlbSAtcGllCi0gQG9waW5kZXggcGllCi0gUHJvZHVjZSBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgaXQuCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA0Y2ZlZjdmLi5kYTBiNDgyIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDI4LDYgKzEwMjgsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKLSAjZW5kaWYKLSAKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYzczNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gOTM0NmY2MDQyZDhmN2Y4NWE3NWNhMmFmMTVmM2I4ZDIzNDk4NTE2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE0OjIwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvNDZdIGdjYzogZGlzYWJsZSBNQVNLX1JFTEFYX1BJQ19DQUxMUyBiaXQKLQotVGhlIG5ldyBmZWF0dXJlIGFkZGVkIGFmdGVyIDQuMy4zCi0iaHR0cDovL3d3dy5wdWJicy5uZXQvMjAwOTA5L2djYy85NDA0OC1wYXRjaC1hZGQtc3VwcG9ydC1mb3Itcm1pcHNqYWxyLmh0bWwiCi13aWxsIGNhdXNlIGNjMXBsdXMgZWF0IHVwIGFsbCB0aGUgc3lzdGVtIG1lbW9yeSB3aGVuIGJ1aWxkIHdlYmtpdC1ndGsuCi1UaGUgZnVuY3Rpb24gbWlwc19nZXRfcGljX2NhbGxfc3ltYm9sIGtlZXBzIG9uIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaXRzZWxmLgotRGlzYWJsZSB0aGlzIGZlYXR1cmUgdG8gd2FsayBhc2lkZSB0aGUgYnVnLgotCi1TaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDcgLS0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCA3IC0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDhmODMxNTIuLjVlNzJmMTcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjcwMTgsMTMgKzI3MDE4LDYgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgZm9yIGV4cGxpY2l0IEpBTFIgcmVsb2NhdGlvbi4uLiAiID4mNjsKLSAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKLSAgICAgICBmaQotICAgICBmaQotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgotLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKLS0gICAgICBlbHNlCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKLS0gICAgICBmaQotLSAgICBmaQotICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjUKLSAkYXNfZWNobyAiJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMGZjY2FlZi4uZGQ4ZjZmYSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC00NTIyLDEzICs0NTIyLDYgQEAgeDoKLSAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKLSAgICAgICBmaQotICAgICBmaQotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgotLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKLS0gICAgICBlbHNlCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKLS0gICAgICBmaQotLSAgICBmaQotICAgICBBQ19NU0dfUkVTVUxUKCRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYykKLSAKLSAgICAgQUNfQ0FDSEVfQ0hFQ0soW2xpbmtlciBmb3IgLmVoX2ZyYW1lIHBlcnNvbmFsaXR5IHJlbGF4YXRpb25dLAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTU0ODY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAxMDMzYmMyZDRlZmM1YzMwMWJiODIyYjYwN2E2NzNmNWIxMGNjNjlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTY6MjggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi80Nl0gQ09MTEVDVF9HQ0NfT1BUSU9OUwotCi1UaGlzIHBhdGNoIGFkZHMgLS1zeXNyb290IGludG8gQ09MTEVDVF9HQ0NfT1BUSU9OUyB3aGljaCBpcyB1c2VkIHRvCi1pbnZva2UgY29sbGVjdDIuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2djYy5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGRhMGI0ODIuLjdjYTEyOWYgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTQ1OTEsNiArNDU5MSwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKLSAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKLSAKLSAgIGZpcnN0X3RpbWUgPSBUUlVFOwotKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKLSsgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCi0rICAgIHsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOwotKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKLSsgICAgfQotKyNlbmRpZgotICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYmFiZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSA2NzEyM2EzMDY4ODBhZjk5N2E5OWFlNTE0Njc3YzJkYTQ5NzNiZDFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy80Nl0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgotICR7Qn0KLQotVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Ci10aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1XaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKLW9jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Ci13b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KLXRtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJwotCi1TbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQotIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KLSBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDZjNWFkYzAuLjlhMWQ0NjYgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTUxNyw3ICs1MTcsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAotLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACi0rdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCi0gVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDVlNzJmMTcuLjM4OWI2ZDUgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIxMzAsOCArMTIxMzAsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBkZDhmNmZhLi45MWFjODAwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE4ODMsOCArMTg4Myw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCi1pbmRleCA2N2RmYWM2Li5iNzNlMDhkIDEwMDY0NAotLS0tIGEvZ2NjL21rY29uZmlnLnNoCi0rKysgYi9nY2MvbWtjb25maWcuc2gKLUBAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCi0gICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgotIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCi0gCWZvciBmaWxlIGluICIkQCI7IGRvCi0tCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKLSAJICAgIGVsc2UKLSAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKLUBAIC0xMDksNyArMTA5LDcgQEAgZXNhYwotIAotICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KLSBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCi0tICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotIGZpCi0gCi0gIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2Q4OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBlMzYwZGMzZTBmMWUwYjliMDAxZWY3MjJmY2Y2NmY4MTIwYTAzZGJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOC80Nl0gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCi0KLSogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCi11c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCi1kaXJlY3RvcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAyICstCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1pbmRleCBmNzQ2ZjZmLi5iNGYzMjc4IDEwMDc1NQotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLUBAIC0xMjczNCw3ICsxMjczNCw3IEBAIGVzYWMKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9Ci0gYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLWluZGV4IDhmMzc3YmIuLjY3NzEwYjUgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotQEAgLTI0MCw3ICsyNDAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBBQ19QUk9HX0ZDKGdmb3J0cmFuKQotIAotICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3YTVlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDk4ZDljMGMxYjU1NTIyOTRiMjEzMGY3MzA0YmZiNTIyZGEzMjM0NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDE5LzQ2XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCi0KLUN1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQotcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgotcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCi1wZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgotCi1UaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCi0KLVRoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAotLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KLQotW1lPQ1RPICMyMDc0XQotCi1SUCAyMDEyLzA0LzEzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLWluZGV4IDk3MDdmYWMuLmZlNDg3YTIgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCi0rKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1AQCAtNjQsNSArNjQsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjKystY3BwLW91dHB1dCIsCi0gICAgIiV7IU06JXshTU06JXshRTpcCi0tICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTJcCi0rICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTJcCi0gICAgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA3Y2ExMjlmLi4wNGZhODFkIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMzI5LDcgKzEzMjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBpbGVyIGRlZmF1bHRfY29tcGlsZXJzW10gPQotIAkJCQkJICAgJVd7byo6LS1vdXRwdXQtcGNoPSUqfX0lVn19fX19fX0iLCAwLCAwLCAwfSwKLSAgIHsiLmkiLCAiQGNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGNwcC1vdXRwdXQiLAotLSAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0rICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSAgIHsiLnMiLCAiQGFzc2VtYmxlciIsIDAsIDAsIDB9LAotICAgeyJAYXNzZW1ibGVyIiwKLSAgICAiJXshTToleyFNTToleyFFOiV7IVM6YXMgJShhc21fZGVidWcpICUoYXNtX29wdGlvbnMpICVpICVBIH19fX0iLCAwLCAwLCAwfSwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE2MTJmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gMWYxNTQ0N2ZiY2Y2NTE0MjYyN2FmOGE5Njk0NzYxNTM0ZGE4ZDBkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvNDZdIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCi0KLU1JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0Ci1zbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCi0tLS0KLSBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggZjY2ZTQ4Yy4uOWM2ZDE1NiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuZ2NjCi0rKysgYi9nY2MvY29uZmlnLmdjYwotQEAgLTIwNjUsMjkgKzIwNjUsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKLSAJCQk7OwotIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgotIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCi0gCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAllc2FjCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIxLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NzVjZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIxLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotRnJvbSA5ZjczYzg5MThiNjNlNmExYzliNzkzODRmYWM0MTFkMTA1NmVlYzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyMS80Nl0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgotCi1UaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycwotVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYwotQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKLVNILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCi0KLVJlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNiArKysrKystLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KLSAxMSBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1pbmRleCBhMDc2NGQzLi4wMmY3YTdjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotQEAgLTIzLDggKzIzLDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEVYVFJBX1NQRUNTIFwKLSB7ICJlbGZfZHluYW1pY19saW5rZXIiLCBFTEZfRFlOQU1JQ19MSU5LRVIgfSwKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCSIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUglTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotaW5kZXggYWNlODQ4MS4uNDAxMDQzNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtNjgsOCArNjgsOCBAQAotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCi0gCi0gI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1pbmRleCBhOTRiZDJkLi4wMjIwNjI4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1AQCAtNjIsNyArNjIsNyBAQAotIAotICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCi0gICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1pbmRleCBkMzdhODc1Li5lZGRlNTg2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1AQCAtMjAsNyArMjAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTiAiZWxmX2kzODYiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLWluZGV4IDczZDIyZTMuLmY0YjU2MTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1AQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggOWFlZWI5NC4uYjA1NTY1MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtODEsMTAgKzgxLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCi0gICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggZmEyNTNiNi4uZGEwMmM4ZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtbWlwcyV7RUw6ZWx9JXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCBmZWZhMGM0Li43MTczOTM4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC00MTIsMTYgKzQxMiwxMSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQwotICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCi0tCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgotICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCi0gI2Vsc2UKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKLS0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCi1AQCAtNDI5LDggKzQyNCw5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAotICAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgXAotICAgIiV7bWdsaWJjOiIgRyAiOzole21tdXNsOiIgTSAiOzoiIFUgIn19IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAotaW5kZXggMmEwMzZhYy4uNTBmYjczNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAotICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKLSAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1pbmRleCA5YjMyNTc3Li43YmQ2NmRlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLUBAIC04Myw3ICs4Myw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUgKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7Ci0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAle3NoYXJlZDotc2hhcmVkfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotaW5kZXggYTFlZjMyNS4uM2JhZTNkNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjaWZkZWYgU1BBUkNfQklfQVJDSAotIAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFiNmU0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhY2NlNTE1N2Y2YjNhMWRjOWEzNjc2YjcxMThhYzg4N2RjNTY5M2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyMi80Nl0gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KLQotVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCi1idWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKLQotaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAotCi1UaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCi1pdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAotd291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCi1UaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCi0kKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDlhMWQ0NjYuLjQ1MGNiNzkgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTMzNDksNyArMzM0OSw3IEBAIGluc3RhbGwtcGx1Z2luOiBpbnN0YWxsZGlycyBsYW5nLmluc3RhbGwtcGx1Z2luIHMtaGVhZGVyLXZhcnMgaW5zdGFsbC1nZW5ndHlwZQotICMgV2Uga2VlcCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgZmlsZXMgaW4gY29uZmlnIG9yIGMtZmFtaWx5IGFuZCAuZGVmCi0gIyBmaWxlcy4gQWxsIG90aGVyIGZpbGVzIGFyZSBmbGF0dGVuZWQgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LgotIAkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKHBsdWdpbl9pbmNsdWRlZGlyKQotLQloZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgOyBcCi0rCWhlYWRlcnM9IiQoc29ydCAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSkiOyBcCi0gCXNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2A7IFwKLSAJZm9yIGZpbGUgaW4gJCRoZWFkZXJzOyBkbyBcCi0gCSAgaWYgWyAtZiAkJGZpbGUgXSA7IHRoZW4gXAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjMtRGlzYWJsZS1zZHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjMtRGlzYWJsZS1zZHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZmQ4OTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIzLURpc2FibGUtc2R0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gNjU3M2FlYzAwYWRhMzVjNDhjMTgzOGM4NDkxY2U4Zjc3OThhZTk5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvNDZdIERpc2FibGUgc2R0LgotCi1XZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCi1JdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQotc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCi1idXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KLQotUlAgMjAxMi84LzcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KLS0tLQotIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMzg5YjZkNS4uNzNjMjY0ZCAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yODUyOCwxMiArMjg1MjgsMTIgQEAgZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9Ci0gaGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLQotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotLQotLWZpCi0rI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotKyMgIGhhdmVfc3lzX3NkdF9oPXllcwotKyMKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0rIwotKyNmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA5MWFjODAwLi5jZWNmMTIxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU1MTQsMTUgKzU1MTQsMTUgQEAgZmkKLSBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggOGE1NDgxYy4uNmE0MGU5MiAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMTczNSwxMSArMjE3MzUsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCA5ZTE5ZTk5Li4wMDc3ZmZkIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotQEAgLTIzMCw3ICsyMzAsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KLSBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KLSBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCi0gR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQotLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKLSsjR0xJQkNYWF9DSEVDS19TRFRfSAotIAotICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjQtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNC1saWJ0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjczYjVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNC1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA2YzBhYTVjMjUzODgyOTI0ODU0NzE5NzcxODAzN2ZmMGI5Nzg4Njc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC80Nl0gbGlidG9vbAotCi1saWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Ci13aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCi0KLVRoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgotQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKLWZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCi0KLWZ1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKLXRvIGZpbHRlciB0aGUgemVybyBjYXNlLgotCi1SUCAyMDEyLzgvMjQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsdG1haW4uc2ggfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzguLjAxMjFmYmEgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgotIAotICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKLSsgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCi0rCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKLSsJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rICAgICAgZmkKLSAKLSAgICAgICBvbGRsaWJzPQotICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3ZWU0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYjEyNjNhNDg1NTNjZTc1ZjhjM2JlZDRmZTEyMTIyYWY1Nzg0NTU2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvNDZdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDQwMTA0MzUuLmFhZWExYzkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTk0LDEwICs5NCwxNCBAQAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCi0gICAiL2xpYi9sZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKLSAKLSsvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KLSsjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSsjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKLSsjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKLSAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKLSAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKLSAKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUyNWJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGI1YzMwNWZjMjUxMjk5ZjJlMzI4NDEwYjE4Y2ZiNTVjNzViNWYwMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAotU3ViamVjdDogW1BBVENIIDI2LzQ2XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgotIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotCi1Vc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLXNvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDczYzI2NGQuLjM3NzI1M2UgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIxMTAsMTAgKzEyMTEwLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTIxMjQsNiArMTIxMzQsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggY2VjZjEyMS4uNTRlNzYxOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODYzLDEwICsxODYzLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTg3Nyw2ICsxODg3LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYmJlYmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGViNjE3OGI3ZmI0NjZhZTQyOWM1NjM4MGM2ZGJjNTY0YTE2ZDkwMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDI3LzQ2XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQotIGhvc3QgcGF0aAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDAxMjFmYmEuLjUyYmRiZGIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOC1leHBvcnQtQ1BQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI4LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMTI1MzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI4LWV4cG9ydC1DUFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDYxNzE4NGYzNWU5NzkzNGQ5ZTYyNjhlNzEzNzg1NzRlMmI3NzZjMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDI4LzQ2XSBleHBvcnQgQ1BQCi0KLVRoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgotYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCi1pbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6Ci0KLWNvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcwotY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Ci1jb25maWd1cmU6MzY2NjogJD8gPSAwCi1jb25maWd1cmU6MzY5ODogcmVzdWx0OiBubwotY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCi1jb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCi1jb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCi1jb25maWd1cmU6Mzg3NjogJD8gPSAwCi0KLU5vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQotdXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKLWhlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCi1pbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAotZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCi0KLVRoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCi1lbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCi10aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bwotYXZvaWQgdGhlIHByb2JsZW0uCi0KLVJQIDIyLzA4LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMTUyMmUzOS4uYmViOWI5YSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YjljMGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGUxNDA3MDA5NzZlM2I3ZWI0MjUwYjFmZmRlOWJjMTY0OTQ0NTY5MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBXZWQsIDUgRmViIDIwMTQgMTY6NTI6MzEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyOS80Nl0gRW5hYmxlIFNQRSAmIEFsdGlWZWMgZ2VuZXJhdGlvbiBvbiBwb3dlcGMqbGludXggdGFyZ2V0Ci0KLVdoZW4gaXMgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXgsIHRoZSByZXN1bHRpbmcgR0NDIHdpbGwKLW5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIFNQRSB0YXJnZXRzIChlNTAwdjEvdjIpLgotR0NDIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4c3BlIHdpbGwgbm90IGJlIGFibGUgdG8KLWdlbmVyYXRlIEFsdGlWZWMgaW5zdHJ1Y3Rpb25zIChmb3IgZTY1MDApLgotVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlndXJlZCBmaWxlIHN1Y2ggdGhhdCBTUEUgb3IgQWx0aVZlYyBjb2RlCi1jYW4gYmUgZ2VuZXJhdGVkIHdoZW4gZ2NjIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LgotVGhlIEFCSSBhbmQgc3BlY2lmZmljIGluc3RydWN0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUKLSItbWFiaT1zcGUgb3IgLW1hYmk9YWx0aXZlYyIgYW5kIHRoZSAiLW1zcGUgb3IgLW1hbHRpdmVjIiBwYXJhbWV0ZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KLS0tLQotIGdjYy9jb25maWcuZ2NjICAgICAgICAgICAgICAgfCA5ICsrKysrKysrLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmggfCAzIC0tLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggOWM2ZDE1Ni4uMThjZmY1YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuZ2NjCi0rKysgYi9nY2MvY29uZmlnLmdjYwotQEAgLTIzOTIsNyArMjM5MiwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJOzsKLSBwb3dlcnBjKi0qLWxpbnV4KikKLS0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCWNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQotKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCQk7OwotKwkgICAgKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgotKwkJOzsKLSsJZXNhYwotIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCi0gCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgotIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAotaW5kZXggMzU2MjNjZC4uZjc0ZTAwZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLUBAIC0yNyw2ICsyNywzIEBACi0gI3VuZGVmCVRBUkdFVF9ERUZBVUxUCi0gI2RlZmluZSBUQVJHRVRfREVGQVVMVCBNQVNLX1NUUklDVF9BTElHTgotICNlbmRpZgotLQotLSN1bmRlZiAgQVNNX0RFRkFVTFRfU1BFQwotLSNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMgLW1zcGUgLW1lNTAwIgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDlkMDE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAwZGRjYjk1YTg2ODMwNzY2ZmQwMjEyMmYxOTM4NGZjOTI5YjM3N2M1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMC80Nl0gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKLSBvcHRpb25zLgotCi1IYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KLXN5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKLUFCSSwgYXMKLWxvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KLQotV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCi1ub3JtYWwgbGliZGlyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotaW5kZXggMWNmZTlmMy4uZDY4OGFjOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSw4ICsyMSw4IEBACi0gTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCi0gTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQotIAotLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIKLSsjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIxY2QwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1Gcm9tIGZjNjYyMTQzNWE2NGE5ZDY5YWEyNTFiNzAzNjFkYTk0Y2YyZGI2YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAotU3ViamVjdDogW1BBVENIIDMxLzQ2XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAotCi1UaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCi1nY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKLWJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0Ci1zeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCi1mb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKLXBpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCi1jb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKysKLSBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCi0gZ2NjL2RlZmF1bHRzLmggICB8IDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICB8IDcgLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggNDUwY2I3OS4uY2M3NTUzNiAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNTkzLDYgKzU5Myw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCi0gbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yNjg4LDYgKzI2ODksNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggNTRhYWYwNi4uN2I0ZGQ1MSAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSsjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2RlZmF1bHRzLmggYi9nY2MvZGVmYXVsdHMuaAotaW5kZXggM2UxODMzOC4uMGYzMTdmMiAxMDA2NDQKLS0tLSBhL2djYy9kZWZhdWx0cy5oCi0rKysgYi9nY2MvZGVmYXVsdHMuaAotQEAgLTE0OTIsNCArMTQ5MiwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIERXQVJGX0dOQVRfRU5DT0RJTkdTX0RFRkFVTFQgRFdBUkZfR05BVF9FTkNPRElOR1NfR0RCCi0gI2VuZGlmCi0gCi0rLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0rCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0rI2VuZGlmCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotKyNlbmRpZgotKwotICNlbmRpZiAgLyogISBHQ0NfREVGQVVMVFNfSCAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMDRmYTgxZC4uOTc1MGNjMiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTQ1MCwxMyArMTQ1MCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7Ci0gCi0gLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0gCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0tI2VuZGlmCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotLSNlbmRpZgotLQotICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLwotICN1bmRlZiBNRF9FWEVDX1BSRUZJWAotICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYjAwMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGZmOTM5YzUwNjNkOGY4ZDQ0NGJkYjI1NjUxYTBhNDhlNjA4ZWZhYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDMyLzQ2XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCi0KLXNpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgotCi1UaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0oUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQotaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKLQotUlAKLTIwMTIvMDkvMjIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCi0gbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotaW5kZXggYjM1MTI0NC4uMzk5Y2UxOCAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1AQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotIAotLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KLSBNX1NJWkUJCT0gLUROPSQoUEFUX04pCi0gTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYwotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotaW5kZXggYTA4M2Q4Ny4uYTkyY2ZjZSAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1AQCAtMzMwLDcgKzMzMCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQotIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0tTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMgPQotIE1fU0laRSA9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMzLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MjVkNzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMzLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDUwOTJmNTM4OWQwMmU3OGNkNTk2OTBjZjNmY2EyNGI1NmE5N2FmZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvNDZdIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKLSAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKLQotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA1MmJkYmRiLi44MmJjZWMzIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0rCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgotIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0tCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSsKLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmE4NTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDFmYWE2ZjY5ZjkzYmI5NWFmMmIyYjJiZDI0ZTE4MWI1MGZiNWIzN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDM0LzQ2XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCi0gYmFzZV9saWJkaXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBDb25maWd1cmF0aW9uXQotCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA1ZmNhYTU5Li44NTg4YWMwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKLSAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRmYzQ3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAzNzY4NDY4YzFhNmNjMTcwZmZmODhjMDNiODA4Yzk3NWFjNjUzODExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNS80Nl0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIENvbmZpZ3VyYXRpb25dCi0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IDg1ODhhYzAuLjk0NmIzY2EgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjQsNyArMjQsNyBAQAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4OWE4ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gZjRkM2M4ZTk3MGQ0MmE0M2NkM2QyZjc1MWUxMzMyNGVmYTkzNmZmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzYvNDZdIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKLQotKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KLSAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQotICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgotKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKLSAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKLSAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCi0gW3JwYXRoc10KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQotIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCi1pbmRleCBiNDA4MjBiLi4zMjkzMGM1IDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KLUBAIC0zNSw4ICszNSw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotIAotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIAotIGlmIEVOQUJMRV9QTFVHSU4KLSBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KLWluZGV4IDc5ZDM5ZDMuLjIyN2VjMjIgMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgotQEAgLTI5MSw4ICsyOTEsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIAotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYQotIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCi0gQlVJTFRfU09VUkNFUyA9IGNvbXBpbGVyLW5hbWUuaAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWVmY2IxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLUZyb20gMTQ3NWI5NDFkN2E5Yzk4NzRiMGZiMDU1OGQwMTgwNTk0NTQ2NzMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNy80Nl0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYwotCi1CZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcwotd2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCi1iaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KLQotU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKLW5hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCi1saWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCi1pbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKLWJhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KLQotSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKLQotYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKLSAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCi1iKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgotICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxNS83LzI4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCi0gZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCA3YjRkZDUxLi45ZDExNjZjIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IDhhODFiNDUuLjk3NTllZmQgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5oCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5oCi1AQCAtMzMsNyArMzMsOCBAQAotIAotIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKLSB7Ci0tICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKwotICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQotIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLwotICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDk3NTBjYzIuLjk0YzI0MGUgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTI0Nyw2ICsyNDcsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7Ci0gI2VuZGlmCi0gc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOwotIAotK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7Ci0rCi0gLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLwotIAotIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7Ci1AQCAtNTE3LDYgKzUxOSw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KLSAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgotICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKLSAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KLSsgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKLSAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCi1AQCAtMTQ3MywxMCArMTQ3NiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQotICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0Ci0gICAgbG9jYXRpb24gaW5zdGVhZC4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIAotIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCi0gICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCi1AQCAtMTQ4NCw5ICsxNDg3LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7Ci0gCi0gLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKLUBAIC01NzYyLDYgKzU3NjUsMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQotIAkgICAgICB9Ci0gCSAgICBicmVhazsKLSAKLSsgICAgICAgICAgY2FzZSAncic6Ci0rICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAotKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rCi0gCSAgY2FzZSAnUyc6Ci0gCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOwotIAkgICAgaWYgKHZhbHVlICE9IDApCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM4LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZWU3OWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM4LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSA0MmU0Y2RjYWFkNTkwNTM2MjQ2ODY2YjA4NDZlYzI3OWUxMjRmYTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDM4LzQ2XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCi0gbXVsdGlsaWIuCi0KLVdlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bwotPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLwotd2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCi1jb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCi10aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKLWNvLWV4aXN0IG9uIHRhcmdldC4KLQotV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCi1mb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCi08dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgotbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4Ci1pcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCi0KLVRoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgotaXM6Ci0KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotd2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcwotd2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCi0KLVRoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAotYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgotCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVJQIDIwMTUvNy8zMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA5NGMyNDBlLi4yODEyODE5IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNTA3LDcgKzI1MDcsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotICAgICAgIGlmIChwYXRoID09IE5VTEwpCi0gCXsKLSAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKLS0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSsJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKLSAJfQotIAotQEAgLTI1MTksNiArMjUxOSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCi0gCSAgaWYgKCFza2lwX211bHRpX2RpcikKLSAJICAgIHsKLSsJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCi0rCSAgICAgICAgewotKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKLSsJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKLSsKLSsJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCSAgICAgICAgICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCi0rCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KLSsJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKLSsJICAgICAgICAgICAgewotKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0rCSAgICAgICAgICAgICAgICBpZiAocmV0KQotKwkJICAgICAgICAgIGJyZWFrOwotKwkgICAgICAgICAgICB9Ci0rCSAgICAgICAgfQotKwotIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0gCSAgICAgIGlmIChyZXQpCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlN2FlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotRnJvbSA5Y2VkNDllNDU5Y2NmMTg4N2ZlYjU4YWRmMWU4ODM2ZGNiNGIxYmRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0Mjo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDM5LzQ2XSBGaXggdmFyaW91cyBfRk9SX0JVSUxEIGFuZCByZWxhdGVkIHZhcmlhYmxlcwotCi1XaGVuIGRvaW5nIGEgRk9SX0JVSUxEIHRoaW5nLCB5b3UgaGF2ZSB0byBvdmVycmlkZSBDRkxBR1Mgd2l0aAotQ0ZMQUdTX0ZPUl9CVUlMRC4gQW5kIGlmIHlvdSB1c2UgQysrLCB5b3UgYWxzbyBoYXZlIHRvIG92ZXJyaWRlCi1DWFhGTEFHUyB3aXRoIENYWEZMQUdTX0ZPUl9CVUlMRC4KLVdpdGhvdXQgdGhpcywgd2hlbiBidWlsZGluZyBmb3IgbWluZ3csIHlvdSBlbmQgdXAgdHJ5aW5nIHRvIHVzZQotdGhlIG1pbmd3IGhlYWRlcnMgZm9yIGEgaG9zdCBidWlsZC4KLQotVGhlIHNhbWUgZ29lcyBmb3Igb3RoZXIgdmFyaWFibGVzIGFzIHdlbGwsIHN1Y2ggYXMgQ1BQRkxBR1MsCi1DUFAsIGFuZCBHTVBJTkMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICB8IDYgKysrKysrCi0gTWFrZWZpbGUudHBsICAgICB8IDUgKysrKysKLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBiZWI5YjlhLi4zZTFjNmJjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzAsNiArMTcxLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODcsNiArMTkxLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotQEAgLTcxMyw2ICs3MTgsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCi0gCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCi0gCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAotKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAotIAkiRkxFWD0kKEZMRVgpIiBcCi0gCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKLWluZGV4IDZiMmViNmEuLjExNGU0NjIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50cGwKLSsrKyBiL01ha2VmaWxlLnRwbAotQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0NKPSIkKEdDSl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdDSjsgXAotQEAgLTE3Miw2ICsxNzMsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE4OSw2ICsxOTMsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCBjYzc1NTM2Li4wYWQyZGM4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC03ODAsNyArNzgwLDcgQEAgQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKLSBCVUlMRF9OT19QSUVfRkxBRyA9IEBCVUlMRF9OT19QSUVfRkxBR0AKLSBCVUlMRF9MREZMQUdTICs9ICQoQlVJTERfTk9fUElFX0ZMQUcpCi0gQlVJTERfQ1BQRkxBR1M9IC1JLiAtSSQoQEQpIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpLyQoQEQpIFwKLS0JCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTKQotKwkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1NfRk9SX0JVSUxEKQotIAotICMgQWN0dWFsIG5hbWUgdG8gdXNlIHdoZW4gaW5zdGFsbGluZyBhIG5hdGl2ZSBjb21waWxlci4KLSBHQ0NfSU5TVEFMTF9OQU1FIDo9ICQoc2hlbGwgZWNobyBnY2N8c2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJykKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMzc3MjUzZS4uNzhmYzY0YSAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMTc5OSw3ICsxMTc5OSw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDU0ZTc2MTkuLmE5NDY2NmUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTY4Miw3ICsxNjgyLDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQwLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQwLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWE2ZmQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYjA0MTJjMDFjMjc1YWFlYjZiNDU4NDYxY2QyNDI1MTIwYzhiY2VjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0MC80Nl0gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnY2MvY29uZmlnL25pb3MyL2xpbnV4LmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbGludXguaCBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotaW5kZXggNGVmNTViNS4uNjJiYzFlNyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCi0gCi0gI3VuZGVmIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWI3Y2U3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSAyMTBmNmIzYjgyMDg0Y2M3NTZlMDJiOGJjMTJmOTA5YTQzYjE0ZWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTg6MTA6NTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA0MC80OV0gQWRkIHNzcF9ub25zaGFyZWQgdG8gbGluayBjb21tYW5kbGluZSBmb3IgbXVzbCB0YXJnZXRzCi0KLXdoZW4gLWZzdGFjay1wcm90ZWN0b3Igb3B0aW9ucyBhcmUgZW5hYmxlZCB3ZSBuZWVkIHRvCi1saW5rIHdpdGggc3NwX3NoYXJlZCBvbiBtdXNsIHNpbmNlIGl0IGRvZXMgbm90IHByb3ZpZGUKLXRoZSBfX3N0YWNrX2Noa19mYWlsX2xvY2FsKCkgc28gZXNzZW50aWFsbHkgaXQgcHJvdmlkZXMKLWxpYnNzcCBidXQgbm90IGxpYnNzcF9ub25zaGFyZWQgc29tZXRoaW5nIGxpa2UKLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUF9CVVRfTk9UX1NTUF9OT05TSEFSRUQKLSB3aGVyZS1hcyBmb3IgZ2xpYmMgdGhlIG5lZWRlZCBzeW1ib2xzCi1hcmUgYWxyZWFkeSBwcmVzZW50IGluIGxpYmNfbm9uc2hhcmVkIGxpYnJhcnkgdGhlcmVmb3JlCi13ZSBkbyBub3QgbmVlZCBhbnkgbGlicmFyeSBoZWxwZXIgb24gZ2xpYmMgYmFzZWQgc3lzdGVtcwotYnV0IG11c2wgbmVlZHMgdGhlIGxpYnNzcF9ub3NoYXJlZCBmcm9tIGdjYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICB8ICA3ICsrKysrKysKLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eC5oICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgMTAgKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1pbmRleCAyZTY4M2QwYzQzMC4uMWI0ZGY3OTg2NzEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTE4Miw2ICsxODIsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAotICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCi0gICB9Ci0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rCi0gI2VuZGlmCi0gCi0gI2lmIChERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMpICYmIGRlZmluZWQgKFNJTkdMRV9MSUJDKSAvKiB1Q2xpbnV4ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLWluZGV4IDY4NGFmZDZjMTkwLi4yMmNmYTM5MWI4OSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLUBAIC05MSw2ICs5MSwxNiBAQAotIAkJCQkJICIgLW0gZWxmMzJwcGNsaW51eCIpCi0gI2VuZGlmCi0gCi0rLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjdW5kZWYgTElOS19PU19MSU5VWF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMgTElOS19PU19MSU5VWF9FTVVMICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCAzYjAwZWMwZmNmMC4uODM3MWY4ZDdiNmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQ2NSw2ICs0NjUsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotICAgLWR5bmFtaWMtbGlua2VyICIgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMiAifX0gXAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYxZjBmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi1Gcm9tIGJhNzM4Y2M0MTFjOWE1NGUzODllMzM2YmNhYTBhMjQyOGRkNGE5ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDAyOjI3OjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDIvNDZdIGdjYy9saWJjcHA6IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXA9PG9sZD49PG5ldz4KLQotU2ltaWxhciAtZmRlYnVnLXByZWZpeC1tYXAsIGFkZCBvcHRpb24gLWZmaWxlLXByZWZpeC1tYXAgdG8gbWFwIG9uZQotZGlyZWN0b3J5IG5hbWUgKG9sZCkgdG8gYW5vdGhlciAobmV3KSBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQKLV9fYnVpbHRpbl9GSUxFICgpLgotCi1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDI2OAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvYy1mYW1pbHkvYy1vcHRzLmMgICAgIHwgMTMgKysrKysrKwotIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAgfCAgNCArKysKLSBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgIHwgIDEgKwotIGdjYy9naW1wbGlmeS5jICAgICAgICAgICAgfCAgMyArKwotIGxpYmNwcC9NYWtlZmlsZS5pbiAgICAgICAgfCAxMCArKystLS0KLSBsaWJjcHAvZmlsZS1tYXAuYyAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIHwgMzAgKysrKysrKysrKysrKysrKwotIGxpYmNwcC9tYWNyby5jICAgICAgICAgICAgfCAgMiArKwotIDggZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9maWxlLW1hcC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMuYyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotaW5kZXggZmVjNThiYy4uN2EwYWY0MyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLW9wdHMuYwotKysrIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCi1AQCAtMzgsNiArMzgsMTQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAib3B0cy5oIgotICNpbmNsdWRlICJwbHVnaW4uaCIJCS8qIEZvciBQTFVHSU5fSU5DTFVERV9GSUxFIGV2ZW50LiAgKi8KLSAjaW5jbHVkZSAibWtkZXBzLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rI2luY2x1ZGUgImMtdGFyZ2V0LmgiCi0rI2luY2x1ZGUgInRtLmgiCQkJLyogRm9yIEJZVEVTX0JJR19FTkRJQU4sCi0rCQkJCSAgIERPTExBUlNfSU5fSURFTlRJRklFUlMsCi0rCQkJCSAgIFNURENfMF9JTl9TWVNURU1fSEVBREVSUywKLSsJCQkJICAgVEFSR0VUX0ZMVF9FVkFMX01FVEhPRF9OT05fREVGQVVMVCBhbmQKLSsJCQkJICAgVEFSR0VUX09QVEYuICAqLwotKyNpbmNsdWRlICJ0bV9wLmgiCQkvKiBGb3IgQ19DT01NT05fT1ZFUlJJREVfT1BUSU9OUy4gICovCi0gI2luY2x1ZGUgImR1bXBmaWxlLmgiCi0gCi0gI2lmbmRlZiBET0xMQVJTX0lOX0lERU5USUZJRVJTCi1AQCAtNTAzLDYgKzUxMSwxMSBAQCBjX2NvbW1vbl9oYW5kbGVfb3B0aW9uIChzaXplX3Qgc2NvZGUsIGNvbnN0IGNoYXIgKmFyZywgaW50IHZhbHVlLAotICAgICAgIGNwcF9vcHRzLT5uYXJyb3dfY2hhcnNldCA9IGFyZzsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86Ci0rICAgICAgaWYgKGFkZF9maWxlX3ByZWZpeF9tYXAgKGFyZykgPCAwKQotKyAgICAgICAgZXJyb3IgKCJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgT1BUX2Z3aWRlX2V4ZWNfY2hhcnNldF86Ci0gICAgICAgY3BwX29wdHMtPndpZGVfY2hhcnNldCA9IGFyZzsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDY2MGRhNmMuLjMxZjdiMzQgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTEyMDgsNiArMTIwOCwxMCBAQCBmZXhlYy1jaGFyc2V0PQotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotIC1mZXhlYy1jaGFyc2V0PTxjc2V0PglDb252ZXJ0IGFsbCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBzZXQgPGNzZXQ+LgotIAotK2ZmaWxlLXByZWZpeC1tYXA9Ci0rQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCi0rLWZmaWxlLXByZWZpeC1tYXA9PG9sZD1uZXc+CU1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQgX19idWlsdGluX0ZJTEUgKCkKLSsKLSBmZXh0ZW5kZWQtaWRlbnRpZmllcnMKLSBDIE9iakMgQysrIE9iakMrKwotIFBlcm1pdCB1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIChcXHUgYW5kIFxcVSkgaW4gaWRlbnRpZmllcnMuCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCA4MGYyZGY1Li5hMmJmY2MwIDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0yMTY3Miw2ICsyMTY3Miw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86Ci0gICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgotICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSsgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSAJLyogSWdub3JlIHRoZXNlLiAgKi8KLSAJY29udGludWU7Ci0gICAgICAgZGVmYXVsdDoKLWRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCi1pbmRleCBlMjIzZTU5Li4xNDMzYzI1IDEwMDY0NAotLS0tIGEvZ2NjL2dpbXBsaWZ5LmMKLSsrKyBiL2djYy9naW1wbGlmeS5jCi1AQCAtNTcsNiArNTcsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJnb21wLWNvbnN0YW50cy5oIgotICNpbmNsdWRlICJ0cmVlLWR1bXAuaCIKLSAjaW5jbHVkZSAiZ2ltcGxlLXdhbGsuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSsKLSAjaW5jbHVkZSAibGFuZ2hvb2tzLWRlZi5oIgkvKiBGSVhNRTogZm9yIGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSAqLwotICNpbmNsdWRlICJidWlsdGlucy5oIgotIAotQEAgLTI0MzIsNiArMjQzNCw3IEBAIGdpbXBsaWZ5X2NhbGxfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCwgYm9vbCB3YW50X3ZhbHVlKQotICAgICAgIGNhc2UgQlVJTFRfSU5fRklMRToKLSAJewotIAkgIGNvbnN0IGNoYXIgKmxvY2ZpbGUgPSBMT0NBVElPTl9GSUxFIChFWFBSX0xPQ0FUSU9OICgqZXhwcl9wKSk7Ci0rCSAgbG9jZmlsZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKGxvY2ZpbGUpOwotIAkgICpleHByX3AgPSBidWlsZF9zdHJpbmdfbGl0ZXJhbCAoc3RybGVuIChsb2NmaWxlKSArIDEsIGxvY2ZpbGUpOwotIAkgIHJldHVybiBHU19PSzsKLSAJfQotZGlmZiAtLWdpdCBhL2xpYmNwcC9NYWtlZmlsZS5pbiBiL2xpYmNwcC9NYWtlZmlsZS5pbgotaW5kZXggYTdkNzgyOC4uM2QyOTU3MiAxMDA2NDQKLS0tLSBhL2xpYmNwcC9NYWtlZmlsZS5pbgotKysrIGIvbGliY3BwL01ha2VmaWxlLmluCi1AQCAtODQsMTIgKzg0LDEyIEBAIERFUE1PREUgPSAkKENYWERFUE1PREUpCi0gCi0gCi0gbGliY3BwX2FfT0JKUyA9IGNoYXJzZXQubyBkaXJlY3RpdmVzLm8gZGlyZWN0aXZlcy1vbmx5Lm8gZXJyb3JzLm8gXAotLQlleHByLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIG1hY3JvLm8gXAotLQlta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCi0rCWV4cHIubyBmaWxlLW1hcC5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBcCi0rCW1hY3JvLm8gbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubwotIAotIGxpYmNwcF9hX1NPVVJDRVMgPSBjaGFyc2V0LmMgZGlyZWN0aXZlcy5jIGRpcmVjdGl2ZXMtb25seS5jIGVycm9ycy5jIFwKLS0JZXhwci5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBtYWNyby5jIFwKLS0JbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYwotKwlleHByLmMgZmlsZS1tYXAuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgXAotKwltYWNyby5jIG1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKLSAKLSBhbGw6IGxpYmNwcC5hICQoVVNFRF9DQVRBTE9HUykKLSAKLUBAIC0yNjMsNyArMjYzLDcgQEAgcG8vJChQQUNLQUdFKS5wb3Q6ICQobGliY3BwX2FfU09VUkNFUykKLSAKLSBUQUdTX1NPVVJDRVMgPSAkKGxpYmNwcF9hX1NPVVJDRVMpIGludGVybmFsLmggdWNuaWQuaCBcCi0gICAgIGluY2x1ZGUvbGluZS1tYXAuaCBpbmNsdWRlL3N5bXRhYi5oIGluY2x1ZGUvY3BwLWlkLWRhdGEuaCBcCi0tICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaAotKyAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmggaW5jbHVkZS9maWxlLW1hcC5oCi0gCi0gVEFHUzogJChUQUdTX1NPVVJDRVMpCi0gCWNkICQoc3JjZGlyKSAmJiBldGFncyAkKFRBR1NfU09VUkNFUykKLWRpZmYgLS1naXQgYS9saWJjcHAvZmlsZS1tYXAuYyBiL2xpYmNwcC9maWxlLW1hcC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTgwMzVlZgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGliY3BwL2ZpbGUtbWFwLmMKLUBAIC0wLDAgKzEsOTIgQEAKLSsvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KLSsgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLStGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Ci0rbGF0ZXIgdmVyc2lvbi4KLSsKLStUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLStidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLStHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0rIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0rIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCi0rCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSsKLSsvKiBTdHJ1Y3R1cmUgcmVjb3JkaW5nIHRoZSBtYXBwaW5nIGZyb20gc291cmNlIGZpbGUgYW5kIGRpcmVjdG9yeQotKyAgIG5hbWVzIGF0IGNvbXBpbGUgdGltZSB0byBfX0ZJTEVfXyAqLwotK3R5cGVkZWYgc3RydWN0IGZpbGVfcHJlZml4X21hcAotK3sKLSsgIGNvbnN0IGNoYXIgKm9sZF9wcmVmaXg7Ci0rICBjb25zdCBjaGFyICpuZXdfcHJlZml4OwotKyAgc2l6ZV90IG9sZF9sZW47Ci0rICBzaXplX3QgbmV3X2xlbjsKLSsgIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAgKm5leHQ7Ci0rfSBmaWxlX3ByZWZpeF9tYXA7Ci0rCi0rLyogTGlua2VkIGxpc3Qgb2Ygc3VjaCBzdHJ1Y3R1cmVzLiAgKi8KLStzdGF0aWMgZmlsZV9wcmVmaXhfbWFwICpmaWxlX3ByZWZpeF9tYXBzOwotKwotKy8qIFJlY29yZCBwcmVmaXggbWFwcGluZyBvZiBfX0ZJTEVfXy4gIEFSRyBpcyB0aGUgYXJndW1lbnQgdG8KLSsgICAtZmZpbGUtcHJlZml4LW1hcCBhbmQgbXVzdCBiZSBvZiB0aGUgZm9ybSBPTEQ9TkVXLiAgKi8KLStpbnQKLSthZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpCi0rewotKyAgZmlsZV9wcmVmaXhfbWFwICptYXA7Ci0rICBjb25zdCBjaGFyICpwOwotKwotKyAgcCA9IHN0cmNociAoYXJnLCAnPScpOwotKyAgaWYgKCFwKQotKyAgewotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOwotKyAgICAgIHJldHVybiAtMTsKLSsgIH0KLSsgIG1hcCA9IFhORVcgKGZpbGVfcHJlZml4X21hcCk7Ci0rICBtYXAtPm9sZF9wcmVmaXggPSB4c3RybmR1cCAoYXJnLCBwIC0gYXJnKTsKLSsgIG1hcC0+b2xkX2xlbiA9IHAgLSBhcmc7Ci0rICBwKys7Ci0rICBtYXAtPm5ld19wcmVmaXggPSB4c3RyZHVwIChwKTsKLSsgIG1hcC0+bmV3X2xlbiA9IHN0cmxlbiAocCk7Ci0rICBtYXAtPm5leHQgPSBmaWxlX3ByZWZpeF9tYXBzOwotKyAgZmlsZV9wcmVmaXhfbWFwcyA9IG1hcDsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBQZXJmb3JtIHVzZXItc3BlY2lmaWVkIG1hcHBpbmcgb2YgX19GSUxFX18gcHJlZml4ZXMuICBSZXR1cm4KLSsgICB0aGUgbmV3IG5hbWUgY29ycmVzcG9uZGluZyB0byBmaWxlbmFtZS4gICovCi0rCi0rY29uc3QgY2hhciAqCi0rcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgZmlsZV9wcmVmaXhfbWFwICptYXA7Ci0rICBjaGFyICpzOwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIHNpemVfdCBuYW1lX2xlbjsKLSsKLSsgIGZvciAobWFwID0gZmlsZV9wcmVmaXhfbWFwczsgbWFwOyBtYXAgPSBtYXAtPm5leHQpCi0rICAgIGlmIChmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCi0rICAgICAgYnJlYWs7Ci0rICBpZiAoIW1hcCkKLSsgICAgcmV0dXJuIGZpbGVuYW1lOwotKyAgbmFtZSA9IGZpbGVuYW1lICsgbWFwLT5vbGRfbGVuOwotKyAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKLSsgIHMgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgbWFwLT5uZXdfbGVuKTsKLSsgIG1lbWNweSAocywgbWFwLT5uZXdfcHJlZml4LCBtYXAtPm5ld19sZW4pOwotKyAgbWVtY3B5IChzICsgbWFwLT5uZXdfbGVuLCBuYW1lLCBuYW1lX2xlbik7Ci0rCi0rICByZXR1cm4geHN0cmR1cCAocyk7Ci0rfQotKwotKwotZGlmZiAtLWdpdCBhL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmggYi9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODc1MDMxNQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotQEAgLTAsMCArMSwzMCBAQAotKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXwotKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLStUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKLStsYXRlciB2ZXJzaW9uLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSthbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KLSsgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKLSsgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KLSsKLSsjaWZuZGVmIExJQkNQUF9GSUxFX01BUF9ICi0rI2RlZmluZSBMSUJDUFBfRklMRV9NQVBfSAotKwotK2NvbnN0IGNoYXIgKiByZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rCi0raW50IGFkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZyk7Ci0rCi0rI2VuZGlmIC8qICFMSUJDUFBfRklMRV9NQVBfSCAgKi8KLWRpZmYgLS1naXQgYS9saWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCi1pbmRleCBjMjUxNTUzLi4zY2VlYzNkIDEwMDY0NAotLS0tIGEvbGliY3BwL21hY3JvLmMKLSsrKyBiL2xpYmNwcC9tYWNyby5jCi1AQCAtMjYsNiArMjYsNyBAQCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSAiY3BwbGliLmgiCi0gI2luY2x1ZGUgImludGVybmFsLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgbWFjcm9fYXJnIG1hY3JvX2FyZzsKLSAvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSB0b2tlbnMgb2YgYSBtYWNybyBhcmd1bWVudC4gIFRoZXNlCi1AQCAtMzAxLDYgKzMwMiw3IEBAIF9jcHBfYnVpbHRpbl9tYWNyb190ZXh0IChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpub2RlLAotIAkgICAgaWYgKCFuYW1lKQotIAkgICAgICBhYm9ydCAoKTsKLSAJICB9Ci0rCW5hbWUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChuYW1lKTsKLSAJbGVuID0gc3RybGVuIChuYW1lKTsKLSAJYnVmID0gX2NwcF91bmFsaWduZWRfYWxsb2MgKHBmaWxlLCBsZW4gKiAyICsgMyk7Ci0gCXJlc3VsdCA9IGJ1ZjsKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNzdmODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gMjVjODdjNmNjNDBlYzVjYzY5NjVmOGJmYjIxNWJlYzAxYWJkNmQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTYgTWFyIDIwMTYgMDU6Mzk6NTkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCA0My80Nl0gUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAKLQotVGhlIG9lLWNvcmUgbWF5IHVzZSBleHRlcm5hbCB0b29sY2hhaW4gdG8gY29tcGlsZSwKLXdoaWNoIG1heSBub3Qgc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcC4KLQotU2luY2Ugd2UgdXNlIC1mZGVidWctcHJlZml4LW1hcCB0byBkbyB0aGUgc2FtZSB0aGluZywKLXNvIHdlIGNvdWxkIHJldXNlIGl0IHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1jb3JlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2Mvb3B0cy1nbG9iYWwuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9vcHRzLWdsb2JhbC5jIGIvZ2NjL29wdHMtZ2xvYmFsLmMKLWluZGV4IGI3ZTUyMzIuLjEyMWQ3YjkgMTAwNjQ0Ci0tLS0gYS9nY2Mvb3B0cy1nbG9iYWwuYwotKysrIGIvZ2NjL29wdHMtZ2xvYmFsLmMKLUBAIC0zMSw2ICszMSw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgImxhbmdob29rcy5oIgotICNpbmNsdWRlICJkYmdjbnQuaCIKLSAjaW5jbHVkZSAiZGVidWcuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAjaW5jbHVkZSAib3V0cHV0LmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgotICNpbmNsdWRlICJ0b3BsZXYuaCIKLUBAIC0zNTcsNiArMzU4LDkgQEAgaGFuZGxlX2NvbW1vbl9kZWZlcnJlZF9vcHRpb25zICh2b2lkKQotIAotIAljYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0gCSAgYWRkX2RlYnVnX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSsKLSsJICAvKiBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcCAqLwotKwkgIGFkZF9maWxlX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBPUFRfZmR1bXBfOgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NC1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDQxYWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NC1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA2YWIyM2U4OGFlZjIyYmJhYmVlN2I5NjAwYzQ1OWZmMzk1NDdiYjY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNCBNYXIgMjAxNiAxMToyMzoxNCAtMDQwMAotU3ViamVjdDogW1BBVENIIDQ0LzQ2XSBnY2MvZmluYWwuYzogLWZkZWJ1Zy1wcmVmaXgtbWFwIHN1cHBvcnQgdG8gcmVtYXAKLSBzb3VyY2VzIHdpdGggcmVsYXRpdmUgcGF0aAotCi1QUiBvdGhlci83MDQyOAotKiBmaW5hbC5jIChyZW1hcF9kZWJ1Z19maWxlbmFtZSk6IFVzZSBscmVhbHBhdGggdG8gdHJhbnNsYXRlCi1yZWxhdGl2ZSBwYXRoIGJlZm9yZSByZW1hcHBpbmcKLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzA0MjgKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2ZpbmFsLmMgfCAxNSArKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9maW5hbC5jIGIvZ2NjL2ZpbmFsLmMKLWluZGV4IDU1Y2Y1MDkuLjIzMjkzZTUgMTAwNjQ0Ci0tLS0gYS9nY2MvZmluYWwuYwotKysrIGIvZ2NjL2ZpbmFsLmMKLUBAIC0xNTU0LDE2ICsxNTU0LDI1IEBAIHJlbWFwX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICBzaXplX3QgbmFtZV9sZW47Ci0gCi0rICAvKiBTdXBwb3J0IHRvIHJlbWFwIGZpbGVuYW1lIHdpdGggcmVsYXRpdmUgcGF0aCAgKi8KLSsgIGNoYXIgKnJlYWxwYXRoID0gbHJlYWxwYXRoIChmaWxlbmFtZSk7Ci0rICBpZiAocmVhbHBhdGggPT0gTlVMTCkKLSsgICAgcmV0dXJuIGZpbGVuYW1lOwotKwotICAgZm9yIChtYXAgPSBkZWJ1Z19wcmVmaXhfbWFwczsgbWFwOyBtYXAgPSBtYXAtPm5leHQpCi0tICAgIGlmIChmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCi0rICAgIGlmIChmaWxlbmFtZV9uY21wIChyZWFscGF0aCwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCi0gICAgICAgYnJlYWs7Ci0gICBpZiAoIW1hcCkKLS0gICAgcmV0dXJuIGZpbGVuYW1lOwotLSAgbmFtZSA9IGZpbGVuYW1lICsgbWFwLT5vbGRfbGVuOwotKyAgICB7Ci0rICAgICAgZnJlZSAocmVhbHBhdGgpOwotKyAgICAgIHJldHVybiBmaWxlbmFtZTsKLSsgICAgfQotKyAgbmFtZSA9IHJlYWxwYXRoICsgbWFwLT5vbGRfbGVuOwotICAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKLSAgIHMgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgbWFwLT5uZXdfbGVuKTsKLSAgIG1lbWNweSAocywgbWFwLT5uZXdfcHJlZml4LCBtYXAtPm5ld19sZW4pOwotICAgbWVtY3B5IChzICsgbWFwLT5uZXdfbGVuLCBuYW1lLCBuYW1lX2xlbik7Ci0rICBmcmVlIChyZWFscGF0aCk7Ci0gICByZXR1cm4gZ2djX3N0cmR1cCAocyk7Ci0gfQotIAwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ1LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ1LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjJiNzI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1Gcm9tIDVhNDdkNDA0ZWEyOWUyNTQ3MjY5ZTNkZGYzODc1NDQ2MmQ5M2Y5MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBBcHIgMjAxNiAyMDowMzoyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDQ1LzQ2XSBsaWJnY2M6IEFkZCBrbm9iIHRvIHVzZSBsZGJsLTEyOCBvbiBwcGMKLQotbXVzbCBkb2VzIG5vdCBzdXBwb3J0IGxkYmwgMTI4IHNvIHdlIGNhbiBub3QgYXNzdW1lCi10aGF0IGxpbnV4IGFzIGEgd2hvbGUgc3VwcG9ydHMgbGRibC0xMjggYml0cywgaW5zdGVhZAotYWN0IHVwb24gY29uZmlndXJlIG9wdGlvbiBwYXNzZWQgdG8gZ2NjIGFuZCBhc3N1bWUgbm8KLW9uIG11c2wgYW5kIHllcyBvdGhlcndpc2UgaWYgbm8gb3B0aW9uIGlzIHBhc3NlZCBzaW5jZQotZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gYXNzdW1lIGxkYmwxMjggaXQgZG9lcyBub3QKLWNoYW5nZSB0aGUgZGVmYXVsdHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBsaWJnY2MvTWFrZWZpbGUuaW4gICAgICAgICAgIHwgIDEgKwotIGxpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXggfCAgNSArKysrLQotIGxpYmdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKLSBsaWJnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTIgKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBsaWJnY2MvY29uZmlndXJlCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvTWFrZWZpbGUuaW4gYi9saWJnY2MvTWFrZWZpbGUuaW4KLWluZGV4IGYwOWIzOWIuLjI5NmNmMGYgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgotQEAgLTQzLDYgKzQzLDcgQEAgZW5hYmxlX3Z0YWJsZV92ZXJpZnkgPSBAZW5hYmxlX3Z0YWJsZV92ZXJpZnlACi0gZW5hYmxlX2RlY2ltYWxfZmxvYXQgPSBAZW5hYmxlX2RlY2ltYWxfZmxvYXRACi0gZml4ZWRfcG9pbnQgPSBAZml4ZWRfcG9pbnRACi0gd2l0aF9haXhfc29uYW1lID0gQHdpdGhfYWl4X3NvbmFtZUAKLSt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAotIAotIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAotIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAotaW5kZXggNGY2ZDRjNC4uYzUwZGQ5NCAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLUBAIC0xLDMgKzEsNiBAQAotIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKLSAKLS1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKLStpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKLStlbmRpZgotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYwotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBtb2RlIDEwMDc1NQotaW5kZXggZTdkNmM3NS4uZTlhOTAxOQotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZQotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZQotQEAgLTYxNCw2ICs2MTQsNyBAQCBidWlsZF92ZW5kb3IKLSBidWlsZF9jcHUKLSBidWlsZAotIHdpdGhfYWl4X3NvbmFtZQotK3dpdGhfbGRibDEyOAotIGVuYWJsZV92dGFibGVfdmVyaWZ5Ci0gZW5hYmxlX3NoYXJlZAotIGxpYmdjY190b3BkaXIKLUBAIC02NjMsNiArNjY0LDcgQEAgd2l0aF9jcm9zc19ob3N0Ci0gd2l0aF9sZAotIGVuYWJsZV9zaGFyZWQKLSBlbmFibGVfdnRhYmxlX3ZlcmlmeQotK3dpdGhfbG9uZ19kb3VibGVfMTI4Ci0gd2l0aF9haXhfc29uYW1lCi0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0gd2l0aF9zbGliZGlyCi1AQCAtMTMxOSw2ICsxMzIxLDcgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtdGFyZ2V0LXN1YmRpcj1TVUJESVIgICAgICBDb25maWd1cmluZyBpbiBhIHN1YmRpcmVjdG9yeSBmb3IgdGFyZ2V0Ci0gICAtLXdpdGgtY3Jvc3MtaG9zdD1IT1NUICAgICAgICAgICBDb25maWd1cmluZyB3aXRoIGEgY3Jvc3MgY29tcGlsZXIKLSAgIC0td2l0aC1sZCAgICAgICAgICAgICAgIGFycmFuZ2UgdG8gdXNlIHRoZSBzcGVjaWZpZWQgbGQgKGZ1bGwgcGF0aG5hbWUpCi0rICAtLXdpdGgtbG9uZy1kb3VibGUtMTI4ICB1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0Ci0gICAtLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgb24gQUlYCi1AQCAtMjIwMSw2ICsyMjA0LDIxIEBAIGZpCi0gCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1sb25nLWRvdWJsZS0xMjggd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgotK2Vsc2UKLSsgIGNhc2UgIiR7aG9zdH0iIGluCi0rIHBvd2VyKi0qLW11c2wqKQotKyAgIHdpdGhfbGRibDEyOD0ibm8iOzsKLSsgKikgd2l0aF9sZGJsMTI4PSJ5ZXMiOzsKLSsgZXNhYwotKwotK2ZpCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0td2l0aC1haXgtc29uYW1lIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfYWl4X3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2FpeF9zb25hbWU7IGNhc2UgIiR7aG9zdH06JHtlbmFibGVfc2hhcmVkfSIgaW4KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlLmFjIGIvbGliZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMjY5OTk3Zi4uODFkYzNiYSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLUBAIC03Nyw2ICs3NywxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCi0gW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKLSBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKLSAKLStBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCi0rW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKLSsgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCi0rICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAotK1tjYXNlICIke2hvc3R9IiBpbgotKyBwb3dlciotKi1tdXNsKikKLSsgICB3aXRoX2xkYmwxMjg9Im5vIjs7Ci0rICopIHdpdGhfbGRibDEyOD0ieWVzIjs7Ci0rIGVzYWMKLStdKQotK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKLSsKLSBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAotIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCi0gICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Ni1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTAwMzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Ni1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDUxM2JmM2MzM2UyZjU1MWYwOGJkNTc2MDUwOTFkNWRkZWJhMzUzNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNDYvNDZdIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1pbmRleCA4YzVmODkwLi4yOWJlOTA5IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLSsrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1AQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKLSAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCi0gCi0gU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAotLQkkKFNITElCX0xERkxBR1MpIFwKLSsJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKLSAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCi0gCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAotIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI1ZGEwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gMGE5ZWQwNDc5MjAzY2I3ZTY5YzM3NDViMGMyNTkwMDc0MTBmMzliYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIIDQ3LzQ3XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCi0gc3ltdmVyCi0KLUFkYXB0ZXIgZnJvbQotCi1odHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAotCi1UaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQotdGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcwotYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQotbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAotCi1saWJnY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgotCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KLQotCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgotCi1nY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAotCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDg2MWEwMjkuLjFjOTdkNzIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtNDAzMjMsMTAgKzQwMzIzLDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAotICAgICB7Ci0gICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgotICAgICAgIHsKLS0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KLSsJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLwotIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOwotICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAotLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKLSsJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7Ci0gCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCi0gCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOwotICAgICAgIH0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotaW5kZXggOGMyMjQ4ZC4uNmM4MmYxNSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLUBAIC00ODUsNyArNDg1LDcgQEAgX19jcHVfaW5kaWNhdG9yX2luaXQgKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tI2lmIGRlZmluZWQgU0hBUkVEICYmIGRlZmluZWQgVVNFX0VMRl9TWU1WRVIKLS1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9pbmRpY2F0b3JfaW5pdCwgX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wIik7Ci0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfbW9kZWwsIF9fY3B1X21vZGVsQEdDQ180LjguMCIpOwotKyNpZm5kZWYgU0hBUkVECi0raW50IF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsICh2b2lkKQotKyAgX19hdHRyaWJ1dGVfXyAoKHdlYWssIGFsaWFzICgiX19jcHVfaW5kaWNhdG9yX2luaXQiKSkpOwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLWluZGV4IDExYmI0NmUuLjRmNDdmN2IgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLUBAIC0zLDQgKzMsNCBAQAotICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKLSBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCi0gCi0tSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtODAKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ4LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYzE1OGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ4LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gMTA1OTVjMDNjMzliNGU5ODBkMmEwMGUxNmZjODRlOWNhZjgyMjkyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0OC80OF0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCi0KLW11c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90Ci1zbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAotaW5kZXggZDcxMTUzMGQwNTMuLmMzMTViN2E5N2MxIDEwMDY0NAotLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLUBAIC0xMzQsNiArMTM0LDcgQEAgX1RZUEVfd2NoYXJfdDsKLSAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAotICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKLSAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCi0rI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9QVFJESUZGX1QKLSAjZGVmaW5lIF9UX1BUUkRJRkZfCi0gI2RlZmluZSBfVF9QVFJESUZGCi1AQCAtMTQzLDEwICsxNDQsMTIgQEAgX1RZUEVfd2NoYXJfdDsKLSAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAotICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKLSAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLwotICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXwotICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAotICNlbmRpZgotIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0rI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KLSAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLwotICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLwotICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KLUBAIC0xODQsNiArMTg3LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0yMDAsNiArMjA0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLUBAIC0yMzUsNiArMjQwLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2VuZGlmIC8qIF9TSVpFX1QgKi8KLSAjZW5kaWYgLyogX19TSVpFX1RfXyAqLwotICNlbmRpZiAvKiBfX3NpemVfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KLSAjdW5kZWYJX19uZWVkX3NpemVfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3NpemVfdC4gICovCi0gCi1AQCAtMjY0LDYgKzI3MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNpZm5kZWYgX19faW50X3djaGFyX3RfaAotICNpZm5kZWYgX19JTlRfV0NIQVJfVF9ICi0gI2lmbmRlZiBfR0NDX1dDSEFSX1QKLSsjaWZuZGVmIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fd2NoYXJfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fV0NIQVJfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfV0NIQVJfVAotQEAgLTI3OSw2ICsyODYsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAotICNkZWZpbmUgX0dDQ19XQ0hBUl9UCi0gI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRAotKyNkZWZpbmUgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLwotIAotIC8qIE9uIEJTRC8zODYgMS4xLCBhdCBsZWFzdCwgbWFjaGluZS9hbnNpLmggZGVmaW5lcyBfQlNEX1dDSEFSX1RfCi0gICAgaW5zdGVhZCBvZiBfV0NIQVJfVF8sIGFuZCBfQlNEX1JVTkVfVF8gKHdoaWNoLCB1bmxpa2UgdGhlIG90aGVyCi1AQCAtMzQ0LDYgKzM1Miw3IEBAIHR5cGVkZWYgX19XQ0hBUl9UWVBFX18gd2NoYXJfdDsKLSAjZW5kaWYKLSAjZW5kaWYgLyogX19XQ0hBUl9UX18gKi8KLSAjZW5kaWYgLyogX193Y2hhcl90X18gKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3djaGFyX3QgbXVzbCAqLwotICN1bmRlZglfX25lZWRfd2NoYXJfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3djaGFyX3QuICAqLwotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTRfYWxsX25vcGllLWFsbC1mbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNhYjk1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTRfYWxsX25vcGllLWFsbC1mbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLU5lZWQgdG8gcGFzcyBOT19QSUVfQ0ZMQUdTIHRvIEFMTF8qIHNvIGdjYyBkb2Vzbid0IGZhaWwgd2hlbgotd2UgY29tcGlsZSBpdCB3aXRoIG9sZGVyIGdjYyBhbmQgcGllLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLU1haW50YWluZWQgYnk6IEdlbnRvbyBUb29sY2hhaW4gUHJvamVjdCA8dG9vbGNoYWluQGdlbnRvby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBTdGVwaGVuIEFybm9sZCA8c3RlcGhlbi5hcm5vbGQ0MkBnbWFpbC5jb20+Ci0KLS0tLSBhL2djYy9NYWtlZmlsZS5pbgkyMDE1LTA2LTI1IDE5OjE4OjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGIvZ2NjL01ha2VmaWxlLmluCTIwMTYtMDQtMjIgMDA6MTI6NTQuMDI5MTc4ODYwICswMjAwCi1AQCAtOTkxLDEwICs5OTEsMTAgQEAgQUxMX0NYWEZMQUdTID0gJChUX0NGTEFHUykgJChDRkxBR1MtJEApCi0gQUxMX0NQUEZMQUdTID0gJChJTkNMVURFUykgJChDUFBGTEFHUykKLQotICMgVGhpcyBpcyB0aGUgdmFyaWFibGUgdG8gdXNlIHdoZW4gdXNpbmcgJChDT01QSUxFUikuCi0tQUxMX0NPTVBJTEVSRkxBR1MgPSAkKEFMTF9DWFhGTEFHUykKLStBTExfQ09NUElMRVJGTEFHUyA9ICQoTk9fUElFX0NGTEFHUykgJChBTExfQ1hYRkxBR1MpCi0KLSAjIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRvIHVzZSB3aGVuIHVzaW5nICQoTElOS0VSKS4KLS1BTExfTElOS0VSRkxBR1MgPSAkKEFMTF9DWFhGTEFHUykKLStBTExfTElOS0VSRkxBR1MgPSAkKE5PX1BJRV9DRkxBR1MpICQoQUxMX0NYWEZMQUdTKQotCi0gIyBCdWlsZCBhbmQgaG9zdCBzdXBwb3J0IGxpYnJhcmllcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU1LXVud2luZF9oLWdsaWJjMjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNjZjZmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU1LXVud2luZF9oLWdsaWJjMjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotQmFja3BvcnQgYW5kIGVkaXQgb2YgcGF0Y2hlcyBmcm9tOgotaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzL2djYz9saW1pdF9jaGFuZ2VzPTAmdmlldz1yZXZpc2lvbiZyZXZpc2lvbj0yNDk5NTcKLWJ5IGpzbTI4IChKb3NlcGggTXllcnMpCi0KLUN1cnJlbnQgZ2xpYmMgbm8gbG9uZ2VyIGdpdmVzIHRoZSB1Y29udGV4dF90IHR5cGUgdGhlIHRhZyBzdHJ1Y3QKLXVjb250ZXh0LCB0byBjb25mb3JtIHdpdGggUE9TSVggbmFtZXNwYWNlIHJ1bGVzLiAgVGhpcyByZXF1aXJlcwotdmFyaW91cyBsaW51eC11bndpbmQuaCBmaWxlcyBpbiBsaWJnY2MsIHRoYXQgd2VyZSBwcmV2aW91c2x5IHVzaW5nCi1zdHJ1Y3QgdWNvbnRleHQsIHRvIGJlIGZpeGVkIHRvIHVzZSB1Y29udGV4dF90IGluc3RlYWQuICBUaGlzIGlzCi1zaW1pbGFyIHRvIHRoZSByZW1vdmFsIG9mIHRoZSBzdHJ1Y3Qgc2lnaW5mbyB0YWcgZnJvbSBzaWdpbmZvX3Qgc29tZQoteWVhcnMgYWdvLgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgdGhvc2UgZmlsZXMgdG8gdXNlIHVjb250ZXh0X3QgaW5zdGVhZC4gIEFzIHRoZQotc3RhbmRhcmQgbmFtZSB0aGF0IHNob3VsZCBiZSB1bmNvbmRpdGlvbmFsbHkgc2FmZSwgc28gdGhpcyBpcyBub3QKLXJlc3RyaWN0ZWQgdG8gYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgYnkgZ2xpYmMsIG9yIGNvbmRpdGlvbmVkIG9uIHRoZQotZ2xpYmMgdmVyc2lvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvYWFyY2g2NC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9hYXJjaDY0L2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNTIsNyArNTIsNyBAQAotICAgc3RydWN0IHJ0X3NpZ2ZyYW1lCi0gICB7Ci0gICAgIHNpZ2luZm9fdCBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rICAgIHVjb250ZXh0X3QgdWM7Ci0gICB9OwotIAotICAgc3RydWN0IHJ0X3NpZ2ZyYW1lICpydF87Ci0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvYWxwaGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvYWxwaGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC01MSw3ICs1MSw3IEBACi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgcnRfc2lnZnJhbWUgewotIAlzaWdpbmZvX3QgaW5mbzsKLS0Jc3RydWN0IHVjb250ZXh0IHVjOwotKwl1Y29udGV4dF90IHVjOwotICAgICAgIH0gKnJ0XyA9IGNvbnRleHQtPmNmYTsKLSAgICAgICBzYyA9ICZydF8tPnVjLnVjX21jb250ZXh0OwotICAgICB9Ci0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvYmZpbi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9iZmluL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNTIsNyArNTIsNyBAQAotIAl2b2lkICpwdWM7Ci0gCWNoYXIgcmV0Y29kZVs4XTsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gCi0gICAgICAgLyogVGhlIHZvaWQgKiBjYXN0IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBhbGlhc2luZyB3YXJuaW5nLgotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2kzODYvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvaTM4Ni9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTU4LDcgKzU4LDcgQEAKLSAgIGlmICgqKHVuc2lnbmVkIGNoYXIgKikocGMrMCkgPT0gMHg0OAotICAgICAgICYmICoodW5zaWduZWQgbG9uZyBsb25nICopKHBjKzEpID09IFJUX1NJR1JFVFVSTl9TWVNDQUxMKQotICAgICB7Ci0tICAgICAgc3RydWN0IHVjb250ZXh0ICp1Y18gPSBjb250ZXh0LT5jZmE7Ci0rICAgICAgdWNvbnRleHRfdCAqdWNfID0gY29udGV4dC0+Y2ZhOwotICAgICAgIC8qIFRoZSB2b2lkICogY2FzdCBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYW4gYWxpYXNpbmcgd2FybmluZy4KLSAgICAgICAgICBUaGUgYWxpYXNpbmcgd2FybmluZyBpcyBjb3JyZWN0LCBidXQgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0KLSAgICAgICAgICBiZWNhdXNlIGl0IGRvZXMgbm90IGFsaWFzIGFueXRoaW5nLiAgKi8KLUBAIC0xMzgsNyArMTM4LDcgQEAKLSAJc2lnaW5mb190ICpwaW5mbzsKLSAJdm9pZCAqcHVjOwotIAlzaWdpbmZvX3QgaW5mbzsKLS0Jc3RydWN0IHVjb250ZXh0IHVjOwotKwl1Y29udGV4dF90IHVjOwotICAgICAgIH0gKnJ0XyA9IGNvbnRleHQtPmNmYTsKLSAgICAgICAvKiBUaGUgdm9pZCAqIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGFsaWFzaW5nIHdhcm5pbmcuCi0gICAgICAgICAgVGhlIGFsaWFzaW5nIHdhcm5pbmcgaXMgY29ycmVjdCwgYnV0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtCi0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvbTY4ay9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9tNjhrL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtMzMsNyArMzMsNyBAQAotIC8qIDxzeXMvdWNvbnRleHQuaD4gaXMgdW5mb3J0dW5hdGVseSBicm9rZW4gcmlnaHQgbm93LiAgKi8KLSBzdHJ1Y3QgdXdfdWNvbnRleHQgewotIAl1bnNpZ25lZCBsb25nCSAgdWNfZmxhZ3M7Ci0tCXN0cnVjdCB1Y29udGV4dCAgKnVjX2xpbms7Ci0rCXVjb250ZXh0X3QJICp1Y19saW5rOwotIAlzdGFja190CQkgIHVjX3N0YWNrOwotIAltY29udGV4dF90CSAgdWNfbWNvbnRleHQ7Ci0gCXVuc2lnbmVkIGxvbmcJICB1Y19maWxsZXJbODBdOwotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL25pb3MyL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL25pb3MyL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtMzgsNyArMzgsNyBAQAotIAotIHN0cnVjdCBuaW9zMl91Y29udGV4dCB7Ci0gICB1bnNpZ25lZCBsb25nIHVjX2ZsYWdzOwotLSAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwotKyAgdWNvbnRleHRfdCAqdWNfbGluazsKLSAgIHN0YWNrX3QgdWNfc3RhY2s7Ci0gICBzdHJ1Y3QgbmlvczJfbWNvbnRleHQgdWNfbWNvbnRleHQ7Ci0gICBzaWdzZXRfdCB1Y19zaWdtYXNrOwkvKiBtYXNrIGxhc3QgZm9yIGV4dGVuc2liaWxpdHkgKi8KLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9wYS9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9wYS9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTgwLDcgKzgwLDcgQEAKLSAgIHN0cnVjdCBzaWdjb250ZXh0ICpzYzsKLSAgIHN0cnVjdCBydF9zaWdmcmFtZSB7Ci0gICAgIHNpZ2luZm9fdCBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rICAgIHVjb250ZXh0X3QgdWM7Ci0gICB9ICpmcmFtZTsKLSAKLSAgIC8qIHJ0X3NpZ3JldHVybiB0cmFtcG9saW5lOgotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL3NoL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL3NoL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtMTgwLDcgKzE4MCw3IEBACi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgcnRfc2lnZnJhbWUgewotIAlzaWdpbmZvX3QgaW5mbzsKLS0Jc3RydWN0IHVjb250ZXh0IHVjOwotKwl1Y29udGV4dF90IHVjOwotICAgICAgIH0gKnJ0XyA9IGNvbnRleHQtPmNmYTsKLSAgICAgICAvKiBUaGUgdm9pZCAqIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGFsaWFzaW5nIHdhcm5pbmcuCi0gICAgICAgICAgVGhlIGFsaWFzaW5nIHdhcm5pbmcgaXMgY29ycmVjdCwgYnV0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtCi0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvdGlsZXByby9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy90aWxlcHJvL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNjEsNyArNjEsNyBAQAotICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAgICAgdW5zaWduZWQgY2hhciBzYXZlX2FyZWFbQ19BQklfU0FWRV9BUkVBX1NJWkVdOwotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfSAqcnRfOwotIAotICAgLyogUmV0dXJuIGlmIHRoaXMgaXMgbm90IGEgc2lnbmFsIGhhbmRsZXIuICAqLwotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL3h0ZW5zYS9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy94dGVuc2EvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC02Nyw3ICs2Nyw3IEBACi0gCi0gICBzdHJ1Y3QgcnRfc2lnZnJhbWUgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfSAqcnRfOwotIAotICAgLyogbW92aSBhMiwgX19OUl9ydF9zaWdyZXR1cm47IHN5c2NhbGwgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1Ny1BUk0tUFItODI0NDUtc3VwcHJlc3MtMzItYml0LWFsaWduZWQtbGRyZC1zdHJkLXBlZXBoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU3LUFSTS1QUi04MjQ0NS1zdXBwcmVzcy0zMi1iaXQtYWxpZ25lZC1sZHJkLXN0cmQtcGVlcGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMTRhYjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU3LUFSTS1QUi04MjQ0NS1zdXBwcmVzcy0zMi1iaXQtYWxpZ25lZC1sZHJkLXN0cmQtcGVlcGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotRnJvbSBhZDViZjQ1MGFlZjJmZmVlNmQ1N2VkMTkzZmFiYzVmNzJmOGVhYTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcmVhcm5zaGEgPHJlYXJuc2hhQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgMTkgT2N0IDIwMTcgMTM6MTY6NDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gW0FSTV0gUFIgODI0NDUgLSBzdXBwcmVzcyAzMi1iaXQgYWxpZ25lZCBsZHJkL3N0cmQgcGVlcGhvbGluZwotIHdpdGggLW1uby11bmFsaWduZWQtYWNjZXNzCi0KLVBlZXBob2xlIHBhdHRlcm5zIGV4aXN0IGluIHRoZSBhcm0gYmFja2VuZCB0byBzcG90IGxvYWQvc3RvcmUKLW9wZXJhdGlvbnMgdG8gYWRqYWNlbnQgbWVtb3J5IG9wZXJhdGlvbnMgaW4gb3JkZXIgdG8gY29udmVydCB0aGVtIGludG8KLWxkcmQvc3RyZCBpbnN0cnVjdGlvbnMuICBIb3dldmVyLCB3aGVuIHdlIGhhdmUgc3RyaWN0IGFsaWdubWVudAotZW5mb3JjZWQsIHRoZW4gd2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB0aGUgYWNjZXNzZXMgYXJlIGtub3duIHRvIGJlCi02NC1iaXQgYWxpZ25lZDsgdGhpcyBpcyB1bmxpa2VseSB0byBiZSB0aGUgY2FzZSBmb3IgbW9zdCBsb2Fkcy4gIFRoZQotcGF0Y2ggYWRkcyBzb21lIGFsaWdubWVudCBjaGVja2luZyB0byB0aGUgY29kZSB0aGF0IHZhbGlkYXRlcyB0aGUKLWFkZHJlc3NlcyBmb3IgdXNlIGluIHRoZSBwZWVwaG9sZSBwYXR0ZXJucy4gIFRoaXMgc2hvdWxkIGFsc28gZml4Ci1pbmNvcnJlY3QgZ2VuZXJhdGlvbiBvZiBsZHJkL3N0cmQgd2l0aCB1bmFsaWduZWQgYWNjZXNzZXMgdGhhdCBjb3VsZAotcHJldmlvdXNseSBoYXZlIG9jY3VycmVkIG9uIEFSTXY1ZSB3aGVyZSBhbGwgc3VjaCBvcGVyYXRpb25zIG11c3QgYmUKLTY0LWJpdCBhbGlnbmVkLgotCi1JJ3ZlIGFkZGVkIHNvbWUgbmV3IHRlc3RzIGFzIHdlbGwuICBJbiBkb2luZyBzbyBJIGRpc2NvdmVyZWQgdGhhdCB0aGUKLWxkcmQvc3RyZCBwZWVwaG9sZSB0ZXN0cyBjb3VsZCBuZXZlciBmYWlsIHNpbmNlIHRoZXkgd291bGQgbWF0Y2ggdGhlCi1zb3VyY2UgZmlsZSBuYW1lIGluIHRoZSBzY2FubmVkIGFzc2VtYmx5IGFzIHdlbGwgYXMgYW55IGluc3RydWN0aW9ucwotb2YgdGhlIGludGVuZGVkIHR5cGUuICBJJ3ZlIGZpeGVkIHRob3NlIGJ5IHRpZ2h0ZW5pbmcgdGhlIHNjYW4gcmVzdWx0cwotc2xpZ2h0bHkuCi0KLWdjYzoKLQotKiBjb25maWcvYXJtL2FybS5jIChhbGlnbl9va19sZHJkX3N0cmQpOiBOZXcgZnVuY3Rpb24uCi0obWVtX29rX2Zvcl9sZHJkX3N0cmQpOiBOZXcgcGFyYW1ldGVyIGFsaWduLiAgRXh0cmFjdCB0aGUgYWxpZ25tZW50IG9mIHRoZQotbWVtIGludG8gaXQuCi0oZ2VuX29wZXJhbmRzX2xkcmRfc3RyZCk6IFZhbGlkYXRlIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGFjY2Vzc2VzLgotCi10ZXN0c3VpdGU6Ci0KLSogZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYzogVGlnaHRlbiB0ZXN0IHNjYW4gcGF0dGVybi4KLSogZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYzogTGlrZXdpc2UuCi0qIGdjYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0yLmM6IE5ldyB0ZXN0LgotKiBnY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMi5jOiBOZXcgdGVzdC4KLQotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy02LWJyYW5jaEAyNTM4OTIgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBnY2MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvY29uZmlnL2FybS9hcm0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMgICAgICAgICB8ICAyICstCi0gLi4uL2FybS97cGVlcC1sZHJkLTEuYyA9PiBwZWVwLWxkcmQtMi5jfSAgICAgICAgICAgfCAgNCArKy0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jICAgICAgICAgfCAgMiArLQotIC4uLi9hcm0ve3BlZXAtc3RyZC0xLmMgPT4gcGVlcC1zdHJkLTIuY30gICAgICAgICAgIHwgIDQgKystLQotIDcgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0gY29weSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3twZWVwLWxkcmQtMS5jID0+IHBlZXAtbGRyZC0yLmN9ICg2MyUpCi0gY29weSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3twZWVwLXN0cmQtMS5jID0+IHBlZXAtc3RyZC0yLmN9ICg1OCUpCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2FybS5jCi1pbmRleCA5YzA4MTNkNTk4ZC4uZTNkYTlmNzdmYjYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9hcm0uYwotKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLUBAIC0xNTkyNiwxMiArMTU5MjYsMjMgQEAgb3BlcmFuZHNfb2tfbGRyZF9zdHJkIChydHggcnQsIHJ0eCBydDIsIHJ0eCBybiwgSE9TVF9XSURFX0lOVCBvZmZzZXQsCi0gICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0rLyogUmV0dXJuIHRydWUgaWYgYSA2NC1iaXQgYWNjZXNzIHdpdGggYWxpZ25tZW50IEFMSUdOIGFuZCB3aXRoIGEKLSsgICBjb25zdGFudCBvZmZzZXQgT0ZGU0VUIGZyb20gdGhlIGJhc2UgcG9pbnRlciBpcyBwZXJtaXR0ZWQgb24gdGhpcwotKyAgIGFyY2hpdGVjdHVyZS4gICovCi0rc3RhdGljIGJvb2wKLSthbGlnbl9va19sZHJkX3N0cmQgKEhPU1RfV0lERV9JTlQgYWxpZ24sIEhPU1RfV0lERV9JTlQgb2Zmc2V0KQotK3sKLSsgIHJldHVybiAodW5hbGlnbmVkX2FjY2VzcwotKwkgID8gKGFsaWduID49IEJJVFNfUEVSX1dPUkQgJiYgKG9mZnNldCAmIDMpID09IDApCi0rCSAgOiAoYWxpZ24gPj0gMiAqIEJJVFNfUEVSX1dPUkQgJiYgKG9mZnNldCAmIDcpID09IDApKTsKLSt9Ci0rCi0gLyogSGVscGVyIGZvciBnZW5fb3BlcmFuZHNfbGRyZF9zdHJkLiAgUmV0dXJucyB0cnVlIGlmZiB0aGUgbWVtb3J5Ci0gICAgb3BlcmFuZCBNRU0ncyBhZGRyZXNzIGNvbnRhaW5zIGFuIGltbWVkaWF0ZSBvZmZzZXQgZnJvbSB0aGUgYmFzZQotLSAgIHJlZ2lzdGVyIGFuZCBoYXMgbm8gc2lkZSBlZmZlY3RzLCBpbiB3aGljaCBjYXNlIGl0IHNldHMgQkFTRSBhbmQKLS0gICBPRkZTRVQgYWNjb3JkaW5nbHkuICAqLwotKyAgIHJlZ2lzdGVyIGFuZCBoYXMgbm8gc2lkZSBlZmZlY3RzLCBpbiB3aGljaCBjYXNlIGl0IHNldHMgQkFTRSwKLSsgICBPRkZTRVQgYW5kIEFMSUdOIGFjY29yZGluZ2x5LiAgKi8KLSBzdGF0aWMgYm9vbAotLW1lbV9va19mb3JfbGRyZF9zdHJkIChydHggbWVtLCBydHggKmJhc2UsIHJ0eCAqb2Zmc2V0KQotK21lbV9va19mb3JfbGRyZF9zdHJkIChydHggbWVtLCBydHggKmJhc2UsIHJ0eCAqb2Zmc2V0LCBIT1NUX1dJREVfSU5UICphbGlnbikKLSB7Ci0gICBydHggYWRkcjsKLSAKLUBAIC0xNTk1MCw2ICsxNTk2MSw3IEBAIG1lbV9va19mb3JfbGRyZF9zdHJkIChydHggbWVtLCBydHggKmJhc2UsIHJ0eCAqb2Zmc2V0KQotICAgZ2NjX2Fzc2VydCAoTUVNX1AgKG1lbSkpOwotIAotICAgKm9mZnNldCA9IGNvbnN0MF9ydHg7Ci0rICAqYWxpZ24gPSBNRU1fQUxJR04gKG1lbSk7Ci0gCi0gICBhZGRyID0gWEVYUCAobWVtLCAwKTsKLSAKLUBAIC0xNTk5MCw3ICsxNjAwMiw3IEBAIGdlbl9vcGVyYW5kc19sZHJkX3N0cmQgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnN0X3N0b3JlLCBib29sIGNvbW11dGUpCi0gewotICAgaW50IG5vcHMgPSAyOwotLSAgSE9TVF9XSURFX0lOVCBvZmZzZXRzWzJdLCBvZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIG9mZnNldHNbMl0sIG9mZnNldCwgYWxpZ25bMl07Ci0gICBydHggYmFzZSA9IE5VTExfUlRYOwotICAgcnR4IGN1cl9iYXNlLCBjdXJfb2Zmc2V0LCB0bXA7Ci0gICBpbnQgaSwgZ2FwOwotQEAgLTE2MDAyLDcgKzE2MDE0LDggQEAgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZCAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotICAgICAgcmVnaXN0ZXJzLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgbWVtb3J5IG9mZnNldHMuICAqLwotICAgZm9yIChpID0gMDsgaSA8IG5vcHM7IGkrKykKLSAgICAgewotLSAgICAgIGlmICghbWVtX29rX2Zvcl9sZHJkX3N0cmQgKG9wZXJhbmRzW25vcHMraV0sICZjdXJfYmFzZSwgJmN1cl9vZmZzZXQpKQotKyAgICAgIGlmICghbWVtX29rX2Zvcl9sZHJkX3N0cmQgKG9wZXJhbmRzW25vcHMraV0sICZjdXJfYmFzZSwgJmN1cl9vZmZzZXQsCi0rCQkJCSAmYWxpZ25baV0pKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICAgIGlmIChpID09IDApCi1AQCAtMTYxMTQsNiArMTYxMjcsNyBAQCBnZW5fb3BlcmFuZHNfbGRyZF9zdHJkIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gICAgICAgLyogU3dhcCB0aGUgaW5zdHJ1Y3Rpb25zIHN1Y2ggdGhhdCBsb3dlciBtZW1vcnkgaXMgYWNjZXNzZWQgZmlyc3QuICAqLwotICAgICAgIHN0ZDo6c3dhcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKLSAgICAgICBzdGQ6OnN3YXAgKG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSk7Ci0rICAgICAgc3RkOjpzd2FwIChhbGlnblswXSwgYWxpZ25bMV0pOwotICAgICAgIGlmIChjb25zdF9zdG9yZSkKLSAgICAgICAgIHN0ZDo6c3dhcCAob3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKTsKLSAgICAgfQotQEAgLTE2MTI3LDYgKzE2MTQxLDkgQEAgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZCAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotICAgaWYgKGdhcCAhPSA0KQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0rICBpZiAoIWFsaWduX29rX2xkcmRfc3RyZCAoYWxpZ25bMF0sIG9mZnNldCkpCi0rICAgIHJldHVybiBmYWxzZTsKLSsKLSAgIC8qIE1ha2Ugc3VyZSB3ZSBnZW5lcmF0ZSBsZWdhbCBpbnN0cnVjdGlvbnMuICAqLwotICAgaWYgKG9wZXJhbmRzX29rX2xkcmRfc3RyZCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBiYXNlLCBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgbG9hZCkpCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jCi1pbmRleCBlYjJiODZlZTdiNi4uZDQ5ZWZmNmI4N2UgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYwotQEAgLTgsNCArOCw0IEBAIGludCBmb28oaW50IGEsIGludCBiLCBpbnQqIHAsIGludCAqcSkKLSAgICpwID0gYTsKLSAgIHJldHVybiBhOwotIH0KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxkcmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGRyZFxcdCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jCi1zaW1pbGFyaXR5IGluZGV4IDYzJQotY29weSBmcm9tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYwotY29weSB0byBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0yLmMKLWluZGV4IGViMmI4NmVlN2I2Li42ODIyYzJiMTQ1NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV9wcmVmZXJfbGRyZF9zdHJkIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAgKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXVuYWxpZ25lZC1hY2Nlc3MiIH0gICovCi0gaW50IGZvbyhpbnQgYSwgaW50IGIsIGludCogcCwgaW50ICpxKQotIHsKLSAgIGEgPSBwWzJdICsgcFszXTsKLUBAIC04LDQgKzgsNCBAQCBpbnQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwLCBpbnQgKnEpCi0gICAqcCA9IGE7Ci0gICByZXR1cm4gYTsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsZHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJsZHJkXFx0IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLWluZGV4IGJkMzMwNzY5NTk5Li5mZTFiZWFjNzIyOSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jCi1AQCAtNiw0ICs2LDQgQEAgdm9pZCBmb28oaW50IGEsIGludCBiLCBpbnQqIHApCi0gICBwWzJdID0gYTsKLSAgIHBbM10gPSBiOwotIH0KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic3RyZFxcdCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMi5jCi1zaW1pbGFyaXR5IGluZGV4IDU4JQotY29weSBmcm9tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYwotY29weSB0byBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0yLmMKLWluZGV4IGJkMzMwNzY5NTk5Li5iZmM1ZWJlOWVlYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMi5jCi1AQCAtMSw5ICsxLDkgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV9wcmVmZXJfbGRyZF9zdHJkIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAgKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXVuYWxpZ25lZC1hY2Nlc3MiIH0gICovCi0gdm9pZCBmb28oaW50IGEsIGludCBiLCBpbnQqIHApCi0gewotICAgcFsyXSA9IGE7Ci0gICBwWzNdID0gYjsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJzdHJkXFx0IiB9IH0gKi8KLS0tIAotMi4xNS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWVuYWJsZS1GTF9MUEFFLWZsYWctZm9yLWFybXY3dmUtY29yZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNjY0YzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWVuYWJsZS1GTF9MUEFFLWZsYWctZm9yLWFybXY3dmUtY29yZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1Gcm9tIDIyZmNjMTI2ZmFkNjFhOGU5ZGRhYWFiYmM4MDM2NjQ0MjczNjQyZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBrdGthY2hvdiA8a3RrYWNob3ZAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVGh1LCA5IE5vdiAyMDE3IDE0OjM0OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVuYWJsZSBGTF9MUEFFIGZsYWcgZm9yIGFybXY3dmUgY29yZXMKLQotVGhlIGZvbGxvd2luZyBjb21taXQgYWRkZWQgdGhlIEZMX0xQQUUgZmxhZyB0byBGTF9GT1JfQVJDSDdWRSwgYnV0Ci1uZWdsZWN0ZWQgdG8gYWxzbyBhZGQgaXQgdG8gdGhlIGFybXY3dmUgY29tcGF0aWJsZSBjb3JlcyBkZWZpbmVkIGluCi1hcm0tY29yZXMuZGVmLgotCi0gIGh0dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21taXQvYWYyZDliOWU1OGU4YmU1NzZjNTNkOTRmMzBjNDhjNjgxNDZiMGM5OAotCi1UaGUgcmVzdWx0IGlzIHRoYXQgZ2NjIDYuNCBub3cgcmVmdXNlcyB0byBhbGxvdyAtbWFyY2g9YXJtdjd2ZSBhbmQKLS1tY3B1PVhYWCB0byBiZSB1c2VkIHRvZ2V0aGVyLCBldmVuIHdoZW4gLW1jcHUgaXMgc2V0IHRvIGFuIGFybXY3dmUKLWNvbXBhdGlibGUgY29yZToKLQotICBhcm0tbGludXgtZ251ZWFiaS1nY2MgLW1hcmNoPWFybXY3dmUgLW1jcHU9Y29ydGV4LWE3IC1XZXJyb3IgLi4uCi0gIGVycm9yOiBzd2l0Y2ggLW1jcHU9Y29ydGV4LWE3IGNvbmZsaWN0cyB3aXRoIC1tYXJjaD1hcm12N3ZlIHN3aXRjaCBbLVdlcnJvcl0KLQotRml4IGJ5IGRlZmluaW5nIGZsYWdzIGZvciBhcm12N3ZlIGNvbXBhdGlibGUgY29yZXMgZGlyZWN0bHkgZnJvbQotRkxfRk9SX0FSQ0g3VkUsIHJhdGhlciB0aGFuIHJlLWNyZWF0aW5nIHRoZSBhcm12N3ZlIGZsYWdzCi1pbmRlcGVuZGVudGx5IGJ5IGNvbWJpbmluZyBGTF9GT1JfQVJDSDdBIHdpdGggdGhlIGFybXY3dmUgc3BlY2lmaWMKLUZMX1RIVU1CX0RJViBhbmQgRkxfQVJNX0RJViBmbGFncy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNi1icmFuY2hAMjU0NTg0IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZiB8IDEyICsrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0tY29yZXMuZGVmIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZgotaW5kZXggODI5YjgzOS4uY2EzN2U2ZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYKLSsrKyBiL2djYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYKLUBAIC0xNDUsMTIgKzE0NSwxMiBAQCBBUk1fQ09SRSgiY29ydGV4LW0wcGx1cy5zbWFsbC1tdWx0aXBseSIsY29ydGV4bTBwbHVzc21hbGxtdWx0aXBseSwgY29ydGV4bTBwbHVzLAotIC8qIFY3IEFyY2hpdGVjdHVyZSBQcm9jZXNzb3JzICovCi0gQVJNX0NPUkUoImdlbmVyaWMtYXJtdjctYSIsCWdlbmVyaWN2N2EsIGdlbmVyaWN2N2EsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleCkKLSBBUk1fQ09SRSgiY29ydGV4LWE1IiwJCWNvcnRleGE1LCBjb3J0ZXhhNSwJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2E1KQotLUFSTV9DT1JFKCJjb3J0ZXgtYTciLAkJY29ydGV4YTcsIGNvcnRleGE3LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX1RIVU1CX0RJViB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2E3KQotK0FSTV9DT1JFKCJjb3J0ZXgtYTciLAkJY29ydGV4YTcsIGNvcnRleGE3LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2E3KQotIEFSTV9DT1JFKCJjb3J0ZXgtYTgiLAkJY29ydGV4YTgsIGNvcnRleGE4LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTgpCi0gQVJNX0NPUkUoImNvcnRleC1hOSIsCQljb3J0ZXhhOSwgY29ydGV4YTksCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hOSkKLS1BUk1fQ09SRSgiY29ydGV4LWExMiIsCQljb3J0ZXhhMTIsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTIpCi0tQVJNX0NPUkUoImNvcnRleC1hMTUiLAkJY29ydGV4YTE1LCBjb3J0ZXhhMTUsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfVEhVTUJfRElWIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTE1KQotLUFSTV9DT1JFKCJjb3J0ZXgtYTE3IiwJCWNvcnRleGExNywgY29ydGV4YTE3LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX1RIVU1CX0RJViB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2ExMikKLStBUk1fQ09SRSgiY29ydGV4LWExMiIsCQljb3J0ZXhhMTIsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hMTIpCi0rQVJNX0NPUkUoImNvcnRleC1hMTUiLAkJY29ydGV4YTE1LCBjb3J0ZXhhMTUsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3VkUpLCBjb3J0ZXhfYTE1KQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE3IiwJCWNvcnRleGExNywgY29ydGV4YTE3LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExMikKLSBBUk1fQ09SRSgiY29ydGV4LXI0IiwJCWNvcnRleHI0LCBjb3J0ZXhyNCwJCTdSLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdSKSwgY29ydGV4KQotIEFSTV9DT1JFKCJjb3J0ZXgtcjRmIiwJCWNvcnRleHI0ZiwgY29ydGV4cjRmLAkJN1IsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1IpLCBjb3J0ZXgpCi0gQVJNX0NPUkUoImNvcnRleC1yNSIsCQljb3J0ZXhyNSwgY29ydGV4cjUsCQk3UiwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN1IpLCBjb3J0ZXgpCi1AQCAtMTYyLDggKzE2Miw4IEBAIEFSTV9DT1JFKCJjb3J0ZXgtbTMiLAkJY29ydGV4bTMsIGNvcnRleG0zLAkJN00sCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8Ci0gQVJNX0NPUkUoIm1hcnZlbGwtcGo0IiwJCW1hcnZlbGxfcGo0LCBtYXJ2ZWxsX3BqNCwJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBtYXJ2ZWxsX3BqNCkKLSAKLSAvKiBWNyBiaWcuTElUVExFIGltcGxlbWVudGF0aW9ucyAqLwotLUFSTV9DT1JFKCJjb3J0ZXgtYTE1LmNvcnRleC1hNyIsIGNvcnRleGExNWNvcnRleGE3LCBjb3J0ZXhhNywJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX1RIVU1CX0RJViB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2ExNSkKLS1BUk1fQ09SRSgiY29ydGV4LWExNy5jb3J0ZXgtYTciLCBjb3J0ZXhhMTdjb3J0ZXhhNywgY29ydGV4YTcsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTIpCi0rQVJNX0NPUkUoImNvcnRleC1hMTUuY29ydGV4LWE3IiwgY29ydGV4YTE1Y29ydGV4YTcsIGNvcnRleGE3LAk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3VkUpLCBjb3J0ZXhfYTE1KQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE3LmNvcnRleC1hNyIsIGNvcnRleGExN2NvcnRleGE3LCBjb3J0ZXhhNywJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExMikKLSAKLSAvKiBWOCBBcmNoaXRlY3R1cmUgUHJvY2Vzc29ycyAqLwotIEFSTV9DT1JFKCJjb3J0ZXgtYTMyIiwJY29ydGV4YTMyLCBjb3J0ZXhhNTMsCThBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9DUkMzMiB8IEZMX0ZPUl9BUkNIOEEpLCBjb3J0ZXhfYTM1KQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDEtaTM4Ni1Nb3ZlLXN0cnVjdC1peDg2X2ZyYW1lLXRvLW1hY2hpbmVfZnVuY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDEtaTM4Ni1Nb3ZlLXN0cnVjdC1peDg2X2ZyYW1lLXRvLW1hY2hpbmVfZnVuY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYjBmZmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWkzODYtTW92ZS1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1tYWNoaW5lX2Z1bmN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLUZyb20gYzJjNzc3NWM1NTg3ZGM1OWI2NzU2MTYyZDM5MGQ4OWQ2MDk3MWExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGhqbCA8aGpsQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IE1vbiwgMTUgSmFuIDIwMTggMTE6Mjc6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xMl0gaTM4NjogTW92ZSBzdHJ1Y3QgaXg4Nl9mcmFtZSB0byBtYWNoaW5lX2Z1bmN0aW9uCi0KLU1ha2UgaXg4Nl9mcmFtZSBhdmFpbGFibGUgdG8gaTM4NiBjb2RlIGdlbmVyYXRpb24uICBUaGlzIGlzIG5lZWRlZCB0bwotYmFja3BvcnQgdGhlIHBhdGNoIHNldCBvZiAtbWluZGlyZWN0LWJyYW5jaD0gdG8gbWl0aWdhdGUgdmFyaWFudCAjMiBvZgotdGhlIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXRpZXMgb24geDg2IHByb2Nlc3NvcnMgaWRlbnRpZmllZAotYnkgQ1ZFLTIwMTctNTcxNSwgYWthIFNwZWN0cmUuCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxNy0wNi0wMSAgQmVybmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxpbmdlckBob3RtYWlsLmRlPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZnJhbWUpOiBNb3ZlZCB0byAuLi4KLQkqIGNvbmZpZy9pMzg2L2kzODYuaCAoaXg4Nl9mcmFtZSk6IEhlcmUuCi0JKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgZnJhbWUuCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBSZXBhY2UgdGhlCi0JZnJhbWUgYXJndW1lbnQgd2l0aCAmY2Z1bi0+bWFjaGluZS0+ZnJhbWUuCi0JKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wKTogRG9uJ3QgcGFzcyAmZnJhbWUgdG8KLQlpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0LiAgQ29weSBmcmFtZSBmcm9tIGNmdW4tPm1hY2hpbmUtPmZyYW1lLgotCShpeDg2X2Nhbl9lbGltaW5hdGUpOiBMaWtld2lzZS4KLQkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KLQkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KLQkoaXg4Nl9leHBhbmRfc3BsaXRfc3RhY2tfcHJvbG9ndWUpOiBMaWtld2lzZS4KLQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDY4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggOGI1ZmFhYy4uYTFmZjMyYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0yNDM0LDUzICsyNDM0LDYgQEAgc3RydWN0IEdUWSgoKSkgc3RhY2tfbG9jYWxfZW50cnkgewotICAgc3RydWN0IHN0YWNrX2xvY2FsX2VudHJ5ICpuZXh0OwotIH07Ci0gCi0tLyogU3RydWN0dXJlIGRlc2NyaWJpbmcgc3RhY2sgZnJhbWUgbGF5b3V0LgotLSAgIFN0YWNrIGdyb3dzIGRvd253YXJkOgotLQotLSAgIFthcmd1bWVudHNdCi0tCQkJCQk8LSBBUkdfUE9JTlRFUgotLSAgIHNhdmVkIHBjCi0tCi0tICAgc2F2ZWQgc3RhdGljIGNoYWluCQkJaWYgaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sKLS0KLS0gICBzYXZlZCBmcmFtZSBwb2ludGVyCQkJaWYgZnJhbWVfcG9pbnRlcl9uZWVkZWQKLS0JCQkJCTwtIEhBUkRfRlJBTUVfUE9JTlRFUgotLSAgIFtzYXZlZCByZWdzXQotLQkJCQkJPC0gcmVnc19zYXZlX29mZnNldAotLSAgIFtwYWRkaW5nMF0KLS0KLS0gICBbc2F2ZWQgU1NFIHJlZ3NdCi0tCQkJCQk8LSBzc2VfcmVnc19zYXZlX29mZnNldAotLSAgIFtwYWRkaW5nMV0gICAgICAgICAgfAotLQkJICAgICAgIHwJCTwtIEZSQU1FX1BPSU5URVIKLS0gICBbdmFfYXJnIHJlZ2lzdGVyc10gIHwKLS0JCSAgICAgICB8Ci0tICAgW2ZyYW1lXQkgICAgICAgfAotLQkJICAgICAgIHwKLS0gICBbcGFkZGluZzJdCSAgICAgICB8ID0gdG9fYWxsb2NhdGUKLS0JCQkJCTwtIFNUQUNLX1BPSU5URVIKLS0gICovCi0tc3RydWN0IGl4ODZfZnJhbWUKLS17Ci0tICBpbnQgbnNzZXJlZ3M7Ci0tICBpbnQgbnJlZ3M7Ci0tICBpbnQgdmFfYXJnX3NpemU7Ci0tICBpbnQgcmVkX3pvbmVfc2l6ZTsKLS0gIGludCBvdXRnb2luZ19hcmd1bWVudHNfc2l6ZTsKLS0KLS0gIC8qIFRoZSBvZmZzZXRzIHJlbGF0aXZlIHRvIEFSR19QT0lOVEVSLiAgKi8KLS0gIEhPU1RfV0lERV9JTlQgZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci0tICBIT1NUX1dJREVfSU5UIGhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci0tICBIT1NUX1dJREVfSU5UIHN0YWNrX3BvaW50ZXJfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7Ci0tICBIT1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldDsKLS0gIEhPU1RfV0lERV9JTlQgc3NlX3JlZ19zYXZlX29mZnNldDsKLS0KLS0gIC8qIFdoZW4gc2F2ZV9yZWdzX3VzaW5nX21vdiBpcyBzZXQsIGVtaXQgcHJvbG9ndWUgdXNpbmcKLS0gICAgIG1vdmUgaW5zdGVhZCBvZiBwdXNoIGluc3RydWN0aW9ucy4gICovCi0tICBib29sIHNhdmVfcmVnc191c2luZ19tb3Y7Ci0tfTsKLS0KLSAvKiBXaGljaCBjcHUgYXJlIHdlIHNjaGVkdWxpbmcgZm9yLiAgKi8KLSBlbnVtIGF0dHJfY3B1IGl4ODZfc2NoZWR1bGU7Ci0gCi1AQCAtMjU3Miw3ICsyNTI1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpeDg2X2Z1bmN0aW9uX2FyZ19ib3VuZGFyeSAobWFjaGluZV9tb2RlLAotIAkJCQkJCWNvbnN0X3RyZWUpOwotIHN0YXRpYyBydHggaXg4Nl9zdGF0aWNfY2hhaW4gKGNvbnN0X3RyZWUsIGJvb2wpOwotIHN0YXRpYyBpbnQgaXg4Nl9mdW5jdGlvbl9yZWdwYXJtIChjb25zdF90cmVlLCBjb25zdF90cmVlKTsKLS1zdGF0aWMgdm9pZCBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0IChzdHJ1Y3QgaXg4Nl9mcmFtZSAqKTsKLStzdGF0aWMgdm9pZCBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICh2b2lkKTsKLSBzdGF0aWMgYm9vbCBpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdF9vbmVfbm9uemVybyAoYm9vbCwgbWFjaGluZV9tb2RlLAotIAkJCQkJCSBydHgsIHJ0eCwgaW50KTsKLSBzdGF0aWMgdm9pZCBpeDg2X2FkZF9uZXdfYnVpbHRpbnMgKEhPU1RfV0lERV9JTlQpOwotQEAgLTEwOTQ0LDcgKzEwODk3LDggQEAgaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpCi0gICBpZiAoY3J0bC0+YXJncy5wb3BzX2FyZ3MgJiYgY3J0bC0+YXJncy5zaXplID49IDMyNzY4KQotICAgICByZXR1cm4gMDsKLSAKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAgIHJldHVybiAoZnJhbWUuc3RhY2tfcG9pbnRlcl9vZmZzZXQgPT0gVU5JVFNfUEVSX1dPUkQKLSAJICAmJiAoZnJhbWUubnJlZ3MgKyBmcmFtZS5uc3NlcmVncykgPT0gMCk7Ci0gfQotQEAgLTExMzU1LDggKzExMzA5LDggQEAgaXg4Nl9jYW5fZWxpbWluYXRlIChjb25zdCBpbnQgZnJvbSwgY29uc3QgaW50IHRvKQotIEhPU1RfV0lERV9JTlQKLSBpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0IChpbnQgZnJvbSwgaW50IHRvKQotIHsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotLSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoJmZyYW1lKTsKLSsgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0rICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotIAotICAgaWYgKGZyb20gPT0gQVJHX1BPSU5URVJfUkVHTlVNICYmIHRvID09IEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0pCi0gICAgIHJldHVybiBmcmFtZS5oYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotQEAgLTExMzk1LDggKzExMzQ5LDkgQEAgaXg4Nl9idWlsdGluX3NldGptcF9mcmFtZV92YWx1ZSAodm9pZCkKLSAvKiBGaWxsIHN0cnVjdHVyZSBpeDg2X2ZyYW1lIGFib3V0IGZyYW1lIG9mIGN1cnJlbnRseSBjb21wdXRlZCBmdW5jdGlvbi4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1peDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0IChzdHJ1Y3QgaXg4Nl9mcmFtZSAqZnJhbWUpCi0raXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgaXg4Nl9mcmFtZSAqZnJhbWUgPSAmY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHN0YWNrX2FsaWdubWVudF9uZWVkZWQ7Ci0gICBIT1NUX1dJREVfSU5UIG9mZnNldDsKLSAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgcHJlZmVycmVkX2FsaWdubWVudDsKLUBAIC0xMjcwMiw3ICsxMjY1Nyw4IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotICAgbS0+ZnMuc3Bfb2Zmc2V0ID0gSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUOwotICAgbS0+ZnMuc3BfdmFsaWQgPSB0cnVlOwotIAotLSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoJmZyYW1lKTsKLSsgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0rICBmcmFtZSA9IG0tPmZyYW1lOwotIAotICAgaWYgKCFUQVJHRVRfNjRCSVQgJiYgaXg4Nl9mdW5jdGlvbl9tc19ob29rX3Byb2xvZ3VlIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQotICAgICB7Ci1AQCAtMTMzNzksNyArMTMzMzUsOCBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotICAgYm9vbCB1c2luZ19kcmFwOwotIAotICAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2ZsYWdzICgpOwotLSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoJmZyYW1lKTsKLSsgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0rICBmcmFtZSA9IG0tPmZyYW1lOwotIAotICAgbS0+ZnMuc3BfdmFsaWQgPSAoIWZyYW1lX3BvaW50ZXJfbmVlZGVkCi0gCQkgICAgfHwgKGNydGwtPnNwX2lzX3VuY2hhbmdpbmcKLUBAIC0xMzg3Niw3ICsxMzgzMyw4IEBAIGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlICh2b2lkKQotICAgZ2NjX2Fzc2VydCAoZmxhZ19zcGxpdF9zdGFjayAmJiByZWxvYWRfY29tcGxldGVkKTsKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAgIGFsbG9jYXRlID0gZnJhbWUuc3RhY2tfcG9pbnRlcl9vZmZzZXQgLSBJTkNPTUlOR19GUkFNRV9TUF9PRkZTRVQ7Ci0gCi0gICAvKiBUaGlzIGlzIHRoZSBsYWJlbCB3ZSB3aWxsIGJyYW5jaCB0byBpZiB3ZSBoYXZlIGVub3VnaCBzdGFjawotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1pbmRleCA4MTEzZjgzLi41NDE0NDE2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotQEAgLTI0MjcsOSArMjQyNyw1NiBAQCBlbnVtIGF2eF91MTI4X3N0YXRlCi0gDAotICNkZWZpbmUgRkFTVENBTExfUFJFRklYICdAJwotIAwKLSsjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotKy8qIFN0cnVjdHVyZSBkZXNjcmliaW5nIHN0YWNrIGZyYW1lIGxheW91dC4KLSsgICBTdGFjayBncm93cyBkb3dud2FyZDoKLSsKLSsgICBbYXJndW1lbnRzXQotKwkJCQkJPC0gQVJHX1BPSU5URVIKLSsgICBzYXZlZCBwYwotKwotKyAgIHNhdmVkIHN0YXRpYyBjaGFpbgkJCWlmIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrCi0rCi0rICAgc2F2ZWQgZnJhbWUgcG9pbnRlcgkJCWlmIGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0rCQkJCQk8LSBIQVJEX0ZSQU1FX1BPSU5URVIKLSsgICBbc2F2ZWQgcmVnc10KLSsJCQkJCTwtIHJlZ3Nfc2F2ZV9vZmZzZXQKLSsgICBbcGFkZGluZzBdCi0rCi0rICAgW3NhdmVkIFNTRSByZWdzXQotKwkJCQkJPC0gc3NlX3JlZ3Nfc2F2ZV9vZmZzZXQKLSsgICBbcGFkZGluZzFdICAgICAgICAgIHwKLSsJCSAgICAgICB8CQk8LSBGUkFNRV9QT0lOVEVSCi0rICAgW3ZhX2FyZyByZWdpc3RlcnNdICB8Ci0rCQkgICAgICAgfAotKyAgIFtmcmFtZV0JICAgICAgIHwKLSsJCSAgICAgICB8Ci0rICAgW3BhZGRpbmcyXQkgICAgICAgfCA9IHRvX2FsbG9jYXRlCi0rCQkJCQk8LSBTVEFDS19QT0lOVEVSCi0rICAqLwotK3N0cnVjdCBHVFkoKCkpIGl4ODZfZnJhbWUKLSt7Ci0rICBpbnQgbnNzZXJlZ3M7Ci0rICBpbnQgbnJlZ3M7Ci0rICBpbnQgdmFfYXJnX3NpemU7Ci0rICBpbnQgcmVkX3pvbmVfc2l6ZTsKLSsgIGludCBvdXRnb2luZ19hcmd1bWVudHNfc2l6ZTsKLSsKLSsgIC8qIFRoZSBvZmZzZXRzIHJlbGF0aXZlIHRvIEFSR19QT0lOVEVSLiAgKi8KLSsgIEhPU1RfV0lERV9JTlQgZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIGhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIHN0YWNrX3BvaW50ZXJfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldDsKLSsgIEhPU1RfV0lERV9JTlQgc3NlX3JlZ19zYXZlX29mZnNldDsKLSsKLSsgIC8qIFdoZW4gc2F2ZV9yZWdzX3VzaW5nX21vdiBpcyBzZXQsIGVtaXQgcHJvbG9ndWUgdXNpbmcKLSsgICAgIG1vdmUgaW5zdGVhZCBvZiBwdXNoIGluc3RydWN0aW9ucy4gICovCi0rICBib29sIHNhdmVfcmVnc191c2luZ19tb3Y7Ci0rfTsKLSsKLSAvKiBNYWNoaW5lIHNwZWNpZmljIGZyYW1lIHRyYWNraW5nIGR1cmluZyBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLiAgKi8KLSAKLS0jaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnJhbWVfc3RhdGUKLSB7Ci0gICAvKiBUaGlzIHBhaXIgdHJhY2tzIHRoZSBjdXJyZW50bHkgYWN0aXZlIENGQSBhcyByZWcrb2Zmc2V0LiAgV2hlbiByZWcKLUBAIC0yNDc1LDYgKzI1MjIsOSBAQCBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsKLSAgIGludCB2YXJhcmdzX2Zwcl9zaXplOwotICAgaW50IG9wdGltaXplX21vZGVfc3dpdGNoaW5nW01BWF8zODZfRU5USVRJRVNdOwotIAotKyAgLyogQ2FjaGVkIGluaXRpYWwgZnJhbWUgbGF5b3V0IGZvciB0aGUgY3VycmVudCBmdW5jdGlvbi4gICovCi0rICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKLSsKLSAgIC8qIE51bWJlciBvZiBzYXZlZCByZWdpc3RlcnMgVVNFX0ZBU1RfUFJPTE9HVUVfRVBJTE9HVUUKLSAgICAgIGhhcyBiZWVuIGNvbXB1dGVkIGZvci4gICovCi0gICBpbnQgdXNlX2Zhc3RfcHJvbG9ndWVfZXBpbG9ndWVfbnJlZ3M7Ci1AQCAtMjU1NCw2ICsyNjA0LDcgQEAgc3RydWN0IEdUWSgoKSkgbWFjaGluZV9mdW5jdGlvbiB7Ci0gI2RlZmluZSBpeDg2X2N1cnJlbnRfZnVuY3Rpb25fY2FsbHNfdGxzX2Rlc2NyaXB0b3IgXAotICAgKGl4ODZfdGxzX2Rlc2NyaXB0b3JfY2FsbHNfZXhwYW5kZWRfaW5fY2Z1biAmJiBkZl9yZWdzX2V2ZXJfbGl2ZV9wIChTUF9SRUcpKQotICNkZWZpbmUgaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgKGNmdW4tPm1hY2hpbmUtPnN0YXRpY19jaGFpbl9vbl9zdGFjaykKLSsjZGVmaW5lIGl4ODZfcmVkX3pvbmVfc2l6ZSAoY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVkX3pvbmVfc2l6ZSkKLSAKLSAvKiBDb250cm9sIGJlaGF2aW9yIG9mIHg4Nl9maWxlX3N0YXJ0LiAgKi8KLSAjZGVmaW5lIFg4Nl9GSUxFX1NUQVJUX1ZFUlNJT05fRElSRUNUSVZFIGZhbHNlCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAyLWkzODYtVXNlLXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm9pZC1jb3AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjViMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAyLWkzODYtVXNlLXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm9pZC1jb3AucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIGZlMmIzYmUzZjRiNmVjNmIzYTZmODljMjYwMTZhMzk4M2I3Y2IzNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDE1IEphbiAyMDE4IDExOjI4OjQ0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTJdIGkzODY6IFVzZSByZWZlcmVuY2Ugb2Ygc3RydWN0IGl4ODZfZnJhbWUgdG8gYXZvaWQgY29weQotCi1XaGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgaXg4Nl9mcmFtZSwgd2UgY2FuIHVzZSByZWZlcmVuY2UKLW9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkIGNvcHkuCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxNy0xMS0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wKTogVXNlIHJlZmVyZW5jZQotCW9mIHN0cnVjdCBpeDg2X2ZyYW1lLgotCShpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIHwgOCArKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggYTFmZjMyYi4uMTNlYmYxMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xMDg4Nyw3ICsxMDg4Nyw2IEBAIHN5bWJvbGljX3JlZmVyZW5jZV9tZW50aW9uZWRfcCAocnR4IG9wKQotIGJvb2wKLSBpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCAodm9pZCkKLSB7Ci0tICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKLSAKLSAgIGlmICghIHJlbG9hZF9jb21wbGV0ZWQgfHwgZnJhbWVfcG9pbnRlcl9uZWVkZWQpCi0gICAgIHJldHVybiAwOwotQEAgLTEwODk4LDcgKzEwODk3LDcgQEAgaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpCi0gICAgIHJldHVybiAwOwotIAotICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLS0gIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0rICBzdHJ1Y3QgaXg4Nl9mcmFtZSAmZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAgIHJldHVybiAoZnJhbWUuc3RhY2tfcG9pbnRlcl9vZmZzZXQgPT0gVU5JVFNfUEVSX1dPUkQKLSAJICAmJiAoZnJhbWUubnJlZ3MgKyBmcmFtZS5uc3NlcmVncykgPT0gMCk7Ci0gfQotQEAgLTExMzEwLDcgKzExMzA5LDcgQEAgSE9TVF9XSURFX0lOVAotIGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQgKGludCBmcm9tLCBpbnQgdG8pCi0gewotICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0rICBzdHJ1Y3QgaXg4Nl9mcmFtZSAmZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIGlmIChmcm9tID09IEFSR19QT0lOVEVSX1JFR05VTSAmJiB0byA9PSBIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKQotICAgICByZXR1cm4gZnJhbWUuaGFyZF9mcmFtZV9wb2ludGVyX29mZnNldDsKLUBAIC0xMzgyMSw3ICsxMzgyMCw2IEBAIHN0YXRpYyBHVFkoKCkpIHJ0eCBzcGxpdF9zdGFja19mbl9sYXJnZTsKLSB2b2lkCi0gaXg4Nl9leHBhbmRfc3BsaXRfc3RhY2tfcHJvbG9ndWUgKHZvaWQpCi0gewotLSAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0gICBIT1NUX1dJREVfSU5UIGFsbG9jYXRlOwotICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBhcmdzX3NpemU7Ci0gICBydHhfY29kZV9sYWJlbCAqbGFiZWw7Ci1AQCAtMTM4MzQsNyArMTM4MzIsNyBAQCBpeDg2X2V4cGFuZF9zcGxpdF9zdGFja19wcm9sb2d1ZSAodm9pZCkKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICBhbGxvY2F0ZSA9IGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0IC0gSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUOwotIAotICAgLyogVGhpcyBpcyB0aGUgbGFiZWwgd2Ugd2lsbCBicmFuY2ggdG8gaWYgd2UgaGF2ZSBlbm91Z2ggc3RhY2sKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAzLWkzODYtVXNlLWNvbnN0LXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDMtaTM4Ni1Vc2UtY29uc3QtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2by5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVmZmQ4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDMtaTM4Ni1Vc2UtY29uc3QtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi1Gcm9tIDgyMjQzNzMyZGM2M2U5YjkwMzk2YTVhZTRhZDk5Y2EzNmFmODEzNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEzOjEwOjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTJdIGkzODY6IFVzZSBjb25zdCByZWZlcmVuY2Ugb2Ygc3RydWN0IGl4ODZfZnJhbWUgdG8gYXZvaWQKLSBjb3B5Ci0KLVdlIGNhbiB1c2UgY29uc3QgcmVmZXJlbmNlIG9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkIG1ha2luZyBhIGxvY2FsCi1jb3B5IG9mIGl4ODZfZnJhbWUuICBpeDg2X2V4cGFuZF9lcGlsb2d1ZSBtYWtlcyBhIGxvY2FsIGNvcHkgb2Ygc3RydWN0Ci1peDg2X2ZyYW1lIGFuZCB1c2VzIHRoZSByZWdfc2F2ZV9vZmZzZXQgZmllbGQgYXMgYSBsb2NhbCB2YXJpYWJsZS4gIFRoaXMKLXBhdGNoIHVzZXMgYSBzZXBhcmF0ZSBsb2NhbCB2YXJpYWJsZSBmb3IgcmVnX3NhdmVfb2Zmc2V0LgotCi1UZXN0ZWQgb24geDg2LTY0IHdpdGggYWRhLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCVBSIHRhcmdldC84MzkwNQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6IFVzZSBjb3N0IHJlZmVyZW5jZQotCW9mIHN0cnVjdCBpeDg2X2ZyYW1lLgotCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLiAgQWRkIGEgbG9jYWwgdmFyaWFibGUgZm9yCi0JdGhlIHJlZ19zYXZlX29mZnNldCBmaWVsZCBpbiBzdHJ1Y3QgaXg4Nl9mcmFtZS4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTctYnJhbmNoQDI1NzEyMyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggMTNlYmYxMC4uNmM5OGY3NSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xMjYzMyw3ICsxMjYzMyw2IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotIHsKLSAgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICptID0gY2Z1bi0+bWFjaGluZTsKLSAgIHJ0eCBpbnNuLCB0OwotLSAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0gICBIT1NUX1dJREVfSU5UIGFsbG9jYXRlOwotICAgYm9vbCBpbnRfcmVnaXN0ZXJzX3NhdmVkOwotICAgYm9vbCBzc2VfcmVnaXN0ZXJzX3NhdmVkOwotQEAgLTEyNjU3LDcgKzEyNjU2LDcgQEAgaXg4Nl9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCi0gICBtLT5mcy5zcF92YWxpZCA9IHRydWU7Ci0gCi0gICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotLSAgZnJhbWUgPSBtLT5mcmFtZTsKLSsgIGNvbnN0IHN0cnVjdCBpeDg2X2ZyYW1lICZmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotIAotICAgaWYgKCFUQVJHRVRfNjRCSVQgJiYgaXg4Nl9mdW5jdGlvbl9tc19ob29rX3Byb2xvZ3VlIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQotICAgICB7Ci1AQCAtMTMzMjksMTMgKzEzMzI4LDEyIEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpCi0gewotICAgc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24gKm0gPSBjZnVuLT5tYWNoaW5lOwotICAgc3RydWN0IG1hY2hpbmVfZnJhbWVfc3RhdGUgZnJhbWVfc3RhdGVfc2F2ZSA9IG0tPmZzOwotLSAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0gICBib29sIHJlc3RvcmVfcmVnc192aWFfbW92OwotICAgYm9vbCB1c2luZ19kcmFwOwotIAotICAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2ZsYWdzICgpOwotICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLS0gIGZyYW1lID0gbS0+ZnJhbWU7Ci0rICBjb25zdCBzdHJ1Y3QgaXg4Nl9mcmFtZSAmZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIG0tPmZzLnNwX3ZhbGlkID0gKCFmcmFtZV9wb2ludGVyX25lZWRlZAotIAkJICAgIHx8IChjcnRsLT5zcF9pc191bmNoYW5naW5nCi1AQCAtMTMzNzcsMTEgKzEzMzc1LDEzIEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpCi0gCQkJCSAgKyBVTklUU19QRVJfV09SRCk7Ci0gICAgIH0KLSAKLSsgIEhPU1RfV0lERV9JTlQgcmVnX3NhdmVfb2Zmc2V0ID0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0OwotKwotICAgLyogU3BlY2lhbCBjYXJlIG11c3QgYmUgdGFrZW4gZm9yIHRoZSBub3JtYWwgcmV0dXJuIGNhc2Ugb2YgYSBmdW5jdGlvbgotICAgICAgdXNpbmcgZWhfcmV0dXJuOiB0aGUgZWF4IGFuZCBlZHggcmVnaXN0ZXJzIGFyZSBtYXJrZWQgYXMgc2F2ZWQsIGJ1dAotICAgICAgbm90IHJlc3RvcmVkIGFsb25nIHRoaXMgcGF0aC4gIEFkanVzdCB0aGUgc2F2ZSBsb2NhdGlvbiB0byBtYXRjaC4gICovCi0gICBpZiAoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuICYmIHN0eWxlICE9IDIpCi0tICAgIGZyYW1lLnJlZ19zYXZlX29mZnNldCAtPSAyICogVU5JVFNfUEVSX1dPUkQ7Ci0rICAgIHJlZ19zYXZlX29mZnNldCAtPSAyICogVU5JVFNfUEVSX1dPUkQ7Ci0gCi0gICAvKiBFSF9SRVRVUk4gcmVxdWlyZXMgdGhlIHVzZSBvZiBtb3ZlcyB0byBmdW5jdGlvbiBwcm9wZXJseS4gICovCi0gICBpZiAoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuKQotQEAgLTEzMzk3LDExICsxMzM5NywxMSBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotICAgZWxzZSBpZiAoVEFSR0VUX0VQSUxPR1VFX1VTSU5HX01PVkUKLSAJICAgJiYgY2Z1bi0+bWFjaGluZS0+dXNlX2Zhc3RfcHJvbG9ndWVfZXBpbG9ndWUKLSAJICAgJiYgKGZyYW1lLm5yZWdzID4gMQotLQkgICAgICAgfHwgbS0+ZnMuc3Bfb2Zmc2V0ICE9IGZyYW1lLnJlZ19zYXZlX29mZnNldCkpCi0rCSAgICAgICB8fCBtLT5mcy5zcF9vZmZzZXQgIT0gcmVnX3NhdmVfb2Zmc2V0KSkKLSAgICAgcmVzdG9yZV9yZWdzX3ZpYV9tb3YgPSB0cnVlOwotICAgZWxzZSBpZiAoZnJhbWVfcG9pbnRlcl9uZWVkZWQKLSAJICAgJiYgIWZyYW1lLm5yZWdzCi0tCSAgICYmIG0tPmZzLnNwX29mZnNldCAhPSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpCi0rCSAgICYmIG0tPmZzLnNwX29mZnNldCAhPSByZWdfc2F2ZV9vZmZzZXQpCi0gICAgIHJlc3RvcmVfcmVnc192aWFfbW92ID0gdHJ1ZTsKLSAgIGVsc2UgaWYgKGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0gCSAgICYmIFRBUkdFVF9VU0VfTEVBVkUKLUBAIC0xMzQzOSw3ICsxMzQzOSw3IEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpCi0gICAgICAgcnR4IHQ7Ci0gCi0gICAgICAgaWYgKGZyYW1lLm5yZWdzKQotLQlpeDg2X2VtaXRfcmVzdG9yZV9yZWdzX3VzaW5nX21vdiAoZnJhbWUucmVnX3NhdmVfb2Zmc2V0LCBzdHlsZSA9PSAyKTsKLSsJaXg4Nl9lbWl0X3Jlc3RvcmVfcmVnc191c2luZ19tb3YgKHJlZ19zYXZlX29mZnNldCwgc3R5bGUgPT0gMik7Ci0gCi0gICAgICAgLyogZWhfcmV0dXJuIGVwaWxvZ3VlcyBuZWVkICVlY3ggYWRkZWQgdG8gdGhlIHN0YWNrIHBvaW50ZXIuICAqLwotICAgICAgIGlmIChzdHlsZSA9PSAyKQotQEAgLTEzNTI5LDE5ICsxMzUyOSwxOSBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotIAkgZXBpbG9ndWVzLiAgKi8KLSAgICAgICBpZiAoIW0tPmZzLnNwX3ZhbGlkCi0gIAkgIHx8IChUQVJHRVRfU0VICi0tCSAgICAgICYmIChtLT5mcy5zcF9vZmZzZXQgLSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQKLSsJICAgICAgJiYgKG0tPmZzLnNwX29mZnNldCAtIHJlZ19zYXZlX29mZnNldAotIAkJICA+PSBTRUhfTUFYX0ZSQU1FX1NJWkUpKSkKLSAJewotIAkgIHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2sgKHN0YWNrX3BvaW50ZXJfcnR4LCBoYXJkX2ZyYW1lX3BvaW50ZXJfcnR4LAotIAkJCQkgICAgIEdFTl9JTlQgKG0tPmZzLmZwX29mZnNldAotLQkJCQkJICAgICAgLSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpLAotKwkJCQkJICAgICAgLSByZWdfc2F2ZV9vZmZzZXQpLAotIAkJCQkgICAgIHN0eWxlLCBmYWxzZSk7Ci0gCX0KLS0gICAgICBlbHNlIGlmIChtLT5mcy5zcF9vZmZzZXQgIT0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0KQotKyAgICAgIGVsc2UgaWYgKG0tPmZzLnNwX29mZnNldCAhPSByZWdfc2F2ZV9vZmZzZXQpCi0gCXsKLSAJICBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrIChzdGFja19wb2ludGVyX3J0eCwgc3RhY2tfcG9pbnRlcl9ydHgsCi0gCQkJCSAgICAgR0VOX0lOVCAobS0+ZnMuc3Bfb2Zmc2V0Ci0tCQkJCQkgICAgICAtIGZyYW1lLnJlZ19zYXZlX29mZnNldCksCi0rCQkJCQkgICAgICAtIHJlZ19zYXZlX29mZnNldCksCi0gCQkJCSAgICAgc3R5bGUsCi0gCQkJCSAgICAgbS0+ZnMuY2ZhX3JlZyA9PSBzdGFja19wb2ludGVyX3J0eCk7Ci0gCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA0LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNC14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZDZlNWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA0LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNTQgKzAsMCBAQAotRnJvbSA2MTQwYzJjMGJiMmI2MWU2OWQwZGE4NDMxNWUwNDMzZmYzNTIwYWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogU2F0LCA2IEphbiAyMDE4IDIyOjI5OjU1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTJdIHg4NjogQWRkIC1taW5kaXJlY3QtYnJhbmNoPQotCi1BZGQgLW1pbmRpcmVjdC1icmFuY2g9IG9wdGlvbiB0byBjb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbAotYW5kIHJldHVybiB0aHVua3MuICBUaGUgZGVmYXVsdCBpcyAna2VlcCcsIHdoaWNoIGtlZXBzIGluZGlyZWN0IGNhbGwgYW5kCi1qdW1wIHVubW9kaWZpZWQuICAndGh1bmsnIGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQKLXJldHVybiB0aHVuay4gICd0aHVuay1pbmxpbmUnIGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZAotY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgJ3RodW5rLWV4dGVybicgY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0bwotZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuICBZb3UKLWNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkgdXNpbmcgdGhlIGZ1bmN0aW9uCi1hdHRyaWJ1dGUgaW5kaXJlY3RfYnJhbmNoLgotCi0yIGtpbmRzIG9mIHRodW5rcyBhcmUgZ2VuZWF0ZWQuICBNZW1vcnkgdGh1bmsgd2hlcmUgdGhlIGZ1bmN0aW9uIGFkZHJlc3MKLWlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrOgotCi1fX3g4Nl9pbmRpcmVjdF90aHVuazoKLQljYWxsIEwyCi1MMToKLQlwYXVzZQotCWxmZW5jZQotCWptcCBMMQotTDI6Ci0JbGVhIDgoJXJzcCksICVyc3B8bGVhIDQoJWVzcCksICVlc3AKLQlyZXQKLQotSW5kaXJlY3Qgam1wIHZpYSBtZW1vcnksICJqbXAgbWVtIiwgaXMgY29udmVydGVkIHRvCi0KLQlwdXNoIG1lbW9yeQotCWptcCBfX3g4Nl9pbmRpcmVjdF90aHVuawotCi1JbmRpcmVjdCBjYWxsIHZpYSBtZW1vcnksICJjYWxsIG1lbSIsIGlzIGNvbnZlcnRlZCB0bwotCi0Jam1wIEwyCi1MMToKLQlwdXNoIFttZW1dCi0Jam1wIF9feDg2X2luZGlyZWN0X3RodW5rCi1MMjoKLQljYWxsIEwxCi0KLVJlZ2lzdGVyIHRodW5rIHdoZXJlIHRoZSBmdW5jdGlvbiBhZGRyZXNzIGlzIGluIGEgcmVnaXN0ZXIsIHJlZzoKLQotX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnOgotCWNhbGwJTDIKLUwxOgotCXBhdXNlCi0JbGZlbmNlCi0Jam1wCUwxCi1MMjoKLQltb3ZxCSVyZWcsICglcnNwKXxtb3ZsICAgICVyZWcsICglZXNwKQotCXJldAotCi13aGVyZSByZWcgaXMgb25lIG9mIChyfGUpYXgsIChyfGUpZHgsIChyfGUpY3gsIChyfGUpYngsIChyfGUpc2ksIChyfGUpZGksCi0ocnxlKWJwLCByOCwgcjksIHIxMCwgcjExLCByMTIsIHIxMywgcjE0IGFuZCByMTUuCi0KLUluZGlyZWN0IGptcCB2aWEgcmVnaXN0ZXIsICJqbXAgcmVnIiwgaXMgY29udmVydGVkIHRvCi0KLQlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnCi0KLUluZGlyZWN0IGNhbGwgdmlhIHJlZ2lzdGVyLCAiY2FsbCByZWciLCBpcyBjb252ZXJ0ZWQgdG8KLQotCWNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnCi0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2kzODYtb3B0cy5oIChpbmRpcmVjdF9icmFuY2gpOiBOZXcuCi0JKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X291dHB1dF9pbmRpcmVjdF9qbXApOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl91c2luZ19yZWRfem9uZSk6IERpc2FsbG93IHJlZC16b25lCi0Jd2l0aCBsb2NhbCBpbmRpcmVjdCBqdW1wIHdoZW4gY29udmVydGluZyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wLgotCShpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSk6IE5ldy4KLQkoaXg4Nl9zZXRfY3VycmVudF9mdW5jdGlvbik6IENhbGwgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUuCi0JKGluZGlyZWN0bGFiZWxubyk6IE5ldy4KLQkoaW5kaXJlY3RfdGh1bmtfbmVlZGVkKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQpOiBMaWtld2lzZS4KLQkoaW5kaXJlY3RfdGh1bmtzX3VzZWQpOiBMaWtld2lzZS4KLQkoaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkKTogTGlrZXdpc2UuCi0JKElORElSRUNUX0xBQkVMKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rX25hbWUpOiBMaWtld2lzZS4KLQkob3V0cHV0X2luZGlyZWN0X3RodW5rKTogTGlrZXdpc2UuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IExpa2V3aXNlLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3JlZyk6IExpa2V3aXNlLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2gpOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoKTogTGlrZXdpc2UuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCk6IExpa2V3aXNlLgotCShpeDg2X2NvZGVfZW5kKTogQ2FsbCBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gaWYgbmVlZGVkLgotCShpeDg2X291dHB1dF9jYWxsX2luc24pOiBDYWxsIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCBpZgotCW5lZWRlZC4KLQkoaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSk6IEhhbmRsZSBpbmRpcmVjdF9icmFuY2guCi0JKGl4ODZfYXR0cmlidXRlX3RhYmxlKTogQWRkIGluZGlyZWN0X2JyYW5jaC4KLQkqIGNvbmZpZy9pMzg2L2kzODYuaCAobWFjaGluZV9mdW5jdGlvbik6IEFkZCBpbmRpcmVjdF9icmFuY2hfdHlwZQotCWFuZCBoYXNfbG9jYWxfaW5kaXJlY3RfanVtcC4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGluZGlyZWN0X2p1bXApOiBTZXQgaGFzX2xvY2FsX2luZGlyZWN0X2p1bXAKLQl0byB0cnVlLgotCSh0YWJsZWp1bXApOiBMaWtld2lzZS4KLQkoKmluZGlyZWN0X2p1bXApOiBVc2UgaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wLgotCSgqdGFibGVqdW1wXzEpOiBMaWtld2lzZS4KLQkoc2ltcGxlX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1pbmRpcmVjdC1icmFuY2g9KTogTmV3IG9wdGlvbi4KLQkoaW5kaXJlY3RfYnJhbmNoKTogTmV3LgotCShrZWVwKTogTGlrZXdpc2UuCi0JKHRodW5rKTogTGlrZXdpc2UuCi0JKHRodW5rLWlubGluZSk6IExpa2V3aXNlLgotCSh0aHVuay1leHRlcm4pOiBMaWtld2lzZS4KLQkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgaW5kaXJlY3RfYnJhbmNoIGZ1bmN0aW9uIGF0dHJpYnV0ZS4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1pbmRpcmVjdC1icmFuY2g9IG9wdGlvbi4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYzogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRzLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjM5ICsrKysrKysrKysrKysrKysrKysrLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNiArLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsKLSBnY2MvZG9jL2V4dGVuZC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgICB8ICAyMCArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jICAgfCAgMjAgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyAgIHwgIDIxICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMgICB8ICAyMSArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jICAgfCAgMTcgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyAgIHwgIDE4ICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgICB8ICA0NCArKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMgICAgICAgIHwgIDIzICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jICAgICAgICB8ICAyMSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyAgICAgICAgfCAgMjMgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgICAgICAgIHwgIDIyICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jICAgICAgICB8ICAyMiArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgICAgICAgIHwgIDQ0ICsrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYyAgICAgICAgfCAgNDIgKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgICAgICAgICB8ICAyMCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jICAgICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyAgICAgICAgIHwgIDE5ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgICAgICAgICB8ICAyMCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jICAgICAgfCAgMTkgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgIDE5ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgICAgICB8ICAyMCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyAgICAgIHwgIDE2ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgICAgICB8ICAxNyArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jICAgICAgfCAgNDMgKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgICAgICB8ICAyMCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyAgICAgIHwgIDIxICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMgICAgICB8ICAyMSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgMTcgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYyAgICAgIHwgIDE4ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgICAgICB8ICA0NCArKwotIDQxIGZpbGVzIGNoYW5nZWQsIDE0ODYgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oCi1pbmRleCBiN2Y5MmUzLi5jYzIxMTUyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRzLmgKLUBAIC05OSw0ICs5OSwxNyBAQCBlbnVtIHN0YWNrX3Byb3RlY3Rvcl9ndWFyZCB7Ci0gICBTU1BfR0xPQkFMICAgIC8qIGdsb2JhbCBjYW5hcnkgKi8KLSB9OwotIAotKy8qIFRoaXMgaXMgdXNlZCB0byBtaXRpZ2F0ZSB2YXJpYW50ICMyIG9mIHRoZSBzcGVjdWxhdGl2ZSBleGVjdXRpb24KLSsgICB2dWxuZXJhYmlsaXRpZXMgb24geDg2IHByb2Nlc3NvcnMgaWRlbnRpZmllZCBieSBDVkUtMjAxNy01NzE1LCBha2EKLSsgICBTcGVjdHJlLiAgVGhleSBjb252ZXJ0IGluZGlyZWN0IGJyYW5jaGVzIGFuZCBmdW5jdGlvbiByZXR1cm5zIHRvCi0rICAgY2FsbCBhbmQgcmV0dXJuIHRodW5rcyB0byBhdm9pZCBzcGVjdWxhdGl2ZSBleGVjdXRpb24gdmlhIGluZGlyZWN0Ci0rICAgY2FsbCwgam1wIGFuZCByZXQuICAqLwotK2VudW0gaW5kaXJlY3RfYnJhbmNoIHsKLSsgIGluZGlyZWN0X2JyYW5jaF91bnNldCA9IDAsCi0rICBpbmRpcmVjdF9icmFuY2hfa2VlcCwKLSsgIGluZGlyZWN0X2JyYW5jaF90aHVuaywKLSsgIGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmUsCi0rICBpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuCi0rfTsKLSsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi1pbmRleCBmZjQ3YmMxLi5lY2E0Y2JmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi1AQCAtMzExLDYgKzMxMSw3IEBAIGV4dGVybiBlbnVtIGF0dHJfY3B1IGl4ODZfc2NoZWR1bGU7Ci0gI2VuZGlmCi0gCi0gZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9jYWxsX2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcCk7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wLCBib29sIHJldF9wKTsKLSBleHRlcm4gYm9vbCBpeDg2X29wZXJhbmRzX29rX2Zvcl9tb3ZlX211bHRpcGxlIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gCQkJCQkJZW51bSBtYWNoaW5lX21vZGUgbW9kZSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDZjOThmNzUuLjBiOWZjNGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMzY2MiwxMiArMzY2MiwyMyBAQCBtYWtlX3Bhc3Nfc3R2IChnY2M6OmNvbnRleHQgKmN0eHQpCi0gICByZXR1cm4gbmV3IHBhc3Nfc3R2IChjdHh0KTsKLSB9Ci0gCi0tLyogUmV0dXJuIHRydWUgaWYgYSByZWQtem9uZSBpcyBpbiB1c2UuICAqLwotKy8qIFJldHVybiB0cnVlIGlmIGEgcmVkLXpvbmUgaXMgaW4gdXNlLiAgV2UgY2FuJ3QgdXNlIHJlZC16b25lIHdoZW4KLSsgICB0aGVyZSBhcmUgbG9jYWwgaW5kaXJlY3QganVtcHMsIGxpa2UgImluZGlyZWN0X2p1bXAiIG9yICJ0YWJsZWp1bXAiLAotKyAgIHdoaWNoIGp1bXBzIHRvIGFub3RoZXIgcGxhY2UgaW4gdGhlIGZ1bmN0aW9uLCBzaW5jZSAiY2FsbCIgaW4gdGhlCi0rICAgaW5kaXJlY3QgdGh1bmsgcHVzaGVzIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHN0YWNrLCBkZXN0cm95aW5nCi0rICAgcmVkLXpvbmUuCi0rCi0rICAgVE9ETzogSWYgd2UgY2FuIHJlc2VydmUgdGhlIGZpcnN0IDIgV09SRHMsIGZvciBQVVNIIGFuZCwgYW5vdGhlcgotKyAgIGZvciBDQUxMLCBpbiByZWQtem9uZSwgd2UgY2FuIGFsbG93IGxvY2FsIGluZGlyZWN0IGp1bXBzIHdpdGgKLSsgICBpbmRpcmVjdCB0aHVuay4gICovCi0gCi0gYm9vbAotIGl4ODZfdXNpbmdfcmVkX3pvbmUgKHZvaWQpCi0gewotLSAgcmV0dXJuIFRBUkdFVF9SRURfWk9ORSAmJiAhVEFSR0VUXzY0QklUX01TX0FCSTsKLSsgIHJldHVybiAoVEFSR0VUX1JFRF9aT05FCi0rCSAgJiYgIVRBUkdFVF82NEJJVF9NU19BQkkKLSsJICAmJiAoIWNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wCi0rCSAgICAgIHx8IGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID09IGluZGlyZWN0X2JyYW5jaF9rZWVwKSk7Ci0gfQotIAwKLSAvKiBSZXR1cm4gYSBzdHJpbmcgdGhhdCBkb2N1bWVudHMgdGhlIGN1cnJlbnQgLW0gb3B0aW9ucy4gIFRoZSBjYWxsZXIgaXMKLUBAIC02MzUwLDYgKzYzNjEsMzcgQEAgaXg4Nl9yZXNldF9wcmV2aW91c19mbmRlY2wgKHZvaWQpCi0gICBpeDg2X3ByZXZpb3VzX2ZuZGVjbCA9IE5VTExfVFJFRTsKLSB9Ci0gCi0rLyogU2V0IHRoZSBpbmRpcmVjdF9icmFuY2hfdHlwZSBmaWVsZCBmcm9tIHRoZSBmdW5jdGlvbiBGTkRFQ0wuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKHRyZWUgZm5kZWNsKQotK3sKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfdW5zZXQpCi0rICAgIHsKLSsgICAgICB0cmVlIGF0dHIgPSBsb29rdXBfYXR0cmlidXRlICgiaW5kaXJlY3RfYnJhbmNoIiwKLSsJCQkJICAgIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSk7Ci0rICAgICAgaWYgKGF0dHIgIT0gTlVMTCkKLSsJewotKwkgIHRyZWUgYXJncyA9IFRSRUVfVkFMVUUgKGF0dHIpOwotKwkgIGlmIChhcmdzID09IE5VTEwpCi0rCSAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCSAgdHJlZSBjc3QgPSBUUkVFX1ZBTFVFIChhcmdzKTsKLSsJICBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAia2VlcCIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF9rZWVwOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rIikgPT0gMCkKLSsJICAgIGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID0gaW5kaXJlY3RfYnJhbmNoX3RodW5rOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWlubGluZSIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmU7Ci0rCSAgZWxzZSBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmstZXh0ZXJuIikgPT0gMCkKLSsJICAgIGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybjsKLSsJICBlbHNlCi0rCSAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID0gaXg4Nl9pbmRpcmVjdF9icmFuY2g7Ci0rICAgIH0KLSt9Ci0rCi0gLyogRXN0YWJsaXNoIGFwcHJvcHJpYXRlIGJhY2stZW5kIGNvbnRleHQgZm9yIHByb2Nlc3NpbmcgdGhlIGZ1bmN0aW9uCi0gICAgRk5ERUNMLiAgVGhlIGFyZ3VtZW50IG1pZ2h0IGJlIE5VTEwgdG8gaW5kaWNhdGUgcHJvY2Vzc2luZyBhdCB0b3AKLSAgICBsZXZlbCwgb3V0c2lkZSBvZiBhbnkgZnVuY3Rpb24gc2NvcGUuICAqLwotQEAgLTYzNjAsNyArNjQwMiwxMyBAQCBpeDg2X3NldF9jdXJyZW50X2Z1bmN0aW9uICh0cmVlIGZuZGVjbCkKLSAgICAgIHNldmVyYWwgdGltZXMgaW4gdGhlIGNvdXJzZSBvZiBjb21waWxpbmcgYSBmdW5jdGlvbiwgYW5kIHdlIGRvbid0IHdhbnQgdG8KLSAgICAgIHNsb3cgdGhpbmdzIGRvd24gdG9vIG11Y2ggb3IgY2FsbCB0YXJnZXRfcmVpbml0IHdoZW4gaXQgaXNuJ3Qgc2FmZS4gICovCi0gICBpZiAoZm5kZWNsID09IGl4ODZfcHJldmlvdXNfZm5kZWNsKQotLSAgICByZXR1cm47Ci0rICAgIHsKLSsgICAgICAvKiBUaGVyZSBtYXkgYmUgMiBmdW5jdGlvbiBib2RpZXMgZm9yIHRoZSBzYW1lIGZ1bmN0aW9uIEZOREVDTCwKLSsJIG9uZSBpcyBleHRlcm4gaW5saW5lIGFuZCBvbmUgaXNuJ3QuICAqLwotKyAgICAgIGlmIChmbmRlY2wgIT0gTlVMTF9UUkVFKQotKwlpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSAoZm5kZWNsKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSAKLSAgIHRyZWUgb2xkX3RyZWU7Ci0gICBpZiAoaXg4Nl9wcmV2aW91c19mbmRlY2wgPT0gTlVMTF9UUkVFKQotQEAgLTYzNzcsNiArNjQyNSw4IEBAIGl4ODZfc2V0X2N1cnJlbnRfZnVuY3Rpb24gKHRyZWUgZm5kZWNsKQotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKGZuZGVjbCk7Ci0rCi0gICB0cmVlIG5ld190cmVlID0gREVDTF9GVU5DVElPTl9TUEVDSUZJQ19UQVJHRVQgKGZuZGVjbCk7Ci0gICBpZiAobmV3X3RyZWUgPT0gTlVMTF9UUkVFKQotICAgICBuZXdfdHJlZSA9IHRhcmdldF9vcHRpb25fZGVmYXVsdF9ub2RlOwotQEAgLTEwOTYyLDYgKzExMDEyLDIyMCBAQCBpeDg2X3NldHVwX2ZyYW1lX2FkZHJlc3NlcyAodm9pZCkKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0rLyogTGFiZWwgY291bnQgZm9yIGNhbGwgYW5kIHJldHVybiB0aHVua3MuICBJdCBpcyB1c2VkIHRvIG1ha2UgdW5pcXVlCi0rICAgbGFiZWxzIGluIGNhbGwgYW5kIHJldHVybiB0aHVua3MuICAqLwotK3N0YXRpYyBpbnQgaW5kaXJlY3RsYWJlbG5vOwotKwotKy8qIFRydWUgaWYgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGZ1bmN0aW9ucyBhcmUgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF90aHVua19uZWVkZWQgPSBmYWxzZTsKLSsvKiBUcnVlIGlmIGNhbGwgYW5kIHJldHVybiB0aHVuayBmdW5jdGlvbnMgd2l0aCB0aGUgQk5EIHByZWZpeCBhcmUKLSsgICBuZWVkZWQuICAqLwotK3N0YXRpYyBib29sIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgPSBmYWxzZTsKLSsKLSsvKiBCaXQgbWFza3Mgb2YgaW50ZWdlciByZWdpc3RlcnMsIHdoaWNoIGNvbnRhaW4gYnJhbmNoIHRhcmdldCwgdXNlZAotKyAgIGJ5IGNhbGwgYW5kIHJldHVybiB0aHVua3MgZnVuY3Rpb25zLiAgKi8KLStzdGF0aWMgaW50IGluZGlyZWN0X3RodW5rc191c2VkOwotKy8qIEJpdCBtYXNrcyBvZiBpbnRlZ2VyIHJlZ2lzdGVycywgd2hpY2ggY29udGFpbiBicmFuY2ggdGFyZ2V0LCB1c2VkCi0rICAgYnkgY2FsbCBhbmQgcmV0dXJuIHRodW5rcyBmdW5jdGlvbnMgd2l0aCB0aGUgQk5EIHByZWZpeC4gICovCi0rc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQ7Ci0rCi0rI2lmbmRlZiBJTkRJUkVDVF9MQUJFTAotKyMgZGVmaW5lIElORElSRUNUX0xBQkVMICJMSU5EIgotKyNlbmRpZgotKwotKy8qIEZpbGxzIGluIHRoZSBsYWJlbCBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBpbmRpcmVjdCB0aHVuay4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCkKLSt7Ci0rICBpZiAoVVNFX0hJRERFTl9MSU5LT05DRSkKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmJuZCA9IG5lZWRfYm5kX3AgPyAiX2JuZCIgOiAiIjsKLSsgICAgICBpZiAocmVnbm8gPj0gMCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKnJlZ19wcmVmaXg7Ci0rCSAgaWYgKExFR0FDWV9JTlRfUkVHTk9fUCAocmVnbm8pKQotKwkgICAgcmVnX3ByZWZpeCA9IFRBUkdFVF82NEJJVCA/ICJyIiA6ICJlIjsKLSsJICBlbHNlCi0rCSAgICByZWdfcHJlZml4ID0gIiI7Ci0rCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2X2luZGlyZWN0X3RodW5rJXNfJXMlcyIsCi0rCQkgICBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotKwl9Ci0rICAgICAgZWxzZQotKwlzcHJpbnRmIChuYW1lLCAiX194ODZfaW5kaXJlY3RfdGh1bmslcyIsIGJuZCk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmIChyZWdubyA+PSAwKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVRCUiIsIHJlZ25vKTsKLSsJICBlbHNlCi0rCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVRSIiwgcmVnbm8pOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVRCIiwgMCk7Ci0rCSAgZWxzZQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUIiwgMCk7Ci0rCX0KLSsgICAgfQotK30KLSsKLSsvKiBPdXRwdXQgYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZm9yIGluZGlyZWN0IGJyYW5jaC4gIElmIEJORF9QIGlzCi0rICAgdHJ1ZSwgdGhlIEJORCBwcmVmaXggaXMgbmVlZGVkLiAgIElmIFJFR05PICE9IC0xLCAgdGhlIGZ1bmN0aW9uCi0rICAgYWRkcmVzcyBpcyBpbiBSRUdOTyBhbmQgdGhlIGNhbGwgYW5kIHJldHVybiB0aHVuayBsb29rcyBsaWtlOgotKwotKwljYWxsCUwyCi0rICAgTDE6Ci0rCXBhdXNlCi0rCWptcAlMMQotKyAgIEwyOgotKwltb3YJJVJFRywgKCVzcCkKLSsJcmV0Ci0rCi0rICAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcyBvbiB0aGUgdG9wIG9mIHN0YWNrIGFuZCB0aGUKLSsgICBjYWxsIGFuZCByZXR1cm4gdGh1bmsgbG9va3MgbGlrZToKLSsKLSsJY2FsbCBMMgotKyAgTDE6Ci0rCXBhdXNlCi0rCWptcCBMMQotKyAgTDI6Ci0rCWxlYSBXT1JEX1NJWkUoJXNwKSwgJXNwCi0rCXJldAotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSt7Ci0rICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSsgIGNoYXIgaW5kaXJlY3RsYWJlbDJbMzJdOwotKwotKyAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChpbmRpcmVjdGxhYmVsMSwgSU5ESVJFQ1RfTEFCRUwsCi0rCQkJICAgICAgIGluZGlyZWN0bGFiZWxubysrKTsKLSsgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDIsIElORElSRUNUX0xBQkVMLAotKwkJCSAgICAgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rCi0rICAvKiBDYWxsICovCi0rICBpZiAobmVlZF9ibmRfcCkKLSsgICAgZnB1dHMgKCJcdGJuZCBjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgZWxzZQotKyAgICBmcHV0cyAoIlx0Y2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsgIGZwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwotKyAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rCi0rICAvKiBQYXVzZSArIGxmZW5jZS4gICovCi0rICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdHBhdXNlXG5cdGxmZW5jZVxuIik7Ci0rCi0rICAvKiBKdW1wLiAgKi8KLSsgIGZwdXRzICgiXHRqbXBcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsKLSsgIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDIpOwotKwotKyAgaWYgKHJlZ25vID49IDApCi0rICAgIHsKLSsgICAgICAvKiBNT1YuICAqLwotKyAgICAgIHJ0eCB4b3BzWzJdOwotKyAgICAgIHhvcHNbMF0gPSBnZW5fcnR4X01FTSAod29yZF9tb2RlLCBzdGFja19wb2ludGVyX3J0eCk7Ci0rICAgICAgeG9wc1sxXSA9IGdlbl9ydHhfUkVHICh3b3JkX21vZGUsIHJlZ25vKTsKLSsgICAgICBvdXRwdXRfYXNtX2luc24gKCJtb3ZcdHslMSwgJTB8JTAsICUxfSIsIHhvcHMpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBMRUEuICAqLwotKyAgICAgIHJ0eCB4b3BzWzJdOwotKyAgICAgIHhvcHNbMF0gPSBzdGFja19wb2ludGVyX3J0eDsKLSsgICAgICB4b3BzWzFdID0gcGx1c19jb25zdGFudCAoUG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LCBVTklUU19QRVJfV09SRCk7Ci0rICAgICAgb3V0cHV0X2FzbV9pbnNuICgibGVhXHR7JUUxLCAlMHwlMCwgJUUxfSIsIHhvcHMpOwotKyAgICB9Ci0rCi0rICBpZiAobmVlZF9ibmRfcCkKLSsgICAgZnB1dHMgKCJcdGJuZCByZXRcbiIsIGFzbV9vdXRfZmlsZSk7Ci0rICBlbHNlCi0rICAgIGZwdXRzICgiXHRyZXRcbiIsIGFzbV9vdXRfZmlsZSk7Ci0rfQotKwotKy8qIE91dHB1dCBhIGZ1bnRpb24gd2l0aCBhIGNhbGwgYW5kIHJldHVybiB0aHVuayBmb3IgaW5kaXJlY3QgYnJhbmNoLgotKyAgIElmIEJORF9QIGlzIHRydWUsIHRoZSBCTkQgcHJlZml4IGlzIG5lZWRlZC4gICBJZiBSRUdOTyAhPSAtMSwgIHRoZQotKyAgIGZ1bmN0aW9uIGFkZHJlc3MgaXMgaW4gUkVHTk8uICBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiBhZGRyZXNzIGlzCi0rICAgb24gdGhlIHRvcCBvZiBzdGFjay4gICovCi0rCi0rc3RhdGljIHZvaWQKLStvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotK3sKLSsgIGNoYXIgbmFtZVszMl07Ci0rICB0cmVlIGRlY2w7Ci0rCi0rICAvKiBDcmVhdGUgX194ODZfaW5kaXJlY3RfdGh1bmsvX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kLiAgKi8KLSsgIGluZGlyZWN0X3RodW5rX25hbWUgKG5hbWUsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgIGRlY2wgPSBidWlsZF9kZWNsIChCVUlMVElOU19MT0NBVElPTiwgRlVOQ1RJT05fREVDTCwKLSsJCSAgICAgZ2V0X2lkZW50aWZpZXIgKG5hbWUpLAotKwkJICAgICBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKHZvaWRfdHlwZV9ub2RlLCBOVUxMX1RSRUUpKTsKLSsgIERFQ0xfUkVTVUxUIChkZWNsKSA9IGJ1aWxkX2RlY2wgKEJVSUxUSU5TX0xPQ0FUSU9OLCBSRVNVTFRfREVDTCwKLSsJCQkJICAgTlVMTF9UUkVFLCB2b2lkX3R5cGVfbm9kZSk7Ci0rICBUUkVFX1BVQkxJQyAoZGVjbCkgPSAxOwotKyAgVFJFRV9TVEFUSUMgKGRlY2wpID0gMTsKLSsgIERFQ0xfSUdOT1JFRF9QIChkZWNsKSA9IDE7Ci0rCi0rI2lmIFRBUkdFVF9NQUNITwotKyAgaWYgKFRBUkdFVF9NQUNITykKLSsgICAgewotKyAgICAgIHN3aXRjaF90b19zZWN0aW9uIChkYXJ3aW5fc2VjdGlvbnNbcGljYmFzZV90aHVua19zZWN0aW9uXSk7Ci0rICAgICAgZnB1dHMgKCJcdC53ZWFrX2RlZmluaXRpb25cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgYXNzZW1ibGVfbmFtZSAoYXNtX291dF9maWxlLCBuYW1lKTsKLSsgICAgICBmcHV0cyAoIlxuXHQucHJpdmF0ZV9leHRlcm5cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgYXNzZW1ibGVfbmFtZSAoYXNtX291dF9maWxlLCBuYW1lKTsKLSsgICAgICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIEFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgREVDTF9XRUFLIChkZWNsKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsjZW5kaWYKLSsgICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0rICAgICAgewotKwljZ3JhcGhfbm9kZTo6Y3JlYXRlIChkZWNsKS0+c2V0X2NvbWRhdF9ncm91cCAoREVDTF9BU1NFTUJMRVJfTkFNRSAoZGVjbCkpOwotKwotKwl0YXJnZXRtLmFzbV9vdXQudW5pcXVlX3NlY3Rpb24gKGRlY2wsIDApOwotKwlzd2l0Y2hfdG9fc2VjdGlvbiAoZ2V0X25hbWVkX3NlY3Rpb24gKGRlY2wsIE5VTEwsIDApKTsKLSsKLSsJdGFyZ2V0bS5hc21fb3V0Lmdsb2JhbGl6ZV9sYWJlbCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSsJZnB1dHMgKCJcdC5oaWRkZW5cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rCWFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rCXB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCUFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUgKGFzbV9vdXRfZmlsZSwgbmFtZSwgZGVjbCk7Ci0rICAgICAgfQotKyAgICBlbHNlCi0rICAgICAgewotKwlzd2l0Y2hfdG9fc2VjdGlvbiAodGV4dF9zZWN0aW9uKTsKLSsJQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSsgICAgICB9Ci0rCi0rICBERUNMX0lOSVRJQUwgKGRlY2wpID0gbWFrZV9ub2RlIChCTE9DSyk7Ci0rICBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgPSBkZWNsOwotKyAgYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uIChkZWNsLCBmYWxzZSk7Ci0rICBpbml0X2Z1bmN0aW9uX3N0YXJ0IChkZWNsKTsKLSsgIC8qIFdlJ3JlIGFib3V0IHRvIGhpZGUgdGhlIGZ1bmN0aW9uIGJvZHkgZnJvbSBjYWxsZWVzIG9mIGZpbmFsXyogYnkKLSsgICAgIGVtaXR0aW5nIGl0IGRpcmVjdGx5OyB0ZWxsIHRoZW0gd2UncmUgYSB0aHVuaywgaWYgdGhleSBjYXJlLiAgKi8KLSsgIGNmdW4tPmlzX3RodW5rID0gdHJ1ZTsKLSsgIGZpcnN0X2Z1bmN0aW9uX2Jsb2NrX2lzX2NvbGQgPSBmYWxzZTsKLSsgIC8qIE1ha2Ugc3VyZSB1bndpbmQgaW5mbyBpcyBlbWl0dGVkIGZvciB0aGUgdGh1bmsgaWYgbmVlZGVkLiAgKi8KLSsgIGZpbmFsX3N0YXJ0X2Z1bmN0aW9uIChlbWl0X2JhcnJpZXIgKCksIGFzbV9vdXRfZmlsZSwgMSk7Ci0rCi0rICBvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsKLSsgIGZpbmFsX2VuZF9mdW5jdGlvbiAoKTsKLSsgIGluaXRfaW5zbl9sZW5ndGhzICgpOwotKyAgZnJlZV9hZnRlcl9jb21waWxhdGlvbiAoY2Z1bik7Ci0rICBzZXRfY2Z1biAoTlVMTCk7Ci0rICBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgPSBOVUxMOwotK30KLSsKLSBzdGF0aWMgaW50IHBpY19sYWJlbHNfdXNlZDsKLSAKLSAvKiBGaWxscyBpbiB0aGUgbGFiZWwgbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBhIHBjIHRodW5rIGZvcgotQEAgLTEwOTg4LDExICsxMTI1MiwzMiBAQCBpeDg2X2NvZGVfZW5kICh2b2lkKQotICAgcnR4IHhvcHNbMl07Ci0gICBpbnQgcmVnbm87Ci0gCi0rICBpZiAoaW5kaXJlY3RfdGh1bmtfbmVlZGVkKQotKyAgICBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCAtMSk7Ci0rICBpZiAoaW5kaXJlY3RfdGh1bmtfYm5kX25lZWRlZCkKLSsgICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uICh0cnVlLCAtMSk7Ci0rCi0rICBmb3IgKHJlZ25vID0gRklSU1RfUkVYX0lOVF9SRUc7IHJlZ25vIDw9IExBU1RfUkVYX0lOVF9SRUc7IHJlZ25vKyspCi0rICAgIHsKLSsgICAgICBpbnQgaSA9IHJlZ25vIC0gRklSU1RfUkVYX0lOVF9SRUcgKyBMQVNUX0lOVF9SRUcgKyAxOwotKyAgICAgIGlmICgoaW5kaXJlY3RfdGh1bmtzX3VzZWQgJiAoMSA8PCBpKSkpCi0rCW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoZmFsc2UsIHJlZ25vKTsKLSsKLSsgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCAmICgxIDw8IGkpKSkKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uICh0cnVlLCByZWdubyk7Ci0rICAgIH0KLSsKLSAgIGZvciAocmVnbm8gPSBBWF9SRUc7IHJlZ25vIDw9IFNQX1JFRzsgcmVnbm8rKykKLSAgICAgewotICAgICAgIGNoYXIgbmFtZVszMl07Ci0gICAgICAgdHJlZSBkZWNsOwotIAotKyAgICAgIGlmICgoaW5kaXJlY3RfdGh1bmtzX3VzZWQgJiAoMSA8PCByZWdubykpKQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCByZWdubyk7Ci0rCi0rICAgICAgaWYgKChpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQgJiAoMSA8PCByZWdubykpKQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKHRydWUsIHJlZ25vKTsKLSsKLSAgICAgICBpZiAoIShwaWNfbGFiZWxzX3VzZWQgJiAoMSA8PCByZWdubykpKQotIAljb250aW51ZTsKLSAKLUBAIC0yNzM2OSwxMiArMjc2NTQsMjkyIEBAIGl4ODZfbm9waWNfbm9wbHRfYXR0cmlidXRlX3AgKHJ0eCBjYWxsX29wKQotICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLSsvKiBPdXRwdXQgaW5kaXJlY3QgYnJhbmNoIHZpYSBhIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIENBTExfT1AgaXMgYQotKyAgIHJlZ2lzdGVyIHdoaWNoIGNvbnRhaW5zIHRoZSBicmFuY2ggdGFyZ2V0LiAgWEFTTSBpcyB0aGUgYXNzZW1ibHkKLSsgICB0ZW1wbGF0ZSBmb3IgQ0FMTF9PUC4gIEJyYW5jaCBpcyBhIHRhaWwgY2FsbCBpZiBTSUJDQUxMX1AgaXMgdHJ1ZS4KLSsgICBBIG5vcm1hbCBjYWxsIGlzIGNvbnZlcnRlZCB0bzoKLSsKLSsJY2FsbCBfX3g4Nl9pbmRpcmVjdF90aHVua19yZWcKLSsKLSsgICBhbmQgYSB0YWlsIGNhbGwgaXMgY29udmVydGVkIHRvOgotKwotKwlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnCi0rICovCi0rCi0rc3RhdGljIHZvaWQKLStpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3JlZyAocnR4IGNhbGxfb3AsIGJvb2wgc2liY2FsbF9wKQotK3sKLSsgIGNoYXIgdGh1bmtfbmFtZV9idWZbMzJdOwotKyAgY2hhciAqdGh1bmtfbmFtZTsKLSsgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rICBpbnQgcmVnbm8gPSBSRUdOTyAoY2FsbF9vcCk7Ci0rCi0rICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsgICAgICAhPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotKyAgICB7Ci0rICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID09IGluZGlyZWN0X2JyYW5jaF90aHVuaykKLSsJewotKwkgIGludCBpID0gcmVnbm87Ci0rCSAgaWYgKGkgPj0gRklSU1RfUkVYX0lOVF9SRUcpCi0rCSAgICBpIC09IChGSVJTVF9SRVhfSU5UX1JFRyAtIExBU1RfSU5UX1JFRyAtIDEpOwotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkIHw9IDEgPDwgaTsKLSsJICBlbHNlCi0rCSAgICBpbmRpcmVjdF90aHVua3NfdXNlZCB8PSAxIDw8IGk7Ci0rCX0KLSsgICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3ApOwotKyAgICAgIHRodW5rX25hbWUgPSB0aHVua19uYW1lX2J1ZjsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0aHVua19uYW1lID0gTlVMTDsKLSsKLSsgIGlmIChzaWJjYWxsX3ApCi0rICAgIHsKLSsgICAgICBpZiAodGh1bmtfbmFtZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGJuZCBqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgY2FsbFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0Y2FsbFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgIHJldHVybjsKLSsJfQotKwotKyAgICAgIGNoYXIgaW5kaXJlY3RsYWJlbDFbMzJdOwotKyAgICAgIGNoYXIgaW5kaXJlY3RsYWJlbDJbMzJdOwotKwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDEsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rICAgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChpbmRpcmVjdGxhYmVsMiwKLSsJCQkJICAgSU5ESVJFQ1RfTEFCRUwsCi0rCQkJCSAgIGluZGlyZWN0bGFiZWxubysrKTsKLSsKLSsgICAgICAvKiBKdW1wLiAgKi8KLSsgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJZnB1dHMgKCJcdGJuZCBqbXBcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgZWxzZQotKwlmcHV0cyAoIlx0am1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsKLSsgICAgICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsKLSsgICAgICBpZiAodGh1bmtfbmFtZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGJuZCBqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsKLSsgICAgICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsKLSsgICAgICAvKiBDYWxsLiAgKi8KLSsgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJZnB1dHMgKCJcdGJuZCBjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGNhbGxcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgYXNzZW1ibGVfbmFtZV9yYXcgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKyAgICAgIGZwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKyAgICB9Ci0rfQotKwotKy8qIE91dHB1dCBpbmRpcmVjdCBicmFuY2ggdmlhIGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQ0FMTF9PUCBpcwotKyAgIHRoZSBicmFuY2ggdGFyZ2V0LiAgWEFTTSBpcyB0aGUgYXNzZW1ibHkgdGVtcGxhdGUgZm9yIENBTExfT1AuCi0rICAgQnJhbmNoIGlzIGEgdGFpbCBjYWxsIGlmIFNJQkNBTExfUCBpcyB0cnVlLiAgQSBub3JtYWwgY2FsbCBpcwotKyAgIGNvbnZlcnRlZCB0bzoKLSsKLSsJam1wIEwyCi0rICAgTDE6Ci0rCXB1c2ggQ0FMTF9PUAotKwlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmsKLSsgICBMMjoKLSsJY2FsbCBMMQotKwotKyAgIGFuZCBhIHRhaWwgY2FsbCBpcyBjb252ZXJ0ZWQgdG86Ci0rCi0rCXB1c2ggQ0FMTF9PUAotKwlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmsKLSsgKi8KLSsKLStzdGF0aWMgdm9pZAotK2l4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaF92aWFfcHVzaCAocnR4IGNhbGxfb3AsIGNvbnN0IGNoYXIgKnhhc20sCi0rCQkJCSAgICAgIGJvb2wgc2liY2FsbF9wKQotK3sKLSsgIGNoYXIgdGh1bmtfbmFtZV9idWZbMzJdOwotKyAgY2hhciAqdGh1bmtfbmFtZTsKLSsgIGNoYXIgcHVzaF9idWZbNjRdOwotKyAgYm9vbCBuZWVkX2JuZF9wID0gaXg4Nl9ibmRfcHJlZml4ZWRfaW5zbl9wIChjdXJyZW50X291dHB1dF9pbnNuKTsKLSsgIGludCByZWdubyA9IC0xOwotKwotKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0rICAgICAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsgICAgewotKyAgICAgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspCi0rCXsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgPSB0cnVlOwotKwkgIGVsc2UKLSsJICAgIGluZGlyZWN0X3RodW5rX25lZWRlZCA9IHRydWU7Ci0rCX0KLSsgICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3ApOwotKyAgICAgIHRodW5rX25hbWUgPSB0aHVua19uYW1lX2J1ZjsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0aHVua19uYW1lID0gTlVMTDsKLSsKLSsgIHNucHJpbnRmIChwdXNoX2J1Ziwgc2l6ZW9mIChwdXNoX2J1ZiksICJwdXNoeyVjfVx0JXMiLAotKwkgICAgVEFSR0VUXzY0QklUID8gJ3EnIDogJ2wnLCB4YXNtKTsKLSsKLSsgIGlmIChzaWJjYWxsX3ApCi0rICAgIHsKLSsgICAgICBvdXRwdXRfYXNtX2luc24gKHB1c2hfYnVmLCAmY2FsbF9vcCk7Ci0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGNoYXIgaW5kaXJlY3RsYWJlbDFbMzJdOwotKyAgICAgIGNoYXIgaW5kaXJlY3RsYWJlbDJbMzJdOwotKwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDEsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rICAgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChpbmRpcmVjdGxhYmVsMiwKLSsJCQkJICAgSU5ESVJFQ1RfTEFCRUwsCi0rCQkJCSAgIGluZGlyZWN0bGFiZWxubysrKTsKLSsKLSsgICAgICAvKiBKdW1wLiAgKi8KLSsgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJZnB1dHMgKCJcdGJuZCBqbXBcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgZWxzZQotKwlmcHV0cyAoIlx0am1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsKLSsgICAgICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsKLSsgICAgICAvKiBBbiBleHRlcm5hbCBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIHZpYSBHT1QsIGluc3RlYWQgb2YgUExULiAgKi8KLSsgICAgICBpZiAoTUVNX1AgKGNhbGxfb3ApKQotKwl7Ci0rCSAgc3RydWN0IGl4ODZfYWRkcmVzcyBwYXJ0czsKLSsJICBydHggYWRkciA9IFhFWFAgKGNhbGxfb3AsIDApOwotKwkgIGlmIChpeDg2X2RlY29tcG9zZV9hZGRyZXNzIChhZGRyLCAmcGFydHMpCi0rCSAgICAgICYmIHBhcnRzLmJhc2UgPT0gc3RhY2tfcG9pbnRlcl9ydHgpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFNpbmNlIGNhbGwgd2lsbCBhZGp1c3Qgc3RhY2sgYnkgLVVOSVRTX1BFUl9XT1JELAotKwkJIHdlIG11c3QgY29udmVydCAiZGlzcChzdGFjaywgaW5kZXgsIHNjYWxlKSIgdG8KLSsJCSAiZGlzcCtVTklUU19QRVJfV09SRChzdGFjaywgaW5kZXgsIHNjYWxlKSIuICAqLwotKwkgICAgICBpZiAocGFydHMuaW5kZXgpCi0rCQl7Ci0rCQkgIGFkZHIgPSBnZW5fcnR4X01VTFQgKFBtb2RlLCBwYXJ0cy5pbmRleCwKLSsJCQkJICAgICAgIEdFTl9JTlQgKHBhcnRzLnNjYWxlKSk7Ci0rCQkgIGFkZHIgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwKLSsJCQkJICAgICAgIGFkZHIpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlhZGRyID0gc3RhY2tfcG9pbnRlcl9ydHg7Ci0rCi0rCSAgICAgIHJ0eCBkaXNwOwotKwkgICAgICBpZiAocGFydHMuZGlzcCAhPSBOVUxMX1JUWCkKLSsJCWRpc3AgPSBwbHVzX2NvbnN0YW50IChQbW9kZSwgcGFydHMuZGlzcCwKLSsJCQkJICAgICAgVU5JVFNfUEVSX1dPUkQpOwotKwkgICAgICBlbHNlCi0rCQlkaXNwID0gR0VOX0lOVCAoVU5JVFNfUEVSX1dPUkQpOwotKwotKwkgICAgICBhZGRyID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgYWRkciwgZGlzcCk7Ci0rCSAgICAgIGNhbGxfb3AgPSBnZW5fcnR4X01FTSAoR0VUX01PREUgKGNhbGxfb3ApLCBhZGRyKTsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIG91dHB1dF9hc21faW5zbiAocHVzaF9idWYsICZjYWxsX29wKTsKLSsKLSsgICAgICBpZiAodGh1bmtfbmFtZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGJuZCBqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsKLSsgICAgICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsKLSsgICAgICAvKiBDYWxsLiAgKi8KLSsgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJZnB1dHMgKCJcdGJuZCBjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGNhbGxcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICAgICAgYXNzZW1ibGVfbmFtZV9yYXcgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKyAgICAgIGZwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKyAgICB9Ci0rfQotKwotKy8qIE91dHB1dCBpbmRpcmVjdCBicmFuY2ggdmlhIGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQ0FMTF9PUCBpcwotKyAgIHRoZSBicmFuY2ggdGFyZ2V0LiAgWEFTTSBpcyB0aGUgYXNzZW1ibHkgdGVtcGxhdGUgZm9yIENBTExfT1AuCi0rICAgQnJhbmNoIGlzIGEgdGFpbCBjYWxsIGlmIFNJQkNBTExfUCBpcyB0cnVlLiAgICovCi0rCi0rc3RhdGljIHZvaWQKLStpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggKHJ0eCBjYWxsX29wLCBjb25zdCBjaGFyICp4YXNtLAotKwkJCSAgICAgYm9vbCBzaWJjYWxsX3ApCi0rewotKyAgaWYgKFJFR19QIChjYWxsX29wKSkKLSsgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcgKGNhbGxfb3AsIHNpYmNhbGxfcCk7Ci0rICBlbHNlCi0rICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaF92aWFfcHVzaCAoY2FsbF9vcCwgeGFzbSwgc2liY2FsbF9wKTsKLSt9Ci0rLyogT3V0cHV0IGluZGlyZWN0IGp1bXAuICBDQUxMX09QIGlzIHRoZSBqdW1wIHRhcmdldC4gIEp1bXAgaXMgYQotKyAgIGZ1bmN0aW9uIHJldHVybiBpZiBSRVRfUCBpcyB0cnVlLiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wLCBib29sIHJldF9wKQotK3sKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSsgICAgewotKyAgICAgIC8qIFdlIGNhbid0IGhhdmUgcmVkLXpvbmUgaWYgdGhpcyBpc24ndCBhIGZ1bmN0aW9uIHJldHVybiBzaW5jZQotKwkgImNhbGwiIGluIHRoZSBpbmRpcmVjdCB0aHVuayBwdXNoZXMgdGhlIHJldHVybiBhZGRyZXNzIG9udG8KLSsJIHN0YWNrLCBkZXN0cm95aW5nIHJlZC16b25lLiAgKi8KLSsgICAgICBpZiAoIXJldF9wICYmIGl4ODZfcmVkX3pvbmVfc2l6ZSAhPSAwKQotKwlnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCi0rICAgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChjYWxsX29wLCAiJTAiLCB0cnVlKTsKLSsgICAgICByZXR1cm4gIiI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgcmV0dXJuICIlIWptcFx0JUEwIjsKLSt9Ci0rCi0gLyogT3V0cHV0IHRoZSBhc3NlbWJseSBmb3IgYSBjYWxsIGluc3RydWN0aW9uLiAgKi8KLSAKLSBjb25zdCBjaGFyICoKLSBpeDg2X291dHB1dF9jYWxsX2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcCkKLSB7Ci0gICBib29sIGRpcmVjdF9wID0gY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQgKGNhbGxfb3AsIFZPSURtb2RlKTsKLSsgIGJvb2wgb3V0cHV0X2luZGlyZWN0X3AKLSsgICAgPSAoIVRBUkdFVF9TRUgKLSsgICAgICAgJiYgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApOwotICAgYm9vbCBzZWhfbm9wX3AgPSBmYWxzZTsKLSAgIGNvbnN0IGNoYXIgKnhhc207Ci0gCi1AQCAtMjczODMsNyArMjc5NDgsMTMgQEAgaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApCi0gICAgICAgaWYgKGRpcmVjdF9wKQotIAl7Ci0gCSAgaWYgKGl4ODZfbm9waWNfbm9wbHRfYXR0cmlidXRlX3AgKGNhbGxfb3ApKQotLQkgICAgeGFzbSA9ICIlIWptcFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCSAgICB7Ci0rCSAgICAgIGRpcmVjdF9wID0gZmFsc2U7Ci0rCSAgICAgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCkKLSsJCXhhc20gPSAieyVwMEBHT1RQQ1JFTCglJXJpcCl8W1FXT1JEIFBUUiAlcDBAR09UUENSRUxbcmlwXV19IjsKLSsJICAgICAgZWxzZQotKwkJeGFzbSA9ICIlIWptcFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgeGFzbSA9ICIlIWptcFx0JVAwIjsKLSAJfQotQEAgLTI3MzkyLDkgKzI3OTYzLDE3IEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKQotICAgICAgIGVsc2UgaWYgKFRBUkdFVF9TRUgpCi0gCXhhc20gPSAiJSFyZXguVyBqbXBcdCVBMCI7Ci0gICAgICAgZWxzZQotLQl4YXNtID0gIiUham1wXHQlQTAiOwotKwl7Ci0rCSAgaWYgKG91dHB1dF9pbmRpcmVjdF9wKQotKwkgICAgeGFzbSA9ICIlMCI7Ci0rCSAgZWxzZQotKwkgICAgeGFzbSA9ICIlIWptcFx0JUEwIjsKLSsJfQotIAotLSAgICAgIG91dHB1dF9hc21faW5zbiAoeGFzbSwgJmNhbGxfb3ApOwotKyAgICAgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCAmJiAhZGlyZWN0X3ApCi0rCWl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgeGFzbSwgdHJ1ZSk7Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSAgICAgICByZXR1cm4gIiI7Ci0gICAgIH0KLSAKLUBAIC0yNzQzMSwxNCArMjgwMTAsMjggQEAgaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApCi0gICBpZiAoZGlyZWN0X3ApCi0gICAgIHsKLSAgICAgICBpZiAoaXg4Nl9ub3BpY19ub3BsdF9hdHRyaWJ1dGVfcCAoY2FsbF9vcCkpCi0tCXhhc20gPSAiJSFjYWxsXHR7KiVwMEBHT1RQQ1JFTCglJXJpcCl8W1FXT1JEIFBUUiAlcDBAR09UUENSRUxbcmlwXV19IjsKLSsJewotKwkgIGRpcmVjdF9wID0gZmFsc2U7Ci0rCSAgaWYgKG91dHB1dF9pbmRpcmVjdF9wKQotKwkgICAgeGFzbSA9ICJ7JXAwQEdPVFBDUkVMKCUlcmlwKXxbUVdPUkQgUFRSICVwMEBHT1RQQ1JFTFtyaXBdXX0iOwotKwkgIGVsc2UKLSsJICAgIHhhc20gPSAiJSFjYWxsXHR7KiVwMEBHT1RQQ1JFTCglJXJpcCl8W1FXT1JEIFBUUiAlcDBAR09UUENSRUxbcmlwXV19IjsKLSsJfQotICAgICAgIGVsc2UKLSAJeGFzbSA9ICIlIWNhbGxcdCVQMCI7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgeGFzbSA9ICIlIWNhbGxcdCVBMCI7Ci0rICAgIHsKLSsgICAgICBpZiAob3V0cHV0X2luZGlyZWN0X3ApCi0rCXhhc20gPSAiJTAiOwotKyAgICAgIGVsc2UKLSsJeGFzbSA9ICIlIWNhbGxcdCVBMCI7Ci0rICAgIH0KLSAKLS0gIG91dHB1dF9hc21faW5zbiAoeGFzbSwgJmNhbGxfb3ApOwotKyAgaWYgKG91dHB1dF9pbmRpcmVjdF9wICYmICFkaXJlY3RfcCkKLSsgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChjYWxsX29wLCB4YXNtLCBmYWxzZSk7Ci0rICBlbHNlCi0rICAgIG91dHB1dF9hc21faW5zbiAoeGFzbSwgJmNhbGxfb3ApOwotIAotICAgaWYgKHNlaF9ub3BfcCkKLSAgICAgcmV0dXJuICJub3AiOwotQEAgLTQ0ODM2LDcgKzQ1NDI5LDcgQEAgaXg4Nl9oYW5kbGVfc3RydWN0X2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlLCBpbnQsCi0gfQotIAotIHN0YXRpYyB0cmVlCi0taXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlLCBpbnQsCi0raXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3MsIGludCwKLSAJCQkgICAgICBib29sICpub19hZGRfYXR0cnMpCi0gewotICAgaWYgKFRSRUVfQ09ERSAoKm5vZGUpICE9IEZVTkNUSU9OX0RFQ0wpCi1AQCAtNDQ4NDUsNiArNDU0MzgsMjkgQEAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlLCBpbnQsCi0gICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0gICAgIH0KLSsKLSsgIGlmIChpc19hdHRyaWJ1dGVfcCAoImluZGlyZWN0X2JyYW5jaCIsIG5hbWUpKQotKyAgICB7Ci0rICAgICAgdHJlZSBjc3QgPSBUUkVFX1ZBTFVFIChhcmdzKTsKLSsgICAgICBpZiAoVFJFRV9DT0RFIChjc3QpICE9IFNUUklOR19DU1QpCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiJXFFIGF0dHJpYnV0ZSByZXF1aXJlcyBhIHN0cmluZyBjb25zdGFudCBhcmd1bWVudCIsCi0rCQkgICBuYW1lKTsKLSsJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWlubGluZSIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpICE9IDApCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiYXJndW1lbnQgdG8gJXFFIGF0dHJpYnV0ZSBpcyBub3QgIgotKwkJICAgIihrZWVwfHRodW5rfHRodW5rLWlubGluZXx0aHVuay1leHRlcm4pIiwgbmFtZSk7Ci0rCSAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0rCX0KLSsgICAgfQotKwotICAgcmV0dXJuIE5VTExfVFJFRTsKLSB9Ci0gCi1AQCAtNDkwNzIsNiArNDk2ODgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGl4ODZfYXR0cmlidXRlX3RhYmxlW10gPQotICAgICBmYWxzZSB9LAotICAgeyAiY2FsbGVlX3BvcF9hZ2dyZWdhdGVfcmV0dXJuIiwgMSwgMSwgZmFsc2UsIHRydWUsIHRydWUsCi0gICAgIGl4ODZfaGFuZGxlX2NhbGxlZV9wb3BfYWdncmVnYXRlX3JldHVybiwgdHJ1ZSB9LAotKyAgeyAiaW5kaXJlY3RfYnJhbmNoIiwgMSwgMSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLAotKyAgICBpeDg2X2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlLCBmYWxzZSB9LAotKwotICAgLyogRW5kIGVsZW1lbnQuICAqLwotICAgeyBOVUxMLCAgICAgICAgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCwgZmFsc2UgfQotIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLWluZGV4IDU0MTQ0MTYuLjlkY2NkYjAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1AQCAtMjU3Miw2ICsyNTcyLDEzIEBAIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnVuY3Rpb24gewotICAgLyogSWYgdHJ1ZSwgaXQgaXMgc2FmZSB0byBub3Qgc2F2ZS9yZXN0b3JlIERSQVAgcmVnaXN0ZXIuICAqLwotICAgQk9PTF9CSVRGSUVMRCBub19kcmFwX3NhdmVfcmVzdG9yZSA6IDE7Ci0gCi0rICAvKiBIb3cgdG8gZ2VuZXJhdGUgaW5kaXJlYyBicmFuY2guICAqLwotKyAgRU5VTV9CSVRGSUVMRChpbmRpcmVjdF9icmFuY2gpIGluZGlyZWN0X2JyYW5jaF90eXBlIDogMzsKLSsKLSsgIC8qIElmIHRydWUsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGhhcyBsb2NhbCBpbmRpcmVjdCBqdW1wcywgbGlrZQotKyAgICAgImluZGlyZWN0X2p1bXAiIG9yICJ0YWJsZWp1bXAiLiAgKi8KLSsgIEJPT0xfQklURklFTEQgaGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgOiAxOwotKwotICAgLyogSWYgdHJ1ZSwgdGhlcmUgaXMgcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBhcmd1bWVudCBwYXNzaW5nLiAgVGhpcwotICAgICAgaXMgdXNlZCBvbmx5IGluIGl4ODZfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwgYnkgMzItYml0IHRvIGRldGVybWluZQotICAgICAgaWYgdGhlcmUgaXMgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIGluZGlyZWN0IHNpYmNhbGwuICBJbgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLWluZGV4IGQyYmZlMzEuLjE1M2UxNjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLUBAIC0xMTgwNywxMyArMTE4MDcsMTggQEAKLSB7Ci0gICBpZiAoVEFSR0VUX1gzMikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSsgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotIAotIChkZWZpbmVfaW5zbiAiKmluZGlyZWN0X2p1bXAiCi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSldCi0gICAiIgotLSAgIiUham1wXHQlQTAiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaWJyIikKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCBmYWxzZSk7IgotKyAgWyhzZXQgKGF0dHIgInR5cGUiKQotKyAgICAgKGlmX3RoZW5fZWxzZSAobWF0Y2hfdGVzdCAiKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0rCQkJCSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkiKQotKwkoY29uc3Rfc3RyaW5nICJtdWx0aSIpCi0rCShjb25zdF9zdHJpbmcgImliciIpKSkKLSAgICAoc2V0X2F0dHIgImxlbmd0aF9pbW1lZGlhdGUiICIwIikKLSAgICAoc2V0X2F0dHIgIm1heWJlX3ByZWZpeF9ibmQiICIxIildKQotIAotQEAgLTExODU2LDE0ICsxMTg2MSwxOSBAQAotIAotICAgaWYgKFRBUkdFVF9YMzIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0rICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLSAKLSAoZGVmaW5lX2luc24gIip0YWJsZWp1bXBfMSIKLSAgIFsoc2V0IChwYykgKG1hdGNoX29wZXJhbmQ6VyAwICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIgInJCdyIpKQotICAgICh1c2UgKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAxKSkpXQotICAgIiIKLS0gICIlIWptcFx0JUEwIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImliciIpCi0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgZmFsc2UpOyIKLSsgIFsoc2V0IChhdHRyICJ0eXBlIikKLSsgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLSsJKGNvbnN0X3N0cmluZyAibXVsdGkiKQotKwkoY29uc3Rfc3RyaW5nICJpYnIiKSkpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi0gICAgKHNldF9hdHRyICJtYXliZV9wcmVmaXhfYm5kIiAiMSIpXSkKLSAMCi1AQCAtMTI1MjAsOCArMTI1MzAsMTIgQEAKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodXNlIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpXQotICAgInJlbG9hZF9jb21wbGV0ZWQiCi0tICAiJSFqbXBcdCVBMCIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpYnIiKQotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIHRydWUpOyIKLSsgIFsoc2V0IChhdHRyICJ0eXBlIikKLSsgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLSsJKGNvbnN0X3N0cmluZyAibXVsdGkiKQotKwkoY29uc3Rfc3RyaW5nICJpYnIiKSkpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi0gICAgKHNldF9hdHRyICJtYXliZV9wcmVmaXhfYm5kIiAiMSIpXSkKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLWluZGV4IGYzMDRiNjIuLjVmZmEzMzQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotQEAgLTg5NywzICs4OTcsMjMgQEAgRW51bShzdGFja19wcm90ZWN0b3JfZ3VhcmQpIFN0cmluZyhnbG9iYWwpIFZhbHVlKFNTUF9HTE9CQUwpCi0gbW1pdGlnYXRlLXJvcAotIFRhcmdldCBWYXIoZmxhZ19taXRpZ2F0ZV9yb3ApIEluaXQoMCkKLSBBdHRlbXB0IHRvIGF2b2lkIGdlbmVyYXRpbmcgaW5zdHJ1Y3Rpb24gc2VxdWVuY2VzIGNvbnRhaW5pbmcgcmV0IGJ5dGVzLgotKwotK21pbmRpcmVjdC1icmFuY2g9Ci0rVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBKb2luZWQgRW51bShpbmRpcmVjdF9icmFuY2gpIFZhcihpeDg2X2luZGlyZWN0X2JyYW5jaCkgSW5pdChpbmRpcmVjdF9icmFuY2hfa2VlcCkKLStDb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rcy4KLSsKLStFbnVtCi0rTmFtZShpbmRpcmVjdF9icmFuY2gpIFR5cGUoZW51bSBpbmRpcmVjdF9icmFuY2gpCi0rS25vd24gaW5kaXJlY3QgYnJhbmNoIGNob2ljZXMgKGZvciB1c2Ugd2l0aCB0aGUgLW1pbmRpcmVjdC1icmFuY2g9IG9wdGlvbik6Ci0rCi0rRW51bVZhbHVlCi0rRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyhrZWVwKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSsKLStFbnVtVmFsdWUKLStFbnVtKGluZGlyZWN0X2JyYW5jaCkgU3RyaW5nKHRodW5rKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmspCi0rCi0rRW51bVZhbHVlCi0rRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuay1pbmxpbmUpIFZhbHVlKGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmUpCi0rCi0rRW51bVZhbHVlCi0rRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuay1leHRlcm4pIFZhbHVlKGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLWluZGV4IDhjYzRmN2UuLjg2NjhkYWUgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2V4dGVuZC50ZXhpCi0rKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1AQCAtNTQxOSw2ICs1NDE5LDE2IEBAIFNwZWNpZnkgd2hpY2ggZmxvYXRpbmctcG9pbnQgdW5pdCB0byB1c2UuICBZb3UgbXVzdCBzcGVjaWZ5IHRoZQotIEBjb2Rle3RhcmdldCgiZnBtYXRoPXNzZSwzODciKX0gb3B0aW9uIGFzCi0gQGNvZGV7dGFyZ2V0KCJmcG1hdGg9c3NlKzM4NyIpfSBiZWNhdXNlIHRoZSBjb21tYSB3b3VsZCBzZXBhcmF0ZQotIGRpZmZlcmVudCBvcHRpb25zLgotKwotK0BpdGVtIGluZGlyZWN0X2JyYW5jaCgiQHZhcntjaG9pY2V9IikKLStAY2luZGV4IEBjb2Rle2luZGlyZWN0X2JyYW5jaH0gZnVuY3Rpb24gYXR0cmlidXRlLCB4ODYKLStPbiB4ODYgdGFyZ2V0cywgdGhlIEBjb2Rle2luZGlyZWN0X2JyYW5jaH0gYXR0cmlidXRlIGNhdXNlcyB0aGUgY29tcGlsZXIKLSt0byBjb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgd2l0aCBAdmFye2Nob2ljZX0uICBAc2FtcHtrZWVwfQotK2tlZXBzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdW5tb2RpZmllZC4gIEBzYW1we3RodW5rfSBjb252ZXJ0cyBpbmRpcmVjdAotK2NhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstaW5saW5lfSBjb252ZXJ0cwotK2luZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0rQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGV4dGVybmFsIGNhbGwKLSthbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuCi0gQGVuZCB0YWJsZQotIAotIE9uIHRoZSB4ODYsIHRoZSBpbmxpbmVyIGRvZXMgbm90IGlubGluZSBhCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGIwNjZmN2IuLmZmOWExOTQgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMTE2OSw3ICsxMTY5LDcgQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4KLSAtbXNzZTJhdnggLW1mZW50cnkgLW1yZWNvcmQtbWNvdW50IC1tbm9wLW1jb3VudCAtbThiaXQtaWRpdiBAZ29sCi0gLW1hdngyNTYtc3BsaXQtdW5hbGlnbmVkLWxvYWQgLW1hdngyNTYtc3BsaXQtdW5hbGlnbmVkLXN0b3JlIEBnb2wKLSAtbWFsaWduLWRhdGE9QHZhcnt0eXBlfSAtbXN0YWNrLXByb3RlY3Rvci1ndWFyZD1AdmFye2d1YXJkfSBAZ29sCi0tLW1taXRpZ2F0ZS1yb3B9Ci0rLW1taXRpZ2F0ZS1yb3AgLW1pbmRpcmVjdC1icmFuY2g9QHZhcntjaG9pY2V9fQotIAotIEBlbXBoe3g4NiBXaW5kb3dzIE9wdGlvbnN9Ci0gQGdjY29wdGxpc3R7LW1jb25zb2xlIC1tY3lnd2luIC1tbm8tY3lnd2luIC1tZGxsIEBnb2wKLUBAIC0yNDIxOCw2ICsyNDIxOCwxNyBAQCBvcGNvZGVzLCB0byBtaXRpZ2F0ZSBhZ2FpbnN0IGNlcnRhaW4gZm9ybXMgb2YgYXR0YWNrLiBBdCB0aGUgbW9tZW50LAotIHRoaXMgb3B0aW9uIGlzIGxpbWl0ZWQgaW4gd2hhdCBpdCBjYW4gZG8gYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkCi0gb24gdG8gcHJvdmlkZSBzZXJpb3VzIHByb3RlY3Rpb24uCi0gCi0rQGl0ZW0gLW1pbmRpcmVjdC1icmFuY2g9QHZhcntjaG9pY2V9Ci0rQG9waW5kZXggLW1pbmRpcmVjdC1icmFuY2gKLStDb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgd2l0aCBAdmFye2Nob2ljZX0uICBUaGUgZGVmYXVsdCBpcwotK0BzYW1we2tlZXB9LCB3aGljaCBrZWVwcyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHVubW9kaWZpZWQuCi0rQHNhbXB7dGh1bmt9IGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLgotK0BzYW1we3RodW5rLWlubGluZX0gY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0byBpbmxpbmVkIGNhbGwKLSthbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wCi0rdG8gZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuCi0rWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkgdXNpbmcgdGhlCi0rZnVuY3Rpb24gYXR0cmlidXRlIEBjb2Rle2luZGlyZWN0X2JyYW5jaH0uICBAeHJlZntGdW5jdGlvbiBBdHRyaWJ1dGVzfS4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gVGhlc2UgQHNhbXB7LW19IHN3aXRjaGVzIGFyZSBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDk4M2UxYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU4ZjA5YjQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjIwZDM1YwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGVmZjhmYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmEyNWIyMGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotQEAgLTAsMCArMSwxNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jZmYxMTRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLUBAIC0wLDAgKzEsMTggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hZmRiNjAwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLUBAIC0wLDAgKzEsNDQgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rCi0rdm9pZCBmdW5jMCAodm9pZCk7Ci0rdm9pZCBmdW5jMSAodm9pZCk7Ci0rdm9pZCBmdW5jMiAodm9pZCk7Ci0rdm9pZCBmdW5jMyAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNSAodm9pZCk7Ci0rCi0rdm9pZAotK2JhciAoaW50IGkpCi0rewotKyAgc3dpdGNoIChpKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZnVuYzAgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMToKLSsgICAgICBmdW5jMSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAyOgotKyAgICAgIGZ1bmMyICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDM6Ci0rICAgICAgZnVuYzMgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNDoKLSsgICAgICBmdW5jNCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA1OgotKyAgICAgIGZ1bmM1ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNjRkOTc4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYwotQEAgLTAsMCArMSwyMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStleHRlcm4gdm9pZCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcpCi0rICBfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuayIpKSk7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjkzMDY3NDUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmsiKSkpCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTc3NDRkNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rZXh0ZXJuIGludCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcpCi0rICBfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1pbmxpbmUiKSkpOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iZmNlM2VhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotQEAgLTAsMCArMSwyMiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWlubGluZSIpKSkKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wODMzNjA2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotQEAgLTAsMCArMSwyMiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLStleHRlcm4gaW50IG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZykKLSsgIF9fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWV4dGVybiIpKSk7Ci0rCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaChvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yZWJhMGZiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWV4dGVybiIpKSkKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjU4NDI3ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLUBAIC0wLDAgKzEsNDQgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdm9pZCBmdW5jMCAodm9pZCk7Ci0rdm9pZCBmdW5jMSAodm9pZCk7Ci0rdm9pZCBmdW5jMiAodm9pZCk7Ci0rdm9pZCBmdW5jMyAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNSAodm9pZCk7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstZXh0ZXJuIikpKQotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTY0ZWQzOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMKLUBAIC0wLDAgKzEsNDIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rCi0rdm9pZCBmdW5jMCAodm9pZCk7Ci0rdm9pZCBmdW5jMSAodm9pZCk7Ci0rdm9pZCBmdW5jMiAodm9pZCk7Ci0rdm9pZCBmdW5jMyAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNSAodm9pZCk7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgia2VlcCIpKSkKLSt2b2lkCi0rYmFyIChpbnQgaSkKLSt7Ci0rICBzd2l0Y2ggKGkpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBmdW5jMCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIGZ1bmMxICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDI6Ci0rICAgICAgZnVuYzIgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBmdW5jMyAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA0OgotKyAgICAgIGZ1bmM0ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDU6Ci0rICAgICAgZnVuYzUgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTBmYmVlMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0rY2hhciBidWZbMTBdOwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotKyAgZGlzcGF0Y2ggKGJ1Zik7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjk3NmU2NwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0rY2hhciBidWZbMTBdOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBkaXNwYXRjaCAoYnVmKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTRiYzk4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1AQCAtMCwwICsxLDE5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rCi0rdm9pZCBiYXIgKGNoYXIgKik7Ci0rY2hhciBidWZbMTBdOwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyIChidWYpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jNjRkMTJlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rCi0rdm9pZCBiYXIgKGNoYXIgKik7Ci0rY2hhciBidWZbMTBdOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKGJ1Zik7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40OWYyN2I0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMCwwICsxLDE5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaChvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmExZTNlYjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLUBAIC0wLDAgKzEsMTkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjM5NTYzNGUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZkM2Y2MzMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYTJmOTJiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1AQCAtMCwwICsxLDE2IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBjNWEyZDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0wLDAgKzEsMTcgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSsKLStleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjY1MjUyMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotQEAgLTAsMCArMSw0MyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rdm9pZCBmdW5jMCAodm9pZCk7Ci0rdm9pZCBmdW5jMSAodm9pZCk7Ci0rdm9pZCBmdW5jMiAodm9pZCk7Ci0rdm9pZCBmdW5jMyAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNCAodm9pZCk7Ci0rdm9pZCBmdW5jNSAodm9pZCk7Ci0rCi0rdm9pZAotK2JhciAoaW50IGkpCi0rewotKyAgc3dpdGNoIChpKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZnVuYzAgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMToKLSsgICAgICBmdW5jMSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAyOgotKyAgICAgIGZ1bmMyICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDM6Ci0rICAgICAgZnVuYzMgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNDoKLSsgICAgICBmdW5jNCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA1OgotKyAgICAgIGZ1bmM1ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjhjMGZmNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTJkYTFmYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI0NGZlYzcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjEwN2ViZTMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xN2IwNGVmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1AQCAtMCwwICsxLDE3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDllYjExMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotQEAgLTAsMCArMSwxOCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQwMmIxZGMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLUBAIC0wLDAgKzEsNDQgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNS14ODYtQWRkLW1mdW5jdGlvbi1yZXR1cm4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzU0Yzc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNS14ODYtQWRkLW1mdW5jdGlvbi1yZXR1cm4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcwICswLDAgQEAKLUZyb20gZTMyNzA4MTRiOWUwY2FhZDYzZmJjZGZkN2FlOWRhMmQ1MmM5NzQ5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NiAtMDgwMAotU3ViamVjdDogW1BBVENIIDA1LzEyXSB4ODY6IEFkZCAtbWZ1bmN0aW9uLXJldHVybj0KLQotQWRkIC1tZnVuY3Rpb24tcmV0dXJuPSBvcHRpb24gdG8gY29udmVydCBmdW5jdGlvbiByZXR1cm4gdG8gY2FsbCBhbmQKLXJldHVybiB0aHVua3MuICBUaGUgZGVmYXVsdCBpcyAna2VlcCcsIHdoaWNoIGtlZXBzIGZ1bmN0aW9uIHJldHVybgotdW5tb2RpZmllZC4gICd0aHVuaycgY29udmVydHMgZnVuY3Rpb24gcmV0dXJuIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4KLSd0aHVuay1pbmxpbmUnIGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBpbmxpbmVkIGNhbGwgYW5kIHJldHVybiB0aHVuay4KLSd0aHVuay1leHRlcm4nIGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBleHRlcm5hbCBjYWxsIGFuZCByZXR1cm4KLXRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvcgotZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkgdXNpbmcgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZSBmdW5jdGlvbl9yZXR1cm4uCi0KLUZ1bmN0aW9uIHJldHVybiB0aHVuayBpcyB0aGUgc2FtZSBhcyBtZW1vcnkgdGh1bmsgZm9yIC1taW5kaXJlY3QtYnJhbmNoPQotd2hlcmUgdGhlIHJldHVybiBhZGRyZXNzIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrOgotCi1fX3g4Nl9yZXR1cm5fdGh1bms6Ci0JY2FsbCBMMgotTDE6Ci0JcGF1c2UKLQlsZmVuY2UKLQlqbXAgTDEKLUwyOgotCWxlYSA4KCVyc3ApLCAlcnNwfGxlYSA0KCVlc3ApLCAlZXNwCi0JcmV0Ci0KLWFuZCBmdW5jdGlvbiByZXR1cm4gYmVjb21lcwotCi0Jam1wIF9feDg2X3JldHVybl90aHVuawotCi0tbWluZGlyZWN0LWJyYW5jaD0gdGVzdHMgYXJlIHVwZGF0ZWQgd2l0aCAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIHRvCi1hdm9pZCBmYWxzZSB0ZXN0IGZhaWx1cmVzIHdoZW4gLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgaXMgYWRkZWQgdG8KLVJVTlRFU1RGTEFHUyBmb3IgIm1ha2UgY2hlY2siLgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4pOiBOZXcuCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlKTogQWxzbwotCXNldCBmdW5jdGlvbl9yZXR1cm5fdHlwZS4KLQkoaW5kaXJlY3RfdGh1bmtfbmFtZSk6IEFkZCByZXRfcCB0byBpbmRpY2F0ZSB0aHVuayBmb3IgZnVuY3Rpb24KLQlyZXR1cm4uCi0JKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IFBhc3MgZmFsc2UgdG8KLQlpbmRpcmVjdF90aHVua19uYW1lLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3JlZyk6IExpa2V3aXNlLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2gpOiBMaWtld2lzZS4KLQkob3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uKTogQ3JlYXRlIGFsaWFzIGZvciBmdW5jdGlvbgotCXJldHVybiB0aHVuayBpZiByZWdubyA8IDAuCi0JKGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybik6IE5ldyBmdW5jdGlvbi4KLQkoaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSk6IEhhbmRsZSBmdW5jdGlvbl9yZXR1cm4uCi0JKGl4ODZfYXR0cmlidXRlX3RhYmxlKTogQWRkIGZ1bmN0aW9uX3JldHVybi4KLQkqIGNvbmZpZy9pMzg2L2kzODYuaCAobWFjaGluZV9mdW5jdGlvbik6IEFkZAotCWZ1bmN0aW9uX3JldHVybl90eXBlLgotCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc2ltcGxlX3JldHVybl9pbnRlcm5hbCk6IFVzZQotCWl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybi4KLQkoc2ltcGxlX3JldHVybl9pbnRlcm5hbF9sb25nKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm9wdCAobWZ1bmN0aW9uLXJldHVybj0pOiBOZXcgb3B0aW9uLgotCShpbmRpcmVjdF9icmFuY2gpOiBNZW50aW9uIC1tZnVuY3Rpb24tcmV0dXJuPS4KLQkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uIGF0dHJpYnV0ZS4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1mdW5jdGlvbi1yZXR1cm49IG9wdGlvbi4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgKGRnLW9wdGlvbnMpOiBBZGQKLQktbWZ1bmN0aW9uLXJldHVybj1rZWVwLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE2LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IExpa2V3aXNlLgotCi1pMzg2OiBEb24ndCB1c2UgQVNNX09VVFBVVF9ERUYgZm9yIFRBUkdFVF9NQUNITwotCi1BU01fT1VUUFVUX0RFRiBpc24ndCBkZWZpbmVkIGZvciBUQVJHRVRfTUFDSE8uICBVc2UgQVNNX09VVFBVVF9MQUJFTCB0bwotZ2VuZXJhdGUgdGhlIF9feDg2X3JldHVybl90aHVuayBsYWJlbCwgaW5zdGVhZCBvZiB0aGUgc2V0IGRpcmVjdGl2ZS4KLVVwZGF0ZSB0ZXN0Y2FzZSB0byByZW1vdmUgdGhlIF9feDg2X3JldHVybl90aHVuayBsYWJlbCBjaGVjay4gIFNpbmNlCi0tZm5vLXBpYyBpcyBpZ25vcmVkIG9uIERhcndpbiwgdXBkYXRlIHRlc3RjYXNlcyB0byBzc2NhbiBvciAicHVzaCIKLW9ubHkgb24gTGludXguCi0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQlQUiB0YXJnZXQvODM4MzkKLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uKTogVXNlCi0JQVNNX09VVFBVVF9MQUJFTCwgaW5zdGVhZCBvZiBBU01fT1VUUFVUX0RFRiwgZm9yIFRBUkdFVF9NQUNITwotCWZvciAgX194ODYucmV0dXJuX3RodW5rLgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCVBSIHRhcmdldC84MzgzOQotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYzogU2NhbiBmb3IgInB1c2giIG9ubHkgb24KLQlMaW51eC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYzogRG9uJ3QgY2hlY2sgdGhlCi0JX194ODZfcmV0dXJuX3RodW5rIGxhYmVsLgotCVNjYW4gZm9yICJwdXNoIiBvbmx5IGZvciBMaW51eC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1MiArKysrKysrKysrKysrKysrKysrLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQotIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgICB8ICAgNCArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMgICB8ICAgNCArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jICAgfCAgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYyAgICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jICAgICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgICAgICAgICB8ICAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgICAgICB8ICAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMgICAgICB8ICAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYyAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jICAgICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMS5jICAgICAgICB8ICAxMyArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jICAgICAgIHwgIDIzICsrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyAgICAgICB8ICAyMyArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMgICAgICAgfCAgMjIgKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgICAgICAgfCAgMjIgKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgICAgICAgfCAgMjIgKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgICAgICAgfCAgMjIgKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE2LmMgICAgICAgfCAgMTggKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIuYyAgICAgICAgfCAgMTMgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jICAgICAgICB8ICAxMiArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay00LmMgICAgICAgIHwgIDEyICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTUuYyAgICAgICAgfCAgMTUgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jICAgICAgICB8ICAxNCArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay03LmMgICAgICAgIHwgIDEzICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTguYyAgICAgICAgfCAgMTQgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jICAgICAgICB8ICAyNCArKysrCi0gNTYgZmlsZXMgY2hhbmdlZCwgNTE2IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotaW5kZXggZWNhNGNiZi4uNjIwZDcwZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotQEAgLTMxMiw2ICszMTIsNyBAQCBleHRlcm4gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotIAotIGV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApOwotIGV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCk7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKTsKLSBleHRlcm4gYm9vbCBpeDg2X29wZXJhbmRzX29rX2Zvcl9tb3ZlX211bHRpcGxlIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gCQkJCQkJZW51bSBtYWNoaW5lX21vZGUgbW9kZSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDBiOWZjNGQuLjM0ZTI2YTMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtNjM5MCw2ICs2MzkwLDMxIEBAIGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlICh0cmVlIGZuZGVjbCkKLSAgICAgICBlbHNlCi0gCWNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID0gaXg4Nl9pbmRpcmVjdF9icmFuY2g7Ci0gICAgIH0KLSsKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfdW5zZXQpCi0rICAgIHsKLSsgICAgICB0cmVlIGF0dHIgPSBsb29rdXBfYXR0cmlidXRlICgiZnVuY3Rpb25fcmV0dXJuIiwKLSsJCQkJICAgIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSk7Ci0rICAgICAgaWYgKGF0dHIgIT0gTlVMTCkKLSsJewotKwkgIHRyZWUgYXJncyA9IFRSRUVfVkFMVUUgKGF0dHIpOwotKwkgIGlmIChhcmdzID09IE5VTEwpCi0rCSAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCSAgdHJlZSBjc3QgPSBUUkVFX1ZBTFVFIChhcmdzKTsKLSsJICBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAia2VlcCIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF9rZWVwOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rIikgPT0gMCkKLSsJICAgIGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID0gaW5kaXJlY3RfYnJhbmNoX3RodW5rOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWlubGluZSIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmU7Ci0rCSAgZWxzZSBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmstZXh0ZXJuIikgPT0gMCkKLSsJICAgIGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybjsKLSsJICBlbHNlCi0rCSAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID0gaXg4Nl9mdW5jdGlvbl9yZXR1cm47Ci0rICAgIH0KLSB9Ci0gCi0gLyogRXN0YWJsaXNoIGFwcHJvcHJpYXRlIGJhY2stZW5kIGNvbnRleHQgZm9yIHByb2Nlc3NpbmcgdGhlIGZ1bmN0aW9uCi1AQCAtMTEwMzYsOCArMTEwNjEsMTIgQEAgc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQ7Ci0gLyogRmlsbHMgaW4gdGhlIGxhYmVsIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGluZGlyZWN0IHRodW5rLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWluZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wKQotK2luZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wLAotKwkJICAgICBib29sIHJldF9wKQotIHsKLSsgIGlmIChyZWdubyA+PSAwICYmIHJldF9wKQotKyAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCi0gICBpZiAoVVNFX0hJRERFTl9MSU5LT05DRSkKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmJuZCA9IG5lZWRfYm5kX3AgPyAiX2JuZCIgOiAiIjsKLUBAIC0xMTA1Miw3ICsxMTA4MSwxMCBAQCBpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCkKLSAJCSAgIGJuZCwgcmVnX3ByZWZpeCwgcmVnX25hbWVzW3JlZ25vXSk7Ci0gCX0KLSAgICAgICBlbHNlCi0tCXNwcmludGYgKG5hbWUsICJfX3g4Nl9pbmRpcmVjdF90aHVuayVzIiwgYm5kKTsKLSsJewotKwkgIGNvbnN0IGNoYXIgKnJldCA9IHJldF9wID8gInJldHVybiIgOiAiaW5kaXJlY3QiOwotKwkgIHNwcmludGYgKG5hbWUsICJfX3g4Nl8lc190aHVuayVzIiwgcmV0LCBibmQpOwotKwl9Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTExMDY1LDEwICsxMTA5NywyMCBAQCBpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCkKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGlmIChuZWVkX2JuZF9wKQotLQkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQiIsIDApOwotKwkgIGlmIChyZXRfcCkKLSsJICAgIHsKLSsJICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCQlBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMUlRCIiwgMCk7Ci0rCSAgICAgIGVsc2UKLSsJCUFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxSVCIsIDApOwotKwkgICAgfQotIAkgIGVsc2UKLS0JICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVCIsIDApOwotKwkgICAgewotKwkgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJCUFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVEIiLCAwKTsKLSsJICAgICAgZWxzZQotKwkJQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUIiwgMCk7Ci0rCSAgICB9Ci0gCX0KLSAgICAgfQotIH0KLUBAIC0xMTE2Myw3ICsxMTIwNSw3IEBAIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0gICB0cmVlIGRlY2w7Ci0gCi0gICAvKiBDcmVhdGUgX194ODZfaW5kaXJlY3RfdGh1bmsvX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kLiAgKi8KLS0gIGluZGlyZWN0X3RodW5rX25hbWUgKG5hbWUsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgIGluZGlyZWN0X3RodW5rX25hbWUgKG5hbWUsIHJlZ25vLCBuZWVkX2JuZF9wLCBmYWxzZSk7Ci0gICBkZWNsID0gYnVpbGRfZGVjbCAoQlVJTFRJTlNfTE9DQVRJT04sIEZVTkNUSU9OX0RFQ0wsCi0gCQkgICAgIGdldF9pZGVudGlmaWVyIChuYW1lKSwKLSAJCSAgICAgYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgTlVMTF9UUkVFKSk7Ci1AQCAtMTEyMDYsNiArMTEyNDgsMzYgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSAJQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSAgICAgICB9Ci0gCi0rICBpZiAocmVnbm8gPCAwKQotKyAgICB7Ci0rICAgICAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Ni5yZXR1cm5fdGh1bmsvX194ODYucmV0dXJuX3RodW5rX2JuZC4gICovCi0rICAgICAgY2hhciBhbGlhc1szMl07Ci0rCi0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoYWxpYXMsIHJlZ25vLCBuZWVkX2JuZF9wLCB0cnVlKTsKLSsjaWYgVEFSR0VUX01BQ0hPCi0rICAgICAgaWYgKFRBUkdFVF9NQUNITykKLSsJewotKwkgIGZwdXRzICgiXHQud2Vha19kZWZpbml0aW9uXHQiLCBhc21fb3V0X2ZpbGUpOwotKwkgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgYWxpYXMpOwotKwkgIGZwdXRzICgiXG5cdC5wcml2YXRlX2V4dGVyblx0IiwgYXNtX291dF9maWxlKTsKLSsJICBhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwkgIEFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgYWxpYXMpOwotKwl9Ci0rI2Vsc2UKLSsgICAgICBBU01fT1VUUFVUX0RFRiAoYXNtX291dF9maWxlLCBhbGlhcywgbmFtZSk7Ci0rICAgICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0rCXsKLSsJICBmcHV0cyAoIlx0Lmdsb2JsXHQiLCBhc21fb3V0X2ZpbGUpOwotKwkgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgYWxpYXMpOwotKwkgIHB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCSAgZnB1dHMgKCJcdC5oaWRkZW5cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rCSAgYXNzZW1ibGVfbmFtZSAoYXNtX291dF9maWxlLCBhbGlhcyk7Ci0rCSAgcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsJfQotKyNlbmRpZgotKyAgICB9Ci0rCi0gICBERUNMX0lOSVRJQUwgKGRlY2wpID0gbWFrZV9ub2RlIChCTE9DSyk7Ci0gICBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgPSBkZWNsOwotICAgYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uIChkZWNsLCBmYWxzZSk7Ci1AQCAtMjc2ODcsNyArMjc3NTksNyBAQCBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3JlZyAocnR4IGNhbGxfb3AsIGJvb2wgc2liY2FsbF9wKQotIAkgIGVsc2UKLSAJICAgIGluZGlyZWN0X3RodW5rc191c2VkIHw9IDEgPDwgaTsKLSAJfQotLSAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWVfYnVmLCByZWdubywgbmVlZF9ibmRfcCk7Ci0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wLCBmYWxzZSk7Ci0gICAgICAgdGh1bmtfbmFtZSA9IHRodW5rX25hbWVfYnVmOwotICAgICB9Ci0gICBlbHNlCi1AQCAtMjc3OTYsNyArMjc4NjgsNyBAQCBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKHJ0eCBjYWxsX29wLCBjb25zdCBjaGFyICp4YXNtLAotIAkgIGVsc2UKLSAJICAgIGluZGlyZWN0X3RodW5rX25lZWRlZCA9IHRydWU7Ci0gCX0KLS0gICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3ApOwotKyAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWVfYnVmLCByZWdubywgbmVlZF9ibmRfcCwgZmFsc2UpOwotICAgICAgIHRodW5rX25hbWUgPSB0aHVua19uYW1lX2J1ZjsKLSAgICAgfQotICAgZWxzZQotQEAgLTI3OTMxLDYgKzI4MDAzLDQ2IEBAIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApCi0gICAgIHJldHVybiAiJSFqbXBcdCVBMCI7Ci0gfQotIAotKy8qIE91dHB1dCBmdW5jdGlvbiByZXR1cm4uICBDQUxMX09QIGlzIHRoZSBqdW1wIHRhcmdldC4gIEFkZCBhIFJFUAotKyAgIHByZWZpeCB0byBSRVQgaWYgTE9OR19QIGlzIHRydWUgYW5kIGZ1bmN0aW9uIHJldHVybiBpcyBrZXB0LiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKQotK3sKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSsgICAgewotKyAgICAgIGNoYXIgdGh1bmtfbmFtZVszMl07Ci0rICAgICAgYm9vbCBuZWVkX2JuZF9wID0gaXg4Nl9ibmRfcHJlZml4ZWRfaW5zbl9wIChjdXJyZW50X291dHB1dF9pbnNuKTsKLSsKLSsgICAgICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJICAhPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotKwl7Ci0rCSAgYm9vbCBuZWVkX3RodW5rID0gKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCQkJICAgICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspOwotKwkgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWUsIC0xLCBuZWVkX2JuZF9wLCB0cnVlKTsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIHsKLSsJICAgICAgaW5kaXJlY3RfdGh1bmtfYm5kX25lZWRlZCB8PSBuZWVkX3RodW5rOwotKwkgICAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGJuZCBqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGluZGlyZWN0X3RodW5rX25lZWRlZCB8PSBuZWVkX3RodW5rOwotKwkgICAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgICAgfQotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIC0xKTsKLSsKLSsgICAgICByZXR1cm4gIiI7Ci0rICAgIH0KLSsKLSsgIGlmICghbG9uZ19wIHx8IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbikpCi0rICAgIHJldHVybiAiJSFyZXQiOwotKwotKyAgcmV0dXJuICJyZXAlOyByZXQiOwotK30KLSsKLSAvKiBPdXRwdXQgdGhlIGFzc2VtYmx5IGZvciBhIGNhbGwgaW5zdHJ1Y3Rpb24uICAqLwotIAotIGNvbnN0IGNoYXIgKgotQEAgLTQ1NDYxLDYgKzQ1NTczLDI4IEBAIGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLCBpbnQsCi0gCX0KLSAgICAgfQotIAotKyAgaWYgKGlzX2F0dHJpYnV0ZV9wICgiZnVuY3Rpb25fcmV0dXJuIiwgbmFtZSkpCi0rICAgIHsKLSsgICAgICB0cmVlIGNzdCA9IFRSRUVfVkFMVUUgKGFyZ3MpOwotKyAgICAgIGlmIChUUkVFX0NPREUgKGNzdCkgIT0gU1RSSU5HX0NTVCkKLSsJewotKwkgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywKLSsJCSAgICIlcUUgYXR0cmlidXRlIHJlcXVpcmVzIGEgc3RyaW5nIGNvbnN0YW50IGFyZ3VtZW50IiwKLSsJCSAgIG5hbWUpOwotKwkgICpub19hZGRfYXR0cnMgPSB0cnVlOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAia2VlcCIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rIikgIT0gMAotKwkgICAgICAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmstaW5saW5lIikgIT0gMAotKwkgICAgICAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmstZXh0ZXJuIikgIT0gMCkKLSsJewotKwkgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywKLSsJCSAgICJhcmd1bWVudCB0byAlcUUgYXR0cmlidXRlIGlzIG5vdCAiCi0rCQkgICAiKGtlZXB8dGh1bmt8dGh1bmstaW5saW5lfHRodW5rLWV4dGVybikiLCBuYW1lKTsKLSsJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKLSsJfQotKyAgICB9Ci0rCi0gICByZXR1cm4gTlVMTF9UUkVFOwotIH0KLSAKLUBAIC00OTY5MCw2ICs0OTgyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgaXg4Nl9hdHRyaWJ1dGVfdGFibGVbXSA9Ci0gICAgIGl4ODZfaGFuZGxlX2NhbGxlZV9wb3BfYWdncmVnYXRlX3JldHVybiwgdHJ1ZSB9LAotICAgeyAiaW5kaXJlY3RfYnJhbmNoIiwgMSwgMSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLAotICAgICBpeDg2X2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlLCBmYWxzZSB9LAotKyAgeyAiZnVuY3Rpb25fcmV0dXJuIiwgMSwgMSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLAotKyAgICBpeDg2X2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlLCBmYWxzZSB9LAotIAotICAgLyogRW5kIGVsZW1lbnQuICAqLwotICAgeyBOVUxMLCAgICAgICAgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCwgZmFsc2UgfQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1pbmRleCA5ZGNjZGIwLi5iMzRiYzExIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotQEAgLTI1NzksNiArMjU3OSw5IEBAIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnVuY3Rpb24gewotICAgICAgImluZGlyZWN0X2p1bXAiIG9yICJ0YWJsZWp1bXAiLiAgKi8KLSAgIEJPT0xfQklURklFTEQgaGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgOiAxOwotIAotKyAgLyogSG93IHRvIGdlbmVyYXRlIGZ1bmN0aW9uIHJldHVybi4gICovCi0rICBFTlVNX0JJVEZJRUxEKGluZGlyZWN0X2JyYW5jaCkgZnVuY3Rpb25fcmV0dXJuX3R5cGUgOiAzOwotKwotICAgLyogSWYgdHJ1ZSwgdGhlcmUgaXMgcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBhcmd1bWVudCBwYXNzaW5nLiAgVGhpcwotICAgICAgaXMgdXNlZCBvbmx5IGluIGl4ODZfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwgYnkgMzItYml0IHRvIGRldGVybWluZQotICAgICAgaWYgdGhlcmUgaXMgc2NyYXRjaCByZWdpc3RlciBhdmFpbGFibGUgZm9yIGluZGlyZWN0IHNpYmNhbGwuICBJbgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLWluZGV4IDE1M2UxNjIuLjJkYTY3MWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLUBAIC0xMjQ4OSw3ICsxMjQ4OSw3IEBACi0gKGRlZmluZV9pbnNuICJzaW1wbGVfcmV0dXJuX2ludGVybmFsIgotICAgWyhzaW1wbGVfcmV0dXJuKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLSAgIiUhcmV0IgotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybiAoZmFsc2UpOyIKLSAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjEiKQotICAgIChzZXRfYXR0ciAiYXRvbV91bml0IiAiamV1IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aF9pbW1lZGlhdGUiICIwIikKLUBAIC0xMjUwMywxMiArMTI1MDMsNyBAQAotICAgWyhzaW1wbGVfcmV0dXJuKQotICAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19SRVApXQotICAgInJlbG9hZF9jb21wbGV0ZWQiCi0tewotLSAgaWYgKGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoaW5zbikpCi0tICAgIHJldHVybiAiJSFyZXQiOwotLQotLSAgcmV0dXJuICJyZXAlOyByZXQiOwotLX0KLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKHRydWUpOyIKLSAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjIiKQotICAgIChzZXRfYXR0ciAiYXRvbV91bml0IiAiamV1IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aF9pbW1lZGlhdGUiICIwIikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLWluZGV4IDVmZmEzMzQuLmFkNTkxNmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotQEAgLTkwMiw5ICs5MDIsMTMgQEAgbWluZGlyZWN0LWJyYW5jaD0KLSBUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZCBFbnVtKGluZGlyZWN0X2JyYW5jaCkgVmFyKGl4ODZfaW5kaXJlY3RfYnJhbmNoKSBJbml0KGluZGlyZWN0X2JyYW5jaF9rZWVwKQotIENvbnZlcnQgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0byBjYWxsIGFuZCByZXR1cm4gdGh1bmtzLgotIAotK21mdW5jdGlvbi1yZXR1cm49Ci0rVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBKb2luZWQgRW51bShpbmRpcmVjdF9icmFuY2gpIFZhcihpeDg2X2Z1bmN0aW9uX3JldHVybikgSW5pdChpbmRpcmVjdF9icmFuY2hfa2VlcCkKLStDb252ZXJ0IGZ1bmN0aW9uIHJldHVybiB0byBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0rCi0gRW51bQotIE5hbWUoaW5kaXJlY3RfYnJhbmNoKSBUeXBlKGVudW0gaW5kaXJlY3RfYnJhbmNoKQotLUtub3duIGluZGlyZWN0IGJyYW5jaCBjaG9pY2VzIChmb3IgdXNlIHdpdGggdGhlIC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24pOgotK0tub3duIGluZGlyZWN0IGJyYW5jaCBjaG9pY2VzIChmb3IgdXNlIHdpdGggdGhlIC1taW5kaXJlY3QtYnJhbmNoPS8tbWZ1bmN0aW9uLXJldHVybj0gb3B0aW9ucyk6Ci0gCi0gRW51bVZhbHVlCi0gRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyhrZWVwKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfa2VlcCkKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotaW5kZXggODY2OGRhZS4uMmNiNmJkMSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvZXh0ZW5kLnRleGkKLSsrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLUBAIC01NDI5LDYgKzU0MjksMTUgQEAgY2FsbCBhbmQganVtcCB0byBjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1pbmxpbmV9IGNvbnZlcnRzCi0gaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0byBpbmxpbmVkIGNhbGwgYW5kIHJldHVybiB0aHVuay4KLSBAc2FtcHt0aHVuay1leHRlcm59IGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gZXh0ZXJuYWwgY2FsbAotIGFuZCByZXR1cm4gdGh1bmsgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgZmlsZS4KLSsKLStAaXRlbSBmdW5jdGlvbl9yZXR1cm4oIkB2YXJ7Y2hvaWNlfSIpCi0rQGNpbmRleCBAY29kZXtmdW5jdGlvbl9yZXR1cm59IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2Ci0rT24geDg2IHRhcmdldHMsIHRoZSBAY29kZXtmdW5jdGlvbl9yZXR1cm59IGF0dHJpYnV0ZSBjYXVzZXMgdGhlIGNvbXBpbGVyCi0rdG8gY29udmVydCBmdW5jdGlvbiByZXR1cm4gd2l0aCBAdmFye2Nob2ljZX0uICBAc2FtcHtrZWVwfSBrZWVwcyBmdW5jdGlvbgotK3JldHVybiB1bm1vZGlmaWVkLiAgQHNhbXB7dGh1bmt9IGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBjYWxsIGFuZAotK3JldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWlubGluZX0gY29udmVydHMgZnVuY3Rpb24gcmV0dXJuIHRvIGlubGluZWQKLStjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1leHRlcm59IGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0bwotK2V4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIEBlbmQgdGFibGUKLSAKLSBPbiB0aGUgeDg2LCB0aGUgaW5saW5lciBkb2VzIG5vdCBpbmxpbmUgYQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBmZjlhMTk0Li5mYTYzZGM1IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTExNjksNyArMTE2OSw4IEBAIFNlZSBSUy82MDAwIGFuZCBQb3dlclBDIE9wdGlvbnMuCi0gLW1zc2UyYXZ4IC1tZmVudHJ5IC1tcmVjb3JkLW1jb3VudCAtbW5vcC1tY291bnQgLW04Yml0LWlkaXYgQGdvbAotIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1sb2FkIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1zdG9yZSBAZ29sCi0gLW1hbGlnbi1kYXRhPUB2YXJ7dHlwZX0gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQ9QHZhcntndWFyZH0gQGdvbAotLS1tbWl0aWdhdGUtcm9wIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfX0KLSstbW1pdGlnYXRlLXJvcCAtbWluZGlyZWN0LWJyYW5jaD1AdmFye2Nob2ljZX0gQGdvbAotKy1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfX0KLSAKLSBAZW1waHt4ODYgV2luZG93cyBPcHRpb25zfQotIEBnY2NvcHRsaXN0ey1tY29uc29sZSAtbWN5Z3dpbiAtbW5vLWN5Z3dpbiAtbWRsbCBAZ29sCi1AQCAtMjQyMjksNiArMjQyMzAsMTcgQEAgdG8gZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuCi0gWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkgdXNpbmcgdGhlCi0gZnVuY3Rpb24gYXR0cmlidXRlIEBjb2Rle2luZGlyZWN0X2JyYW5jaH0uICBAeHJlZntGdW5jdGlvbiBBdHRyaWJ1dGVzfS4KLSAKLStAaXRlbSAtbWZ1bmN0aW9uLXJldHVybj1AdmFye2Nob2ljZX0KLStAb3BpbmRleCAtbWZ1bmN0aW9uLXJldHVybgotK0NvbnZlcnQgZnVuY3Rpb24gcmV0dXJuIHdpdGggQHZhcntjaG9pY2V9LiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7a2VlcH0sCi0rd2hpY2gga2VlcHMgZnVuY3Rpb24gcmV0dXJuIHVubW9kaWZpZWQuICBAc2FtcHt0aHVua30gY29udmVydHMgZnVuY3Rpb24KLStyZXR1cm4gdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstaW5saW5lfSBjb252ZXJ0cyBmdW5jdGlvbgotK3JldHVybiB0byBpbmxpbmVkIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWV4dGVybn0gY29udmVydHMKLStmdW5jdGlvbiByZXR1cm4gdG8gZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUKLStvYmplY3QgZmlsZS4gIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5Ci0rdXNpbmcgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtmdW5jdGlvbl9yZXR1cm59LgotK0B4cmVme0Z1bmN0aW9uIEF0dHJpYnV0ZXN9LgotKwotIEBlbmQgdGFibGUKLSAKLSBUaGVzZSBAc2FtcHstbX0gc3dpdGNoZXMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLWluZGV4IGQ5ODNlMWMuLmUzNjVlZjUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTEsNyArMTEsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1pbmRleCA1OGYwOWI0Li4wNWE1MWFkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1pbmRleCBmMjBkMzVjLi4zYzBkNGMzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1pbmRleCAwZWZmOGZiLi4xNGQ0ZWY2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1pbmRleCBhMjViMjBkLi5iNDgzNmMzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1pbmRleCBjZmYxMTRhLi4xZjA2YmQxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1pbmRleCBhZmRiNjAwLi5iYzZiNDdhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1AQCAtMzUsNyArMzUsNyBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLWluZGV4IGQ2NGQ5NzguLjIyNTdiZTMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTE0LDcgKzE0LDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLWluZGV4IDkzMDY3NDUuLmU5Y2ZkYzUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotaW5kZXggOTc3NDRkNi4uZjkzOGRiMCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTQsNyArMTQsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1pbmRleCBiZmNlM2VhLi40ZTU4NTk5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMyw3ICsxMyw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLWluZGV4IDA4MzM2MDYuLmI4ZDUwMjQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTE0LDcgKzE0LDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotaW5kZXggMmViYTBmYi4uNDU1YWRhYiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTMsNyArMTMsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1pbmRleCBmNTg0MjdlLi40NTk1Yjg0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotQEAgLTM2LDcgKzM2LDcgQEAgYmFyIChpbnQgaSkKLSAgICAgfQotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi1pbmRleCA1NjRlZDM5Li5kNzMwZDMxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi1pbmRleCA1MGZiZWUyLi41ZTNlMTE4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCAoKmRpc3BhdGNoKSAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1AQCAtMTAsNyArMTAsNyBAQCBmb28gKHZvaWQpCi0gICBkaXNwYXRjaCAoYnVmKTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLWluZGV4IDI5NzZlNjcuLjI4MDFhYTQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotIGNoYXIgYnVmWzEwXTsKLUBAIC0xMSw3ICsxMSw3IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLWluZGV4IGRhNGJjOTguLjcwYjRmYjMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAqLSotbGludXgqICYmIHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSAKLSB2b2lkIGJhciAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMKLWluZGV4IGM2NGQxMmUuLjNiYWYwM2UgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAqLSotbGludXgqICYmIHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSAKLSB2b2lkIGJhciAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLWluZGV4IDQ5ZjI3YjQuLmVkZWIyNjQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1pbmRleCBhMWUzZWI2Li4xZDAwNDEzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1pbmRleCAzOTU2MzRlLi4wNmViZjFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1pbmRleCBmZDNmNjMzLi4xYzhmOTQ0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1pbmRleCBiYTJmOTJiLi4yMTc0MGFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi1pbmRleCAwYzVhMmQ0Li5hNzdjMWY0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1pbmRleCA2NjUyNTIzLi44NmU5ZmQxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotQEAgLTM1LDcgKzM1LDcgQEAgYmFyIChpbnQgaSkKLSAgICAgfQotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotaW5kZXggNjhjMGZmNy4uM2VjZGU4NyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTEsNyArMTEsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLWluZGV4IGUyZGExZmMuLmRmMzJhMTkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLWluZGV4IDI0NGZlYzcuLjk1NDA5OTYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotaW5kZXggMTA3ZWJlMy4uZjNkYjZlMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1pbmRleCAxN2IwNGVmLi4wZjY4N2MzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1pbmRleCBkOWViMTEyLi5iMjdjNmZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1pbmRleCBkMDJiMWRjLi43NjRhMzc1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotQEAgLTM1LDcgKzM1LDcgQEAgYmFyIChpbnQgaSkKLSAgICAgfQotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MjIzZjY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMS5jCi1AQCAtMCwwICsxLDEzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayIgfSAqLwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uM2E2NzI3YgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWlubGluZSAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOGY2ODE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotQEAgLTAsMCArMSwyMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wMWIwYTAyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotQEAgLTAsMCArMSwyMiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGI0OTdiNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLStleHRlcm4gaW50IGZvbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDMgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDMgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGFlNGM0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1pbmxpbmUiKSkpCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNWI1YmM3NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmstZXh0ZXJuIiksIGluZGlyZWN0X2JyYW5jaCgidGh1bmsiKSkpCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTE2Y2FkMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE2LmMKLUBAIC0wLDAgKzEsMTggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWlubGluZSAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oImtlZXAiKSwgaW5kaXJlY3RfYnJhbmNoKCJrZWVwIikpKQotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jNjY1OWUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jCi1AQCAtMCwwICsxLDEzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGY3ZjM4OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYwotQEAgLTAsMCArMSwxMiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIiB9ICovCi0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOWFlMzdlOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTQuYwotQEAgLTAsMCArMSwxMiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCIgfSAqLwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40YmQwZDJhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgZm9vICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuayIpKSk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDUzODQxZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYwotQEAgLTAsMCArMSwxNCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCIgfSAqLwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rLWlubGluZSIpKSkKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjYyZTY3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTcuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCIgfSAqLwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rLWV4dGVybiIpKSkKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jMTY1OGU5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jCi1AQCAtMCwwICsxLDE0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBmb28gKHZvaWQpIF9fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oImtlZXAiKSkpOwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mYTI0YTFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1AQCAtMCwwICsxLDI0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNi14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDczNjkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNi14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NDYgKzAsMCBAQAotRnJvbSAzZjFjMzlmYjU0Mzg4NGQzNmU3NTlhNmRjMTk2YThlOTE0ZWI0ZjczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogU2F0LCA2IEphbiAyMDE4IDIyOjI5OjU2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIHg4NjogQWRkIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyCi0KLUFkZCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciB0byBmb3JjZSBpbmRpcmVjdCBicmFuY2ggdmlhIHJlZ2lzdGVyLgotVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBkaXNhYmxpbmcgcGF0dGVybnMgb2YgaW5kaXJlY3QgYnJhbmNoIHZpYSBtZW1vcnksCi1zaW1pbGFyIHRvIFRBUkdFVF9YMzIuCi0KLS1taW5kaXJlY3QtYnJhbmNoPSBhbmQgLW1mdW5jdGlvbi1yZXR1cm49IHRlc3RzIGFyZSB1cGRhdGVkIHdpdGgKLS1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIHRvIGF2b2lkIGZhbHNlIHRlc3QgZmFpbHVyZXMgd2hlbgotLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgaXMgYWRkZWQgdG8gUlVOVEVTVEZMQUdTIGZvciAibWFrZSBjaGVjayIuCi0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChCcyk6IERpc2FsbG93IG1lbW9yeSBvcGVyYW5kIGZvcgotCS1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCShCdyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoR09UX21lbW9yeV9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKGNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKHNpYmNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVDMyX3N5bWJvbF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChpbmRpcmVjdF9qdW1wKTogQ2FsbCBjb252ZXJ0X21lbW9yeV9hZGRyZXNzCi0JZm9yIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCSh0YWJsZWp1bXApOiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfbWVtb3J5KTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX3ZhbHVlX21lbW9yeSk6IExpa2V3aXNlLgotCURpc2FsbG93IHBlZXBob2xlcyBvZiBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHZpYSBtZW1vcnkgZm9yCi0JLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIuCi0JKCpjYWxsX3BvcCk6IFJlcGxhY2UgbSB3aXRoIEJ3LgotCSgqY2FsbF92YWx1ZV9wb3ApOiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfcG9wX21lbW9yeSk6IFJlcGxhY2UgbSB3aXRoIEJzLgotCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIpOiBOZXcgb3B0aW9uLgotCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciBvcHRpb24uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIChkZy1vcHRpb25zKTogQWRkCi0JLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTEuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmM6IExpa2V3aXNlLgotCi1pMzg2OiBSZW5hbWUgdG8gaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLQotUmVuYW1lIHRoZSB2YXJpYWJsZSBmb3IgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgdG8KLWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIHRvIG1hdGNoIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIG5hbWUuCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAoQnMpOiBSZXBsYWNlCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfdGh1bmtfcmVnaXN0ZXIgd2l0aAotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyLgotCShCdyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoaW5kaXJlY3RfanVtcCk6IExpa2V3aXNlLgotCSh0YWJsZWp1bXApOiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfbWVtb3J5KTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX3ZhbHVlX21lbW9yeSk6IExpa2V3aXNlLgotCVBlZXBob2xlcyBvZiBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHZpYSBtZW1vcnk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5vcHQ6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoR09UX21lbW9yeV9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKGNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKHNpYmNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVDMyX3N5bWJvbF9vcGVyYW5kKTogTGlrZXdpc2UuCi0KLXg4NjogUmV3cml0ZSBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYwotCi1SZXdyaXRlIGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIGxvZ2ljIHdpdGgKLQotKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotICAgICAob3JpZ2luYWwgY29uZGl0aW9uIGJlZm9yZSByMjU2NjYyKSkKLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKToKLQlSZXdyaXRlIGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIGxvZ2ljLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCi1Eb24ndCBjaGVjayBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBmb3IgR09UIG9wZXJhbmQKLQotU2luY2UgR09UX21lbW9yeV9vcGVyYW5kIGFuZCBHT1QzMl9zeW1ib2xfb3BlcmFuZCBhcmUgc2ltcGxlIHBhdHRlcm4KLW1hdGNoZXMsIGRvbid0IGNoZWNrIGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIGhlcmUuICBJZiBuZWVkZWQsCi0tbWluZGlyZWN0LWJyYW5jaD0gd2lsbCBjb252ZXJ0IGluZGlyZWN0IGJyYW5jaCB2aWEgR09UIHNsb3QgdG8gYSBjYWxsCi1hbmQgcmV0dXJuIHRodW5rLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKEJzKTogVXBkYXRlCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgY2hlY2suICBEb24ndCBjaGVjawotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIHdpdGggR09UX21lbW9yeV9vcGVyYW5kLgotCShCdyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoR09UX21lbW9yeV9vcGVyYW5kKTogRG9uJ3QgY2hlY2sKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBoZXJlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCi1pMzg2OiBSZXdyaXRlIGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIGxvZ2ljCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCk6IFJld3JpdGUKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKystLS0tLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrCi0gZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysrLS0tLS0tCi0gZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jICAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyAgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTEuYyAgICB8IDIyICsrKysrKysrKysrKysrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0yLmMgICAgfCAyMCArKysrKysrKysrKysrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMgICAgfCAxOSArKysrKysrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jICAgICAgICB8ICAyICstCi0gNDcgZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTMuYwotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1pbmRleCAxYTRjNzAxLi45MjA0YzhlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvY29uc3RyYWludHMubWQKLUBAIC0xNzIsMTQgKzE3MiwxNiBAQAotIAotIChkZWZpbmVfY29uc3RyYWludCAiQnMiCi0gICAiQGludGVybmFsIFNpYmNhbGwgbWVtb3J5IG9wZXJhbmQuIgotLSAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAic2liY2FsbF9tZW1vcnlfb3BlcmFuZCIpKQotICAgICAgICAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi0gCSAgICAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKQotIAotIChkZWZpbmVfY29uc3RyYWludCAiQnciCi0gICAiQGludGVybmFsIENhbGwgbWVtb3J5IG9wZXJhbmQuIgotLSAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLSAgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCAyZGE2NzFlLi4wNWE4OGZmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MDUsNyArMTE4MDUsNyBAQAotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZCAwICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIpKV0KLSAgICIiCi0gewotLSAgaWYgKFRBUkdFVF9YMzIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSAgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotQEAgLTExODU5LDcgKzExODU5LDcgQEAKLSAJCQkJCSBPUFRBQl9ESVJFQ1QpOwotICAgICB9Ci0gCi0tICBpZiAoVEFSR0VUX1gzMikKLSsgIGlmIChUQVJHRVRfWDMyIHx8IGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotICAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi1AQCAtMTIwNDgsNyArMTIwNDgsNyBAQAotICAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6VyAwICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkKLSAJIChtYXRjaF9vcGVyYW5kIDEpKQotICAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19QRUVQU0lCKV0KLS0gICIhVEFSR0VUX1gzMiIKLSsgICIhVEFSR0VUX1gzMiAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiCi0gICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChpbnNuLCBvcGVyYW5kc1swXSk7IgotICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0pCi0gCi1AQCAtMTIwNTcsNyArMTIwNTcsOSBAQAotIAkobWF0Y2hfb3BlcmFuZDpXIDEgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgKG1hdGNoX29wZXJhbmQgMykpXQotLSAgIiFUQVJHRVRfWDMyICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMSkpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDEpKSkiCi0gICBbKHBhcmFsbGVsIFsoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMSkpCi1AQCAtMTIwNzAsNyArMTIwNzIsOSBAQAotICAgICh1bnNwZWNfdm9sYXRpbGUgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfQkxPQ0tBR0UpCi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgKG1hdGNoX29wZXJhbmQgMykpXQotLSAgIiFUQVJHRVRfWDMyICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDIpKSkiCi0gICBbKHVuc3BlY192b2xhdGlsZSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9CTE9DS0FHRSkKLUBAIC0xMjA5Miw3ICsxMjA5Niw3IEBACi0gfSkKLSAKLSAoZGVmaW5lX2luc24gIipjYWxsX3BvcCIKLS0gIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDAgImNhbGxfaW5zbl9vcGVyYW5kIiAibG1CeiIpKQotKyAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMCAiY2FsbF9pbnNuX29wZXJhbmQiICJsQndCeiIpKQotIAkgKG1hdGNoX29wZXJhbmQgMSkpCi0gICAgKHNldCAocmVnOlNJIFNQX1JFRykKLSAJKHBsdXM6U0kgKHJlZzpTSSBTUF9SRUcpCi1AQCAtMTIxMTIsNyArMTIxMTYsNyBAQAotICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0pCi0gCi0gKGRlZmluZV9pbnNuICIqc2liY2FsbF9wb3BfbWVtb3J5IgotLSAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICJtIikpCi0rICBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIkJzIikpCi0gCSAobWF0Y2hfb3BlcmFuZCAxKSkKLSAgICAoc2V0IChyZWc6U0kgU1BfUkVHKQotIAkocGx1czpTSSAocmVnOlNJIFNQX1JFRykKLUBAIC0xMjE2Niw3ICsxMjE3MCw5IEBACi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpXIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIpKQotICAgIChzZXQgKHBjKSAobWF0Y2hfZHVwIDApKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBwZWVwMl9yZWdfZGVhZF9wICgyLCBvcGVyYW5kc1swXSkiCi0rICAiIVRBUkdFVF9YMzIKLSsgICAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLSsgICAmJiBwZWVwMl9yZWdfZGVhZF9wICgyLCBvcGVyYW5kc1swXSkiCi0gICBbKHNldCAocGMpIChtYXRjaF9kdXAgMSkpXSkKLSAKLSA7OyBDYWxsIHN1YnJvdXRpbmUsIHJldHVybmluZyB2YWx1ZSBpbiBvcGVyYW5kIDAKLUBAIC0xMjI0NCw3ICsxMjI1MCw3IEBACi0gIAkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlcgMSAibWVtb3J5X29wZXJhbmQiICJtIikpCi0gCSAgICAgIChtYXRjaF9vcGVyYW5kIDIpKSkKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUEVFUFNJQildCi0tICAiIVRBUkdFVF9YMzIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIgotICAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAoaW5zbiwgb3BlcmFuZHNbMV0pOyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsdiIpXSkKLSAKLUBAIC0xMjI1NCw3ICsxMjI2MCw5IEBACi0gICAgKHNldCAobWF0Y2hfb3BlcmFuZCAyKQotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJCSAobWF0Y2hfb3BlcmFuZCAzKSkpXQotLSAgIiFUQVJHRVRfWDMyICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMSkpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDEpKSkiCi0gICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9kdXAgMikKLUBAIC0xMjI2OSw3ICsxMjI3Nyw5IEBACi0gICAgKHNldCAobWF0Y2hfb3BlcmFuZCAyKQotIAkoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMCkpCi0gCSAgICAgIChtYXRjaF9vcGVyYW5kIDMpKSldCi0tICAiIVRBUkdFVF9YMzIgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0rICAiIVRBUkdFVF9YMzIKLSsgICAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLSsgICAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwKLSAJCQlDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKHBlZXAyX25leHRfaW5zbiAoMikpKSIKLSAgIFsodW5zcGVjX3ZvbGF0aWxlIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0JMT0NLQUdFKQotQEAgLTEyMjk0LDcgKzEyMzA0LDcgQEAKLSAKLSAoZGVmaW5lX2luc24gIipjYWxsX3ZhbHVlX3BvcCIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kIDApCi0tCShjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMSAiY2FsbF9pbnNuX29wZXJhbmQiICJsbUJ6IikpCi0rCShjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMSAiY2FsbF9pbnNuX29wZXJhbmQiICJsQndCeiIpKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAyKSkpCi0gICAgKHNldCAocmVnOlNJIFNQX1JFRykKLSAJKHBsdXM6U0kgKHJlZzpTSSBTUF9SRUcpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1pbmRleCBhZDU5MTZmLi5hOTdmODRmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLUBAIC05MjEsMyArOTIxLDcgQEAgRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuay1pbmxpbmUpIFZhbHVlKGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmUpCi0gCi0gRW51bVZhbHVlCi0gRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuay1leHRlcm4pIFZhbHVlKGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCi0rbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotK1RhcmdldCBSZXBvcnQgVmFyKGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyKSBJbml0KDApCi0rRm9yY2UgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgcmVnaXN0ZXIuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgYi9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAotaW5kZXggOTNkZGE3Yi4uZDFmMGE3ZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAotQEAgLTU5Myw3ICs1OTMsOCBAQAotIDs7IFRlc3QgZm9yIGEgdmFsaWQgb3BlcmFuZCBmb3IgaW5kaXJlY3QgYnJhbmNoLgotIChkZWZpbmVfcHJlZGljYXRlICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIKLSAgIChpb3IgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0tICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIml4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIikpCi0rCSAgICAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCSAgICAobWF0Y2hfb3BlcmFuZCAwICJtZW1vcnlfb3BlcmFuZCIpKSkpCi0gCi0gOzsgUmV0dXJuIHRydWUgaWYgT1AgaXMgYSBtZW1vcnkgb3BlcmFuZHMgdGhhdCBjYW4gYmUgdXNlZCBpbiBzaWJjYWxscy4KLUBAIC02MzYsMjAgKzYzNywyMiBAQAotICAgKGlvciAobWF0Y2hfdGVzdCAiY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQKLSAJCSAgICAgKG9wLCBtb2RlID09IFZPSURtb2RlID8gbW9kZSA6IFBtb2RlKSIpCi0gICAgICAgIChtYXRjaF9vcGVyYW5kIDAgImNhbGxfcmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJtZW1vcnlfb3BlcmFuZCIpKQotLQkgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotLQkJIChtYXRjaF9vcGVyYW5kIDAgIkdPVF9tZW1vcnlfb3BlcmFuZCIpKSkpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIml4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIikpCi0rCSAgICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLSsJCSAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi0rCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKSkpCi0gCi0gOzsgU2ltaWxhcmx5LCBidXQgZm9yIHRhaWwgY2FsbHMsIGluIHdoaWNoIHdlIGNhbm5vdCBhbGxvdyBtZW1vcnkgcmVmZXJlbmNlcy4KLSAoZGVmaW5lX3NwZWNpYWxfcHJlZGljYXRlICJzaWJjYWxsX2luc25fb3BlcmFuZCIKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9ub19lbGltX29wZXJhbmQiKQotLSAgICAgICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotLQkJIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLS0JICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsJCSAgICAgIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLSsJCSAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi0rCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKSkpCi0gCi0gOzsgUmV0dXJuIHRydWUgaWYgT1AgaXMgYSAzMi1iaXQgR09UIHN5bWJvbCBvcGVyYW5kLgotIChkZWZpbmVfcHJlZGljYXRlICJHT1QzMl9zeW1ib2xfb3BlcmFuZCIKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggZmE2M2RjNS4uYWQ5ZjI5NSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xMTcwLDcgKzExNzAsNyBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zLgotIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1sb2FkIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1zdG9yZSBAZ29sCi0gLW1hbGlnbi1kYXRhPUB2YXJ7dHlwZX0gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQ9QHZhcntndWFyZH0gQGdvbAotIC1tbWl0aWdhdGUtcm9wIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfSBAZ29sCi0tLW1mdW5jdGlvbi1yZXR1cm49QHZhcntjaG9pY2V9fQotKy1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfSAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlcn0KLSAKLSBAZW1waHt4ODYgV2luZG93cyBPcHRpb25zfQotIEBnY2NvcHRsaXN0ey1tY29uc29sZSAtbWN5Z3dpbiAtbW5vLWN5Z3dpbiAtbWRsbCBAZ29sCi1AQCAtMjQyNDEsNiArMjQyNDEsMTAgQEAgb2JqZWN0IGZpbGUuICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiBieQotIHVzaW5nIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgQGNvZGV7ZnVuY3Rpb25fcmV0dXJufS4KLSBAeHJlZntGdW5jdGlvbiBBdHRyaWJ1dGVzfS4KLSAKLStAaXRlbSAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotK0BvcGluZGV4IC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyCi0rRm9yY2UgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgcmVnaXN0ZXIuCi0rCi0gQGVuZCB0YWJsZQotIAotIFRoZXNlIEBzYW1wey1tfSBzd2l0Y2hlcyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotaW5kZXggZTM2NWVmNS4uNjBkMDk4OCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotaW5kZXggMDVhNTFhZC4uYWFjNzUxNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotaW5kZXggM2MwZDRjMy4uOWUyNGEzOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotaW5kZXggMTRkNGVmNi4uMTI3YjVkOSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotaW5kZXggYjQ4MzZjMy4uZmNhYTE4ZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1pbmRleCAxZjA2YmQxLi5lNDY0OTI4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLWluZGV4IGJjNmI0N2EuLjE3YzJkMGYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLWluZGV4IDIyNTdiZTMuLjkxOTRjY2YgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotaW5kZXggZTljZmRjNS4uZTUxZjI2MSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1pbmRleCBmOTM4ZGIwLi40YWVlYzE4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLWluZGV4IDRlNTg1OTkuLmFjMGU1OTkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotaW5kZXggYjhkNTAyNC4uNTczY2YxZSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi1pbmRleCA0NTVhZGFiLi5iMmIzN2ZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLWluZGV4IDQ1OTViODQuLjRhNDNlMTkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotaW5kZXggNWUzZTExOC4uYWM4NGFiNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCAoKmRpc3BhdGNoKSAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLWluZGV4IDI4MDFhYTQuLmNlNjU1ZTggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1pbmRleCA3MGI0ZmIzLi5kMzQ0ODVhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSAKLSB2b2lkIGJhciAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMKLWluZGV4IDNiYWYwM2UuLjBlMTk4MzAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAqLSotbGludXgqICYmIHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotIAotIHZvaWQgYmFyIChjaGFyICopOwotIGNoYXIgYnVmWzEwXTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotaW5kZXggZWRlYjI2NC4uNTc5NDQxZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotaW5kZXggMWQwMDQxMy4uYzkyZTZmMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotaW5kZXggMDZlYmYxYy4uZDk5NjRjMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotaW5kZXggMWM4Zjk0NC4uZDRkY2E0ZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotaW5kZXggMjE3NDBhYy4uNWMwN2UwMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi1pbmRleCBhNzdjMWY0Li4zZWI0NDA2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLWluZGV4IDg2ZTlmZDEuLmFlY2U5MzggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotaW5kZXggM2VjZGU4Ny4uM2FiYTVlOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotaW5kZXggZGYzMmExOS4uMGYwMTgxZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotaW5kZXggOTU0MDk5Ni4uMmVlZjZmMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotaW5kZXggZjNkYjZlMi4uZTgyNWExMCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotaW5kZXggMGY2ODdjMy4uYzZkNzdlMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1pbmRleCBiMjdjNmZjLi42NDU0ODI3IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLWluZGV4IDc2NGEzNzUuLmM2NzA2NmMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZDM5NmEzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlxbIFx0XF0oJWVheHwlcmF4KSwgXFwoKCVlc3B8JXJzcClcXCkiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVua1xuIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRcbiIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTdlNjE2YgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaChvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcWyBcdFxdKCVlYXh8JXJheCksIFxcKCglZXNwfCVyc3ApXFwpIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUzMjBlOTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTMuYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQocGF1c2V8cGF1c2V8bm9wKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotaW5kZXggM2E2NzI3Yi4uZTZmZWE4NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLWluZGV4IGI4ZjY4MTguLmUyMzllYzQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1pbmRleCAwMWIwYTAyLi5mYTMxODEzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1pbmRleCA0YjQ5N2I1Li5mZDViNDFmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotIGV4dGVybiBpbnQgZm9vICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuayIpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotaW5kZXggNGFlNGM0NC4uZDYwNjM3MyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi1pbmRleCA1YjViYzc2Li43NWU0NWUyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLWluZGV4IGZhMjRhMWYuLmQxZGI0MWMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDcteDg2LUFkZC1WLXJlZ2lzdGVyLW9wZXJhbmQtbW9kaWZpZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDcteDg2LUFkZC1WLXJlZ2lzdGVyLW9wZXJhbmQtbW9kaWZpZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYzg0ZmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLUZyb20gOGYwZWZkNjkyZWI4ZGIwNmQ2YzAwYjc1OWM4NzJiZDIxNzBiN2Y3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NiAtMDgwMAotU3ViamVjdDogW1BBVENIIDA3LzEyXSB4ODY6IEFkZCAnVicgcmVnaXN0ZXIgb3BlcmFuZCBtb2RpZmllcgotCi1BZGQgJ1YnLCBhIHNwZWNpYWwgbW9kaWZpZXIgd2hpY2ggcHJpbnRzIHRoZSBuYW1lIG9mIHRoZSBmdWxsIGludGVnZXIKLXJlZ2lzdGVyIHdpdGhvdXQgJyUnLiAgRm9yCi0KLWV4dGVybiB2b2lkICgqZnVuY19wKSAodm9pZCk7Ci0KLXZvaWQKLWZvbyAodm9pZCkKLXsKLSAgYXNtICgiY2FsbCBfX3g4Nl9pbmRpcmVjdF90aHVua18lVjAiIDogOiAiYSIgKGZ1bmNfcCkpOwotfQotCi1pdCBnZW5lcmF0ZXM6Ci0KLWZvbzoKLQltb3ZxCWZ1bmNfcCglcmlwKSwgJXJheAotCWNhbGwJX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4Ci0JcmV0Ci0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAocHJpbnRfcmVnKTogUHJpbnQgdGhlIG5hbWUgb2YgdGhlIGZ1bGwKLQlpbnRlZ2VyIHJlZ2lzdGVyIHdpdGhvdXQgJyUnLgotCShpeDg2X3ByaW50X29wZXJhbmQpOiBIYW5kbGUgJ1YnLgotCSAqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgJ1YnIG1vZGlmaWVyLgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYzogTmV3IHRlc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKystCi0gZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jIHwgMTMgKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci00LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCAzNGUyNmEzLi5lZWNhN2U1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTE2ODY5LDYgKzE2ODY5LDcgQEAgcHV0X2NvbmRpdGlvbl9jb2RlIChlbnVtIHJ0eF9jb2RlIGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLCBib29sIHJldmVyc2UsCi0gICAgSWYgQ09ERSBpcyAnaCcsIHByZXRlbmQgdGhlIHJlZyBpcyB0aGUgJ2hpZ2gnIGJ5dGUgcmVnaXN0ZXIuCi0gICAgSWYgQ09ERSBpcyAneScsIHByaW50ICJzdCgwKSIgaW5zdGVhZCBvZiAic3QiLCBpZiB0aGUgcmVnIGlzIHN0YWNrIG9wLgotICAgIElmIENPREUgaXMgJ2QnLCBkdXBsaWNhdGUgdGhlIG9wZXJhbmQgZm9yIEFWWCBpbnN0cnVjdGlvbi4KLSsgICBJZiBDT0RFIGlzICdWJywgcHJpbnQgbmFrZWQgZnVsbCBpbnRlZ2VyIHJlZ2lzdGVyIG5hbWUgd2l0aG91dCAlLgotICAqLwotIAotIHZvaWQKLUBAIC0xNjg3OSw3ICsxNjg4MCw3IEBAIHByaW50X3JlZyAocnR4IHgsIGludCBjb2RlLCBGSUxFICpmaWxlKQotICAgdW5zaWduZWQgaW50IHJlZ25vOwotICAgYm9vbCBkdXBsaWNhdGVkOwotIAotLSAgaWYgKEFTU0VNQkxFUl9ESUFMRUNUID09IEFTTV9BVFQpCi0rICBpZiAoQVNTRU1CTEVSX0RJQUxFQ1QgPT0gQVNNX0FUVCAmJiBjb2RlICE9ICdWJykKLSAgICAgcHV0YyAoJyUnLCBmaWxlKTsKLSAKLSAgIGlmICh4ID09IHBjX3J0eCkKLUBAIC0xNjkyMiw2ICsxNjkyMywxNCBAQCBwcmludF9yZWcgKHJ0eCB4LCBpbnQgY29kZSwgRklMRSAqZmlsZSkKLSAJICAgICAgJiYgcmVnbm8gIT0gRlBTUl9SRUcKLSAJICAgICAgJiYgcmVnbm8gIT0gRlBDUl9SRUcpOwotIAotKyAgaWYgKGNvZGUgPT0gJ1YnKQotKyAgICB7Ci0rICAgICAgaWYgKEdFTkVSQUxfUkVHTk9fUCAocmVnbm8pKQotKwltc2l6ZSA9IEdFVF9NT0RFX1NJWkUgKHdvcmRfbW9kZSk7Ci0rICAgICAgZWxzZQotKwllcnJvciAoIidWJyBtb2RpZmllciBvbiBub24taW50ZWdlciByZWdpc3RlciIpOwotKyAgICB9Ci0rCi0gICBkdXBsaWNhdGVkID0gY29kZSA9PSAnZCcgJiYgVEFSR0VUX0FWWDsKLSAKLSAgIHN3aXRjaCAobXNpemUpCi1AQCAtMTcwMzUsNiArMTcwNDQsNyBAQCBwcmludF9yZWcgKHJ0eCB4LCBpbnQgY29kZSwgRklMRSAqZmlsZSkKLSAgICAmIC0tIHByaW50IHNvbWUgaW4tdXNlIGxvY2FsLWR5bmFtaWMgc3ltYm9sIG5hbWUuCi0gICAgSCAtLSBwcmludCBhIG1lbW9yeSBhZGRyZXNzIG9mZnNldCBieSA4OyB1c2VkIGZvciBzc2UgaGlnaC1wYXJ0cwotICAgIFkgLS0gcHJpbnQgY29uZGl0aW9uIGZvciBYT1AgcGNvbSogaW5zdHJ1Y3Rpb24uCi0rICAgViAtLSBwcmludCBuYWtlZCBmdWxsIGludGVnZXIgcmVnaXN0ZXIgbmFtZSB3aXRob3V0ICUuCi0gICAgKyAtLSBwcmludCBhIGJyYW5jaCBoaW50IGFzICdjcycgb3IgJ2RzJyBwcmVmaXgKLSAgICA7IC0tIHByaW50IGEgc2VtaWNvbG9uIChhZnRlciBwcmVmaXhlcyBkdWUgdG8gYnVnIGluIG9sZGVyIGdhcykuCi0gICAgfiAtLSBwcmludCAiaSIgaWYgVEFSR0VUX0FWWDIsICJmIiBvdGhlcndpc2UuCi1AQCAtMTcyNTksNiArMTcyNjksNyBAQCBpeDg2X3ByaW50X29wZXJhbmQgKEZJTEUgKmZpbGUsIHJ0eCB4LCBpbnQgY29kZSkKLSAJY2FzZSAnWCc6Ci0gCWNhc2UgJ1AnOgotIAljYXNlICdwJzoKLSsJY2FzZSAnVic6Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgJ3MnOgotZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1pbmRleCAyY2I2YmQxLi43NmJhMWQ0IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQotKysrIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotQEAgLTg1MTEsNiArODUxMSw5IEBAIFRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgbW9kaWZpZXJzIGFuZCB0aGVpciBlZmZlY3RzLgotIEB0YWIgQGNvZGV7Mn0KLSBAZW5kIG11bHRpdGFibGUKLSAKLStAY29kZXtWfSBpcyBhIHNwZWNpYWwgbW9kaWZpZXIgd2hpY2ggcHJpbnRzIHRoZSBuYW1lIG9mIHRoZSBmdWxsIGludGVnZXIKLStyZWdpc3RlciB3aXRob3V0IEBjb2RleyV9LgotKwotIEBhbmNob3J7eDg2ZmxvYXRpbmdwb2ludGFzbW9wZXJhbmRzfQotIEBzdWJzdWJzZWN0aW9uIHg4NiBGbG9hdGluZy1Qb2ludCBAY29kZXthc219IE9wZXJhbmRzCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjBjZDliNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jCi1AQCAtMCwwICsxLDEzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpmdW5jX3ApICh2b2lkKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGFzbSgiY2FsbCBfX3g4Nl9pbmRpcmVjdF90aHVua18lVjAiIDogOiAiYSIgKGZ1bmNfcCkpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2VheCIgeyB0YXJnZXQgaWEzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4IiB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSB9ICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA4LXg4Ni1EaXNhbGxvdy1taW5kaXJlY3QtYnJhbmNoLW1mdW5jdGlvbi1yZXR1cm4td2l0aC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YTU4MTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA4LXg4Ni1EaXNhbGxvdy1taW5kaXJlY3QtYnJhbmNoLW1mdW5jdGlvbi1yZXR1cm4td2l0aC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotRnJvbSA4ZTBkOWJmOTNlMmUyZWMwM2M1NDQ1NzJhZWY0YjAzYThlNzA5MGYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMyBKYW4gMjAxOCAxODowMTo1NCAtMDgwMAotU3ViamVjdDogW1BBVENIIDA4LzEyXSB4ODY6IERpc2FsbG93IC1taW5kaXJlY3QtYnJhbmNoPS8tbWZ1bmN0aW9uLXJldHVybj0KLSB3aXRoIC1tY21vZGVsPWxhcmdlCi0KLVNpbmNlIHRoZSB0aHVuayBmdW5jdGlvbiBtYXkgbm90IGJlIHJlYWNoYWJsZSBpbiBsYXJnZSBjb2RlIG1vZGVsLAotLW1jbW9kZWw9bGFyZ2UgaXMgaW5jb21wYXRpYmxlIHdpdGggLW1pbmRpcmVjdC1icmFuY2g9dGh1bmssCi0tbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4sIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGFuZAotLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuLiAgSXNzdWUgYW4gZXJyb3Igd2hlbiB0aGV5IGFyZSB1c2VkIHdpdGgKLS1tY21vZGVsPWxhcmdlLgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlKTogRGlzYWxsb3cKLQktbWNtb2RlbD1sYXJnZSB3aXRoIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLAotCS1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiwgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgYW5kCi0JLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuLgotCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWNtb2RlbD1sYXJnZSBpcyBpbmNvbXBhdGlibGUgd2l0aAotCS1taW5kaXJlY3QtYnJhbmNoPXRodW5rLCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4sCi0JLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgYW5kIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xMC5jOiBOZXcgdGVzdC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE4LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMSArKysrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xMC5jICB8ICA3ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTguYyAgIHwgIDcgKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOS5jICAgfCAgNyArKysrKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYyAgICAgICB8ICA5ICsrKysrKysrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmMgICAgICAgfCAgOSArKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci05LmMgICAgICAgIHwgIDkgKysrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTcuYyAgICAgICB8ICA3ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jICAgICAgIHwgIDggKysrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jICAgICAgIHwgIDggKysrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jICAgICAgIHwgIDkgKysrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjEuYyAgICAgICB8ICA5ICsrKysrKysrCi0gMTMgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci05LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE4LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE5LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCBlZWNhN2U1Li45YzAzOGJlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTYzODksNiArNjM4OSwxOSBAQCBpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSAodHJlZSBmbmRlY2wpCi0gCX0KLSAgICAgICBlbHNlCi0gCWNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlID0gaXg4Nl9pbmRpcmVjdF9icmFuY2g7Ci0rCi0rICAgICAgLyogLW1jbW9kZWw9bGFyZ2UgaXMgbm90IGNvbXBhdGlibGUgd2l0aCAtbWluZGlyZWN0LWJyYW5jaD10aHVuawotKwkgbm9yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybi4gICovCi0rICAgICAgaWYgKChpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRSB8fCBpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRV9QSUMpCi0rCSAgJiYgKChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkgICAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybikKLSsJICAgICAgfHwgKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0rCQkgID09IGluZGlyZWN0X2JyYW5jaF90aHVuaykpKQotKwllcnJvciAoIiU8LW1pbmRpcmVjdC1icmFuY2g9JXMlPiBhbmQgJTwtbWNtb2RlbD1sYXJnZSU+IGFyZSBub3QgIgotKwkgICAgICAgImNvbXBhdGlibGUiLAotKwkgICAgICAgKChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCQk/ICJ0aHVuay1leHRlcm4iIDogInRodW5rIikpOwotICAgICB9Ci0gCi0gICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3Vuc2V0KQotQEAgLTY0MTQsNiArNjQyNywxOSBAQCBpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSAodHJlZSBmbmRlY2wpCi0gCX0KLSAgICAgICBlbHNlCi0gCWNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID0gaXg4Nl9mdW5jdGlvbl9yZXR1cm47Ci0rCi0rICAgICAgLyogLW1jbW9kZWw9bGFyZ2UgaXMgbm90IGNvbXBhdGlibGUgd2l0aCAtbWZ1bmN0aW9uLXJldHVybj10aHVuawotKwkgbm9yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4gICovCi0rICAgICAgaWYgKChpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRSB8fCBpeDg2X2Ntb2RlbCA9PSBDTV9MQVJHRV9QSUMpCi0rCSAgJiYgKChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkgICAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybikKLSsJICAgICAgfHwgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCQkgID09IGluZGlyZWN0X2JyYW5jaF90aHVuaykpKQotKwllcnJvciAoIiU8LW1mdW5jdGlvbi1yZXR1cm49JXMlPiBhbmQgJTwtbWNtb2RlbD1sYXJnZSU+IGFyZSBub3QgIgotKwkgICAgICAgImNvbXBhdGlibGUiLAotKwkgICAgICAgKChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCQk/ICJ0aHVuay1leHRlcm4iIDogInRodW5rIikpOwotICAgICB9Ci0gfQotIAotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBhZDlmMjk1Li40OGU4MjdmIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTI0MjMwLDYgKzI0MjMwLDExIEBAIHRvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZQotIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9LiAgQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rTm90ZSB0aGF0IEBvcHRpb257LW1jbW9kZWw9bGFyZ2V9IGlzIGluY29tcGF0aWJsZSB3aXRoCi0rQG9wdGlvbnstbWluZGlyZWN0LWJyYW5jaD10aHVua30gbm9yCi0rQG9wdGlvbnstbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm59IHNpbmNlIHRoZSB0aHVuayBmdW5jdGlvbiBtYXkKLStub3QgYmUgcmVhY2hhYmxlIGluIGxhcmdlIGNvZGUgbW9kZWwuCi0rCi0gQGl0ZW0gLW1mdW5jdGlvbi1yZXR1cm49QHZhcntjaG9pY2V9Ci0gQG9waW5kZXggLW1mdW5jdGlvbi1yZXR1cm4KLSBDb252ZXJ0IGZ1bmN0aW9uIHJldHVybiB3aXRoIEB2YXJ7Y2hvaWNlfS4gIFRoZSBkZWZhdWx0IGlzIEBzYW1we2tlZXB9LAotQEAgLTI0MjQxLDYgKzI0MjQ2LDEyIEBAIG9iamVjdCBmaWxlLiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkKLSB1c2luZyB0aGUgZnVuY3Rpb24gYXR0cmlidXRlIEBjb2Rle2Z1bmN0aW9uX3JldHVybn0uCi0gQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rTm90ZSB0aGF0IEBvcHRpb257LW1jbW9kZWw9bGFyZ2V9IGlzIGluY29tcGF0aWJsZSB3aXRoCi0rQG9wdGlvbnstbWZ1bmN0aW9uLXJldHVybj10aHVua30gbm9yCi0rQG9wdGlvbnstbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm59IHNpbmNlIHRoZSB0aHVuayBmdW5jdGlvbiBtYXkKLStub3QgYmUgcmVhY2hhYmxlIGluIGxhcmdlIGNvZGUgbW9kZWwuCi0rCi0rCi0gQGl0ZW0gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLSBAb3BpbmRleCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotIEZvcmNlIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdmlhIHJlZ2lzdGVyLgotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xMC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTA2NzRiZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYwotQEAgLTAsMCArMSw3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7Ci0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdhODBhODkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTguYwotQEAgLTAsMCArMSw3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sgLyogeyBkZy1lcnJvciAiJy1taW5kaXJlY3QtYnJhbmNoPXRodW5rJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDRkNDVjNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOS5jCi1AQCAtMCwwICsxLDcgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sgLyogeyBkZy1lcnJvciAiJy1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybicgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjNhMmFlYWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYwotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZlBJQyIgeyB0YXJnZXQgZnBpYyB9IH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1leHRlcm4iKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ZTUyZjAzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTExLmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstaW5saW5lIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmRhYTRmNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci05LmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmsiKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wNjA1ZTJjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTcuYwotQEAgLTAsMCArMSw3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sgLyogeyBkZy1lcnJvciAiJy1tZnVuY3Rpb24tcmV0dXJuPXRodW5rJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMwNzAxOWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jCi1AQCAtMCwwICsxLDggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzcyNjE3ZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE5LmMKLUBAIC0wLDAgKzEsOCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuayIpKSkKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sgLyogeyBkZy1lcnJvciAiJy1tZnVuY3Rpb24tcmV0dXJuPXRodW5rJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFlOWY5YmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jCi1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rLWV4dGVybiIpKSkKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sgLyogeyBkZy1lcnJvciAiJy1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybicgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZWEwN2Y3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjEuYwotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZlBJQyIgeyB0YXJnZXQgZnBpYyB9IH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1pbmxpbmUiKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7Ci0rfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDktVXNlLUlOVkFMSURfUkVHTlVNLWluLWluZGlyZWN0LXRodW5rLXByb2Nlc3NpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDktVXNlLUlOVkFMSURfUkVHTlVNLWluLWluZGlyZWN0LXRodW5rLXByb2Nlc3NpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNjRhMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUZyb20gM2VmZjJhZGFkYTJiMTY2N2IwZTc2NDk2ZmE1NTllMGMyNDhlY2Q4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHVyb3MgPHVyb3NAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVGh1LCAyNSBKYW4gMjAxOCAxOTozOTowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzEyXSBVc2UgSU5WQUxJRF9SRUdOVU0gaW4gaW5kaXJlY3QgdGh1bmsgcHJvY2Vzc2luZwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTcgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaW5kaXJlY3RfdGh1bmtfbmFtZSk6IERlY2xhcmUgcmVnbm8KLQlhcyB1bnNpZ25lZCBpbnQuICBDb21wYXJlIHJlZ25vIHdpdGggSU5WQUxJRF9SRUdOVU0uCi0JKG91dHB1dF9pbmRpcmVjdF90aHVuayk6IERpdHRvLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBEaXR0by4KLQkoaXg4Nl9jb2RlX2VuZCk6IERlY2xhcmUgcmVnbm8gYXMgdW5zaWduZWQgaW50LiAgVXNlIElOVkFMSURfUkVHTlVNCi0JaW4gdGhlIGNhbGwgdG8gb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNy1icmFuY2hAMjU3MDY3IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCA5YzAzOGJlLi40MDEyNjU3IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTExMDg3LDE2ICsxMTA4NywxNiBAQCBzdGF0aWMgaW50IGluZGlyZWN0X3RodW5rc19ibmRfdXNlZDsKLSAvKiBGaWxscyBpbiB0aGUgbGFiZWwgbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgaW5kaXJlY3QgdGh1bmsuICAqLwotIAotIHN0YXRpYyB2b2lkCi0taW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3AsCi0tCQkgICAgIGJvb2wgcmV0X3ApCi0raW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgdW5zaWduZWQgaW50IHJlZ25vLAotKwkJICAgICBib29sIG5lZWRfYm5kX3AsIGJvb2wgcmV0X3ApCi0gewotLSAgaWYgKHJlZ25vID49IDAgJiYgcmV0X3ApCi0rICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0gJiYgcmV0X3ApCi0gICAgIGdjY191bnJlYWNoYWJsZSAoKTsKLSAKLSAgIGlmIChVU0VfSElEREVOX0xJTktPTkNFKQotICAgICB7Ci0gICAgICAgY29uc3QgY2hhciAqYm5kID0gbmVlZF9ibmRfcCA/ICJfYm5kIiA6ICIiOwotLSAgICAgIGlmIChyZWdubyA+PSAwKQotKyAgICAgIGlmIChyZWdubyAhPSBJTlZBTElEX1JFR05VTSkKLSAJewotIAkgIGNvbnN0IGNoYXIgKnJlZ19wcmVmaXg7Ci0gCSAgaWYgKExFR0FDWV9JTlRfUkVHTk9fUCAocmVnbm8pKQotQEAgLTExMTE0LDcgKzExMTE0LDcgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3AsCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGlmIChyZWdubyA+PSAwKQotKyAgICAgIGlmIChyZWdubyAhPSBJTlZBTElEX1JFR05VTSkKLSAJewotIAkgIGlmIChuZWVkX2JuZF9wKQotIAkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQlIiLCByZWdubyk7Ci1AQCAtMTExNjYsNyArMTExNjYsNyBAQCBpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCwKLSAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLW91dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rIChib29sIG5lZWRfYm5kX3AsIHVuc2lnbmVkIGludCByZWdubykKLSB7Ci0gICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSAgIGNoYXIgaW5kaXJlY3RsYWJlbDJbMzJdOwotQEAgLTExMTk2LDcgKzExMTk2LDcgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSAKLSAgIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDIpOwotIAotLSAgaWYgKHJlZ25vID49IDApCi0rICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gICAgIHsKLSAgICAgICAvKiBNT1YuICAqLwotICAgICAgIHJ0eCB4b3BzWzJdOwotQEAgLTExMjIwLDEyICsxMTIyMCwxMiBAQCBvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotIH0KLSAKLSAvKiBPdXRwdXQgYSBmdW50aW9uIHdpdGggYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZm9yIGluZGlyZWN0IGJyYW5jaC4KLS0gICBJZiBCTkRfUCBpcyB0cnVlLCB0aGUgQk5EIHByZWZpeCBpcyBuZWVkZWQuICAgSWYgUkVHTk8gIT0gLTEsICB0aGUKLS0gICBmdW5jdGlvbiBhZGRyZXNzIGlzIGluIFJFR05PLiAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcwotKyAgIElmIEJORF9QIGlzIHRydWUsIHRoZSBCTkQgcHJlZml4IGlzIG5lZWRlZC4gIElmIFJFR05PICE9IElOVkFMSURfUkVHTlVNLAotKyAgIHRoZSBmdW5jdGlvbiBhZGRyZXNzIGlzIGluIFJFR05PLiAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcwotICAgIG9uIHRoZSB0b3Agb2Ygc3RhY2suICAqLwotIAotIHN0YXRpYyB2b2lkCi0tb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLStvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGJvb2wgbmVlZF9ibmRfcCwgdW5zaWduZWQgaW50IHJlZ25vKQotIHsKLSAgIGNoYXIgbmFtZVszMl07Ci0gICB0cmVlIGRlY2w7Ci1AQCAtMTEyNzQsNyArMTEyNzQsNyBAQCBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotIAlBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIG5hbWUpOwotICAgICAgIH0KLSAKLS0gIGlmIChyZWdubyA8IDApCi0rICBpZiAocmVnbm8gPT0gSU5WQUxJRF9SRUdOVU0pCi0gICAgIHsKLSAgICAgICAvKiBDcmVhdGUgYWxpYXMgZm9yIF9feDg2LnJldHVybl90aHVuay9fX3g4Ni5yZXR1cm5fdGh1bmtfYm5kLiAgKi8KLSAgICAgICBjaGFyIGFsaWFzWzMyXTsKLUBAIC0xMTM0OCwxNiArMTEzNDgsMTYgQEAgc3RhdGljIHZvaWQKLSBpeDg2X2NvZGVfZW5kICh2b2lkKQotIHsKLSAgIHJ0eCB4b3BzWzJdOwotLSAgaW50IHJlZ25vOwotKyAgdW5zaWduZWQgaW50IHJlZ25vOwotIAotICAgaWYgKGluZGlyZWN0X3RodW5rX25lZWRlZCkKLS0gICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgLTEpOwotKyAgICBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCBJTlZBTElEX1JFR05VTSk7Ci0gICBpZiAoaW5kaXJlY3RfdGh1bmtfYm5kX25lZWRlZCkKLS0gICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uICh0cnVlLCAtMSk7Ci0rICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgSU5WQUxJRF9SRUdOVU0pOwotIAotICAgZm9yIChyZWdubyA9IEZJUlNUX1JFWF9JTlRfUkVHOyByZWdubyA8PSBMQVNUX1JFWF9JTlRfUkVHOyByZWdubysrKQotICAgICB7Ci0tICAgICAgaW50IGkgPSByZWdubyAtIEZJUlNUX1JFWF9JTlRfUkVHICsgTEFTVF9JTlRfUkVHICsgMTsKLSsgICAgICB1bnNpZ25lZCBpbnQgaSA9IHJlZ25vIC0gRklSU1RfUkVYX0lOVF9SRUcgKyBMQVNUX0lOVF9SRUcgKyAxOwotICAgICAgIGlmICgoaW5kaXJlY3RfdGh1bmtzX3VzZWQgJiAoMSA8PCBpKSkpCi0gCW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoZmFsc2UsIHJlZ25vKTsKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEwLWkzODYtUGFzcy1JTlZBTElEX1JFR05VTS1hcy1pbnZhbGlkLXJlZ2lzdGVyLW51bWJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MGQ3NDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEwLWkzODYtUGFzcy1JTlZBTElEX1JFR05VTS1hcy1pbnZhbGlkLXJlZ2lzdGVyLW51bWJlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gYzQzMDBkOWFkNjgzZTY5M2M5MGQwMmQ0ZjFiMTMxODNiZjJkNGFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGhqbCA8aGpsQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgMiBGZWIgMjAxOCAxNjo0NzowMiArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzEyXSBpMzg2OiBQYXNzIElOVkFMSURfUkVHTlVNIGFzIGludmFsaWQgcmVnaXN0ZXIgbnVtYmVyCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybik6IFBhc3MKLQlJTlZBTElEX1JFR05VTSwgaW5zdGVhZCBvZiAtMSwgYXMgaW52YWxpZCByZWdpc3RlciBudW1iZXIgdG8KLQlpbmRpcmVjdF90aHVua19uYW1lIGFuZCBvdXRwdXRfaW5kaXJlY3RfdGh1bmsuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy03LWJyYW5jaEAyNTczNDEgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggNDAxMjY1Ny4uNjY1MDJlZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0yODA1Niw3ICsyODA1Niw4IEBAIGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybiAoYm9vbCBsb25nX3ApCi0gCXsKLSAJICBib29sIG5lZWRfdGh1bmsgPSAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSAJCQkgICAgID09IGluZGlyZWN0X2JyYW5jaF90aHVuayk7Ci0tCSAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZSwgLTEsIG5lZWRfYm5kX3AsIHRydWUpOwotKwkgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWUsIElOVkFMSURfUkVHTlVNLCBuZWVkX2JuZF9wLAotKwkJCSAgICAgICB0cnVlKTsKLSAJICBpZiAobmVlZF9ibmRfcCkKLSAJICAgIHsKLSAJICAgICAgaW5kaXJlY3RfdGh1bmtfYm5kX25lZWRlZCB8PSBuZWVkX3RodW5rOwotQEAgLTI4MDY5LDcgKzI4MDcwLDcgQEAgaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCkKLSAJICAgIH0KLSAJfQotICAgICAgIGVsc2UKLS0Jb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCAtMSk7Ci0rCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgSU5WQUxJRF9SRUdOVU0pOwotIAotICAgICAgIHJldHVybiAiIjsKLSAgICAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTEtaTM4Ni1VcGRhdGUtbWZ1bmN0aW9uLXJldHVybi1mb3ItcmV0dXJuLXdpdGgtcG9wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDExLWkzODYtVXBkYXRlLW1mdW5jdGlvbi1yZXR1cm4tZm9yLXJldHVybi13aXRoLXBvcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IwMzZmYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTEtaTM4Ni1VcGRhdGUtbWZ1bmN0aW9uLXJldHVybi1mb3ItcmV0dXJuLXdpdGgtcG9wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUzICswLDAgQEAKLUZyb20gYjNhMjI2OWM3ODg0Mzc4YTlhZmQzOTRhYzdlNjY5YWFiMDQ0M2I1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGhqbCA8aGpsQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IE1vbiwgMjYgRmViIDIwMTggMTU6Mjk6MzAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xMl0gaTM4NjogVXBkYXRlIC1tZnVuY3Rpb24tcmV0dXJuPSBmb3IgcmV0dXJuIHdpdGggcG9wCi0KLVdoZW4gLW1mdW5jdGlvbi1yZXR1cm49IGlzIHVzZWQsIHNpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIHNob3VsZCBwb3AKLXJldHVybiBhZGRyZXNzIGludG8gRUNYIHJlZ2lzdGVyLCBhZGp1c3Qgc3RhY2sgYnkgYnl0ZXMgdG8gcG9wIGZyb20gc3RhY2sKLWFuZCBqdW1wIHRvIHRoZSByZXR1cm4gdGh1bmsgdmlhIEVDWCByZWdpc3Rlci4KLQotUmV2aXNpb24gMjU3OTkyIHJlbW92ZWQgdGhlIGJvb2wgYXJndW1lbnQgZnJvbSBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAuCi1VcGRhdGUgY29tbWVudHMgdG8gcmVmbGVjdCBpdC4KLQotVGVzdGVkIG9uIGk2ODYgYW5kIHg4Ni02NC4KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogVXBkYXRlIGNvbW1lbnRzLgotCi0JUFIgdGFyZ2V0Lzg0NTMwCi0JKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X291dHB1dF9pbmRpcmVjdF9qbXApOiBSZW1vdmUKLQl0aGUgYm9vbCBhcmd1bWVudC4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfZnVuY3Rpb25fcmV0dXJuKTogTmV3IHByb3RvdHlwZS4KLQkoaXg4Nl9zcGxpdF9zaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpbmRpcmVjdF9yZXR1cm5fdmlhX2N4KTogTmV3LgotCShpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZCk6IExpa2V3aXNlLgotCShpbmRpcmVjdF90aHVua19uYW1lKTogSGFuZGxlIHJldHVybiB2YSBDWF9SRUcuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IENyZWF0ZSBhbGlhcyBmb3IKLQlfX3g4Nl9yZXR1cm5fdGh1bmtfW3JlXWN4IGFuZCBfX3g4Nl9yZXR1cm5fdGh1bmtfW3JlXWN4X2JuZC4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogUmVtb3ZlIHRoZSBib29sIGFyZ3VtZW50LgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4pOiBOZXcgZnVuY3Rpb24uCi0JKGl4ODZfc3BsaXRfc2ltcGxlX3JldHVybl9wb3BfaW50ZXJuYWwpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCppbmRpcmVjdF9qdW1wKTogRG9uJ3QgcGFzcyBmYWxzZQotCXRvIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcC4KLQkoKnRhYmxlanVtcF8xKTogTGlrZXdpc2UuCi0JKHNpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsKTogQ2hhbmdlIGl0IHRvIGRlZmluZV9pbnNuX2FuZF9zcGxpdC4KLQlDYWxsIGl4ODZfc3BsaXRfc2ltcGxlX3JldHVybl9wb3BfaW50ZXJuYWwgdG8gc3BsaXQgaXQgZm9yCi0JLW1mdW5jdGlvbi1yZXR1cm49LgotCShzaW1wbGVfcmV0dXJuX2luZGlyZWN0X2ludGVybmFsKTogQ2FsbAotCWl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybiBpbnN0ZWFkIG9mCi0JaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wLgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCVBSIHRhcmdldC84NDUzMAotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jOiBOZXcgdGVzdC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjYuYzogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAgICAgICAgICAgICAgICB8ICAgNCArLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm1kICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsrLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jIHwgIDE1ICsrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjMuYyB8ICAxNSArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmMgfCAgMTUgKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jIHwgIDE1ICsrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjYuYyB8ICA0MCArKysrKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIyLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI1LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLWluZGV4IDYyMGQ3MGUuLmM3YTBjY2I1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi1AQCAtMzExLDggKzMxMSwxMCBAQCBleHRlcm4gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotICNlbmRpZgotIAotIGV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApOwotLWV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCk7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wKTsKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybiAoYm9vbCBsb25nX3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3RfZnVuY3Rpb25fcmV0dXJuIChydHggcmV0X29wKTsKLStleHRlcm4gdm9pZCBpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIChydHgpOwotIGV4dGVybiBib29sIGl4ODZfb3BlcmFuZHNfb2tfZm9yX21vdmVfbXVsdGlwbGUgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAJCQkJCQllbnVtIG1hY2hpbmVfbW9kZSBtb2RlKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggNjY1MDJlZS4uMjFjM2MxOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xMTA4MCw2ICsxMTA4MCwxMiBAQCBzdGF0aWMgaW50IGluZGlyZWN0X3RodW5rc191c2VkOwotICAgIGJ5IGNhbGwgYW5kIHJldHVybiB0aHVua3MgZnVuY3Rpb25zIHdpdGggdGhlIEJORCBwcmVmaXguICAqLwotIHN0YXRpYyBpbnQgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkOwotIAotKy8qIFRydWUgaWYgcmV0dXJuIHRodW5rIGZ1bmN0aW9uIHZpYSBDWCBpcyBuZWVkZWQuICAqLwotK3N0YXRpYyBib29sIGluZGlyZWN0X3JldHVybl92aWFfY3g7Ci0rLyogVHJ1ZSBpZiByZXR1cm4gdGh1bmsgZnVuY3Rpb24gdmlhIENYIHdpdGggdGhlIEJORCBwcmVmaXggaXMKLSsgICBuZWVkZWQuICAqLwotK3N0YXRpYyBib29sIGluZGlyZWN0X3JldHVybl92aWFfY3hfYm5kOwotKwotICNpZm5kZWYgSU5ESVJFQ1RfTEFCRUwKLSAjIGRlZmluZSBJTkRJUkVDVF9MQUJFTCAiTElORCIKLSAjZW5kaWYKLUBAIC0xMTA5MCwxMiArMTEwOTYsMTMgQEAgc3RhdGljIHZvaWQKLSBpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCB1bnNpZ25lZCBpbnQgcmVnbm8sCi0gCQkgICAgIGJvb2wgbmVlZF9ibmRfcCwgYm9vbCByZXRfcCkKLSB7Ci0tICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0gJiYgcmV0X3ApCi0rICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0gJiYgcmVnbm8gIT0gQ1hfUkVHICYmIHJldF9wKQotICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCi0gICBpZiAoVVNFX0hJRERFTl9MSU5LT05DRSkKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmJuZCA9IG5lZWRfYm5kX3AgPyAiX2JuZCIgOiAiIjsKLSsgICAgICBjb25zdCBjaGFyICpyZXQgPSByZXRfcCA/ICJyZXR1cm4iIDogImluZGlyZWN0IjsKLSAgICAgICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gCXsKLSAJICBjb25zdCBjaGFyICpyZWdfcHJlZml4OwotQEAgLTExMTAzLDE0ICsxMTExMCwxMSBAQCBpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCB1bnNpZ25lZCBpbnQgcmVnbm8sCi0gCSAgICByZWdfcHJlZml4ID0gVEFSR0VUXzY0QklUID8gInIiIDogImUiOwotIAkgIGVsc2UKLSAJICAgIHJlZ19wcmVmaXggPSAiIjsKLS0JICBzcHJpbnRmIChuYW1lLCAiX194ODZfaW5kaXJlY3RfdGh1bmslc18lcyVzIiwKLS0JCSAgIGJuZCwgcmVnX3ByZWZpeCwgcmVnX25hbWVzW3JlZ25vXSk7Ci0rCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2XyVzX3RodW5rJXNfJXMlcyIsCi0rCQkgICByZXQsIGJuZCwgcmVnX3ByZWZpeCwgcmVnX25hbWVzW3JlZ25vXSk7Ci0gCX0KLSAgICAgICBlbHNlCi0tCXsKLS0JICBjb25zdCBjaGFyICpyZXQgPSByZXRfcCA/ICJyZXR1cm4iIDogImluZGlyZWN0IjsKLS0JICBzcHJpbnRmIChuYW1lLCAiX194ODZfJXNfdGh1bmslcyIsIHJldCwgYm5kKTsKLS0JfQotKwlzcHJpbnRmIChuYW1lLCAiX194ODZfJXNfdGh1bmslcyIsIHJldCwgYm5kKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci1AQCAtMTEyNzQsOSArMTEyNzgsMjMgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIHVuc2lnbmVkIGludCByZWdubykKLSAJQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSAgICAgICB9Ci0gCi0rICAvKiBDcmVhdGUgYWxpYXMgZm9yIF9feDg2X3JldHVybl90aHVuay9fX3g4Nl9yZXR1cm5fdGh1bmtfYm5kIG9yCi0rICAgICBfX3g4Nl9yZXR1cm5fdGh1bmtfZWN4L19feDg2X3JldHVybl90aHVua19lY3hfYm5kLiAgKi8KLSsgIGJvb2wgbmVlZF9hbGlhczsKLSAgIGlmIChyZWdubyA9PSBJTlZBTElEX1JFR05VTSkKLSsgICAgbmVlZF9hbGlhcyA9IHRydWU7Ci0rICBlbHNlIGlmIChyZWdubyA9PSBDWF9SRUcpCi0rICAgIHsKLSsgICAgICBpZiAobmVlZF9ibmRfcCkKLSsJbmVlZF9hbGlhcyA9IGluZGlyZWN0X3JldHVybl92aWFfY3hfYm5kOwotKyAgICAgIGVsc2UKLSsJbmVlZF9hbGlhcyA9IGluZGlyZWN0X3JldHVybl92aWFfY3g7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgbmVlZF9hbGlhcyA9IGZhbHNlOwotKwotKyAgaWYgKG5lZWRfYWxpYXMpCi0gICAgIHsKLS0gICAgICAvKiBDcmVhdGUgYWxpYXMgZm9yIF9feDg2LnJldHVybl90aHVuay9fX3g4Ni5yZXR1cm5fdGh1bmtfYm5kLiAgKi8KLSAgICAgICBjaGFyIGFsaWFzWzMyXTsKLSAKLSAgICAgICBpbmRpcmVjdF90aHVua19uYW1lIChhbGlhcywgcmVnbm8sIG5lZWRfYm5kX3AsIHRydWUpOwotQEAgLTI4MDE5LDE4ICsyODAzNywxNyBAQCBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggKHJ0eCBjYWxsX29wLCBjb25zdCBjaGFyICp4YXNtLAotICAgZWxzZQotICAgICBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKGNhbGxfb3AsIHhhc20sIHNpYmNhbGxfcCk7Ci0gfQotLS8qIE91dHB1dCBpbmRpcmVjdCBqdW1wLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICBKdW1wIGlzIGEKLS0gICBmdW5jdGlvbiByZXR1cm4gaWYgUkVUX1AgaXMgdHJ1ZS4gICovCi0rCi0rLyogT3V0cHV0IGluZGlyZWN0IGp1bXAuICBDQUxMX09QIGlzIHRoZSBqdW1wIHRhcmdldC4gICovCi0gCi0gY29uc3QgY2hhciAqCi0taXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCkKLStpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wKQotIHsKLSAgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSAgICAgewotLSAgICAgIC8qIFdlIGNhbid0IGhhdmUgcmVkLXpvbmUgaWYgdGhpcyBpc24ndCBhIGZ1bmN0aW9uIHJldHVybiBzaW5jZQotLQkgImNhbGwiIGluIHRoZSBpbmRpcmVjdCB0aHVuayBwdXNoZXMgdGhlIHJldHVybiBhZGRyZXNzIG9udG8KLS0JIHN0YWNrLCBkZXN0cm95aW5nIHJlZC16b25lLiAgKi8KLS0gICAgICBpZiAoIXJldF9wICYmIGl4ODZfcmVkX3pvbmVfc2l6ZSAhPSAwKQotKyAgICAgIC8qIFdlIGNhbid0IGhhdmUgcmVkLXpvbmUgc2luY2UgImNhbGwiIGluIHRoZSBpbmRpcmVjdCB0aHVuawotKyAgICAgICAgIHB1c2hlcyB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byBzdGFjaywgZGVzdHJveWluZyByZWQtem9uZS4gICovCi0rICAgICAgaWYgKGl4ODZfcmVkX3pvbmVfc2l6ZSAhPSAwKQotIAlnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCi0gICAgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChjYWxsX29wLCAiJTAiLCB0cnVlKTsKLUBAIC0yODA4MSw2ICsyODA5OCw4NiBAQCBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKQotICAgcmV0dXJuICJyZXAlOyByZXQiOwotIH0KLSAKLSsvKiBPdXRwdXQgaW5kaXJlY3QgZnVuY3Rpb24gcmV0dXJuLiAgUkVUX09QIGlzIHRoZSBmdW5jdGlvbiByZXR1cm4KLSsgICB0YXJnZXQuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK2l4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybiAocnR4IHJldF9vcCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rICAgIHsKLSsgICAgICBjaGFyIHRodW5rX25hbWVbMzJdOwotKyAgICAgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rICAgICAgdW5zaWduZWQgaW50IHJlZ25vID0gUkVHTk8gKHJldF9vcCk7Ci0rICAgICAgZ2NjX2Fzc2VydCAocmVnbm8gPT0gQ1hfUkVHKTsKLSsKLSsgICAgICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJICAhPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotKwl7Ci0rCSAgYm9vbCBuZWVkX3RodW5rID0gKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCQkJICAgICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspOwotKwkgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWUsIHJlZ25vLCBuZWVkX2JuZF9wLCB0cnVlKTsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIHsKLSsJICAgICAgaWYgKG5lZWRfdGh1bmspCi0rCQl7Ci0rCQkgIGluZGlyZWN0X3JldHVybl92aWFfY3hfYm5kID0gdHJ1ZTsKLSsJCSAgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkIHw9IDEgPDwgQ1hfUkVHOwotKwkJfQotKwkgICAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGJuZCBqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuZWVkX3RodW5rKQotKwkJewotKwkJICBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4ID0gdHJ1ZTsKLSsJCSAgaW5kaXJlY3RfdGh1bmtzX3VzZWQgfD0gMSA8PCBDWF9SRUc7Ci0rCQl9Ci0rCSAgICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0am1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICBlbHNlCi0rCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgcmVnbm8pOwotKwotKyAgICAgIHJldHVybiAiIjsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4gIiUham1wXHQlQTAiOwotK30KLSsKLSsvKiBTcGxpdCBzaW1wbGUgcmV0dXJuIHdpdGggcG9wcGluZyBQT1BDIGJ5dGVzIGZyb20gc3RhY2sgdG8gaW5kaXJlY3QKLSsgICBicmFuY2ggd2l0aCBzdGFjayBhZGp1c3RtZW50IC4gICovCi0rCi0rdm9pZAotK2l4ODZfc3BsaXRfc2ltcGxlX3JldHVybl9wb3BfaW50ZXJuYWwgKHJ0eCBwb3BjKQotK3sKLSsgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICptID0gY2Z1bi0+bWFjaGluZTsKLSsgIHJ0eCBlY3ggPSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBDWF9SRUcpOwotKyAgcnR4X2luc24gKmluc247Ci0rCi0rICAvKiBUaGVyZSBpcyBubyAicGFzY2FsIiBjYWxsaW5nIGNvbnZlbnRpb24gaW4gYW55IDY0Yml0IEFCSS4gICovCi0rICBnY2NfYXNzZXJ0ICghVEFSR0VUXzY0QklUKTsKLSsKLSsgIGluc24gPSBlbWl0X2luc24gKGdlbl9wb3AgKGVjeCkpOwotKyAgbS0+ZnMuY2ZhX29mZnNldCAtPSBVTklUU19QRVJfV09SRDsKLSsgIG0tPmZzLnNwX29mZnNldCAtPSBVTklUU19QRVJfV09SRDsKLSsKLSsgIHJ0eCB4ID0gcGx1c19jb25zdGFudCAoUG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LCBVTklUU19QRVJfV09SRCk7Ci0rICB4ID0gZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJfcnR4LCB4KTsKLSsgIGFkZF9yZWdfbm90ZSAoaW5zbiwgUkVHX0NGQV9BREpVU1RfQ0ZBLCB4KTsKLSsgIGFkZF9yZWdfbm90ZSAoaW5zbiwgUkVHX0NGQV9SRUdJU1RFUiwgZ2VuX3J0eF9TRVQgKGVjeCwgcGNfcnR4KSk7Ci0rICBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Ci0rCi0rICB4ID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgsIHBvcGMpOwotKyAgeCA9IGdlbl9ydHhfU0VUIChzdGFja19wb2ludGVyX3J0eCwgeCk7Ci0rICBpbnNuID0gZW1pdF9pbnNuICh4KTsKLSsgIGFkZF9yZWdfbm90ZSAoaW5zbiwgUkVHX0NGQV9BREpVU1RfQ0ZBLCB4KTsKLSsgIFJUWF9GUkFNRV9SRUxBVEVEX1AgKGluc24pID0gMTsKLSsKLSsgIC8qIE5vdyByZXR1cm4gYWRkcmVzcyBpcyBpbiBFQ1guICAqLwotKyAgZW1pdF9qdW1wX2luc24gKGdlbl9zaW1wbGVfcmV0dXJuX2luZGlyZWN0X2ludGVybmFsIChlY3gpKTsKLSt9Ci0rCi0gLyogT3V0cHV0IHRoZSBhc3NlbWJseSBmb3IgYSBjYWxsIGluc3RydWN0aW9uLiAgKi8KLSAKLSBjb25zdCBjaGFyICoKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCAwNWE4OGZmLi44NTc0NjZhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MTMsNyArMTE4MTMsNyBAQAotIChkZWZpbmVfaW5zbiAiKmluZGlyZWN0X2p1bXAiCi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSldCi0gICAiIgotLSAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIGZhbHNlKTsiCi0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSk7IgotICAgWyhzZXQgKGF0dHIgInR5cGUiKQotICAgICAgKGlmX3RoZW5fZWxzZSAobWF0Y2hfdGVzdCAiKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0gCQkJCSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkiKQotQEAgLTExODY4LDcgKzExODY4LDcgQEAKLSAgIFsoc2V0IChwYykgKG1hdGNoX29wZXJhbmQ6VyAwICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIgInJCdyIpKQotICAgICh1c2UgKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAxKSkpXQotICAgIiIKLS0gICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCBmYWxzZSk7IgotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0IChhdHRyICJ0eXBlIikKLSAgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotIAkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLUBAIC0xMjUyMCwxMSArMTI1MjAsMTQgQEAKLSAgICAoc2V0X2F0dHIgInByZWZpeF9yZXAiICIxIikKLSAgICAoc2V0X2F0dHIgIm1vZHJtIiAiMCIpXSkKLSAKLS0oZGVmaW5lX2luc24gInNpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIgotKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgInNpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIgotICAgWyhzaW1wbGVfcmV0dXJuKQotICAgICh1c2UgKG1hdGNoX29wZXJhbmQ6U0kgMCAiY29uc3RfaW50X29wZXJhbmQiKSldCi0gICAicmVsb2FkX2NvbXBsZXRlZCIKLSAgICIlIXJldFx0JTAiCi0rICAiJiYgY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXAiCi0rICBbKGNvbnN0X2ludCAwKV0KLSsgICJpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIChvcGVyYW5kc1swXSk7IERPTkU7IgotICAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiMyIpCi0gICAgKHNldF9hdHRyICJhdG9tX3VuaXQiICJqZXUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoX2ltbWVkaWF0ZSIgIjIiKQotQEAgLTEyNTM1LDcgKzEyNTM4LDcgQEAKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodXNlIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpXQotICAgInJlbG9hZF9jb21wbGV0ZWQiCi0tICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgdHJ1ZSk7IgotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybiAob3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0IChhdHRyICJ0eXBlIikKLSAgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotIAkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODllMDg2ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIyLmMKLUBAIC0wLDAgKzEsMTUgQEAKLSsvKiBQUiB0YXJnZXQvcjg0NTMwICovCi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGlhMzIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsiIH0gKi8KLSsKLStzdHJ1Y3QgcyB7IF9Db21wbGV4IHVuc2lnbmVkIHNob3J0IHg7IH07Ci0rc3RydWN0IHMgZ3MgPSB7IDEwMCArIDIwMGkgfTsKLStzdHJ1Y3QgcyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGZvbyAodm9pZCkgeyByZXR1cm4gZ3M7IH0KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcGxcW1xcdCBcXSolZWN4IiAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGVhXFtsXF0/XFtcXHQgXF0qNFxcKCVlc3BcXCksICVlc3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmtfZWN4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDNmMGNjYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMKLUBAIC0wLDAgKzEsMTUgQEAKLSsvKiBQUiB0YXJnZXQvcjg0NTMwICovCi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGlhMzIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2VjeCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44NzI5ZTM1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjQuYwotQEAgLTAsMCArMSwxNSBAQAotKy8qIFBSIHRhcmdldC9yODQ1MzAgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgaWEzMiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUiIH0gKi8KLSsKLStzdHJ1Y3QgcyB7IF9Db21wbGV4IHVuc2lnbmVkIHNob3J0IHg7IH07Ci0rc3RydWN0IHMgZ3MgPSB7IDEwMCArIDIwMGkgfTsKLStzdHJ1Y3QgcyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGZvbyAodm9pZCkgeyByZXR1cm4gZ3M7IH0KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcGxcW1xcdCBcXSolZWN4IiAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGVhXFtsXF0/XFtcXHQgXF0qNFxcKCVlc3BcXCksICVlc3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2VjeCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY3MzU1M2MKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMyIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsKLStzdHJ1Y3QgcyB7IF9Db21wbGV4IHVuc2lnbmVkIHNob3J0IHg7IH07Ci0rc3RydWN0IHMgZ3MgPSB7IDEwMCArIDIwMGkgfTsKLStzdHJ1Y3QgcyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGZvbyAodm9pZCkgeyByZXR1cm4gZ3M7IH0KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcGxcW1xcdCBcXSolZWN4IiAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGVhXFtsXF0/XFtcXHQgXF0qNFxcKCVlc3BcXCksICVlc3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmtfYm5kX2VjeCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjkxNDRlOTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNi5jCi1AQCAtMCwwICsxLDQwIEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gcnVuIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PcyAtbWZ1bmN0aW9uLXJldHVybj10aHVuayIgfSAqLwotKwotK3N0cnVjdCBTIHsgaW50IGk7IH07Ci0rX19hdHRyaWJ1dGVfXygoY29uc3QsIG5vaW5saW5lLCBub2Nsb25lKSkKLStzdHJ1Y3QgUyBmb28gKGludCB4KQotK3sKLSsgIHN0cnVjdCBTIHM7Ci0rICBzLmkgPSB4OwotKyAgcmV0dXJuIHM7Ci0rfQotKwotK2ludCBhWzIwNDhdLCBiWzIwNDhdLCBjWzIwNDhdLCBkWzIwNDhdOwotK3N0cnVjdCBTIGVbMjA0OF07Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUpKSB2b2lkCi0rYmFyICh2b2lkKQotK3sKLSsgIGludCBpOwotKyAgZm9yIChpID0gMDsgaSA8IDEwMjQ7IGkrKykKLSsgICAgewotKyAgICAgIGVbaV0gPSBmb28gKGkpOwotKyAgICAgIGFbaSsyXSA9IGFbaV0gKyBhW2krMV07Ci0rICAgICAgYlsxMF0gPSBiWzEwXSArIGk7Ci0rICAgICAgY1tpXSA9IGNbMjA0NyAtIGldOwotKyAgICAgIGRbaV0gPSBkW2kgKyAxXTsKLSsgICAgfQotK30KLSsKLStpbnQKLSttYWluICgpCi0rewotKyAgaW50IGk7Ci0rICBiYXIgKCk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgMTAyNDsgaSsrKQotKyAgICBpZiAoZVtpXS5pICE9IGkpCi0rICAgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMi1pMzg2LUFkZC1UQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTBhYzVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMi1pMzg2LUFkZC1UQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwNCArMCwwIEBACi1Gcm9tIDdiYTE5MmQxMWE0M2QyNGNlNDI3YTNkZmNlMGFkMDU5MmJkNTI4MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE3OjAwOjQ2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIGkzODY6IEFkZCBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0KLUZvcgotCi0tLS0KLXN0cnVjdCBDIHsKLSAgdmlydHVhbCB+QygpOwotICB2aXJ0dWFsIHZvaWQgZigpOwotfTsKLQotdm9pZAotZiAoQyAqcCkKLXsKLSAgcC0+ZigpOwotICBwLT5mKCk7Ci19Ci0tLS0KLQotLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1PMiBvbiB4ODYtNjQgR05VL0xpbnV4IGdlbmVyYXRlczoKLQotX1oxZlAxQzoKLS5MRkIwOgotICAgICAgICAuY2ZpX3N0YXJ0cHJvYwotICAgICAgICBwdXNocSAgICVyYngKLSAgICAgICAgLmNmaV9kZWZfY2ZhX29mZnNldCAxNgotICAgICAgICAuY2ZpX29mZnNldCAzLCAtMTYKLSAgICAgICAgbW92cSAgICAoJXJkaSksICVyYXgKLSAgICAgICAgbW92cSAgICAlcmRpLCAlcmJ4Ci0gICAgICAgIGptcCAgICAgLkxJTkQxCi0uTElORDA6Ci0gICAgICAgIHB1c2hxICAgMTYoJXJheCkKLSAgICAgICAgam1wICAgICBfX3g4Nl9pbmRpcmVjdF90aHVuawotLkxJTkQxOgotICAgICAgICBjYWxsICAgIC5MSU5EMAotICAgICAgICBtb3ZxICAgICglcmJ4KSwgJXJheAotICAgICAgICBtb3ZxICAgICVyYngsICVyZGkKLSAgICAgICAgcG9wcSAgICAlcmJ4Ci0gICAgICAgIC5jZmlfZGVmX2NmYV9vZmZzZXQgOAotICAgICAgICBtb3ZxICAgIDE2KCVyYXgpLCAlcmF4Ci0gICAgICAgIGptcCAgICAgX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4Ci0gICAgICAgIC5jZmlfZW5kcHJvYwotCi14ODYtNjQgaXMgc3VwcG9zZWQgdG8gaGF2ZSBhc3luY2hyb25vdXMgdW53aW5kIHRhYmxlcyBieSBkZWZhdWx0LCBidXQKLXRoZXJlIGlzIG5vdGhpbmcgdGhhdCByZWZsZWN0cyB0aGUgY2hhbmdlIGluIHRoZSAocmVsYXRpdmUpIGZyYW1lCi1hZGRyZXNzIGFmdGVyIC5MSU5EMC4gIFRoYXQgcmVnaW9uIHJlYWxseSBoYXMgdG8gYmUgbW92ZWQgb3V0c2lkZSBvZgotdGhlIC5jZmlfc3RhcnRwcm9jLy5jZmlfZW5kcHJvYyBicmFja2V0LgotCi1UaGlzIHBhdGNoIGFkZHMgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUiB0byBmb3JjZSBpbmRpcmVjdAotYnJhbmNoIHZpYSByZWdpc3RlciB3aGVuZXZlciAtbWluZGlyZWN0LWJyYW5jaD0gaXMgdXNlZC4gIE5vdywKLS1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtTzIgb24geDg2LTY0IEdOVS9MaW51eCBnZW5lcmF0ZXM6Ci0KLV9aMWZQMUM6Ci0uTEZCMDoKLQkuY2ZpX3N0YXJ0cHJvYwotCXB1c2hxCSVyYngKLQkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0JLmNmaV9vZmZzZXQgMywgLTE2Ci0JbW92cQkoJXJkaSksICVyYXgKLQltb3ZxCSVyZGksICVyYngKLQltb3ZxCTE2KCVyYXgpLCAlcmF4Ci0JY2FsbAlfX3g4Nl9pbmRpcmVjdF90aHVua19yYXgKLQltb3ZxCSglcmJ4KSwgJXJheAotCW1vdnEJJXJieCwgJXJkaQotCXBvcHEJJXJieAotCS5jZmlfZGVmX2NmYV9vZmZzZXQgOAotCW1vdnEJMTYoJXJheCksICVyYXgKLQlqbXAJX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4Ci0JLmNmaV9lbmRwcm9jCi0KLXNvIHRoYXQgIi1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgaXMgZXF1aXZhbGVudCB0bwotIi1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciIsIHdoaWNoIGlzCi11c2VkIGJ5IExpbnV4IGtlcm5lbC4KLQotZ2NjLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCVBSIHRhcmdldC84NDAzOQotCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKEJzKTogUmVwbGFjZQotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIHdpdGgKLQlUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSLgotCShCdyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoaW5kaXJlY3RfanVtcCk6IExpa2V3aXNlLgotCSh0YWJsZWp1bXApOiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfbWVtb3J5KTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX3ZhbHVlX21lbW9yeSk6IExpa2V3aXNlLgotCVBlZXBob2xlcyBvZiBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHZpYSBtZW1vcnk6IExpa2V3aXNlLgotCSgqc2liY2FsbF9HT1RfMzIpOiBEaXNhbGxvd2VkIGZvciBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSLgotCSgqc2liY2FsbF92YWx1ZV9HT1RfMzIpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgotCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSKTogTmV3LgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCVBSIHRhcmdldC84NDAzOQotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYzogVXBkYXRlZC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYzogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysKLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKystLS0tLS0tLS0KLSBnY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgNSArKy0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jICAgfCAgNSArKy0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jICAgfCAgNSArKy0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgNSArKy0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jICAgfCAgNiArKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyAgIHwgMTIgKysrKysrLS0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMgICAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgICAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgICAgICAgIHwgIDMgKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyAgICAgICAgfCAgMyArLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jICAgICAgICB8ICA5ICsrKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jICAgICAgICB8ICA5ICsrKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgICAgICAgICB8ICA2ICsrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jICAgICAgICAgfCAgNiArKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyAgICAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYyAgICAgICAgIHwgIDcgKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgOSArKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jICAgICAgfCAgNiArKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyAgICAgIHwgIDYgKysrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgICAgICB8ICA4ICsrKy0tLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgMyArKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgICAgICB8ICAzICsrLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyAgICAgIHwgIDQgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jICAgICAgIHwgIDkgKysrLS0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jICAgICAgIHwgIDkgKysrLS0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jICAgICAgIHwgIDggKysrLS0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jICAgICAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jICAgICAgIHwgIDcgKysrLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgICAgICAgfCAgNyArKystLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jICAgICAgICB8IDEzICsrKystLS0tLS0KLSA0MyBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgMTQxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1pbmRleCA5MjA0YzhlLi5lZjY4NGE5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvY29uc3RyYWludHMubWQKLUBAIC0xNzIsNyArMTcyLDcgQEAKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJzIgotICAgIkBpbnRlcm5hbCBTaWJjYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLSAgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotQEAgLTE4MCw3ICsxODAsNyBAQAotIAotIChkZWZpbmVfY29uc3RyYWludCAiQnciCi0gICAiQGludGVybmFsIENhbGwgbWVtb3J5IG9wZXJhbmQuIgotLSAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIml4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIikpCi0rICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUiIpKQotIAkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLSAgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1pbmRleCBiMzRiYzExLi4xODE2ZDcxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotQEAgLTI2NzYsNiArMjY3NiwxMSBAQCBleHRlcm4gdm9pZCBkZWJ1Z19kaXNwYXRjaF93aW5kb3cgKGludCk7Ci0gI2RlZmluZSBUQVJHRVRfUkVDSVBfVkVDX0RJVgkoKHJlY2lwX21hc2sgJiBSRUNJUF9NQVNLX1ZFQ19ESVYpICE9IDApCi0gI2RlZmluZSBUQVJHRVRfUkVDSVBfVkVDX1NRUlQJKChyZWNpcF9tYXNrICYgUkVDSVBfTUFTS19WRUNfU1FSVCkgIT0gMCkKLSAKLSsKLSsjZGVmaW5lIFRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIgXAotKyAgKGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIFwKLSsgICB8fCBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSAhPSBpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSsKLSAjZGVmaW5lIElYODZfSExFX0FDUVVJUkUgKDEgPDwgMTYpCi0gI2RlZmluZSBJWDg2X0hMRV9SRUxFQVNFICgxIDw8IDE3KQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLWluZGV4IDg1NzQ2NmEuLjZhNmRjMjYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLUBAIC0xMTgwNSw3ICsxMTgwNSw3IEBACi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kIDAgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIikpXQotICAgIiIKLSB7Ci0tICBpZiAoVEFSR0VUX1gzMiB8fCBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikKLSsgIGlmIChUQVJHRVRfWDMyIHx8IFRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0gICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLUBAIC0xMTg1OSw3ICsxMTg1OSw3IEBACi0gCQkJCQkgT1BUQUJfRElSRUNUKTsKLSAgICAgfQotIAotLSAgaWYgKFRBUkdFVF9YMzIgfHwgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotICAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi1AQCAtMTIwMjksNyArMTIwMjksMTAgQEAKLSAJCSAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIiAiVSIpCi0gCQkgICAgIChtYXRjaF9vcGVyYW5kOlNJIDEgIkdPVDMyX3N5bWJvbF9vcGVyYW5kIikpKSkKLSAJIChtYXRjaF9vcGVyYW5kIDIpKV0KLS0gICIhVEFSR0VUX01BQ0hPICYmICFUQVJHRVRfNjRCSVQgJiYgU0lCTElOR19DQUxMX1AgKGluc24pIgotKyAgIiFUQVJHRVRfTUFDSE8KLSsgICYmICFUQVJHRVRfNjRCSVQKLSsgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0rICAmJiBTSUJMSU5HX0NBTExfUCAoaW5zbikiCi0gewotICAgcnR4IGZuYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Ci0gICBmbmFkZHIgPSBnZW5fY29uc3RfbWVtIChQbW9kZSwgZm5hZGRyKTsKLUBAIC0xMjA0OCw3ICsxMjA1MSw3IEBACi0gICBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpXIDAgIm1lbW9yeV9vcGVyYW5kIiAibSIpKQotIAkgKG1hdGNoX29wZXJhbmQgMSkpCi0gICAgKHVuc3BlYyBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX1BFRVBTSUIpXQotLSAgIiFUQVJHRVRfWDMyICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIKLSsgICIhVEFSR0VUX1gzMiAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUiIKLSAgICIqIHJldHVybiBpeDg2X291dHB1dF9jYWxsX2luc24gKGluc24sIG9wZXJhbmRzWzBdKTsiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiY2FsbCIpXSkKLSAKLUBAIC0xMjA1OCw3ICsxMjA2MSw3IEBACi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgKG1hdGNoX29wZXJhbmQgMykpXQotICAgIiFUQVJHRVRfWDMyCi0tICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSAgICAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgxKSkKLSAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwKLSAJCQlDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKHBlZXAyX25leHRfaW5zbiAoMSkpKSIKLUBAIC0xMjA3Myw3ICsxMjA3Niw3IEBACi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgKG1hdGNoX29wZXJhbmQgMykpXQotICAgIiFUQVJHRVRfWDMyCi0tICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSAgICAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwKLSAJCQlDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKHBlZXAyX25leHRfaW5zbiAoMikpKSIKLUBAIC0xMjE3MSw3ICsxMjE3NCw3IEBACi0gICAgICAgICAobWF0Y2hfb3BlcmFuZDpXIDEgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgKHNldCAocGMpIChtYXRjaF9kdXAgMCkpXQotICAgIiFUQVJHRVRfWDMyCi0tICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSAgICAmJiBwZWVwMl9yZWdfZGVhZF9wICgyLCBvcGVyYW5kc1swXSkiCi0gICBbKHNldCAocGMpIChtYXRjaF9kdXAgMSkpXSkKLSAKLUBAIC0xMjIyOSw3ICsxMjIzMiwxMCBAQAotIAkJCSAgKG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIiAiVSIpCi0gCQkJICAobWF0Y2hfb3BlcmFuZDpTSSAyICJHT1QzMl9zeW1ib2xfb3BlcmFuZCIpKSkpCi0gCSAobWF0Y2hfb3BlcmFuZCAzKSkpXQotLSAgIiFUQVJHRVRfTUFDSE8gJiYgIVRBUkdFVF82NEJJVCAmJiBTSUJMSU5HX0NBTExfUCAoaW5zbikiCi0rICAiIVRBUkdFVF9NQUNITwotKyAgICYmICFUQVJHRVRfNjRCSVQKLSsgICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChpbnNuKSIKLSB7Ci0gICBydHggZm5hZGRyID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKLSAgIGZuYWRkciA9IGdlbl9jb25zdF9tZW0gKFBtb2RlLCBmbmFkZHIpOwotQEAgLTEyMjUwLDcgKzEyMjU2LDcgQEAKLSAgCShjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkKLSAJICAgICAgKG1hdGNoX29wZXJhbmQgMikpKQotICAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19QRUVQU0lCKV0KLS0gICIhVEFSR0VUX1gzMiAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiCi0gICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChpbnNuLCBvcGVyYW5kc1sxXSk7IgotICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGx2IildKQotIAotQEAgLTEyMjYxLDcgKzEyMjY3LDcgQEAKLSAgICAoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMCkpCi0gCQkgKG1hdGNoX29wZXJhbmQgMykpKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMSkpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDEpKSkiCi1AQCAtMTIyNzgsNyArMTIyODQsNyBAQAotIAkoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMCkpCi0gCSAgICAgIChtYXRjaF9vcGVyYW5kIDMpKSldCi0gICAiIVRBUkdFVF9YMzIKLS0gICAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLSsgICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotICAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgyKSkpIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLWluZGV4IGQxZjBhN2QuLjVmOGE5OGYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLUBAIC01OTMsNyArNTkzLDcgQEAKLSA7OyBUZXN0IGZvciBhIHZhbGlkIG9wZXJhbmQgZm9yIGluZGlyZWN0IGJyYW5jaC4KLSAoZGVmaW5lX3ByZWRpY2F0ZSAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiCi0gICAoaW9yIChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotLSAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIml4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIikpCi0rICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUiIpKQotIAkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkpKQotIAotQEAgLTYzNyw3ICs2MzcsNyBAQAotICAgKGlvciAobWF0Y2hfdGVzdCAiY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQKLSAJCSAgICAgKG9wLCBtb2RlID09IFZPSURtb2RlID8gbW9kZSA6IFBtb2RlKSIpCi0gICAgICAgIChtYXRjaF9vcGVyYW5kIDAgImNhbGxfcmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJtZW1vcnlfb3BlcmFuZCIpKQotIAkJIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLUBAIC02NDgsNyArNjQ4LDcgQEAKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9ub19lbGltX29wZXJhbmQiKQotLSAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIml4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIikpCi0rICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUiIpKQotIAkgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJCSAgICAgIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLSAJCSAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1pbmRleCA2MGQwOTg4Li42ZTk0ZDJjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLUBAIC0xMSw5ICsxMSw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1pbmRleCBhYWM3NTE2Li4zYzQ2NzA3IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLUBAIC0xMSw5ICsxMSw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLWluZGV4IDllMjRhMzguLjJjN2ZiNTIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotQEAgLTEyLDkgKzEyLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLWluZGV4IDEyN2I1ZDkuLjBkM2Y4OTUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotQEAgLTEyLDkgKzEyLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLWluZGV4IGZjYWExOGQuLmZiMjZjMDAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotQEAgLTksOCArOSwxMCBAQCBmb28gKHZvaWQpCi0gICBiYXIgKCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLWluZGV4IGU0NjQ5MjguLmFhMDNmYmQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotQEAgLTEwLDkgKzEwLDEzIEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1pbmRleCAxN2MyZDBmLi4zYzcyMDM2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLUBAIC0zNSw5ICszNSw4IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLWluZGV4IDkxOTRjY2YuLjcxMDY0MDcgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLUBAIC0xNCw5ICsxNCw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotaW5kZXggZTUxZjI2MS4uMjdjN2U1YiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotQEAgLTEyLDkgKzEyLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLWluZGV4IDRhZWVjMTguLjg5YTJiYWMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLUBAIC0xNCwxMCArMTQsOSBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotaW5kZXggYWMwZTU5OS4uM2ViODNjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotQEAgLTEzLDEwICsxMyw5IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1pbmRleCA1NzNjZjFlLi4wMDk4ZGQxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1AQCAtMTQsOSArMTQsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotaW5kZXggYjJiMzdmYy4uZWNlOGRlMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotQEAgLTEzLDkgKzEzLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLWluZGV4IDRhNDNlMTkuLmQ1M2ZjODggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLUBAIC0zNiw5ICszNiw4IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi1pbmRleCBhYzg0YWI2Li43M2QxNmJhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotQEAgLTEwLDkgKzEwLDkgQEAgZm9vICh2b2lkKQotICAgZGlzcGF0Y2ggKGJ1Zik7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kX3JheCIgeyB0YXJnZXQgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9lYXgiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIHJldCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLWluZGV4IGNlNjU1ZTguLjg1Njc1MWEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1AQCAtMTEsMTAgKzExLDggQEAgZm9vICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLWluZGV4IGQzNDQ4NWEuLjQyMzEyZjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1AQCAtMTAsOCArMTAsOSBAQCBmb28gKHZvaWQpCi0gICBiYXIgKGJ1Zik7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kX3JheCIgeyB0YXJnZXQgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9lYXgiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIHJldCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMKLWluZGV4IDBlMTk4MzAuLmM4Y2ExMDIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1AQCAtMTEsMTAgKzExLDkgQEAgZm9vICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiAxIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIHJldCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotaW5kZXggNTc5NDQxZi4uYzA5ZGQwYSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLUBAIC0xMSw5ICsxMSw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLWluZGV4IGM5MmU2ZjIuLjgyNjQyNWEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLWluZGV4IGQ5OTY0YzIuLjM4NTYyNjggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1AQCAtMTIsOSArMTIsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLWluZGV4IGQ0ZGNhNGQuLjFhZTQ5YjEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1AQCAtMTIsOSArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLWluZGV4IDVjMDdlMDIuLjUzMjgyMzkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1AQCAtOSw4ICs5LDEwIEBAIGZvbyAodm9pZCkKLSAgIGJhciAoKTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi1pbmRleCAzZWI0NDA2Li44YWU0MzQ4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotQEAgLTEwLDggKzEwLDggQEAgZm9vICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotaW5kZXggYWVjZTkzOC4uMmI5YTMzZSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLUBAIC0zNSw5ICszNSw4IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1pbmRleCAzYWJhNWU4Li44NjlkOTA0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1pbmRleCAwZjAxODFkLi5jNWMxNmVkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLWluZGV4IDJlZWY2ZjMuLjRhNjNlYmUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1pbmRleCBlODI1YTEwLi5hMzk1ZmZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotaW5kZXggYzZkNzdlMS4uMjFjYmZkMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLUBAIC05LDcgKzksOCBAQCBmb28gKHZvaWQpCi0gICBiYXIgKCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLWluZGV4IDY0NTQ4MjcuLmQxMzAwZjEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1AQCAtMTAsNyArMTAsOCBAQCBmb28gKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotaW5kZXggYzY3MDY2Yy4uZWEwMDkyNCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLUBAIC0zNSw4ICszNSw4IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJShyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLWluZGV4IGU2ZmVhODQuLmFmOTAyM2EgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLUBAIC0xNSw5ICsxNSw2IEBAIGZvbyAodm9pZCkKLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1pbmRleCBlMjM5ZWM0Li5iYTQ2N2M1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1AQCAtMTUsOSArMTUsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLWluZGV4IGZhMzE4MTMuLjQzZTU3Y2EgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLUBAIC0xNSw4ICsxNSw2IEBAIGZvbyAodm9pZCkKLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1pbmRleCBmZDViNDFmLi41NWYxNTZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1AQCAtMTQsOSArMTQsOCBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDMgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDMgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi1pbmRleCBkNjA2MzczLi4xYzc5MDQzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi1AQCAtMTYsNyArMTYsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotaW5kZXggNzVlNDVlMi4uNThhYmEzMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotQEAgLTE2LDcgKzE2LDYgQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1pbmRleCBkMWRiNDFjLi5kMmRmOGI4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotQEAgLTE0LDExICsxNCw4IEBAIGZvbyAodm9pZCkKLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMy1nY2Mtc2FuaXRpemVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMy1nY2Mtc2FuaXRpemVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdiY2Q4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDBmYTcxMDJkNzYzNzZiMjdhZTRiYmMxMDg0ODYwMGFhYzZlZDcxZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBqYWt1YiA8amFrdWJAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAxNyBKdWwgMjAxNyAxOTo0MTowOCArMDAwMAotU3ViamVjdDogW1BBVENIXSAJQmFja3BvcnRlZCBmcm9tIG1haW5saW5lIAkyMDE3LTA3LTE0ICBKYWt1YgotIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgc2FuaXRpemVyLzgxMDY2Ci0JKiBzYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oOiBDaGVycnktcGljayB1cHN0cmVhbSByMzA3OTY5LgotCSogc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2M6IExpa2V3aXNlLgotCSogc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY2M6IExpa2V3aXNlLgotCSogdHNhbi90c2FuX3BsYXRmb3JtX2xpbnV4LmNjOiBMaWtld2lzZS4KLQotW1JvbWFpbiBjaGVycnktcGljayBvbiBnY2MtNi1icmFuY2ggZnJvbSBnY2MtNy1icmFuY2hdCi1TaWduZWQtb2ZmLWJ5OiBSb21haW4gTmFvdXIgPHJvbWFpbi5uYW91ckBnbWFpbC5jb20+Ci1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNy1icmFuY2hAMjUwMjg3IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0tLS0KLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MgICAgICAgICAgICAgICAgICAgICAgfCAzICstLQotIGxpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oICAgICAgICAgICAgICAgICAgICAgICB8IDQgKy0tLQotIGxpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYyB8IDIgKy0KLSBsaWJzYW5pdGl6ZXIvdHNhbi90c2FuX3BsYXRmb3JtX2xpbnV4LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MgYi9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MKLWluZGV4IDJjZWZhMjAuLjIyM2Q5YzYgMTAwNjQ0Ci0tLS0gYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MKLSsrKyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jYwotQEAgLTU0Niw4ICs1NDYsNyBAQCB1cHRyIGludGVybmFsX3ByY3RsKGludCBvcHRpb24sIHVwdHIgYXJnMiwgdXB0ciBhcmczLCB1cHRyIGFyZzQsIHVwdHIgYXJnNSkgewotIH0KLSAjZW5kaWYKLSAKLS11cHRyIGludGVybmFsX3NpZ2FsdHN0YWNrKGNvbnN0IHN0cnVjdCBzaWdhbHRzdGFjayAqc3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhbHRzdGFjayAqb3NzKSB7Ci0rdXB0ciBpbnRlcm5hbF9zaWdhbHRzdGFjayhjb25zdCB2b2lkICpzcywgdm9pZCAqb3NzKSB7Ci0gICByZXR1cm4gaW50ZXJuYWxfc3lzY2FsbChTWVNDQUxMKHNpZ2FsdHN0YWNrKSwgKHVwdHIpc3MsICh1cHRyKW9zcyk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmgKLWluZGV4IDQ0OTc3MDIuLjE1OTQwNTggMTAwNjQ0Ci0tLS0gYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaAotKysrIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmgKLUBAIC0xOSw3ICsxOSw2IEBACi0gI2luY2x1ZGUgInNhbml0aXplcl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguaCIKLSAKLSBzdHJ1Y3QgbGlua19tYXA7ICAvLyBPcGFxdWUgdHlwZSByZXR1cm5lZCBieSBkbG9wZW4oKS4KLS1zdHJ1Y3Qgc2lnYWx0c3RhY2s7Ci0gCi0gbmFtZXNwYWNlIF9fc2FuaXRpemVyIHsKLSAvLyBEaXJlbnQgc3RydWN0dXJlIGZvciBnZXRkZW50cygpLiBOb3RlIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50IGZyb20KLUBAIC0yOCw4ICsyNyw3IEBAIHN0cnVjdCBsaW51eF9kaXJlbnQ7Ci0gCi0gLy8gU3lzY2FsbCB3cmFwcGVycy4KLSB1cHRyIGludGVybmFsX2dldGRlbnRzKGZkX3QgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQgKmRpcnAsIHVuc2lnbmVkIGludCBjb3VudCk7Ci0tdXB0ciBpbnRlcm5hbF9zaWdhbHRzdGFjayhjb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sqIHNzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2FsdHN0YWNrKiBvc3MpOwotK3VwdHIgaW50ZXJuYWxfc2lnYWx0c3RhY2soY29uc3Qgdm9pZCogc3MsIHZvaWQqIG9zcyk7Ci0gdXB0ciBpbnRlcm5hbF9zaWdwcm9jbWFzayhpbnQgaG93LCBfX3Nhbml0aXplcl9zaWdzZXRfdCAqc2V0LAotICAgICBfX3Nhbml0aXplcl9zaWdzZXRfdCAqb2xkc2V0KTsKLSB2b2lkIGludGVybmFsX3NpZ2ZpbGxzZXQoX19zYW5pdGl6ZXJfc2lnc2V0X3QgKnNldCk7Ci1kaWZmIC0tZ2l0IGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNjIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNjCi1pbmRleCBjOTE5ZTRmLi4wMTQxNjJhZiAxMDA2NDQKLS0tLSBhL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYwotKysrIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNjCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBpbnQgVHJhY2VyVGhyZWFkKHZvaWQqIGFyZ3VtZW50KSB7Ci0gCi0gICAvLyBBbHRlcm5hdGUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGluZy4KLSAgIEludGVybmFsU2NvcGVkQnVmZmVyPGNoYXI+IGhhbmRsZXJfc3RhY2tfbWVtb3J5KGtIYW5kbGVyU3RhY2tTaXplKTsKLS0gIHN0cnVjdCBzaWdhbHRzdGFjayBoYW5kbGVyX3N0YWNrOwotKyAgc3RhY2tfdCBoYW5kbGVyX3N0YWNrOwotICAgaW50ZXJuYWxfbWVtc2V0KCZoYW5kbGVyX3N0YWNrLCAwLCBzaXplb2YoaGFuZGxlcl9zdGFjaykpOwotICAgaGFuZGxlcl9zdGFjay5zc19zcCA9IGhhbmRsZXJfc3RhY2tfbWVtb3J5LmRhdGEoKTsKLSAgIGhhbmRsZXJfc3RhY2suc3Nfc2l6ZSA9IGtIYW5kbGVyU3RhY2tTaXplOwotZGlmZiAtLWdpdCBhL2xpYnNhbml0aXplci90c2FuL3RzYW5fcGxhdGZvcm1fbGludXguY2MgYi9saWJzYW5pdGl6ZXIvdHNhbi90c2FuX3BsYXRmb3JtX2xpbnV4LmNjCi1pbmRleCAwOWNlYzVmLi45MDhmNGZlIDEwMDY0NAotLS0tIGEvbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYwotKysrIGIvbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYwotQEAgLTI5MSw3ICsyOTEsNyBAQCBib29sIElzR2xvYmFsVmFyKHVwdHIgYWRkcikgewotIGludCBFeHRyYWN0UmVzb2x2RkRzKHZvaWQgKnN0YXRlLCBpbnQgKmZkcywgaW50IG5mZCkgewotICNpZiBTQU5JVElaRVJfTElOVVgKLSAgIGludCBjbnQgPSAwOwotLSAgX19yZXNfc3RhdGUgKnN0YXRwID0gKF9fcmVzX3N0YXRlKilzdGF0ZTsKLSsgIHN0cnVjdCBfX3Jlc19zdGF0ZSAqc3RhdHAgPSAoc3RydWN0IF9fcmVzX3N0YXRlKilzdGF0ZTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYTlMgJiYgY250IDwgbmZkOyBpKyspIHsKLSAgICAgaWYgKHN0YXRwLT5fdS5fZXh0Lm5zYWRkcnNbaV0gJiYgc3RhdHAtPl91Ll9leHQubnNzb2Nrc1tpXSAhPSAtMSkKLSAgICAgICBmZHNbY250KytdID0gc3RhdHAtPl91Ll9leHQubnNzb2Nrc1tpXTsKLS0tIAotMi45LjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvQ1ZFLTIwMTYtNjEzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvQ1ZFLTIwMTYtNjEzMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkYmIyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0L0NWRS0yMDE2LTYxMzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjMgKzAsMCBAQAotRnJvbSA1OWEwZTRiZDgzOTE5NjJmNjI2MDBhZTNhYzk1YWIwZmJhNzRkNDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbGF3IDxsYXdAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVGh1LCA0IEF1ZyAyMDE2IDE2OjUzOjE4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3IgUFI3MTY5NiBpbiBMaWJpYmVydHkgRGVtYW5nbGVyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVtCWiAjNzE2OTZdIC0tIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcxNjk2Ci0KLTIwMTYtMDgtMDQgIE1hcmNlbCBCw7ZobWUgIDxib2VobWUubWFyY2VsQGdtYWlsLmNvbT4KLQotCVBSIGMrKy83MTY5NgotCSogY3BsdXMtZGVtLmM6IFByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUgaXMgYSBjeWNsZQotCWluIHRoZSByZWZlcmVuY2luZyBvZiByZW1lbWJlcmVkIG1hbmdsZWQgdHlwZXMuCi0JKHdvcmtfc3R1ZmYpOiBOZXcgc3RhY2sgdG8ga2VlcCB0cmFjayBvZiB0aGUgcmVtZW1iZXJlZCBtYW5nbGVkCi0JdHlwZXMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4KLQkocHVzaF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcHVzaCBjdXJyZW50bHkgcHJvY2Vzc2VkCi0JcmVtZW1iZXJlZCB0eXBlIG9udG8gdGhlIHN0YWNrLgotCShwb3BfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHBvcCBjdXJyZW50bHkgcHJvY2Vzc2VkCi0JcmVtZW1iZXJlZCB0eXBlIGZyb20gdGhlIHN0YWNrLgotCSh3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSk6IENvcHkgdmFsdWVzIG9mIG5ldyB2YXJpYWJsZXMuCi0JKGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYpOiBGcmVlIHN0YWNrIG1lbW9yeS4KLQkoZGVtYW5nbGVfYXJncyk6IFB1c2gvUG9wIGN1cnJlbnRseSBwcm9jZXNzZWQgcmVtZW1iZXJlZCB0eXBlLgotCShkb190eXBlKTogRG8gbm90IGRlbWFuZ2xlIGEgY3ljbGljIHJlZmVyZW5jZSBhbmQgcHVzaC9wb3AKLQlyZWZlcmVuY2VkIHJlbWVtYmVyZWQgdHlwZS4KLQotY2hlcnJ5LXBpY2tlZCBmcm9tIGNvbW1pdCBvZgotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjM5MTQzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi1DVkU6IENWRS0yMDE2LTYxMzEKLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmliZXJ0eS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKwotIGxpYmliZXJ0eS9jcGx1cy1kZW0uYyAgICAgICAgICAgICAgICAgfCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQotIGxpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQgfCAxOCArKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNi40LjAvbGliaWJlcnR5L2NwbHVzLWRlbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTYuNC4wLm9yaWcvbGliaWJlcnR5L2NwbHVzLWRlbS5jCi0rKysgZ2NjLTYuNC4wL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotQEAgLTE0NCw2ICsxNDQsOSBAQCBzdHJ1Y3Qgd29ya19zdHVmZgotICAgc3RyaW5nKiBwcmV2aW91c19hcmd1bWVudDsgLyogVGhlIGxhc3QgZnVuY3Rpb24gYXJndW1lbnQgZGVtYW5nbGVkLiAgKi8KLSAgIGludCBucmVwZWF0czsgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJldmlvdXMKLSAJCQkgICBhcmd1bWVudC4gICovCi0rICBpbnQgKnByb2N0eXBldmVjOyAgICAgLyogSW5kaWNlcyBvZiBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZXZlY3MuICAqLwotKyAgaW50IHByb2N0eXBldmVjX3NpemU7Ci0rICBpbnQgbnByb2N0eXBlczsKLSB9OwotIAotICNkZWZpbmUgUFJJTlRfQU5TSV9RVUFMSUZJRVJTICh3b3JrIC0+IG9wdGlvbnMgJiBETUdMX0FOU0kpCi1AQCAtNDM1LDYgKzQzOCwxMCBAQCBpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uIChzdHJ1Y3Qgd29ya19zCi0gCi0gc3RhdGljIHZvaWQgcmVtZW1iZXJfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotIAotK3N0YXRpYyB2b2lkIHB1c2hfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGludCk7Ci0rCi0rc3RhdGljIHZvaWQgcG9wX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqKTsKLSsKLSBzdGF0aWMgdm9pZCByZW1lbWJlcl9CdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCk7Ci0gCi0gc3RhdGljIGludCByZWdpc3Rlcl9CdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKik7Ci1AQCAtMTMwMSw2ICsxMzA4LDEwIEBAIHdvcmtfc3R1ZmZfY29weV90b19mcm9tIChzdHJ1Y3Qgd29ya19zdHUKLSAgICAgICBtZW1jcHkgKHRvLT5idHlwZXZlY1tpXSwgZnJvbS0+YnR5cGV2ZWNbaV0sIGxlbik7Ci0gICAgIH0KLSAKLSsgIGlmIChmcm9tLT5wcm9jdHlwZXZlYykKLSsgICAgdG8tPnByb2N0eXBldmVjID0KLSsgICAgICBYRFVQVkVDIChpbnQsIGZyb20tPnByb2N0eXBldmVjLCBmcm9tLT5wcm9jdHlwZXZlY19zaXplKTsKLSsKLSAgIGlmIChmcm9tLT5udG1wbF9hcmdzKQotICAgICB0by0+dG1wbF9hcmd2ZWMgPSBYTkVXVkVDIChjaGFyICosIGZyb20tPm50bXBsX2FyZ3MpOwotIAotQEAgLTEzMjksMTEgKzEzNDAsMTcgQEAgZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZiAoc3RydWN0IHdvcmtfcwotICAgLyogRGlzY2FyZCB0aGUgcmVtZW1iZXJlZCB0eXBlcywgaWYgYW55LiAgKi8KLSAKLSAgIGZvcmdldF90eXBlcyAod29yayk7Ci0tICBpZiAod29yayAtPiB0eXBldmVjICE9IE5VTEwpCi0rICBpZiAod29yay0+dHlwZXZlYyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgZnJlZSAoKGNoYXIgKikgd29yayAtPiB0eXBldmVjKTsKLS0gICAgICB3b3JrIC0+IHR5cGV2ZWMgPSBOVUxMOwotLSAgICAgIHdvcmsgLT4gdHlwZXZlY19zaXplID0gMDsKLSsgICAgICBmcmVlICgoY2hhciAqKSB3b3JrLT50eXBldmVjKTsKLSsgICAgICB3b3JrLT50eXBldmVjID0gTlVMTDsKLSsgICAgICB3b3JrLT50eXBldmVjX3NpemUgPSAwOwotKyAgICB9Ci0rICBpZiAod29yay0+cHJvY3R5cGV2ZWMgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGZyZWUgKHdvcmstPnByb2N0eXBldmVjKTsKLSsgICAgICB3b3JrLT5wcm9jdHlwZXZlYyA9IE5VTEw7Ci0rICAgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9IDA7Ci0gICAgIH0KLSAgIGlmICh3b3JrLT50bXBsX2FyZ3ZlYykKLSAgICAgewotQEAgLTM1NTIsNiArMzU2OSw4IEBAIHN0YXRpYyBpbnQKLSBkb190eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsIHN0cmluZyAqcmVzdWx0KQotIHsKLSAgIGludCBuOwotKyAgaW50IGk7Ci0rICBpbnQgaXNfcHJvY3R5cGV2ZWM7Ci0gICBpbnQgZG9uZTsKLSAgIGludCBzdWNjZXNzOwotICAgc3RyaW5nIGRlY2w7Ci1AQCAtMzU2NCw2ICszNTgzLDcgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0Ci0gCi0gICBkb25lID0gMDsKLSAgIHN1Y2Nlc3MgPSAxOwotKyAgaXNfcHJvY3R5cGV2ZWMgPSAwOwotICAgd2hpbGUgKHN1Y2Nlc3MgJiYgIWRvbmUpCi0gICAgIHsKLSAgICAgICBpbnQgbWVtYmVyOwotQEAgLTM2MTYsOCArMzYzNiwxNSBAQCBkb190eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QKLSAJICAgICAgc3VjY2VzcyA9IDA7Ci0gCSAgICB9Ci0gCSAgZWxzZQotKwkgICAgZm9yIChpID0gMDsgaSA8IHdvcmstPm5wcm9jdHlwZXM7IGkrKykKLSsJICAgICAgaWYgKHdvcmsgLT4gcHJvY3R5cGV2ZWMgW2ldID09IG4pCi0rCSAgICAgICAgc3VjY2VzcyA9IDA7Ci0rCi0rCSAgaWYgKHN1Y2Nlc3MpCi0gCSAgICB7Ci0tCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmsgLT4gdHlwZXZlY1tuXTsKLSsJICAgICAgaXNfcHJvY3R5cGV2ZWMgPSAxOwotKwkgICAgICBwdXNoX3Byb2Nlc3NlZF90eXBlICh3b3JrLCBuKTsKLSsJICAgICAgcmVtZW1iZXJlZF90eXBlID0gd29yay0+dHlwZXZlY1tuXTsKLSAJICAgICAgbWFuZ2xlZCA9ICZyZW1lbWJlcmVkX3R5cGU7Ci0gCSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMzg0MCw2ICszODY3LDkgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0Ci0gICAgIHN0cmluZ19kZWxldGUgKHJlc3VsdCk7Ci0gICBzdHJpbmdfZGVsZXRlICgmZGVjbCk7Ci0gCi0rICBpZiAoaXNfcHJvY3R5cGV2ZWMpCi0rICAgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0rCi0gICBpZiAoc3VjY2VzcykKLSAgICAgLyogQXNzdW1lIGFuIGludGVncmFsIHR5cGUsIGlmIHdlJ3JlIG5vdCBzdXJlLiAgKi8KLSAgICAgcmV0dXJuIChpbnQpICgodGsgPT0gdGtfbm9uZSkgPyB0a19pbnRlZ3JhbCA6IHRrKTsKLUBAIC00MjUyLDYgKzQyODIsNDEgQEAgZG9fYXJnIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgYwotIH0KLSAKLSBzdGF0aWMgdm9pZAotK3B1c2hfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBpbnQgdHlwZXZlY19pbmRleCkKLSt7Ci0rICBpZiAod29yay0+bnByb2N0eXBlcyA+PSB3b3JrLT5wcm9jdHlwZXZlY19zaXplKQotKyAgICB7Ci0rICAgICAgaWYgKCF3b3JrLT5wcm9jdHlwZXZlY19zaXplKQotKwl7Ci0rCSAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9IDQ7Ci0rCSAgd29yay0+cHJvY3R5cGV2ZWMgPSBYTkVXVkVDIChpbnQsIHdvcmstPnByb2N0eXBldmVjX3NpemUpOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKHdvcmstPnByb2N0eXBldmVjX3NpemUgPCAxNikKLSsJICAgIC8qIERvdWJsZSB3aGVuIHNtYWxsLiAgKi8KLSsJICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgKj0gMjsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIEdyb3cgc2xvd2VyIHdoZW4gbGFyZ2UuICAqLwotKwkgICAgICBpZiAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA+IChJTlRfTUFYIC8gMykgKiAyKQotKyAgICAgICAgICAgICAgICB4bWFsbG9jX2ZhaWxlZCAoSU5UX01BWCk7Ci0rICAgICAgICAgICAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gKHdvcmstPnByb2N0eXBldmVjX3NpemUgKiAzIC8gMik7Ci0rCSAgICB9Ci0rICAgICAgICAgIHdvcmstPnByb2N0eXBldmVjCi0rICAgICAgICAgICAgPSBYUkVTSVpFVkVDIChpbnQsIHdvcmstPnByb2N0eXBldmVjLCB3b3JrLT5wcm9jdHlwZXZlY19zaXplKTsKLSsJfQotKyAgICB9Ci0rICAgIHdvcmstPnByb2N0eXBldmVjIFt3b3JrLT5ucHJvY3R5cGVzKytdID0gdHlwZXZlY19pbmRleDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStwb3BfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrKQotK3sKLSsgIHdvcmstPm5wcm9jdHlwZXMtLTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSByZW1lbWJlcl90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqc3RhcnQsIGludCBsZW4pCi0gewotICAgY2hhciAqdGVtOwotQEAgLTQ1MTUsMTAgKzQ1ODAsMTMgQEAgZGVtYW5nbGVfYXJncyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmQgKGRlY2xwLCAiLCAiKTsKLSAJCX0KLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgdCk7Ci0gCSAgICAgIGlmICghZG9fYXJnICh3b3JrLCAmdGVtLCAmYXJnKSkKLSAJCXsKLSsJCSAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJCSAgcmV0dXJuICgwKTsKLSAJCX0KLSsJICAgICAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJICAgICAgaWYgKFBSSU5UX0FSR19UWVBFUykKLSAJCXsKLSAJCSAgc3RyaW5nX2FwcGVuZHMgKGRlY2xwLCAmYXJnKTsKLUluZGV4OiBnY2MtNi40LjAvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy02LjQuMC5vcmlnL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLSsrKyBnY2MtNi40LjAvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAotQEAgLTQ0OTEsMyArNDQ5MSwyMSBAQCB2b2lkIGVhdDxpbnQqLCBGb28oKTo6e2xhbWJkYShhdXRvOjEqLCBhCi0gCi0gX1ozZWF0SVBpWjNCYXJJc0V2dkVVbFBzUFRfUFQwX0UwX0V2UlMzX1JTNV8KLSB2b2lkIGVhdDxpbnQqLCB2b2lkIEJhcjxzaG9ydD4oKTo6e2xhbWJkYShzaG9ydCosIGF1dG86MSosIGF1dG86MiopIzJ9PihpbnQqJiwgdm9pZCBCYXI8c2hvcnQ+KCk6OntsYW1iZGEoc2hvcnQqLCBhdXRvOjEqLCBhdXRvOjIqKSMyfSYpCi0rIwotKyMgVGVzdHMgd3JpdGUgYWNjZXNzIHZpb2xhdGlvbiBQUjcwOTI2Ci0rCi0rMF9fT3QybTAyUjVUMDAwMDUwMDAwMAotKzBfX090Mm0wMlI1VDAwMDA1MDAwMDAKLSsjCi0rCi0rMF9fR1Q1MDAwMDAwMDAwMF8KLSswX19HVDUwMDAwMDAwMDAwXwotKyMKLSsKLStfX3QybTA1QjUwMDAwMDAwMDAwMDAwMDAwMF8KLStfX3QybTA1QjUwMDAwMDAwMDAwMDAwMDAwMF8KLSsjCi0rIyBUZXN0cyBzdGFjayBvdmVyZmxvdyBQUjcxNjk2Ci0rCi0rX18xMCUwX19TNF8wVDBUMAotKyUwPD46OiUwKCUwPD4pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCmluZGV4IDJkYzNkYjguLmQ5NjhjMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCkBAIC0xMCw4ICsxMCw4IEBACiAKIEZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy03LjM6JHtGSUxFX0RJUk5BTUV9L2djYy03LjMvYmFja3BvcnQ6IgogCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgorREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIgZmxleC1uYXRpdmUiCitOQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKIAogTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgogCkBAIC03MywxMiArNzMsMTIgQEAKICAgICAgICAgICAgZmlsZTovLzAwNDctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1zZWdtZW50YXRpb24tZmF1bHQtcHJlY29tcGlsZWQtaGRyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTAtUklTQy1WLUhhbmRsZS1ub24tbGVnaXRpbWF0ZS1hZGRyZXNzLWluLXJpc2N2X2xlZ2l0aS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1zc2UtZml4LXRlc3QtY2FzZS1mYWlsdXJlcy5wYXRjaCBcCiAgICAgICAgICAgICR7QkFDS1BPUlRTfSBcCiAiCiBCQUNLUE9SVFMgPSAiXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaW50ZXJuYWwtY29tcGlsZXItZXJyb3ItaW4tdGVzdGNhc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QUi1ydGwtb3B0aW1pemF0aW9uLTgzMDMwLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gImJlMmRhMjE2ODBmMjc2MjRmM2E4NzA1NWM0YmE1YWYyIgpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCiAgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAogICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgLS13aXRoLWxpbmtlci1oYXNoLXN0eWxlPSR7TElOS0VSX0hBU0hfU1RZTEV9IFwKKyAgICAke0AnLS13aXRoLWxpbmtlci1oYXNoLXN0eWxlPSR7TElOS0VSX0hBU0hfU1RZTEV9JyBpZiAnJHtMSU5LRVJfSEFTSF9TVFlMRX0nIGVsc2UgJyd9IFwKICAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAogICAgIC0td2l0aC1wcGw9bm8gXAogICAgIC0td2l0aC1jbG9vZz1ubyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwMS1QUi1ydGwtb3B0aW1pemF0aW9uLTgzMDMwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjc5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaApAQCAtMCwwICsxLDI3MiBAQAorRnJvbSBmNWM0YTk0NDBmMTVjY2Y2Nzc1NjU5OTEwYTIwMTRhNTQ5NGVlODZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZWJvdGNhem91IDxlYm90Y2F6b3VAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAyMTo0MzoyMiArMDAwMAorU3ViamVjdDogW1BBVENIXSAJUFIgcnRsLW9wdGltaXphdGlvbi84MzAzMCAJKiBkb2MvcnRsLnRleGkgKEZsYWdzCisgaW4gYW4gUlRMIEV4cHJlc3Npb24pOiBBbHBoYWJldGl6ZSwgYWRkIGVudHJ5IAlmb3IgQ1JPU1NJTkdfSlVNUF9QIGFuZAorIG1lbnRpb24gdXNhZ2Ugb2YgJ2p1bXAnIGZvciBKVU1QX0lOU05zLiAJKEluc25zKTogRGVsZXRlIGVudHJ5IGZvcgorIFJFR19DUk9TU0lOR19KVU1QIGluIHJlZ2lzdGVyIG5vdGVzLiAJKiBiYi1yZW9yZGVyLmMKKyAodXBkYXRlX2Nyb3NzaW5nX2p1bXBfZmxhZ3MpOiBEbyBub3QgdGVzdCB3aGV0aGVyIHRoZSAJQ1JPU1NJTkdfSlVNUF9QIGZsYWcKKyBpcyBhbHJlYWR5IHNldCBiZWZvcmUgc2V0dGluZyBpdC4gCSogY2ZncnRsLmMgKGZpeHVwX3BhcnRpdGlvbl9jcm9zc2luZyk6CisgTGlrZXdpc2UuIAkqIHJlb3JnLmMgKHJlbGF4X2RlbGF5X3Nsb3RzKTogRG8gbm90IGNvbnNpZGVyIGEKKyBDUk9TU0lOR19KVU1QX1AgaW5zbiAJYXMgdXNlbGVzcy4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjU1MDgzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1RoaXMgcGF0Y2ggcmVtb3ZlcyBjaGFuZ2VzIHRvIENoYW5nZWxvZyBmcm9tIHRoZSBvcmlnaW5hbCB1cHN0cmVhbSBwYXRjaC4KK1RoaXMgd2lsbCBoZWxwIHVzIGF2b2lkIGNvbmZsaWN0cy4KKworT3JpZ2luYWwgYmFja3BvcnQgdG8gR0NDIDcueCBieSBBbXJ1dGEgUGF3YXIgPEFtcnV0YS5QYXdhckBrcGl0LmNvbT4KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBnY2MvYmItcmVvcmRlci5jIHwgICA1ICstLQorIGdjYy9jZmdydGwuYyAgICAgfCAgIDMgKy0KKyBnY2MvZG9jL3J0bC50ZXhpIHwgMTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBnY2MvcmVvcmcuYyAgICAgIHwgICA3ICstLQorIDUgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvYmItcmVvcmRlci5jIGIvZ2NjL2JiLXJlb3JkZXIuYworaW5kZXggNTVlNmRjNi4uNzk0MjgzYyAxMDA2NDQKKy0tLSBhL2djYy9iYi1yZW9yZGVyLmMKKysrKyBiL2djYy9iYi1yZW9yZGVyLmMKK0BAIC0yMjM2LDEwICsyMjM2LDcgQEAgdXBkYXRlX2Nyb3NzaW5nX2p1bXBfZmxhZ3MgKHZvaWQpCisgICAgIEZPUl9FQUNIX0VER0UgKGUsIGVpLCBiYi0+c3VjY3MpCisgICAgICAgaWYgKGUtPmZsYWdzICYgRURHRV9DUk9TU0lORykKKyAJeworLQkgIGlmIChKVU1QX1AgKEJCX0VORCAoYmIpKQorLQkgICAgICAvKiBTb21lIGZsYWdzIHdlcmUgYWRkZWQgZHVyaW5nIGZpeF91cF9mYWxsX3RocnVfZWRnZXMsIHZpYQorLQkJIGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdC4gICovCistCSAgICAgICYmICFDUk9TU0lOR19KVU1QX1AgKEJCX0VORCAoYmIpKSkKKysJICBpZiAoSlVNUF9QIChCQl9FTkQgKGJiKSkpCisgCSAgICBDUk9TU0lOR19KVU1QX1AgKEJCX0VORCAoYmIpKSA9IDE7CisgCSAgYnJlYWs7CisgCX0KK2RpZmYgLS1naXQgYS9nY2MvY2ZncnRsLmMgYi9nY2MvY2ZncnRsLmMKK2luZGV4IGQ2ZTVhYzAuLmEyYWQwNzUgMTAwNjQ0CistLS0gYS9nY2MvY2ZncnRsLmMKKysrKyBiL2djYy9jZmdydGwuYworQEAgLTEzMzQsOCArMTMzNCw3IEBAIGZpeHVwX3BhcnRpdGlvbl9jcm9zc2luZyAoZWRnZSBlKQorICAgaWYgKEJCX1BBUlRJVElPTiAoZS0+c3JjKSAhPSBCQl9QQVJUSVRJT04gKGUtPmRlc3QpKQorICAgICB7CisgICAgICAgZS0+ZmxhZ3MgfD0gRURHRV9DUk9TU0lORzsKKy0gICAgICBpZiAoSlVNUF9QIChCQl9FTkQgKGUtPnNyYykpCistCSAgJiYgIUNST1NTSU5HX0pVTVBfUCAoQkJfRU5EIChlLT5zcmMpKSkKKysgICAgICBpZiAoSlVNUF9QIChCQl9FTkQgKGUtPnNyYykpKQorIAlDUk9TU0lOR19KVU1QX1AgKEJCX0VORCAoZS0+c3JjKSkgPSAxOworICAgICB9CisgICBlbHNlIGlmIChCQl9QQVJUSVRJT04gKGUtPnNyYykgPT0gQkJfUEFSVElUSU9OIChlLT5kZXN0KSkKK2RpZmYgLS1naXQgYS9nY2MvZG9jL3J0bC50ZXhpIGIvZ2NjL2RvYy9ydGwudGV4aQoraW5kZXggMjE1MjRmNS4uYTU4ZWVkYyAxMDA2NDQKKy0tLSBhL2djYy9kb2MvcnRsLnRleGkKKysrKyBiL2djYy9kb2MvcnRsLnRleGkKK0BAIC01NjUsNiArNTY1LDE2IEBAIHRoYXQgYXJlIHVzZWQgaW4gY2VydGFpbiB0eXBlcyBvZiBleHByZXNzaW9uLiAgTW9zdCBvZnRlbiB0aGV5CisgYXJlIGFjY2Vzc2VkIHdpdGggdGhlIGZvbGxvd2luZyBtYWNyb3MsIHdoaWNoIGV4cGFuZCBpbnRvIGx2YWx1ZXMuCisgCisgQHRhYmxlIEBjb2RlCisrQGZpbmRleCBDUk9TU0lOR19KVU1QX1AKKytAY2luZGV4IEBjb2Rle2p1bXBfaW5zbn0gYW5kIEBzYW1wey9qfQorK0BpdGVtIENST1NTSU5HX0pVTVBfUCAoQHZhcnt4fSkKKytOb256ZXJvIGluIGEgQGNvZGV7anVtcF9pbnNufSBpZiBpdCBjcm9zc2VzIGJldHdlZW4gaG90IGFuZCBjb2xkIHNlY3Rpb25zLAorK3doaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIHZlcnkgZmFyIGFwYXJ0IGluIHRoZSBleGVjdXRhYmxlLiAgVGhlIHByZXNlbmNlCisrb2YgdGhpcyBmbGFnIGluZGljYXRlcyB0byBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgdGhpcyBicmFuY2hpbmcgaW5zdHJ1Y3Rpb24KKytzaG91bGQgbm90IGJlIGBgY29sbGFwc2VkJycgaW50byBhIHNpbXBsZXIgYnJhbmNoaW5nIGNvbnN0cnVjdC4gIEl0IGlzIHVzZWQKKyt3aGVuIHRoZSBvcHRpbWl6YXRpb24gdG8gcGFydGl0aW9uIGJhc2ljIGJsb2NrcyBpbnRvIGhvdCBhbmQgY29sZCBzZWN0aW9ucworK2lzIHR1cm5lZCBvbi4KKysKKyBAZmluZGV4IENPTlNUQU5UX1BPT0xfQUREUkVTU19QCisgQGNpbmRleCBAY29kZXtzeW1ib2xfcmVmfSBhbmQgQHNhbXB7L3V9CisgQGNpbmRleCBAY29kZXt1bmNoYW5naW5nfSwgaW4gQGNvZGV7c3ltYm9sX3JlZn0KK0BAIC01NzcsMzcgKzU4Nyw2IEBAIEluIGVpdGhlciBjYXNlIEdDQyBhc3N1bWVzIHRoZXNlIGFkZHJlc3NlcyBjYW4gYmUgYWRkcmVzc2VkIGRpcmVjdGx5LAorIHBlcmhhcHMgd2l0aCB0aGUgaGVscCBvZiBiYXNlIHJlZ2lzdGVycy4KKyBTdG9yZWQgaW4gdGhlIEBjb2Rle3VuY2hhbmdpbmd9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey91fS4KKyAKKy1AZmluZGV4IFJUTF9DT05TVF9DQUxMX1AKKy1AY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey91fQorLUBjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle2NhbGxfaW5zbn0KKy1AaXRlbSBSVExfQ09OU1RfQ0FMTF9QIChAdmFye3h9KQorLUluIGEgQGNvZGV7Y2FsbF9pbnNufSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5zbiByZXByZXNlbnRzIGEgY2FsbCB0byBhCistY29uc3QgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3VuY2hhbmdpbmd9IGZpZWxkIGFuZCBwcmludGVkIGFzCistQHNhbXB7L3V9LgorLQorLUBmaW5kZXggUlRMX1BVUkVfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvaX0KKy1AY2luZGV4IEBjb2Rle3JldHVybl92YWx9LCBpbiBAY29kZXtjYWxsX2luc259CistQGl0ZW0gUlRMX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorLUluIGEgQGNvZGV7Y2FsbF9pbnNufSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5zbiByZXByZXNlbnRzIGEgY2FsbCB0byBhCistcHVyZSBmdW5jdGlvbi4gIFN0b3JlZCBpbiB0aGUgQGNvZGV7cmV0dXJuX3ZhbH0gZmllbGQgYW5kIHByaW50ZWQgYXMKKy1Ac2FtcHsvaX0uCistCistQGZpbmRleCBSVExfQ09OU1RfT1JfUFVSRV9DQUxMX1AKKy1AY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey91fSBvciBAc2FtcHsvaX0KKy1AaXRlbSBSVExfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCistSW4gYSBAY29kZXtjYWxsX2luc259LCB0cnVlIGlmIEBjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yCistQGNvZGV7UlRMX1BVUkVfQ0FMTF9QfSBpcyB0cnVlLgorLQorLUBmaW5kZXggUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AKKy1AY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey9jfQorLUBjaW5kZXggQGNvZGV7Y2FsbH0sIGluIEBjb2Rle2NhbGxfaW5zbn0KKy1AaXRlbSBSVExfTE9PUElOR19DT05TVF9PUl9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIHBvc3NpYmx5CistaW5maW5pdGUgbG9vcGluZyBjYWxsIHRvIGEgY29uc3Qgb3IgcHVyZSBmdW5jdGlvbi4gIFN0b3JlZCBpbiB0aGUKKy1AY29kZXtjYWxsfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvY30uICBPbmx5IHRydWUgaWYgb25lIG9mCistQGNvZGV7UlRMX0NPTlNUX0NBTExfUH0gb3IgQGNvZGV7UlRMX1BVUkVfQ0FMTF9QfSBpcyB0cnVlLgorLQorIEBmaW5kZXggSU5TTl9BTk5VTExFRF9CUkFOQ0hfUAorIEBjaW5kZXggQGNvZGV7anVtcF9pbnNufSBhbmQgQHNhbXB7L3V9CisgQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0KK0BAIC03MDIsNiArNjgxLDI5IEBAIFN0b3JlZCBpbiB0aGUgQGNvZGV7Y2FsbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L2N9LgorIE5vbnplcm8gaW4gYSBAY29kZXttZW19IGlmIHRoZSBtZW1vcnkgcmVmZXJlbmNlIGhvbGRzIGEgcG9pbnRlci4KKyBTdG9yZWQgaW4gdGhlIEBjb2Rle2ZyYW1lX3JlbGF0ZWR9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey9mfS4KKyAKKytAZmluZGV4IE1FTV9SRUFET05MWV9QCisrQGNpbmRleCBAY29kZXttZW19IGFuZCBAc2FtcHsvdX0KKytAY2luZGV4IEBjb2Rle3VuY2hhbmdpbmd9LCBpbiBAY29kZXttZW19CisrQGl0ZW0gTUVNX1JFQURPTkxZX1AgKEB2YXJ7eH0pCisrTm9uemVybyBpbiBhIEBjb2Rle21lbX0sIGlmIHRoZSBtZW1vcnkgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIHJlYWQtb25seS4KKysKKytSZWFkLW9ubHkgaW4gdGhpcyBjb250ZXh0IG1lYW5zIG5ldmVyIG1vZGlmaWVkIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlCisrcHJvZ3JhbSwgbm90IG5lY2Vzc2FyaWx5IGluIFJPTSBvciBpbiB3cml0ZS1kaXNhYmxlZCBwYWdlcy4gIEEgY29tbW9uCisrZXhhbXBsZSBvZiB0aGUgbGF0ZXIgaXMgYSBzaGFyZWQgbGlicmFyeSdzIGdsb2JhbCBvZmZzZXQgdGFibGUuICBUaGlzCisrdGFibGUgaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIHJ1bnRpbWUgbG9hZGVyLCBzbyB0aGUgbWVtb3J5IGlzIHRlY2huaWNhbGx5Cisrd3JpdGFibGUsIGJ1dCBhZnRlciBjb250cm9sIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIHJ1bnRpbWUgbG9hZGVyIHRvIHRoZQorK2FwcGxpY2F0aW9uLCB0aGlzIG1lbW9yeSB3aWxsIG5ldmVyIGJlIHN1YnNlcXVlbnRseSBtb2RpZmllZC4KKysKKytTdG9yZWQgaW4gdGhlIEBjb2Rle3VuY2hhbmdpbmd9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey91fS4KKysKKytAZmluZGV4IFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUAorK0BjaW5kZXggQGNvZGV7cHJlZmV0Y2h9IGFuZCBAc2FtcHsvdn0KKytAY2luZGV4IEBjb2Rle3ZvbGF0aWxlfSwgaW4gQGNvZGV7cHJlZmV0Y2h9CisrQGl0ZW0gUFJFRkVUQ0hfU0NIRURVTEVfQkFSUklFUl9QIChAdmFye3h9KQorK0luIGEgQGNvZGV7cHJlZmV0Y2h9LCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlZmV0Y2ggaXMgYSBzY2hlZHVsaW5nIGJhcnJpZXIuCisrTm8gb3RoZXIgSU5TTnMgd2lsbCBiZSBtb3ZlZCBvdmVyIGl0LgorK1N0b3JlZCBpbiB0aGUgQGNvZGV7dm9sYXRpbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L3Z9LgorKworIEBmaW5kZXggUkVHX0ZVTkNUSU9OX1ZBTFVFX1AKKyBAY2luZGV4IEBjb2Rle3JlZ30gYW5kIEBzYW1wey9pfQorIEBjaW5kZXggQGNvZGV7cmV0dXJuX3ZhbH0sIGluIEBjb2Rle3JlZ30KK0BAIC03MzEsNiArNzMzLDM3IEBAIFRoZSBzYW1lIGhhcmQgcmVnaXN0ZXIgbWF5IGJlIHVzZWQgYWxzbyBmb3IgY29sbGVjdGluZyB0aGUgdmFsdWVzIG9mCisgZnVuY3Rpb25zIGNhbGxlZCBieSB0aGlzIG9uZSwgYnV0IEBjb2Rle1JFR19GVU5DVElPTl9WQUxVRV9QfSBpcyB6ZXJvCisgaW4gdGhpcyBraW5kIG9mIHVzZS4KKyAKKytAZmluZGV4IFJUTF9DT05TVF9DQUxMX1AKKytAY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey91fQorK0BjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle2NhbGxfaW5zbn0KKytAaXRlbSBSVExfQ09OU1RfQ0FMTF9QIChAdmFye3h9KQorK0luIGEgQGNvZGV7Y2FsbF9pbnNufSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5zbiByZXByZXNlbnRzIGEgY2FsbCB0byBhCisrY29uc3QgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3VuY2hhbmdpbmd9IGZpZWxkIGFuZCBwcmludGVkIGFzCisrQHNhbXB7L3V9LgorKworK0BmaW5kZXggUlRMX1BVUkVfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvaX0KKytAY2luZGV4IEBjb2Rle3JldHVybl92YWx9LCBpbiBAY29kZXtjYWxsX2luc259CisrQGl0ZW0gUlRMX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorK0luIGEgQGNvZGV7Y2FsbF9pbnNufSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5zbiByZXByZXNlbnRzIGEgY2FsbCB0byBhCisrcHVyZSBmdW5jdGlvbi4gIFN0b3JlZCBpbiB0aGUgQGNvZGV7cmV0dXJuX3ZhbH0gZmllbGQgYW5kIHByaW50ZWQgYXMKKytAc2FtcHsvaX0uCisrCisrQGZpbmRleCBSVExfQ09OU1RfT1JfUFVSRV9DQUxMX1AKKytAY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey91fSBvciBAc2FtcHsvaX0KKytAaXRlbSBSVExfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCisrSW4gYSBAY29kZXtjYWxsX2luc259LCB0cnVlIGlmIEBjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yCisrQGNvZGV7UlRMX1BVUkVfQ0FMTF9QfSBpcyB0cnVlLgorKworK0BmaW5kZXggUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AKKytAY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey9jfQorK0BjaW5kZXggQGNvZGV7Y2FsbH0sIGluIEBjb2Rle2NhbGxfaW5zbn0KKytAaXRlbSBSVExfTE9PUElOR19DT05TVF9PUl9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIHBvc3NpYmx5CisraW5maW5pdGUgbG9vcGluZyBjYWxsIHRvIGEgY29uc3Qgb3IgcHVyZSBmdW5jdGlvbi4gIFN0b3JlZCBpbiB0aGUKKytAY29kZXtjYWxsfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvY30uICBPbmx5IHRydWUgaWYgb25lIG9mCisrQGNvZGV7UlRMX0NPTlNUX0NBTExfUH0gb3IgQGNvZGV7UlRMX1BVUkVfQ0FMTF9QfSBpcyB0cnVlLgorKworIEBmaW5kZXggUlRYX0ZSQU1FX1JFTEFURURfUAorIEBjaW5kZXggQGNvZGV7aW5zbn0gYW5kIEBzYW1wey9mfQorIEBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L2Z9CitAQCAtNzY1LDIxICs3OTgsNiBAQCBjb21wdXRhdGlvbiBwZXJmb3JtZWQgYnkgdGhpcyBpbnN0cnVjdGlvbiwgaS5lLiwgb25lIHRoYXQKKyBUaGlzIGZsYWcgaXMgcmVxdWlyZWQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0IG9uIHRhcmdldHMgd2l0aCBSVEwKKyBwcm9sb2d1ZXMuCisgCistQGZpbmRleCBNRU1fUkVBRE9OTFlfUAorLUBjaW5kZXggQGNvZGV7bWVtfSBhbmQgQHNhbXB7L3V9CistQGNpbmRleCBAY29kZXt1bmNoYW5naW5nfSwgaW4gQGNvZGV7bWVtfQorLUBpdGVtIE1FTV9SRUFET05MWV9QIChAdmFye3h9KQorLU5vbnplcm8gaW4gYSBAY29kZXttZW19LCBpZiB0aGUgbWVtb3J5IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCByZWFkLW9ubHkuCistCistUmVhZC1vbmx5IGluIHRoaXMgY29udGV4dCBtZWFucyBuZXZlciBtb2RpZmllZCBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZQorLXByb2dyYW0sIG5vdCBuZWNlc3NhcmlseSBpbiBST00gb3IgaW4gd3JpdGUtZGlzYWJsZWQgcGFnZXMuICBBIGNvbW1vbgorLWV4YW1wbGUgb2YgdGhlIGxhdGVyIGlzIGEgc2hhcmVkIGxpYnJhcnkncyBnbG9iYWwgb2Zmc2V0IHRhYmxlLiAgVGhpcworLXRhYmxlIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBydW50aW1lIGxvYWRlciwgc28gdGhlIG1lbW9yeSBpcyB0ZWNobmljYWxseQorLXdyaXRhYmxlLCBidXQgYWZ0ZXIgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBydW50aW1lIGxvYWRlciB0byB0aGUKKy1hcHBsaWNhdGlvbiwgdGhpcyBtZW1vcnkgd2lsbCBuZXZlciBiZSBzdWJzZXF1ZW50bHkgbW9kaWZpZWQuCistCistU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvdX0uCistCisgQGZpbmRleCBTQ0hFRF9HUk9VUF9QCisgQGNpbmRleCBAY29kZXtpbnNufSBhbmQgQHNhbXB7L3N9CisgQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvc30KK0BAIC04NzksMTQgKzg5Nyw2IEBAIFN0b3JlZCBpbiB0aGUgQGNvZGV7dm9sYXRpbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L3Z9LgorIE1vc3QgdXNlcyBvZiBAY29kZXtTWU1CT0xfUkVGX0ZMQUd9IGFyZSBoaXN0b3JpYyBhbmQgbWF5IGJlIHN1YnN1bWVkCisgYnkgQGNvZGV7U1lNQk9MX1JFRl9GTEFHU30uICBDZXJ0YWlubHkgdXNlIG9mIEBjb2Rle1NZTUJPTF9SRUZfRkxBR1N9CisgaXMgbWFuZGF0b3J5IGlmIHRoZSB0YXJnZXQgcmVxdWlyZXMgbW9yZSB0aGFuIG9uZSBiaXQgb2Ygc3RvcmFnZS4KKy0KKy1AZmluZGV4IFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUAorLUBjaW5kZXggQGNvZGV7cHJlZmV0Y2h9IGFuZCBAc2FtcHsvdn0KKy1AY2luZGV4IEBjb2Rle3ZvbGF0aWxlfSwgaW4gQGNvZGV7cHJlZmV0Y2h9CistQGl0ZW0gUFJFRkVUQ0hfU0NIRURVTEVfQkFSUklFUl9QIChAdmFye3h9KQorLUluIGEgQGNvZGV7cHJlZmV0Y2h9LCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlZmV0Y2ggaXMgYSBzY2hlZHVsaW5nIGJhcnJpZXIuCistTm8gb3RoZXIgSU5TTnMgd2lsbCBiZSBtb3ZlZCBvdmVyIGl0LgorLVN0b3JlZCBpbiB0aGUgQGNvZGV7dm9sYXRpbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L3Z9LgorIEBlbmQgdGFibGUKKyAKKyBUaGVzZSBhcmUgdGhlIGZpZWxkcyB0byB3aGljaCB0aGUgYWJvdmUgbWFjcm9zIHJlZmVyOgorQEAgLTk3NCw2ICs5ODUsOCBAQCBJbiBhIEBjb2Rle3NldH0sIDEgbWVhbnMgaXQgaXMgZm9yIGEgcmV0dXJuLgorIAorIEluIGEgQGNvZGV7Y2FsbF9pbnNufSwgMSBtZWFucyBpdCBpcyBhIHNpYmxpbmcgY2FsbC4KKyAKKytJbiBhIEBjb2Rle2p1bXBfaW5zbn0sIDEgbWVhbnMgaXQgaXMgYSBjcm9zc2luZyBqdW1wLgorKworIEluIGFuIFJUTCBkdW1wLCB0aGlzIGZsYWcgaXMgcmVwcmVzZW50ZWQgYXMgQHNhbXB7L2p9LgorIAorIEBmaW5kZXggdW5jaGFuZ2luZworQEAgLTM4ODcsMTYgKzM5MDAsNiBAQCBtdWx0aXBsZSB0YXJnZXRzOyB0aGUgbGFzdCBsYWJlbCBpbiB0aGUgaW5zbiAoaW4gdGhlIGhpZ2hlc3QgbnVtYmVyZWQKKyBpbnNuLWZpZWxkKSBnb2VzIGludG8gdGhlIEBjb2Rle0pVTVBfTEFCRUx9IGZpZWxkIGFuZCBkb2VzIG5vdCBoYXZlIGEKKyBAY29kZXtSRUdfTEFCRUxfVEFSR0VUfSBub3RlLiAgQHhyZWZ7SW5zbnMsIEpVTVBfTEFCRUx9LgorIAorLUBmaW5kZXggUkVHX0NST1NTSU5HX0pVTVAKKy1AaXRlbSBSRUdfQ1JPU1NJTkdfSlVNUAorLVRoaXMgaW5zbiBpcyBhIGJyYW5jaGluZyBpbnN0cnVjdGlvbiAoZWl0aGVyIGFuIHVuY29uZGl0aW9uYWwganVtcCBvcgorLWFuIGluZGlyZWN0IGp1bXApIHdoaWNoIGNyb3NzZXMgYmV0d2VlbiBob3QgYW5kIGNvbGQgc2VjdGlvbnMsIHdoaWNoCistY291bGQgcG90ZW50aWFsbHkgYmUgdmVyeSBmYXIgYXBhcnQgaW4gdGhlIGV4ZWN1dGFibGUuICBUaGUgcHJlc2VuY2UKKy1vZiB0aGlzIG5vdGUgaW5kaWNhdGVzIHRvIG90aGVyIG9wdGltaXphdGlvbnMgdGhhdCB0aGlzIGJyYW5jaGluZworLWluc3RydWN0aW9uIHNob3VsZCBub3QgYmUgYGBjb2xsYXBzZWQnJyBpbnRvIGEgc2ltcGxlciBicmFuY2hpbmcKKy1jb25zdHJ1Y3QuICBJdCBpcyB1c2VkIHdoZW4gdGhlIG9wdGltaXphdGlvbiB0byBwYXJ0aXRpb24gYmFzaWMgYmxvY2tzCistaW50byBob3QgYW5kIGNvbGQgc2VjdGlvbnMgaXMgdHVybmVkIG9uLgorLQorIEBmaW5kZXggUkVHX1NFVEpNUAorIEBpdGVtIFJFR19TRVRKTVAKKyBBcHBlYXJzIGF0dGFjaGVkIHRvIGVhY2ggQGNvZGV7Q0FMTF9JTlNOfSB0byBAY29kZXtzZXRqbXB9IG9yIGEKK2RpZmYgLS1naXQgYS9nY2MvcmVvcmcuYyBiL2djYy9yZW9yZy5jCitpbmRleCA1OTE0YWY2Li43N2YzZmU3IDEwMDY0NAorLS0tIGEvZ2NjL3Jlb3JnLmMKKysrKyBiL2djYy9yZW9yZy5jCitAQCAtMzM2MCwxMCArMzM2MCwxMSBAQCByZWxheF9kZWxheV9zbG90cyAocnR4X2luc24gKmZpcnN0KQorIAl9CisgCisgICAgICAgLyogU2VlIGlmIHdlIGhhdmUgYSBzaW1wbGUgKGNvbmRpdGlvbmFsKSBqdW1wIHRoYXQgaXMgdXNlbGVzcy4gICovCistICAgICAgaWYgKCEgSU5TTl9BTk5VTExFRF9CUkFOQ0hfUCAoZGVsYXlfanVtcF9pbnNuKQorLQkgICYmICEgY29uZGp1bXBfaW5fcGFyYWxsZWxfcCAoZGVsYXlfanVtcF9pbnNuKQorKyAgICAgIGlmICghQ1JPU1NJTkdfSlVNUF9QIChkZWxheV9qdW1wX2luc24pCisrCSAgJiYgIUlOU05fQU5OVUxMRURfQlJBTkNIX1AgKGRlbGF5X2p1bXBfaW5zbikKKysJICAmJiAhY29uZGp1bXBfaW5fcGFyYWxsZWxfcCAoZGVsYXlfanVtcF9pbnNuKQorIAkgICYmIHByZXZfYWN0aXZlX2luc24gKGFzX2E8cnR4X2luc24gKj4gKHRhcmdldF9sYWJlbCkpID09IGluc24KKy0JICAmJiAhIEJBUlJJRVJfUCAocHJldl9ub25ub3RlX2luc24gKGFzX2E8cnR4X2luc24gKj4gKHRhcmdldF9sYWJlbCkpKQorKwkgICYmICFCQVJSSUVSX1AgKHByZXZfbm9ubm90ZV9pbnNuIChhc19hPHJ0eF9pbnNuICo+ICh0YXJnZXRfbGFiZWwpKSkKKyAJICAvKiBJZiB0aGUgbGFzdCBpbnNuIGluIHRoZSBkZWxheSBzbG90IHNldHMgQ0MwIGZvciBzb21lIGluc24sCisgCSAgICAgdmFyaW91cyBjb2RlIGFzc3VtZXMgdGhhdCBpdCBpcyBpbiBhIGRlbGF5IHNsb3QuICBXZSBjb3VsZAorIAkgICAgIHB1dCBpdCBiYWNrIHdoZXJlIGl0IGJlbG9uZ2VkIGFuZCBkZWxldGUgdGhlIHJlZ2lzdGVyIG5vdGVzLAorLS0gCisxLjguNS42CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMTRkMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDE2MjEwZTYyNzBlMjAwY2Q0ODkyYTkwZWNlZjYwODkwNmJlM2ExMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaXRvIENoZW5nIDxraXRvLmNoZW5nQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNCBNYXkgMjAxNyAwMjoxMToxMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBSSVNDLVY6IEhhbmRsZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGluCi0gcmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlCi0KLUdDQyBtYXkgZ2VuZXJhdGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBkdWUgdG8gd2UgYWxsb3cgc29tZQotbG9hZC9zdG9yZSB3aXRoIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgaW4gcGljLm1kLgotCi0gIDIwMTctMDUtMTIgIEtpdG8gQ2hlbmcgIDxraXRvLmNoZW5nQGdtYWlsLmNvbT4KLQotICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3YuYyAocmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlKTogSGFuZGxlCi0gICAgICBub24tbGVnaXRpbWF0ZSBhZGRyZXNzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgIHwgIDUgKysrKysKLSBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMgfCAxNiArKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKLWluZGV4IGY3ZmVjNGJmY2Y4Li5kNTE5YmUxNjU5YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYwotKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCi1AQCAtMTM4NSw2ICsxMzg1LDIyIEBAIHJpc2N2X2xlZ2l0aW1pemVfbW92ZSAoZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGRlc3QsIHJ0eCBzcmMpCi0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0KLSAKLSsgIC8qIFJJU0MtViBHQ0MgbWF5IGdlbmVyYXRlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgZHVlIHRvIHdlIHByb3ZpZGUgc29tZQotKyAgICAgcGF0dGVybiBmb3Igb3B0aW1pemUgYWNjZXNzIFBJQyBsb2NhbCBzeW1ib2wgYW5kIGl0J3MgbWFrZSBHQ0MgZ2VuZXJhdGUKLSsgICAgIHVucmVjb2duaXphYmxlIGluc3RydWN0aW9uIGR1cmluZyBvcHRtaXppbmcuICAqLwotKwotKyAgaWYgKE1FTV9QIChkZXN0KSAmJiAhcmlzY3ZfbGVnaXRpbWF0ZV9hZGRyZXNzX3AgKG1vZGUsIFhFWFAgKGRlc3QsIDApLAotKwkJCQkJCSAgIHJlbG9hZF9jb21wbGV0ZWQpKQotKyAgICB7Ci0rICAgICAgWEVYUCAoZGVzdCwgMCkgPSByaXNjdl9mb3JjZV9hZGRyZXNzIChYRVhQIChkZXN0LCAwKSwgbW9kZSk7Ci0rICAgIH0KLSsKLSsgIGlmIChNRU1fUCAoc3JjKSAmJiAhcmlzY3ZfbGVnaXRpbWF0ZV9hZGRyZXNzX3AgKG1vZGUsIFhFWFAgKHNyYywgMCksCi0rCQkJCQkJICByZWxvYWRfY29tcGxldGVkKSkKLSsgICAgewotKyAgICAgIFhFWFAgKHNyYywgMCkgPSByaXNjdl9mb3JjZV9hZGRyZXNzIChYRVhQIChzcmMsIDApLCBtb2RlKTsKLSsgICAgfQotKwotICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDZkNzc2MjAuLmJkZDZmN2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMyw3ICszLDcgQEAKIFNVTU1BUlkgPSAiR05VIGNjIGFuZCBnY2MgQyBjb21waWxlcnMgKGNyb3NzLWNhbmFkaWFuIGZvciAke1RBUkdFVF9BUkNIfSB0YXJnZXQpIgogUE4gPSAiZ2NjLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0iCiAKLURFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1nY2MtY3Jvc3NzZGsgdmlydHVhbC8ke0hPU1RfUFJFRklYfWJpbnV0aWxzLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9bGliYy1mb3ItZ2NjIG5hdGl2ZXNkay1nZXR0ZXh0IgorREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MgdmlydHVhbC8ke0hPU1RfUFJFRklYfWdjYy1jcm9zc3NkayB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9YmludXRpbHMtY3Jvc3NzZGsgdmlydHVhbC9uYXRpdmVzZGstJHtIT1NUX1BSRUZJWH1saWJjLWZvci1nY2MgbmF0aXZlc2RrLWdldHRleHQgZmxleC1uYXRpdmUiCiAKIEdDQ01VTFRJTElCID0gIi0tZW5hYmxlLW11bHRpbGliIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY1M2M1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwotCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzczZTVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfJHtQVn0uYmIKLXJlcXVpcmUgZ2NjLWNyb3NzLWluaXRpYWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQzY2NhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLWNyb3NzLmluYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF82LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkOTBlMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXyR7UFZ9LmJiCi1yZXF1aXJlIGdjYy1jcm9zc3Nkay1pbml0aWFsLmluYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhNmM0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3NzZGsuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKaW5kZXggZDNkNGJkMy4uNzYyOWZhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMzQsNiArMzQsMTggQEAKICMgbGlibXVkZmxhcAogIyBsaWJnZm9ydHJhbiBuZWVkcyBzZXBhcmF0ZSByZWNpcGUgZHVlIHRvIGxpYnF1YWRtYXRoIGRlcGVuZGVuY3kKIAorU0xJQiA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKK1NMSUJfTkVXID0gIi91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCisKK0RFQlVHX1BSRUZJWF9NQVBfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdD0gXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlPSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTTElCfT0ke1NMSUJfTkVXfSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTTElCfS9pbmNsdWRlPSR7U0xJQl9ORVd9L2xpYnN0ZGMrKy12My8uLi9pbmNsdWRlIFwKKyAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NMSUJ9L2xpYmliZXJ0eT0ke1NMSUJfTkVXfS9saWJzdGRjKystdjMvLi4vbGliaWJlcnR5IFwKKyAgIC1mZGVidWctcHJlZml4LW1hcD0ke0J9PSR7U0xJQl9ORVd9IFwKKyAgICIKKwogZG9fY29uZmlndXJlICgpIHsKIAlleHBvcnQgQ1hYPSIke0NYWH0gLW5vc3RkaW5jKysgLW5vc3RkbGliKysiCiAJZm9yIGQgaW4gbGliZ2NjICR7UlVOVElNRVRBUkdFVH07IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV82LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMzFlNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXJ1bnRpbWUuaW5jCi0KLUZJTEVTX2xpYmdvbXAtZGV2ICs9ICJcCi0gICAgJHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS9vcGVuYWNjLmggXAotIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKaW5kZXggMzE4M2IyOS4uM2I3ZTAwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwpAQCAtNjEsMTUgKzYxLDE5IEBACiBSREVQRU5EU19saWJsc2FuLWRldiArPSAiJHtQTn0iCiBSREVQRU5EU19saWJ0c2FuLWRldiArPSAiJHtQTn0iCiBSUkVDT01NRU5EU18ke1BOfSArPSAibGliYXNhbiBsaWJ1YnNhbiIKLVJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF94ODYtNjQgPSAiIGxpYmxzYW4gbGlidHNhbiIKIFJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF94ODYgPSAiIGxpYmxzYW4iCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfeDg2LTY0ID0gIiBsaWJsc2FuIGxpYnRzYW4iCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJsc2FuIGxpYnRzYW4iCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfYWFyY2g2NCA9ICIgbGlibHNhbiBsaWJ0c2FuIgogCiBkb19wYWNrYWdlX3dyaXRlX2lwa1tkZXBlbmRzXSArPSAidmlydHVhbC8ke01MUFJFRklYfSR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnM6ZG9fcGFja2FnZWRhdGEiCiBkb19wYWNrYWdlX3dyaXRlX2RlYltkZXBlbmRzXSArPSAidmlydHVhbC8ke01MUFJFRklYfSR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnM6ZG9fcGFja2FnZWRhdGEiCiBkb19wYWNrYWdlX3dyaXRlX3JwbVtkZXBlbmRzXSArPSAidmlydHVhbC8ke01MUFJFRklYfSR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnM6ZG9fcGFja2FnZWRhdGEiCiAKLSMgTUlQUywgYWFyY2g2NCwgYW5kIFNQQVJDIGFyZSBicm9rZW4uCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtKS4qLWxpbnV4JworIyBPbmx5IHg4NiwgcG93ZXJwYywgc3BhcmMsIHMzOTAsIGFybSwgYW5kIGFhcmNoNjQgYXJlIHN1cHBvcnRlZAorQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfHNwYXJjfHMzOTB8YXJtfGFhcmNoNjQpLiotbGludXgnCisjIG11c2wgaXMgY3VycmVudGx5IGJyb2tlbiBlbnRpcmVseQorQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwogCiBGSUxFU19saWJhc2FuICs9ICIke2xpYmRpcn0vbGliYXNhbi5zby4qIgogRklMRVNfbGliYXNhbi1kZXYgKz0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxZjY2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2Mtc2FuaXRpemVycy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OTBmYTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV82LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlLmluYwotCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY182LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzYxOGRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY182LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtdGFyZ2V0LmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgZmFpbHMgd2l0aAotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDM4OigudGV4dC51bmxpa2VseSsweDJmYSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BUk1fVEhNX0NBTEwgYWdhaW5zdCBzeW1ib2wgYGZhbmN5X2Fib3J0KGNoYXIgY29uc3QqLCBpbnQsIGNoYXIgY29uc3QqKScgZGVmaW5lZCBpbiAuZ2x1ZV83IHNlY3Rpb24gaW4gbGlua2VyIHN0dWJzCi0jIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0NDI6KC50ZXh0LnVubGlrZWx5KzB4MzE4KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWYyNTNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdjYy1pbml0aWFsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKaW5kZXggMTUwMGZiNS4uNWYxZGZmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCkBAIC0yOCw3ICsyOCw3IEBACiAKIEZJTEVTXyR7UE59LWRldiA9ICJcCiAgICAgJHtiYXNlX2xpYmRpcn0vbGliZ2NjKi5zbyBcCi0gICAgJHtAYmFzZV9jb25kaXRpb25hbCgnQkFTRVRBUkdFVF9TWVMnLCAnJHtUQVJHRVRfU1lTfScsICcnLCAnJHtsaWJkaXJ9LyR7QkFTRVRBUkdFVF9TWVN9JywgZCl9IFwKKyAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnQkFTRVRBUkdFVF9TWVMnLCAnJHtUQVJHRVRfU1lTfScsICcnLCAnJHtsaWJkaXJ9LyR7QkFTRVRBUkdFVF9TWVN9JywgZCl9IFwKICAgICAke2xpYmRpcn0vJHtUQVJHRVRfU1lTfS8ke0JJTlZ9KiBcCiAgICAgJHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfSogXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTUyZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdjYy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYwppbmRleCA1ZjVkNGFmLi4wNTIzNzY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCkBAIC02LDIyICs2LDI4IEBACiAiCiAKIGRvX2NvbmZpZ3VyZSAoKSB7Ci0Jcm0gLXJmICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KLQlta2RpciAtcCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vCi0JY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuLwotCWNobW9kIGEreCAke1N9L2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotCXJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKCIke1N9L2xpYmdmb3J0cmFuIiwgIiR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbiIpfQotCSRyZWxwYXRoL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfQotCSMgRWFzaWVzdCB3YXkgdG8gc3RvcCBiYWQgUlBBVEhzIGdldHRpbmcgaW50byB0aGUgbGlicmFyeSBzaW5jZSB3ZSBoYXZlIGEKLQkjIGJyb2tlbiBsaWJ0b29sIGhlcmUKLQlzZWQgLWkgLWUgJ3MvaGFyZGNvZGVfaW50b19saWJzPXllcy9oYXJkY29kZV9pbnRvX2xpYnM9bm8vJyAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vbGlidG9vbAorCWZvciB0YXJnZXQgaW4gbGliYmFja3RyYWNlIGxpYmdmb3J0cmFuCisJZG8KKwkJcm0gLXJmICR7Qn0vJHtUQVJHRVRfU1lTfS8kdGFyZ2V0LworCQlta2RpciAtcCAke0J9LyR7VEFSR0VUX1NZU30vJHRhcmdldC8KKwkJY2QgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJCWNobW9kIGEreCAke1N9LyR0YXJnZXQvY29uZmlndXJlCisJCXJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKCIke1N9IiwgIiR7Qn0vJHtUQVJHRVRfU1lTfSIpfQorCQkuLi8kcmVscGF0aC8kdGFyZ2V0L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfQorCQkjIEVhc2llc3Qgd2F5IHRvIHN0b3AgYmFkIFJQQVRIcyBnZXR0aW5nIGludG8gdGhlIGxpYnJhcnkgc2luY2Ugd2UgaGF2ZSBhCisJCSMgYnJva2VuIGxpYnRvb2wgaGVyZQorCQlzZWQgLWkgLWUgJ3MvaGFyZGNvZGVfaW50b19saWJzPXllcy9oYXJkY29kZV9pbnRvX2xpYnM9bm8vJyAke0J9LyR7VEFSR0VUX1NZU30vJHRhcmdldC9saWJ0b29sCisJZG9uZQogfQogRVhUUkFDT05GRlVOQ1MgKz0gImV4dHJhY3Rfc3Rhc2hlZF9idWlsZGRpciIKIGRvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAiJHtDT01QSUxFUkRFUH0iCiAKIGRvX2NvbXBpbGUgKCkgewotCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KLQlvZV9ydW5tYWtlIE1VTFRJQlVJTERUT1A9JHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuLworCWZvciB0YXJnZXQgaW4gbGliYmFja3RyYWNlIGxpYmdmb3J0cmFuCisJZG8KKwkJY2QgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJCW9lX3J1bm1ha2UgTVVMVElCVUlMRFRPUD0ke0J9LyR7VEFSR0VUX1NZU30vJHRhcmdldC8KKwlkb25lCiB9CiAKIGRvX2luc3RhbGwgKCkgewpAQCAtNjcsNSArNzMsNSBAQAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKICAgICBmID0gZC5nZXRWYXIoIkZPUlRSQU4iKQogICAgIGlmICJmb3J0cmFuIiBub3QgaW4gZjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImxpYmdmb3J0cmFuIG5lZWRzIGZvcnRyYW4gc3VwcG9ydCB0byBiZSBlbmFibGVkIGluIHRoZSBjb21waWxlciIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImxpYmdmb3J0cmFuIG5lZWRzIGZvcnRyYW4gc3VwcG9ydCB0byBiZSBlbmFibGVkIGluIHRoZSBjb21waWxlciIpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl82LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZGQ4YjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgbGliZ2ZvcnRyYW4uaW5jCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNTI5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jCkBAIC0wLDAgKzEsMjQgQEAKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyAmIExHUEx2MiAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQkgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYWNrYWdlX2RldmVsX2dkYl9wYXRjaGVzXzEyMC1zaWdwcm9jbWFzay1pbnZhbGlkLWNhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1VbmJyZWFrLUdEQnNlcnZlci1idWlsZC1mb3IteDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjQ4Y2FjNTI3ZTZmMzAxOGI4NjVlY2UwMjFlOTcyM2FjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkYmQ1ZjkzZTM2YmEyODE1YWQwZWZhYjAzMGRjZDBjN2IyMTFkN2IzNTNhNDBhNTNmNGMwMmQ3ZDU2Mjk1ZTMiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyN2FiZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImMzZDM1Y2Q5NDkwODRiZTUzYjkyY2MxZTAzNDg1Zjg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2YTI0ZmZlNDkxN2U2NzAxNGVmOTI3M2ViOGI1NDdjYjk2YTEzZTVjYTc0ODk1YjA2ZDY4M2IzOTFmM2Y0ZWUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKaW5kZXggOTE2NGEyYi4uMDM5NTc3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKQEAgLTUsNiArNSw3IEBACiAKIExUVE5HVVNUID0gImx0dG5nLXVzdCIKIExUVE5HVVNUX2FhcmNoNjQgPSAiIgorTFRUTkdVU1RfcmlzY3Y2NCA9ICIiCiBMVFROR1VTVF9taXBzYXJjaCA9ICIiCiBMVFROR1VTVF9zaDQgPSAiIgogTFRUTkdVU1RfbGliYy1tdXNsID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDNmZjE5ODkuLjRmYzY3NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMTMsOSArMTMsOSBAQAogIyBPdmVycmlkZXMgUEFDS0FHRUNPTkZJRyB2YXJpYWJsZXMgaW4gZ2RiLWNvbW1vbi5pbmMKIFBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gcmVhZGxpbmUiCiBQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1dPUktESVJ9L3B5dGhvbiwtLXdpdGhvdXQtcHl0aG9uLG5hdGl2ZXNkay1weXRob24zLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29yZSBuYXRpdmVzZGstcHl0aG9uMy1sYW5nIG5hdGl2ZXNkay1weXRob24zLXJlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVzZGstcHl0aG9uMy1jb3JlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVzZGstcHl0aG9uMy1jb2RlY3MgbmF0aXZlc2RrLXB5dGhvbjMtbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVzZGstcHl0aG9uMy1pbXBvcnRsaWIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIgogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXN5c3RlbS1yZWFkbGluZSwtLXdpdGhvdXQtc3lzdGVtLXJlYWRsaW5lLG5hdGl2ZXNkay1yZWFkbGluZSIKIAogU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtTVEFHSU5HX0RBVEFESVJ9L2dkYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMi1VbmJyZWFrLUdEQnNlcnZlci1idWlsZC1mb3IteDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGEzY2UzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaApAQCAtMCwwICsxLDEwMSBAQAorRnJvbSAzZTFlNDAxMDUzZWE1ZjAyYTllOWM2NWFiZGRkMzFhMDNiYWExYmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWFvIFFpIDx5YW8ucWlAbGluYXJvLm9yZz4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTI6NTc6MjUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5icmVhayBHREJzZXJ2ZXIgYnVpbGQgZm9yIHgzMgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXaGVuIEkgdmVyaWZ5IG15IHRhcmdldCBkZXNjcmlwdGlvbiBjaGFuZ2VzLCBJIGJ1aWxkIEdEQiBhbmQgR0RCc2VydmVyIGZvcgoreDMyLCBidXQgaXQgZmFpbGVkLgorCisvLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOiBJbiBmdW5jdGlvbiDigJhjb25zdCB0YXJnZXRfZGVzYyogZ2V0X2lwYV90ZGVzYyhpbnQp4oCZOgorLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6MTg0OjEwOiBlcnJvcjog4oCYWDg2X1RERVNDX0FWWDUxMuKAmSB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKKyAgICAgY2FzZSBYODZfVERFU0NfQVZYNTEyOgorICAgICAgICAgIF4KKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjE4NToxNDogZXJyb3I6IOKAmHRkZXNjX3gzMl9hdng1MTJfbGludXjigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdng1MTJfbGludXg7CisgICAgICAgICAgICAgIF4KKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOiBJbiBmdW5jdGlvbiDigJh2b2lkIGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQoKeKAmToKKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjI4MjozNjogZXJyb3I6IOKAmGluaXRfcmVnaXN0ZXJzX3gzMl9hdng1MTJfbGludXjigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV4ICgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorCitpcGFfeDMyX2xpbnV4X3JlZ29iaiB1c2UgdG8gYmUgdGhlcmUsIGJ1dCByZW1vdmVkIGJ5CisyMjA0OTQyNWNlNDAzMjQxMzliZTgyZDlhNmVjNTE4YzQ2YjY1ODE1IGJ5IG1pc3Rha2UuCisKK2dkYi9nZGJzZXJ2ZXI6CisKKzIwMTctMDgtMDQgIFlhbyBRaSAgPHlhby5xaUBsaW5hcm8ub3JnPgorCisgICAgICAgICogY29uZmlndXJlLnNydiAoaXBhX3gzMl9saW51eF9yZWdvYmopOiBOZXcuCisgICAgICAgICogbGludXgtYW1kNjQtaXBhLmMgKGdldF9pcGFfdGRlc2MpOiBVc2UgWDg2X1RERVNDX0FWWF9BVlg1MTIKKyAgICAgICAgaW5zdGVhZCBvZiBYODZfVERFU0NfQVZYNTEyLgorICAgICAgICAoaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCk6IENhbGwKKyAgICAgICAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXguCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2E9Y29tbWl0ZGlmZjtoPWYwMmZkNzc0NWQwMDNkNjVmZDNiOTgxNjE4ZTA3Yjg3NGI3MjFkNzldCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgOCArKysrKysrKworIGdkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydiAgICAgfCAxICsKKyBnZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jIHwgNiArKystLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDRhYzJkNjMuLmI1YjgyMjggMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMSBAQAorKyAyMDE3LTA4LTA0ICBZYW8gUWkgIDx5YW8ucWlAbGluYXJvLm9yZz4KKysKKysJKiBjb25maWd1cmUuc3J2IChpcGFfeDMyX2xpbnV4X3JlZ29iaik6IE5ldy4KKysJKiBsaW51eC1hbWQ2NC1pcGEuYyAoZ2V0X2lwYV90ZGVzYyk6IFVzZSBYODZfVERFU0NfQVZYX0FWWDUxMgorKwlpbnN0ZWFkIG9mIFg4Nl9UREVTQ19BVlg1MTIuCisrCShpbml0aWFsaXplX2xvd190cmFjZXBvaW50KTogQ2FsbAorKwlpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2F2eDUxMl9saW51eC4KKysKKyAyMDE3LTA0LTEzICBBbmRyZXcgSmVubmVyICA8YW5kcmV3QGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogY29uZmlnLnN1YjogU3luYyB3aXRoIG1hc3RlciB2ZXJzaW9uIGluIGNvbmZpZyBwcm9qZWN0LgorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydiBiL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgoraW5kZXggZDAwZDllMi4uNTY5NTFjOCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgorKysrIGIvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2CitAQCAtMzEsNiArMzEsNyBAQCBzcnZfYW1kNjRfbGludXhfcmVnb2JqPSJhbWQ2NC1saW51eC5vIGFtZDY0LWF2eC1saW51eC5vIGFtZDY0LWF2eC1hdng1MTItbGludXgubworIAorIGlwYV9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC1pcGEubyBpMzg2LWF2eC1saW51eC1pcGEubyAgaTM4Ni1hdngtbXB4LWxpbnV4LWlwYS5vIGkzODYtYXZ4LWF2eDUxMi1saW51eC1pcGEubyBpMzg2LWF2eC1tcHgtYXZ4NTEyLXBrdS1saW51eC1pcGEubyBpMzg2LW1weC1saW51eC1pcGEubyBpMzg2LW1teC1saW51eC1pcGEubyIKKyBpcGFfYW1kNjRfbGludXhfcmVnb2JqPSJhbWQ2NC1saW51eC1pcGEubyBhbWQ2NC1hdngtbGludXgtaXBhLm8gYW1kNjQtYXZ4LW1weC1saW51eC1pcGEubyBhbWQ2NC1hdngtYXZ4NTEyLWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1tcHgtYXZ4NTEyLXBrdS1saW51eC1pcGEubyBhbWQ2NC1tcHgtbGludXgtaXBhLm8iCisraXBhX3gzMl9saW51eF9yZWdvYmo9IngzMi1saW51eC1pcGEubyB4MzItYXZ4LWxpbnV4LWlwYS5vIHgzMi1hdngtYXZ4NTEyLWxpbnV4LWlwYS5vIgorIGlwYV9wcGNfbGludXhfcmVnb2JqPSJwb3dlcnBjLTMybC1pcGEubyBwb3dlcnBjLWFsdGl2ZWMzMmwtaXBhLm8gcG93ZXJwYy1jZWxsMzJsLWlwYS5vIHBvd2VycGMtdnN4MzJsLWlwYS5vIHBvd2VycGMtaXNhMjA1LTMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS1hbHRpdmVjMzJsLWlwYS5vIHBvd2VycGMtaXNhMjA1LXZzeDMybC1pcGEubyBwb3dlcnBjLWU1MDBsLWlwYS5vIHBvd2VycGMtNjRsLWlwYS5vIHBvd2VycGMtYWx0aXZlYzY0bC1pcGEubyBwb3dlcnBjLWNlbGw2NGwtaXBhLm8gcG93ZXJwYy12c3g2NGwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtNjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LWFsdGl2ZWM2NGwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtdnN4NjRsLWlwYS5vIgorIAorIHNydl9pMzg2XzMyYml0X3htbGZpbGVzPSJpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtc3NlLnhtbCBpMzg2LzMyYml0LWF2eC54bWwgaTM4Ni8zMmJpdC1hdng1MTIueG1sIGkzODYvMzJiaXQtbXB4LnhtbCBpMzg2LzMyYml0LXBrZXlzLnhtbCIKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYworaW5kZXggNjdmMzZjMi4uNjgzMzM5YiAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKK0BAIC0xODEsOCArMTgxLDggQEAgZ2V0X2lwYV90ZGVzYyAoaW50IGlkeCkKKyAgICAgICByZXR1cm4gdGRlc2NfeDMyX2xpbnV4OworICAgICBjYXNlIFg4Nl9UREVTQ19BVlg6CisgICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdnhfbGludXg7CistICAgIGNhc2UgWDg2X1RERVNDX0FWWDUxMjoKKy0gICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eDUxMl9saW51eDsKKysgICAgY2FzZSBYODZfVERFU0NfQVZYX0FWWDUxMjoKKysgICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eF9hdng1MTJfbGludXg7CisgICAgIGRlZmF1bHQ6CisgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0yNzksNyArMjc5LDcgQEAgaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCAodm9pZCkKKyAjaWYgZGVmaW5lZCBfX0lMUDMyX18KKyAgIGluaXRfcmVnaXN0ZXJzX3gzMl9saW51eCAoKTsKKyAgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfbGludXggKCk7CistICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV4ICgpOworKyAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXggKCk7CisgI2Vsc2UKKyAgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2xpbnV4ICgpOworICAgaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X2xpbnV4ICgpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCmluZGV4IDliNGMxMjguLmRkOWQ3OTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgJHtkYXRhZGlyfS9naXR3ZWIvZ2l0d2ViLmNnaSBcCiAgICAgJHtkYXRhZGlyfS9naXQtY29yZS90ZW1wbGF0ZXMvaG9va3MvcHJlcGFyZS1jb21taXQtbXNnLnNhbXBsZSBcCiAgICAgJHtkYXRhZGlyfS9naXQtY29yZS90ZW1wbGF0ZXMvaG9va3MvcHJlLXJlYmFzZS5zYW1wbGUgXAorICAgICR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzL2hvb2tzL2ZzbW9uaXRvci13YXRjaG1hbi5zYW1wbGUgXAogIgogCiAjIEdpdCB0b29scyByZXF1aXJpbmcgcGVybApAQCAtMTI1LDYgKzEyNiw3IEBACiAgICAgJHtsaWJkaXJ9L3BlcmwgXAogICAgICR7ZGF0YWRpcn0vcGVybCBcCiAiCisKIFJERVBFTkRTXyR7UE59LXBlcmx0b29scyA9ICIke1BOfSBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBmaW5kdXRpbHMiCiAKICMgZ2l0LXRrIHBhY2thZ2Ugd2l0aCBnaXRrIGFuZCBnaXQtZ3VpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlMzg4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBnaXQuaW5jCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3Zfc25wcmludGZfcmV0dXJuc19ib2d1cz1ubyBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPSR7YWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9eWVzfSBcCi0gICAgICAgICAgICAgICAgICIKLUVYVFJBX09FTUFLRSArPSAiTk9fR0VUVEVYVD0xIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJkMmRjNTUwZjY2OTNiYTdlNWIxNjIxMmIyNzE0ZjU5ZiIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjE0OTcwMDE3NzJmNjMwZDQ5ODA5ZTk4MTY3MmVkZmUzZTNjZTFhMWQxOGU5MDVjZDUzOWM0ZDJmNGRiY2Q3NWEiCi1TUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzAzN2QxMWE0ZjRjZGQxOTQzNTg3MWMyNjdjYTQ4YjQiCi1TUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiZjliMzAyZWViMDhjZTA4OTM0ZTdhZmI0MjI4MGNlOTI5NDQxMWZiZjVmN2I2YWMzZmNjMjM2ZTgwMzFmMTBjNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYzRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xNi4xLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgZ2l0LmluYworCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAorICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAorICAgICAgICAgICAgICAgICAiCitFWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiMzc0NjdkYThlNzllNzJmMjg1OThkNjY3ZjIxOWY3NWUiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI1NmNmYTQ4YWYyYjI4OWJiYTE3MmNhMGE0N2MyOWYwMDgzZjU4NDZjZjQ3NTk5NzhiNzA5ODhlNGYwN2ZjOWZkIgorU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjU1ODc0MDdmM2MyODQ0NmFmMTJmZGUzZjMxMzFiYTM0IgorU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImQ0OTllODI1ZjQyOWQ3Njg2MmJlNDE1ZjU3OWMyMGNjMjZiMDQ2NTczYTNhMzkyMzdhY2FmOTY4MmNiNzFiZTciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNWIxNDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiNjc3OTBiM2RiZWRlNzJjZmRjNTRhYTUzYmU0NzA2MzIyYzk0OTllMCIKKworaW5oZXJpdCBnbworCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCmluZGV4IDRmZGVkNjAuLjhkZTgxMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBDTEVBTkJST0tFTiA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTEzNWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYwpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGdvLWNvbW1vbi5pbmMKKworR09fQkFTRVZFUlNJT04gPSAiMS4xMCIKK0dPX01JTk9SID0gIi4yIgorUFYgLj0gIiR7R09fTUlOT1J9IgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVkNDk1MGVjYjdiMjZkMmM1ZTRlN2I0ZTBkZDc0NzA3IgorCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOC1jbWQtaW50ZXJuYWwtb2JqLWFybTY0LWZpeC1icmFuY2gtdG9vLWZhci13aXRoLVRCWi1sLnBhdGNoIFwKKyIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiYzYzYjM1MDc1YmVkNjkzYmJmYzg0ZDRhNjI2Mjk0OGEiCitTUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICI2MjY0NjA5YzZiOWNkOGVkOGUwMmNhODQ2MDVkNzI3Y2UxODk4ZDc0ZWZhNzk4NDE2NjBiMmUzZTk4NWE5OGJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYjMzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA3YTdkZTQ2MTI5ZmE2ODU5ZmI2MzExMDk2ZWI5ZjU0YzUzYzdmZTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IE1vbiwgMTkgRmViIDIwMTggMDg6NDk6MzMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzldIGFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworaW5kZXggNjAzZjdiNTA2MC4uZjg5MTEyM2Y5YyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtODIsMTEgKzgyLDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgeworIAorIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKKy0JCWNjID0gZW52WzBdCisrCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKKyAJfQorIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCisgCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKKy0JCWN4eCA9IGVudlswXQorKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ1hYIiwgVmFsdWU6IGN4eH0pCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGYzN2E5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApAQCAtMCwwICsxLDIyMCBAQAorRnJvbSA4YjJmZWFlZTgxZDdhMTZhZGM1OWU2MWQwNmMxZTczMTRkM2E1NDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IE1vbiwgMTkgRmViIDIwMTggMDg6NTA6NTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzldIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCisKK0dvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCitkZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgorVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKK2NhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCisKK0hvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAorZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQorbGlicmFyeS4KKworRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCitidWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKK29mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCisKK1RoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK0dPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCitlbWJlZGRpbmcgaXMgZGlzYWJsZWQuCisKK1NlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKK3BhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCithbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAorZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCit0aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKK2Nnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKK2RlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCisKK1RoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQorc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0CithcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKK3J1bnRpbWUvY2dvKS4KKworVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCitiZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCitieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IGY4OTExMjNmOWMuLmViYWNmYmZkYmMgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTExMyw3ICsxMTMsNyBAQCBmdW5jIGZpbmRFbnYoZW52IFtdY2ZnLkVudlZhciwgbmFtZSBzdHJpbmcpIHN0cmluZyB7CisgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgeworIAl2YXIgYiB3b3JrLkJ1aWxkZXIKKyAJYi5Jbml0KCkKKy0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKKysJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KKyAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitpbmRleCBjNGMxNTAwZWIyLi5iMGY2YjQ1NjQ3IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMTczLDYgKzE3Myw4IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIERvKHJvb3QgKkFjdGlvbikgeworIAl3Zy5XYWl0KCkKKyB9CisgCisrdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKKysKKyAvLyBidWlsZEFjdGlvbklEIGNvbXB1dGVzIHRoZSBhY3Rpb24gSUQgZm9yIGEgYnVpbGQgYWN0aW9uLgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7CisgCXAgOj0gYS5QYWNrYWdlCitAQCAtMTg5LDcgKzE5MSw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7CisgCS8vIGJ1dCBpdCBkb2VzIG5vdCBoaWRlIHRoZSBleGFjdCB2YWx1ZSBvZiAkR09QQVRILgorIAkvLyBJbmNsdWRlIHRoZSBmdWxsIGRpciBpbiB0aGF0IGNhc2UuCisgCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KKy0JaWYgIXAuR29yb290ICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7CisrCWlmICFwLkdvcm9vdCAmJiAhb21pdEdvcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCisgCX0KKyAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKK0BAIC0xOTcsMTMgKzE5OSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAlmbXQuRnByaW50ZihoLCAib21pdGRlYnVnICV2IHN0YW5kYXJkICV2IGxvY2FsICV2IHByZWZpeCAlcVxuIiwgcC5JbnRlcm5hbC5PbWl0RGVidWcsIHAuU3RhbmRhcmQsIHAuSW50ZXJuYWwuTG9jYWwsIHAuSW50ZXJuYWwuTG9jYWxQcmVmaXgpCisgCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7CisgCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCistCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBfLCBfIDo9IGIuQ0ZsYWdzKHApCistCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncykKKysJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIF8sIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKKysJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncykKKyAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7CistCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCisrCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQorIAkJfQorIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCisrCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCisgCQl9CisgCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPworIAl9CitAQCAtMTczMSwzMyArMTczMywzMyBAQCB2YXIgKAorIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCisgZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKKytmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQorIH0KKyAKKyAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCitAQCAtMTc2NiwxMSArMTc2OCwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKyAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKKyAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgorIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKKyAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKKyAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQorIAl9CisrCWlmIGZpbHRlcmVkIHsKKysJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQorKwl9CisgCXJldHVybiBjb21waWxlcgorIH0KKyAKK0BAIC0xOTIwLDggKzE5MjUsMjMgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgeworIAlyZXR1cm4gc3RyaW5ncy5GaWVsZHModikKKyB9CisgCisrdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgorKworK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgeworKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKKysJaWYgIWZpbHRlckZsYWdzIHsKKysJCXJldHVybiBmbGFncworKwl9CisrCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKKysJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKKysJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKKysJCX0KKysJfQorKwlyZXR1cm4gbmV3ZmxhZ3MKKyt9CisrCisgLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KKy1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7CisrZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgorIAorIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7CitAQCAtMTkzOSw2ICsxOTU5LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsCisgCWlmIGxkZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkxERkxBR1MiLCBkZWZhdWx0cywgcC5DZ29MREZMQUdTLCBjaGVja0xpbmtlckZsYWdzKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4KKyAJfQorKwlpZiBmaWx0ZXJlZCB7CisrCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCisrCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKKysJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKKysJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQorKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKKysJfQorIAorIAlyZXR1cm4KKyB9CitAQCAtMTk1NCw3ICsxOTgxLDcgQEAgdmFyIGNnb1JlID0gcmVnZXhwLk11c3RDb21waWxlKGBbL1xcOl1gKQorIAorIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJcCA6PSBhLlBhY2thZ2UKKy0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gbmlsLCBuaWwsIGVycgorIAl9CitAQCAtMjMwNiw3ICsyMzMzLDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAKKyAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgorIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7CistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gIiIsICIiLCBlcnIKKyAJfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOGZlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBhY2QxNzliNDlmMWZjOGQ2ZjdmNjllNTY5ZmI0YTU2MDM5YzcyNWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDU6MjQ6MjAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzldIGFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAorCit0byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDYgKysrKystCisgc3JjL2dvL2J1aWxkL2J1aWxkLmdvICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitpbmRleCA0OWVkODAwMzNlLi5hZmM2MTViNWMyIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KK0BAIC0yMjAsNyArMjIwLDkgQEAgZnVuYyB4aW5pdCgpIHsKKyAJd29ya2RpciA9IHh3b3JrZGlyKCkKKyAJeGF0ZXhpdChybXdvcmtkaXIpCisgCistCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorKwlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7CisrCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKysJfQorIH0KKyAKKyAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK2luZGV4IDFkZTRmMGRjNzkuLjRmNjAxMGQ2NjAgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbworQEAgLTk2LDcgKzk2LDExIEBAIGZ1bmMgaW5pdCgpIHsKKyAJLy8gYXMgdGhlIHRvb2wgZGlyZWN0b3J5IGRvZXMgbm90IG1vdmUgYmFzZWQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzLgorIAkvLyBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4gZ28vYnVpbGQsCisgCS8vIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuIHJ1bnRpbWUuR09ST09UKCkuCistCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJaWYgcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyBzICE9ICIiIHsKKysJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQorKwl9IGVsc2UgeworKwkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwl9CisgfQorIAorIGZ1bmMgZmluZEdPUk9PVCgpIHN0cmluZyB7CitkaWZmIC0tZ2l0IGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitpbmRleCA2OGZiNDIzOTgzLi44MWIxYjMyMjcwIDEwMDY0NAorLS0tIGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCisrKysgYi9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KK0BAIC0xNTk0LDcgKzE1OTQsNyBAQCBmdW5jIGluaXQoKSB7CisgfQorIAorIC8vIFRvb2xEaXIgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJ1aWxkIHRvb2xzLgorLXZhciBUb29sRGlyID0gZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorK3ZhciBUb29sRGlyID0gZW52T3IoIkdPVE9PTERJUiIsIGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkpCisgCisgLy8gSXNMb2NhbEltcG9ydCByZXBvcnRzIHdoZXRoZXIgdGhlIGltcG9ydCBwYXRoIGlzCisgLy8gYSBsb2NhbCBpbXBvcnQgcGF0aCwgbGlrZSAiLiIsICIuLiIsICIuL2ZvbyIsIG9yICIuLi9mb28iLgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIzY2E5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA4NTI1MmYwYmQ4NzQzMjIzZWI3NzhlZGJlOWZiMzFkZmYxN2EyM2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MjY6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzldIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCisKK3NvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCitjYW4gZmluZCB0aGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCitpbmRleCA2ZGNhZjY0MTIyLi4xMWNiYjhhOGJiIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworQEAgLTExMzQsNiArMTEzNCw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQorIAkJCX0KKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgeworIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCisgCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCitAQCAtMTE0NSw2ICsxMTQ2LDggQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCX0KKyAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorKworIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKKyAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4geworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKK0BAIC0xMTUzLDYgKzExNTYsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJfQorIAl9CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E5MzkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDE2MTI0ZDg0NjQ4ZjRkZmRmYTQ3MzhjNTY2MGI1NDAwYjMwYmY5ZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNjozMjo0NSAtMDgwMAorU3ViamVjdDogW1BBVENIIDUvOV0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kCisgZ29fYm9vdHN0cmFwCisKK2ZvciBoYW5kbGluZyBPRSBjcm9zcy1jYW5hZGlhbiBidWlsZHMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCA5M2E1YzQzZDExLi4zYTYzNjgyYmM0IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE2Miw3ICsxNjIsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgorIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKytDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKyAKKyAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCisgZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCitAQCAtMTkzLDcgKzE5Myw3IEBAIGZpCisgIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgorICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgorICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgorLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKKytDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisgcm0gLWYgLi9jbWQvZGlzdC9kaXN0CisgCisgIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlNjk5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwyNzcgQEAKK0Zyb20gMmYwN2FmMzQ2OTdjNjFkZWNkY2ZhNWIxMTQzNDQ1MWZiY2YzNzcwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDEwOjAzOjQ4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNi85XSBjbWQvZGlzdDogc2VwYXJhdGUgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkcworCitDaGFuZ2UgdGhlIGRpc3QgdG9vbCB0byBhbGxvdyBmb3IgT0Utc3R5bGUgY3Jvc3MtCithbmQgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzOgorCisgLSBjb21tYW5kIGZsYWdzIC0taG9zdC1vbmx5IGFuZCAtLXRhcmdldCBvbmx5IGFyZSBhZGRlZDsKKyAgIGlmIG9uZSBpcyBwcmVzZW50LCB0aGUgb3RoZXIgY2hhbmdlcyBtZW50aW9uZWQgYmVsb3cKKyAgIHRha2UgZWZmZWN0LCBhbmQgYXJndW1lbnRzIG1heSBhbHNvIGJlIHNwZWNpZmllZCBvbgorICAgdGhlIGNvbW1hbmQgbGluZSB0byBlbnVtZXJhdGUgdGhlIHBhY2thZ2UocykgdG8gYmUKKyAgIGJ1aWx0LgorCisgLSBmb3IgT0UgY3Jvc3MgYnVpbGRzLCBnb19ib290c3RyYXAgaXMgYWx3YXlzIGJ1aWx0IGZvcgorICAgdGhlIGN1cnJlbnQgYnVpbGQgaG9zdCwgYW5kIGlzIG1vdmVkLCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0aW5nCisgICB0b29sY2hhaW4gKGFzbSwgY29tcGlsZSwgZXRjLikgdG8gYSBzZXBhcmF0ZSAnbmF0aXZlX25hdGl2ZScKKyAgIGRpcmVjdG9yeSB1bmRlciBHT1JPT1QvcGtnL3Rvb2wuCisKKyAtIGdvX2Jvb3RzdHJhcCBpcyBub3QgYXV0b21hdGljYWxseSByZW1vdmVkIGFmdGVyIHRoZSBidWlsZCwKKyAgIHNvIGl0IGNhbiBiZSByZXVzZWQgbGF0ZXIgKGUuZy4sIGJ1aWxkaW5nIGJvdGggc3RhdGljIGFuZAorICAgc2hhcmVkIHJ1bnRpbWUpLgorCitOb3RlIHRoYXQgZm9yIC0taG9zdC1vbmx5IGJ1aWxkcywgaXQgd291bGQgYmUgbmljZSB0byBzcGVjaWZ5CitqdXN0IHRoZSAiY21kIiBwYWNrYWdlIHRvIGJ1aWxkIG9ubHkgdGhlIGdvIGNvbW1hbmRzL3Rvb2xzLAordGhlIHN0YWxlbmVzcyBjaGVja3MgaW4gdGhlIGRpc3QgdG9vbCB3aWxsIGZhaWwgaWYgdGhlICJzdGQiCitsaWJyYXJ5IGhhcyBub3QgYWxzbyBiZWVuIGJ1aWx0LiAgU28gaG9zdC1vbmx5IGJ1aWxkcyBoYXZlIHRvCitidWlsZCBldmVyeXRoaW5nIGFueXdheS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworbW9yZSBkaXN0IGNsZWFudXAKKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KK2luZGV4IGFmYzYxNWI1YzIuLjM2MjYyNjY1YjIgMTAwNjQ0CistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTM4LDYgKzM4LDcgQEAgdmFyICgKKyAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKKyAJd29ya2RpciAgICAgICAgICBzdHJpbmcKKyAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKKysJYnVpbGRfdG9vbGRpcgkgc3RyaW5nCisgCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCisgCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCisgCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCitAQCAtNDksNiArNTAsNyBAQCB2YXIgKAorIAorIAlyZWJ1aWxkYWxsICAgYm9vbAorIAlkZWZhdWx0Y2xhbmcgYm9vbAorKwljcm9zc0J1aWxkICAgYm9vbAorIAorIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5CisgKQorQEAgLTIyMyw2ICsyMjUsOCBAQCBmdW5jIHhpbml0KCkgeworIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7CisgCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKyAJfQorKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCisrCisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorQEAgLTI1Miw3ICsyNTYsNiBAQCBmdW5jIGNvbXBpbGVyRW52KGVudk5hbWUsIGRlZiBzdHJpbmcpIG1hcFtzdHJpbmddc3RyaW5nIHsKKyAJCWlmIGdvaG9zdG9zICE9IGdvb3MgfHwgZ29ob3N0YXJjaCAhPSBnb2FyY2ggeworIAkJCW1bZ29ob3N0b3MrIi8iK2dvaG9zdGFyY2hdID0gbVsiIl0KKyAJCX0KKy0JCW1bIiJdID0gZW52CisgCX0KKyAKKyAJZm9yIF8sIGdvb3MgOj0gcmFuZ2Ugb2tnb29zIHsKK0BAIC00NzksOCArNDgyLDEwIEBAIGZ1bmMgc2V0dXAoKSB7CisgCS8vIFdlIGtlZXAgaXQgaW4gcGtnLywganVzdCBsaWtlIHRoZSBvYmplY3QgZGlyZWN0b3J5IGFib3ZlLgorIAlpZiByZWJ1aWxkYWxsIHsKKyAJCXhyZW1vdmVhbGwodG9vbGRpcikKKysJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKKyAJfQorIAl4bWtkaXJhbGwodG9vbGRpcikKKysJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCisgCS8vIFJlbW92ZSB0b29sIGJpbmFyaWVzIGZyb20gYmVmb3JlIHRoZSB0b29sL2dvaG9zdG9zX2dvaG9zdGFyY2gKKyAJeHJlbW92ZWFsbChwYXRoZigiJXMvYmluL3Rvb2wiLCBnb3Jvb3QpKQorQEAgLTExMzAsMTEgKzExMzUsMjkgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCisgCXZhciBub0Jhbm5lciBib29sCisgCXZhciBkZWJ1ZyBib29sCisrCXZhciBob3N0T25seSBib29sCisrCXZhciB0YXJnZXRPbmx5IGJvb2wKKysJdmFyIHRvQnVpbGQgPSBbXXN0cmluZyB7ICJzdGQiLCAiY21kIiB9CisrCisgCWZsYWcuQm9vbFZhcigmcmVidWlsZGFsbCwgImEiLCByZWJ1aWxkYWxsLCAicmVidWlsZCBhbGwiKQorIAlmbGFnLkJvb2xWYXIoJmRlYnVnLCAiZCIsIGRlYnVnLCAiZW5hYmxlIGRlYnVnZ2luZyBvZiBib290c3RyYXAgcHJvY2VzcyIpCisgCWZsYWcuQm9vbFZhcigmbm9CYW5uZXIsICJuby1iYW5uZXIiLCBub0Jhbm5lciwgImRvIG5vdCBwcmludCBiYW5uZXIiKQorKwlmbGFnLkJvb2xWYXIoJmhvc3RPbmx5LCAiaG9zdC1vbmx5IiwgaG9zdE9ubHksICJidWlsZCBvbmx5IGhvc3QgYmluYXJpZXMsIG5vdCB0YXJnZXQiKQorKwlmbGFnLkJvb2xWYXIoJnRhcmdldE9ubHksICJ0YXJnZXQtb25seSIsIHRhcmdldE9ubHksICJidWlsZCBvbmx5IHRhcmdldCBiaW5hcmllcywgbm90IGhvc3QiKQorIAorLQl4ZmxhZ3BhcnNlKDApCisrCXhmbGFncGFyc2UoLTEpCisrCisrCWlmIChob3N0T25seSAmJiB0YXJnZXRPbmx5KSB7CisrCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJfQorKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQorKwlpZiBmbGFnLk5BcmcoKSA+IDAgeworKwkJaWYgY3Jvc3NCdWlsZCB7CisrCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCisrCQl9IGVsc2UgeworKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJCX0KKysJfQorIAorIAlpZiBkZWJ1ZyB7CisgCQkvLyBjbWQvYnVpbGRpZCBpcyB1c2VkIGluIGRlYnVnIG1vZGUuCitAQCAtMTE4Miw4ICsxMjA1LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCistCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKKy0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJLy8gRm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzL2Nyb3NzLWNhbmFkaWFuIGJ1aWxkcywgd2UgZG9uJ3QKKysJLy8gd2FudCB0byBiZSBzZXR0aW5nIHRoZXNlIGZsYWdzIHVudGlsIGFmdGVyIHdlIGhhdmUgY29tcGlsZWQKKysJLy8gdGhlIHRvb2xjaGFpbiB0aGF0IHJ1bnMgb24gdGhlIGJ1aWxkIGhvc3QuCisrCWlmICEgY3Jvc3NCdWlsZCB7CisrCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQorKwl9CisgCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQorIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKKyAJaWYgZGVidWcgeworQEAgLTEyMTIsNyArMTI0MCwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCistCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCisrCX0gZWxzZSB7CisrCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwl9CisgCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQorIAlpZiBkZWJ1ZyB7CisgCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCitAQCAtMTI0OSw0NSArMTI4MSw4MiBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKyAKKy0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKKysJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKKysJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgeworKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCisrCQkJeHJlbW92ZShmKQorKwkJfQorKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQorKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKKysJCWlmIGhvc3RPbmx5IHsKKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJfSBlbHNlIHsKKy0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCistCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKy0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysJCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKysJCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCX0gZWxzZSB7CisrCQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKysJCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKysJCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKy0KKy0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCQlpZiBkZWJ1ZyB7CisrCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKysJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorIAkJfQorLQkJZ29vcyA9IG9sZGdvb3MKKy0JCWdvYXJjaCA9IG9sZGdvYXJjaAorLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKy0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKy0JfQorLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKy0JY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorLQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCistCWlmIGRlYnVnIHsKKy0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKy0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKKy0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQorLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKyAJfQorIAorIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgorQEAgLTEzMDUsNyArMTM3NCwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAorIAkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCistCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCisrCS8vIGtlZXAgaXQuCisrCWlmICEgY3Jvc3NCdWlsZCB7CisrCQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKKysJfQorIAorIAkvLyBQcmludCB0cmFpbGluZyBiYW5uZXIgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorIAlpZiAhbm9CYW5uZXIgeworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjQyNzYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gZjk4YWEyODc5NDE0MTcyMjZhNmU0Zjc4NzU5ZjhhNWUxOTczMmNkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMDY6MDA6MjAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA3LzldIGNtZC9nbzogbWFrZSBHT1JPT1QgcHJlY2lvdXMgYnkgZGVmYXVsdAorCitUaGUgZ28gYnVpbGQgdG9vbCBub3JtYWxseSByZWJ1aWxkcyB3aGF0ZXZlciBpdCBkZXRlY3RzIGlzCitzdGFsZS4gIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSB3aGVuIEdPUk9PVCBpcyBpbnRlbmRlZCB0bworYmUgcmVhZC1vbmx5IGFuZCB0aGUgZ28gcnVudGltZSBoYXMgYmVlbiBidWlsdCBhcyBhIHNoYXJlZAorbGlicmFyeSwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBldmVyeSBhcHBsaWNhdGlvbiB0byBiZSByZWJ1aWxkaW5nCit0aGUgc2hhcmVkIHJ1bnRpbWUgLSBwYXJ0aWN1bGFybHkgaW4gY3Jvc3MtYnVpbGQvcGFja2FnaW5nCitzZXR1cHMsIHNpbmNlIHRoYXQgd291bGQgbGVhZCB0byAnYWJpIG1pc21hdGNoJyBydW50aW1lIGVycm9ycy4KKworVGhpcyBwYXRjaCBwcmV2ZW50cyB0aGUgaW5zdGFsbCBhbmQgbGlua3NoYXJlZCBhY3Rpb25zIGZyb20KK2luc3RhbGxpbmcgdG8gR09ST09UIHVubGVzcyBvdmVycmlkZGVuIHdpdGggdGhlIEdPUk9PVF9PVkVSUklERQorZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA1ICsrKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCitpbmRleCA5ZjFmOGY4YTUwLi5hMzgyODgwNDc0IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworQEAgLTU2Myw2ICs1NjMsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoYSwgYTEgKkFjdGlvbiwgc2hsaWIgc3RyaW5nKSB7CisgCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0geworIAkJCQljb250aW51ZQorIAkJCX0KKysJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7CisrCQkJCWNvbnRpbnVlCisrCQkJfQorIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCisgCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAorIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQorZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworaW5kZXggNTdiN2IwMDg3OS4uZTJiYTk1NDIwZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTQzLDYgKzE0Myw3IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgorIH0KKyAKKyBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQorK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQorIAorIGZ1bmMgaW5pdCgpIHsKKyAJLy8gYnJlYWsgaW5pdCBjeWNsZQorQEAgLTE1Niw2ICsxNTcsMTAgQEAgZnVuYyBpbml0KCkgeworIAorIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQorIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCisrCisrCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7CisrCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCisrCX0KKyB9CisgCisgLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQorZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KK2luZGV4IGIwZjZiNDU2NDcuLmM4ZjI2NmE4YWQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KK0BAIC0zNzEsNiArMzcxLDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVyciBlcnJvcikgeworIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm1pc3Npbmcgb3IgaW52YWxpZCBiaW5hcnktb25seSBwYWNrYWdlIikKKyAJfQorIAorKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKKysJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCisrCQlpZiBlcnIgPT0gbmlsIHsKKysJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAorKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAorKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKKysJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQorKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKKysJCQlyZXR1cm4gbmlsCisrCQl9CisrCQlpZiBiLkNvbXB1dGVTdGFsZU9ubHkgeworKwkJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKKysJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgorKwkJCXJldHVybiBuaWwKKysJCX0KKysJfQorKworIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgeworIAkJcmV0dXJuIGVycgorIAl9CitAQCAtMTA5Nyw2ICsxMTE0LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKKyAJCXJldHVybiBuaWwKKyAJfQorIAorKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKKysJCXAgOj0gYS5QYWNrYWdlCisrCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKKysJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQorKwkJCXJldHVybiBlcnIKKysJCX0KKysJfQorKworIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgeworIAkJcmV0dXJuIGVycgorIAl9CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOC1jbWQtaW50ZXJuYWwtb2JqLWFybTY0LWZpeC1icmFuY2gtdG9vLWZhci13aXRoLVRCWi1sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTc1NDE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDQxYjkwZWQ3YWYxMGEwNzFjY2ZlZWRlNmE0MjllMGQ4MDUxODQzNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVycnkgWmhhbmcgPGNoZXJyeXl6QGdvb2dsZS5jb20+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDEwOjMxOjM5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvaW50ZXJuYWwvb2JqL2FybTY0OiBmaXggYnJhbmNoLXRvby1mYXIgd2l0aCBUQlogbGlrZQorIGluc3RydWN0aW9ucworCitUaGUgY29tcGlsZXIgbm93IGVtaXRzIFRCWiBsaWtlIGluc3RydWN0aW9ucywgYnV0IHRoZSBhc3NlbWJsZXIncwordG9vLWZhci1icmFuY2ggcGF0Y2ggY29kZSBkaWRuJ3QgaW5jbHVkZSB0aGF0IGNhc2UuIEFkZCBpdC4KKworRml4ZXMgIzIzODg5LgorCitDaGFuZ2UtSWQ6IEliNzVmOTI1MGM2NjBiOWZiNjUyODM1ZmJjODMyNjNhNWQ1MDczZGM1CistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBzcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvICAgICB8IDExICsrKysrKysrKy0tCisgc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28gfCAgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbTcuZ28KK2luZGV4IGNhODEyMzhjOTMuLmIxZWU1NTI0ODkgMTAwNjQ0CistLS0gYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCisrKysgYi9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCitAQCAtNjk2LDkgKzY5NiwxNiBAQCBmdW5jIHNwYW43KGN0eHQgKm9iai5MaW5rLCBjdXJzeW0gKm9iai5MU3ltLCBuZXdwcm9nIG9iai5Qcm9nQWxsb2MpIHsKKyAJCQlvID0gYy5vcGxvb2socCkKKyAKKyAJCQkvKiB2ZXJ5IGxhcmdlIGJyYW5jaGVzICovCistCQkJaWYgKG8udHlwZV8gPT0gNyB8fCBvLnR5cGVfID09IDM5KSAmJiBwLlBjb25kICE9IG5pbCB7IC8vIDc6IEJFUSBhbmQgbGlrZSwgMzk6IENCWiBhbmQgbGlrZQorKwkJCWlmIChvLnR5cGVfID09IDcgfHwgby50eXBlXyA9PSAzOSB8fCBvLnR5cGVfID09IDQwKSAmJiBwLlBjb25kICE9IG5pbCB7IC8vIDc6IEJFUSBhbmQgbGlrZSwgMzk6IENCWiBhbmQgbGlrZSwgNDA6IFRCWiBhbmQgbGlrZQorIAkJCQlvdHh0IDo9IHAuUGNvbmQuUGMgLSBwYworLQkJCQlpZiBvdHh0IDw9IC0oMTw8MTgpKzEwIHx8IG90eHQgPj0gKDE8PDE4KS0xMCB7CisrCQkJCXZhciB0b29mYXIgYm9vbAorKwkJCQlzd2l0Y2ggby50eXBlXyB7CisrCQkJCWNhc2UgNywgMzk6IC8vIGJyYW5jaCBpbnN0cnVjdGlvbiBlbmNvZGVzIDE5IGJpdHMKKysJCQkJCXRvb2ZhciA9IG90eHQgPD0gLSgxPDwyMCkrMTAgfHwgb3R4dCA+PSAoMTw8MjApLTEwCisrCQkJCWNhc2UgNDA6IC8vIGJyYW5jaCBpbnN0cnVjdGlvbiBlbmNvZGVzIDE0IGJpdHMKKysJCQkJCXRvb2ZhciA9IG90eHQgPD0gLSgxPDwxNSkrMTAgfHwgb3R4dCA+PSAoMTw8MTUpLTEwCisrCQkJCX0KKysJCQkJaWYgdG9vZmFyIHsKKyAJCQkJCXEgOj0gYy5uZXdwcm9nKCkKKyAJCQkJCXEuTGluayA9IHAuTGluaworIAkJCQkJcC5MaW5rID0gcQorZGlmZiAtLWdpdCBhL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KK2luZGV4IDM2OWM0OGY1MTAuLjNlMGM5YzEzYTYgMTAwNjQ0CistLS0gYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc21fdGVzdC5nbworKysrIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KK0BAIC01Miw2ICs1Miw3IEBAIGZ1bmMgVGVzdExhcmdlKHQgKnRlc3RpbmcuVCkgeworIC8vIGdlbiBnZW5lcmF0ZXMgYSB2ZXJ5IGxhcmdlIHByb2dyYW0sIHdpdGggYSB2ZXJ5IGZhciBjb25kaXRpb25hbCBicmFuY2guCisgZnVuYyBnZW4oYnVmICpieXRlcy5CdWZmZXIpIHsKKyAJZm10LkZwcmludGxuKGJ1ZiwgIlRFWFQgZihTQiksMCwkMC0wIikKKysJZm10LkZwcmludGxuKGJ1ZiwgIlRCWiAkNSwgUjAsIGxhYmVsIikKKyAJZm10LkZwcmludGxuKGJ1ZiwgIkNCWiBSMCwgbGFiZWwiKQorIAlmbXQuRnByaW50bG4oYnVmLCAiQkVRIGxhYmVsIikKKyAJZm9yIGkgOj0gMDsgaSA8IDE8PDE5OyBpKysgeworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmIwMGIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSwxMzAgQEAKK0Zyb20gZjU3NWQ4NWM0YmQ5YjI5MDMyMjNkNmMwZGNjMzhhMTI3NzVkNTgyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTdW4sIDE4IEZlYiAyMDE4IDA4OjI0OjA1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggOS85XSBsZDogcmVwbGFjZSBnbGliYyBkeW5hbWljIGxpbmtlciB3aXRoIG11c2wKKworUmV3b3JrIG9mIHBhdGNoIGJ5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Citmb3IgZ28gMS4xMC4gIFNob3VsZCBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsbHkgb24KK211c2wgYmVpbmcgdGhlIHN5c3RlbSBDIGxpYnJhcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbUmVhbCBmaXggc2hvdWxkIGJlIHBvcnRhYmxlIGFjcm9zcyBsaWJjc10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KK2luZGV4IDg3ZTgwOTE2NmEuLmY1MjJhNjMwMzQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitAQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworaW5kZXggZGExNmY5MjM0NS4uZmQxNDk0MGVkZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAgICIvbGliL2xkLWxpbnV4LnNvLjMiLCAvLyAyIGZvciBPQUJJLCAzIGZvciBFQUJJCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbXVzbC1hcm1oZi5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworaW5kZXggNmIzODZhZDczNy4uOTk4NjM3MTJjYyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KK0BAIC01Nyw3ICs1Nyw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLWxpbnV4LWFhcmNoNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitpbmRleCBjNWQzNDUxYzM5Li5mZDg1ZTYzNjhkIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KK0BAIC02MCw3ICs2MCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1taXBzbGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworaW5kZXggODM5NzRlNWI1Ni4uMDk3MjI0ZjZkYSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQ2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wtbWlwczY0bGUuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlOZXRic2RkeW5sZDogICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK2luZGV4IDI3M2Q5YjQyY2IuLmE1MDNhYmU4ZWEgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCitAQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKyAJCS8vIFRPRE8oYXVzdGluKTogQUJJIHYxIHVzZXMgL3Vzci9saWIvbGQuc28uMSwKKy0JCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQ2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQtbXVzbC1wb3dlcnBjNjRsZS5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworaW5kZXggOWFjN2ViODIxNy4uMzgyNWZmN2FiZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KK0BAIC01Nyw3ICs1Nyw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQ2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQtbXVzbC1zMzkweC5zby4xIiwKKyAKKyAJCS8vIG5vdCByZWxldmFudCBmb3IgczM5MHgKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitpbmRleCA2YTc0NGRjMDRlLi5kODFmMzkyNTQ5IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitAQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYwppbmRleCAyODIzMzA0Li5hOTQyZjZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCkBAIC0xLDcgKzEsNyBAQAogcmVxdWlyZSBnby1jb21tb24uaW5jCiAKIEdPX0JBU0VWRVJTSU9OID0gIjEuOSIKLUdPX01JTk9SID0gIi40IgorR09fTUlOT1IgPSAiLjYiCiBQViAuPSAiJHtHT19NSU5PUn0iCiAKIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgpAQCAtMjIsNSArMjIsNSBAQAogIgogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vc2V0LWV4dGVybmFsLWxpbmtlci5wYXRjaCIKIAotU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiNjgxNjQ0MWZkNjY4MGM2Mzg2NWNkZDVjYjhiYzE5NjAiCi1TUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICIwNTczYThkZjMzMTY4OTc3MTg1YWE0NDE3MzMwNWU1YTA0NTBmNTUyMTM2MDBlOTQ1NDE2MDRiNzVkNDZkYzA2IgorU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiNTJjMWEzMDYzMjkxMDM2NTk3NTUyZDNmZWQwYjI5MTciCitTUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICIzNmY0MDU5YmU2NThmN2YwNzA5MWUyN2ZlMDRiYjllOTdhMGM0ODM2ZWI0NDZlNGM1YmFjM2M5MGZmOWU1ODI4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCmluZGV4IDlhZjY4NzMuLjExZDU1YzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKQEAgLTE3LDEwICsxNywxNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vZ29sYW5nLm9yZy9kbC9nbyR7UFZ9LnNyYy50YXIuZ3o7bmFtZT1tYWluIgogUyA9ICIke1dPUktESVJ9L2dvIgogQiA9ICIke1N9IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC5zcmNcLnRhciIKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCiBTU1RBVEVfU0NBTl9DTUQgPSAidHJ1ZSIKIAorZXhwb3J0IEdPUk9PVF9PVkVSUklERSA9ICIxIgorZXhwb3J0IEdPVE1QRElSID89ICIke1dPUktESVJ9L2dvLXRtcCIKK0dPVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCitleHBvcnQgR09DQUNIRSA9ICJvZmYiCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKKwogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogCUJVSUxEX0NDPSR7QlVJTERfQ0N9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDhhZmRhNmIuLmVhNjhiODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCkBAIC03LDM0ICs3LDI5IEBACiAKIGV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgogZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPSE9TVE9TX0NST1NTID0gIiR7SE9TVF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIX0NST1NTID0gIiR7SE9TVF9HT0FSQ0h9IgogZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogZXhwb3J0IEdPVE9PTERJUl9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7SE9TVF9TWVN9L2dvL3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgotZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWdjYyIKLWV4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9ZysrIgotQ0MgPSAiJHtIT1NUX1BSRUZJWH1nY2MiCi1leHBvcnQgQ0dPX0NGTEFHUyA9ICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0NGTEFHU30iCi1leHBvcnQgQ0dPX0xERkxBR1MgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtMREZMQUdTfSIKLWV4cG9ydCBHT19MREZMQUdTID0gJy1saW5rbW9kZSBleHRlcm5hbCAtZXh0bGQgJHtIT1NUX1BSRUZJWH1nY2MgLWV4dGxkZmxhZ3MgIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iJworZXhwb3J0IENHT19DRkxBR1MgPSAiJHtDRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID0gIiR7TERGTEFHU30iCitleHBvcnQgR09fTERGTEFHUyA9ICctbGlua21vZGUgZXh0ZXJuYWwgLWV4dGxkICR7SE9TVF9QUkVGSVh9Z2NjIC1leHRsZGZsYWdzICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iJwogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0Jcm0gLXJmICR7R09CSU59ICR7Qn0vcGtnCi0JbWtkaXIgJHtHT0JJTn0KKwlleHBvcnQgQ0NfRk9SXyR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfT0iJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH09IiR7SE9TVF9QUkVGSVh9Z3h4IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCiAKIAogbWFrZV93cmFwcGVyKCkgewotICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKLSAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKwlybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisJY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCiAjIS9iaW4vc2gKIGhlcmU9XGBkaXJuYW1lIFwkMFxgCiBuYXRpdmVfZ29yb290PVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uLy4uL2xpYi8ke1RBUkdFVF9TWVN9L2dvXGAKQEAgLTQyLDExICszNywxMiBAQAogZXhwb3J0IEdPT1M9IiR7VEFSR0VUX0dPT1N9IgogdGVzdCAtbiAiXCRHT0FSTSIgfHwgZXhwb3J0IEdPQVJNPSIke1RBUkdFVF9HT0FSTX0iCiB0ZXN0IC1uICJcJEdPMzg2IiB8fCBleHBvcnQgR08zODY9IiR7VEFSR0VUX0dPMzg2fSIKK3Rlc3QgLW4gIlwkR09NSVBTIiB8fCBleHBvcnQgR09NSVBTPSIke1RBUkdFVF9HT01JUFN9IgogZXhwb3J0IEdPVE9PTERJUj0iXCRuYXRpdmVfZ29yb290L3BrZy90b29sLyR7SE9TVF9HT1RVUExFfSIKIHRlc3QgLW4gIlwkR09ST09UIiB8fCBleHBvcnQgR09ST09UPSJcJE9FQ09SRV9UQVJHRVRfU1lTUk9PVC8ke3RhcmdldF9saWJkaXJ9L2dvIgogXCRoZXJlLy4uLy4uL2xpYi8ke1RBUkdFVF9TWVN9L2dvL2Jpbi8kMSAiXCRAIgogRU5ECi0gICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorCWNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKIH0KIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWM5NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zcy1jYW5hZGlhbi5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCmluZGV4IDdhYzk0NDkuLjM2N2E5NjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCkBAIC0xLDIgKzEsMTIgQEAKIHJlcXVpcmUgZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCiByZXF1aXJlIGdvLSR7UFZ9LmluYworCitleHBvcnQgR09IT1NUT1NfQ1JPU1MgPSAiJHtIT1NUX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0hfQ1JPU1MgPSAiJHtIT1NUX0dPQVJDSH0iCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7SE9TVF9QUkVGSVh9ZysrIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBUTVBESVI9IiRHT1RNUERJUiIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKaW5kZXggM2FjNzIxMS4uNDRmMjMwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKQEAgLTEsNyArMSw3IEBACiBpbmhlcml0IGNyb3NzCiAKIFBST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIgotREVQRU5EUyArPSAiZ28tbmF0aXZlIgorREVQRU5EUyA9ICJnby1uYXRpdmUiCiAKIFBOID0gImdvLWNyb3NzLSR7VEFSR0VUX0FSQ0h9IgogCkBAIC0xMSw1MiArMTEsNTIgQEAKIGV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKIGV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCiBleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgogZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK2V4cG9ydCBHT0NBQ0hFID0gIm9mZiIKIENDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotICAgIGV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0gICAgcm0gLXJmICR7R09CSU59ICR7Qn0vcGtnCi0gICAgbWtkaXIgJHtHT0JJTn0KLSAgICBjZCBzcmMKLSAgICAuL21ha2UuYmFzaCAtLWhvc3Qtb25seQotICAgIGNkICR7Qn0KKwlleHBvcnQgQ0NfRk9SXyR7R09PU31fJHtHT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENYWF9GT1JfJHtHT09TfV8ke0dPQVJDaH09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwljZCBzcmMKKwkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgorCWNkICR7Qn0KIH0KLQorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCitkb19jb21waWxlW2NsZWFuZGlyc10gKz0gIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgogCiBtYWtlX3dyYXBwZXIoKSB7Ci0gICAgcm0gLWYgJHtEfSR7YmluZGlyfS8kMgotICAgIGNhdCA8PEVORCA+JHtEfSR7YmluZGlyfS8kMgorCXJtIC1mICR7RH0ke2JpbmRpcn0vJDIKKwljYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKICMhL2Jpbi9iYXNoCiBoZXJlPVxgZGlybmFtZSBcJDBcYAogZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKIGV4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKIGV4cG9ydCBHT0FSTT0iXCR7R09BUk06LSR7VEFSR0VUX0dPQVJNfX0iCiBleHBvcnQgR08zODY9Ilwke0dPMzg2Oi0ke1RBUkdFVF9HTzM4Nn19IgorZXhwb3J0IEdPTUlQUz0iXCR7R09NSVBTOi0ke1RBUkdFVF9HT01JUFN9fSIKIFwkaGVyZS8uLi8uLi9saWIvJHtDUk9TU19UQVJHRVRfU1lTX0RJUn0vZ28vYmluLyQxICJcJEAiCiBFTkQKLSAgICBjaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCisJY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgogfQogCiBkb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbwotICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnICR7RH0ke2xpYmRpcn0vZ28vCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYwotICAgIChjZCAke1N9L3NyYzsgZm9yIGQgaW4gKjsgZG8gXAotICAgICAgICBbICEgLWQgJGQgXSB8fCBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKLSAgICBkb25lKQotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3NyYy9ydW50aW1lL3Bwcm9mL3Rlc3RkYXRhCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28vYmluCi0gICAgZm9yIGYgaW4gJHtCfS9iaW4vKgotICAgIGRvCi0gICAgICAgIGJhc2U9YGJhc2VuYW1lICRmYAotICAgICAgICBpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCi0gICAgICAgIG1ha2Vfd3JhcHBlciAkYmFzZSAke1RBUkdFVF9QUkVGSVh9JGJhc2UKLSAgICBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCisJKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCisJCVsgISAtZCAkZCBdIHx8IGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAorCWRvbmUpCisJZmluZCAke0R9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSB0ZXN0ZGF0YSAtZXhlYyBybSAtcmYge30gXDsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nby9iaW4KKwlmb3IgZiBpbiAke0J9L2Jpbi8qCisJZG8KKwkJYmFzZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorCWRvbmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI1YTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zcy5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS45LmJiCmluZGV4IDgwYjVhMDMuLjQ3MzljN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS45LmJiCkBAIC0xLDIgKzEsMTAgQEAKIHJlcXVpcmUgZ28tY3Jvc3MuaW5jCiByZXF1aXJlIGdvLSR7UFZ9LmluYworCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCmluZGV4IGY2N2U0YjkuLjQzOTFiMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCkBAIC0xMCwyMiArMTAsMTggQEAKIGV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKLWV4cG9ydCBDWFhfRk9SX1RBUkdFVD0iJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKLWV4cG9ydCBHT19JTlNUQUxMID0gImNtZCIKLUNDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0Jcm0gLXJmICR7R09CSU59ICR7Qn0vcGtnCi0JbWtkaXIgJHtHT0JJTn0KKwlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKIAljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5IC0tbm8tYmFubmVyCiAJY2QgJHtCfQogfQorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCitkb19jb21waWxlW2NsZWFuZGlyc10gKz0gIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgogCiBtYWtlX3dyYXBwZXIoKSB7CiAgICAgcm0gLWYgJHtEfSR7YmluZGlyfS8kMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTdjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuMTAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIGdvLWNyb3Nzc2RrLmluYworcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjkuYmIKaW5kZXggMTg1N2M4YS4uM2FjNjI5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjkuYmIKQEAgLTEsMiArMSwxMSBAQAogcmVxdWlyZSBnby1jcm9zc3Nkay5pbmMKIHJlcXVpcmUgZ28tJHtQVn0uaW5jCisKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgR09fSU5TVEFMTCA9ICJjbWQiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBUTVBESVI9IiRHT1RNUERJUiIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwcy1taXBzNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlYzk4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gZjBmYjgwNjA0Mzg1YWUzMjY2YTQ3MjYwMWVmNjg1ODk2YjRjYzBhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZsYWRpbWlyIFN0ZWZhbm92aWMgPHZsYWRpbWlyLnN0ZWZhbm92aWNAaW1ndGVjLmNvbT4KK0RhdGU6IEZyaSwgMTcgRmViIDIwMTcgMjA6NDQ6NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIG1pcHMsIG1pcHM2NAorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzNjR4LmdvIHwgMTIgKysrKysrKysrKysrCisgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzeC5nbyAgIHwgMTIgKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwczY0eC5nbworIGNyZWF0ZSBtb2RlIDEwMDY0NCB2ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHN4LmdvCisKK2RpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uMTM0YjU3OGIKKy0tLSAvZGV2L251bGwKKysrKyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwczY0eC5nbworQEAgLTAsMCArMSwxMiBAQAorKy8vICtidWlsZCBtaXBzNjQgbWlwczY0bGUKKysKKytwYWNrYWdlIGJvbHQKKysKKysvLyBtYXhNYXBTaXplIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbW1hcCBzaXplIHN1cHBvcnRlZCBieSBCb2x0LgorK2NvbnN0IG1heE1hcFNpemUgPSAweDgwMDAwMDAwMDAgLy8gNTEyR0IKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4N0ZGRkZGRkYKKysKKysvLyBBcmUgdW5hbGlnbmVkIGxvYWQvc3RvcmVzIGJyb2tlbiBvbiB0aGlzIGFyY2g/CisrdmFyIGJyb2tlblVuYWxpZ25lZCA9IGZhbHNlCitkaWZmIC0tZ2l0IGEvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzeC5nbyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uZDVlY2IwNTkKKy0tLSAvZGV2L251bGwKKysrKyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28KK0BAIC0wLDAgKzEsMTIgQEAKKysvLyArYnVpbGQgbWlwcyBtaXBzbGUKKysKKytwYWNrYWdlIGJvbHQKKysKKysvLyBtYXhNYXBTaXplIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbW1hcCBzaXplIHN1cHBvcnRlZCBieSBCb2x0LgorK2NvbnN0IG1heE1hcFNpemUgPSAweDQwMDAwMDAwIC8vIDFHQgorKworKy8vIG1heEFsbG9jU2l6ZSBpcyB0aGUgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgYXJyYXkgcG9pbnRlcnMuCisrY29uc3QgbWF4QWxsb2NTaXplID0gMHhGRkZGRkZGCisrCisrLy8gQXJlIHVuYWxpZ25lZCBsb2FkL3N0b3JlcyBicm9rZW4gb24gdGhpcyBhcmNoPworK3ZhciBicm9rZW5VbmFsaWduZWQgPSBmYWxzZQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmZWI0OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiRGVwZW5kZW5jeSBtYW5hZ2VtZW50IHRvb2wgZm9yIEdvbGFuZyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTFiYWQzMTU2NDc3NTFmYWIwMDA3ODEyZjcwZDQyYzBkIgotCi1HT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgotU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCi0KLSMgUG9pbnRzIHRvIDAuMy4wIHRhZwotU1JDUkVWID0gIjdhOTFiNzk0YmJmYmYxZjNiOGI3OTgyMzc5OTMxNjQ1MTEyNzgwMWIiCi0KLWluaGVyaXQgZ28KLQotR09fSU5TVEFMTCA9ICIke0dPX0lNUE9SVH0vY21kL2RlcCIKLQotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODJlNjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJEZXBlbmRlbmN5IG1hbmFnZW1lbnQgdG9vbCBmb3IgR29sYW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9kZXAiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9MWJhZDMxNTY0Nzc1MWZhYjAwMDc4MTJmNzBkNDJjMGQiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCitTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKKyAgICAgICAgICAiCisKKyMgUG9pbnRzIHRvIDAuNC4xIHRhZworU1JDUkVWID0gIjM3ZDllYTBhYzE2ZjBlMGEwNWFmYzNiNjBlMWFjOGMzNjRiNmMzMjkiCisKK2luaGVyaXQgZ28KKworR09fSU5TVEFMTCA9ICIke0dPX0lNUE9SVH0vY21kL2RlcCIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKaW5kZXggOTVkYjFjMi4uYjc2ZmIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYwpAQCAtNCwzNCArNCwzMSBAQAogCiBpbmhlcml0IG5hdGl2ZQogCi1TUkNfVVJJX2FwcGVuZCA9ICIgaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28xLjQuMy5zcmMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKLVNSQ19VUklbYm9vdHN0cmFwLm1kNXN1bV0gPSAiZGZiNjA0NTExMTE1ZGQ0MDJhNzdhNTUzYTU5MjNhMDQiCi1TUkNfVVJJW2Jvb3RzdHJhcC5zaGEyNTZzdW1dID0gIjk5NDdmYzcwNWIwYjg0MWI1OTM4YzQ4YjIyZGMzM2U5NjQ3ZWMwNzUyYmFlNjZlNTAyNzhkZjRmMjNmNjQ5NTkiCitTUkNfVVJJX2FwcGVuZCA9ICIgaHR0cHM6Ly9kbC5nb29nbGUuY29tL2dvL2dvMS40LWJvb3RzdHJhcC0yMDE3MTAwMy50YXIuZ3o7bmFtZT1ib290c3RyYXA7c3ViZGlyPWdvMS40IgorU1JDX1VSSVtib290c3RyYXAubWQ1c3VtXSA9ICJkYmY3MjdhNGIwZTM2NWJmODhkOTdjYmZkZTU5MDAxNiIKK1NSQ19VUklbYm9vdHN0cmFwLnNoYTI1NnN1bV0gPSAiZjRmZjViNWViM2EzY2FlMWM5OTM3MjNmM2VhYjUxOWM1YmFlMTg4NjZiNWU1Zjk2ZmUxMTAyZjBjYjVjM2U1MiIKIAogZXhwb3J0IEdPT1MgPSAiJHtCVUlMRF9HT09TfSIKIGV4cG9ydCBHT0FSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgogQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCiAKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorR09NQUtFQVJHUyA/PSAiLS1uby1iYW5uZXIiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKLSAgICBjZCAke1dPUktESVJ9L2dvMS40L2dvL3NyYwotICAgIENHT19FTkFCTEVEPTAgR09ST09UPSR7V09SS0RJUn0vZ28xLjQvZ28gLi9tYWtlLmJhc2gKKwljZCAke1dPUktESVJ9L2dvMS40L2dvL3NyYworCUNHT19FTkFCTEVEPTAgR09ST09UPSR7V09SS0RJUn0vZ28xLjQvZ28gLi9tYWtlLmJhc2gKIH0KIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgogCWV4cG9ydCBHT1JPT1RfRklOQUw9IiR7bm9uc3RhZ2luZ19saWJkaXJ9L2dvIgogCWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQPSIke1dPUktESVJ9L2dvMS40L2dvIgotCXJtIC1yZiAke0dPQklOfQotCW1rZGlyICR7R09CSU59Ci0KLQlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCi0JbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKIAogCWNkIHNyYwotCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJLi9tYWtlLmJhc2ggJHtHT01BS0VBUkdTfQorCWNkICR7Qn0KIH0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiIKIAogbWFrZV93cmFwcGVyKCkgewogCXJtIC1mICR7RH0ke2JpbmRpcn0vJDIkMwpAQCAtNTEsNyArNDgsNyBAQAogCShjZCAke1N9L3NyYzsgZm9yIGQgaW4gKjsgZG8gXAogCQlbIC1kICRkIF0gJiYgY3AgLWEgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nby9zcmMvOyBcCiAJZG9uZSkKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorCWZpbmQgJHtEfSR7bGliZGlyfS9nby9zcmMgLWRlcHRoIC10eXBlIGQgLW5hbWUgdGVzdGRhdGEgLWV4ZWMgcm0gLXJmIHt9IFw7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28vYmluCiAJZm9yIGYgaW4gJHtCfS9iaW4vKgogCWRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYzYzBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgJHtQTn0uaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiCmluZGV4IGJiZjNjMGQuLjg2MjFlMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjkuYmIKQEAgLTEsMiArMSw0IEBACiByZXF1aXJlICR7UE59LmluYwogcmVxdWlyZSBnby0ke1BWfS5pbmMKKworR09NQUtFQVJHUyA9ICItLWhvc3Qtb25seSAtLW5vLWJhbm5lciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCmluZGV4IDI5YWU4NmUuLjAwNDFlOGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpAQCAtOCwxMyArOCwxNiBAQAogZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgogZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKIGV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCiBleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBHT19UQVJHRVRfSU5TVEFMTCA9ICJzdGQiCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUPSIke0NDfSIKLWV4cG9ydCBDWFhfRk9SX1RBUkdFVD0iJHtDWFh9IgotZXhwb3J0IEdPUk9PVF9PVkVSUklERSA9ICIxIgorZXhwb3J0IENHT19DRkxBR1MgPSAiJHtDRkxBR1N9IgorZXhwb3J0IENHT19DUFBGTEFHUyA9ICIke0NQUEZMQUdTfSIKK2V4cG9ydCBDR09fQ1hYRkxBR1MgPSAiJHtDWFhGTEFHU30iCitleHBvcnQgQ0dPX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKKworR09fRVhUTERGTEFHUyA/PSAiJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30gJHtMREZMQUdTfSIKK0dPX1NITElCX0xERkxBR1MgPz0gJy1sZGZsYWdzPSItLWxpbmttb2RlPWV4dGVybmFsIC1leHRsZGZsYWdzICcke0dPX0VYVExERkxBR1N9JyInCiAKIGRvX2NvbmZpZ3VyZSgpIHsKIAk6CkBAIC0yNSwyMSArMjgsMjAgQEAKIH0KIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgotCWV4cG9ydCBDQz0iJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCi0Jcm0gLXJmICR7R09CSU59ICR7Qn0vcGtnCi0JbWtkaXIgJHtHT0JJTn0KKwlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q0N9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q1hYfSIKKwogCWNkIHNyYwotCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5Ci0JY3AgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9L2dvX2Jvb3RzdHJhcCAke0J9Ci0Jcm0gLXJmICR7Qn0vcGtnLyR7VEFSR0VUX0dPVFVQTEV9Ci0JLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIgc3RkCiAJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgotCQljcCAke0J9L2dvX2Jvb3RzdHJhcCAke0J9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0KLQkJR09fRkxBR1M9Ii1idWlsZG1vZGU9c2hhcmVkIiBHT19MREZMQUdTPSItZXh0bGRmbGFncyBcIiR7TERGTEFHU31cIiIgLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCQlleHBvcnQgR09UT09MRElSPSIke0J9L3BrZy90b29sL25hdGl2ZV9uYXRpdmUiCisJCUNDPSIkQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKKwkJCSRHT1RPT0xESVIvZ29fYm9vdHN0cmFwIGluc3RhbGwgLWxpbmtzaGFyZWQgLWJ1aWxkbW9kZT1zaGFyZWQgJHtHT19TSExJQl9MREZMQUdTfSBzdGQKIAlmaQogCWNkICR7Qn0KIH0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCkBAIC01NCwyMCArNTYsMTAgQEAKIAlmaW5kIHNyYyAtbWluZGVwdGggMSAtbWF4ZGVwdGggMSAtdHlwZSBkIHwgd2hpbGUgcmVhZCBzcmNkaXI7IGRvCiAJCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICRzcmNkaXIgJHtEfSR7bGliZGlyfS9nby9zcmMvCiAJZG9uZQorCWZpbmQgJHtEfSR7bGliZGlyfS9nby9zcmMgLWRlcHRoIC10eXBlIGQgLW5hbWUgdGVzdGRhdGEgLWV4ZWMgcm0gLXJmIHt9IFw7CiAJcm0gLWYgJHtEfSR7bGliZGlyfS9nby9zcmMvY21kL2Rpc3QvZGlzdAogfQogCi0jIFJlbW92ZSB0ZXN0IGJpbmFyaWVzIHRoYXQgY2Fubm90IGJlIHJlbG9jYXRlZAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3NyYy9ydW50aW1lL3Bwcm9mL3Rlc3RkYXRhCi19Ci0KLSMgVGhlc2UgdGVzdGRhdGEgZGlyZWN0b3JpZXMgYXJlbid0IG5lZWRlZCBmb3IgYnVpbGRzIGFuZCBjb250YWluIGJpbmFyaWVzCi0jIHRoYXQgY2FuIGNhdXNlIGVycm9ycyBpbiBzeXNyb290X3N0cmlwKCksIHNvIGp1c3QgcmVtb3ZlIHRoZW0uCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmQoKSB7Ci0JZmluZCAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lICd0ZXN0ZGF0YScgLWV4ZWMgcm0gLXJmIHt9IFw7Ci19Ci0KIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKiR7U09MSUJTREVWfSIKIEZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vZ28vc3JjICR7bGliZGlyfS9nby9wa2cvaW5jbHVkZSBcCkBAIC03OCw4ICs3MCw2IEBACiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi5zaGxpYm5hbWUgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLnNobGlibmFtZSBcCi0iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyouYSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi5hIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyouYSBcCkBAIC04OCwxMSArNzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouYSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLyouYSBcCiAiCi0jIFRoZSB0ZXN0ZGF0YSBkaXJlY3RvcmllcyBpbiB0aGUgc291cmNlIHRyZWUgaW5jbHVkZSBzb21lIGJpbmFyaWVzIGZvciB2YXJpb3VzCi0jIGFyY2hpdGVjdHVyZXMsIHNjcmlwdHMsIGFuZCAuYSBmaWxlcwotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiBsZGZsYWdzIGZpbGUtcmRlcHMgYXJjaCIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9IgorCisjIEdvIHNvdXJjZXMgaW5jbHVkZSBzb21lIHNjcmlwdHMgYW5kIHByZS1idWlsdCBiaW5hcmllcyBmb3IKKyMgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gIFRoZSBzdGF0aWMgLmEgZmlsZXMgZm9yIGR5bmFtaWNhbGx5LWxpbmtlZAorIyBydW50aW1lIGFyZSBhbHNvIHJlcXVpcmVkIGluIC1kZXYuCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgPSAic3RhdGljZGV2IGZpbGUtcmRlcHMgYXJjaCIKIAogSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCiBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKK0lOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNiNjhiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tcnVudGltZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiCmluZGV4IDQzYjY4YjQuLmQ1Mjc5ZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgpAQCAtMSwyICsxLDIzIEBACiByZXF1aXJlIGdvLSR7UFZ9LmluYwogcmVxdWlyZSBnby1ydW50aW1lLmluYworCitleHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAic3RkIgorZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtDQ30iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtDWFh9IgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IFRNUERJUj0iJEdPVE1QRElSIgorCWV4cG9ydCBDQz0kQlVJTERfQ0MKKworCWNkIHNyYworCUNHT19DRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIgQ0dPX0xERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIC4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJY3AgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9L2dvX2Jvb3RzdHJhcCAke0J9CisJcm0gLXJmICR7Qn0vcGtnLyR7VEFSR0VUX0dPVFVQTEV9CisJLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCWlmIFsgLW4gIiR7R09fRFlOTElOS30iIF07IHRoZW4KKwkJY3AgJHtCfS9nb19ib290c3RyYXAgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9CisJCUdPX0ZMQUdTPSItYnVpbGRtb2RlPXNoYXJlZCIgR09fTERGTEFHUz0iLWV4dGxkZmxhZ3MgXCIke0xERkxBR1N9XCIiIC4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwlmaQorCWNkICR7Qn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwppbmRleCBjYWM1ZDc4Li4yOWExMzQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCkBAIC0xLDQgKzEsMyBAQAotaW5oZXJpdCBnb2FyY2gKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28gZ28tbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsgZ28tbmF0aXZlIgogCkBAIC04LDQxICs3LDM0IEBACiBleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgogZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPSAiJHtUQVJHRVRfR09NSVBTfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKLWV4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCi1leHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAiY21kIgotZXhwb3J0IEdPX0ZMQUdTID0gIi1hIgogR09fTERGTEFHUyA9ICIiCiBHT19MREZMQUdTX2NsYXNzLW5hdGl2ZXNkayA9ICItbGlua21vZGUgZXh0ZXJuYWwiCiBleHBvcnQgR09fTERGTEFHUwogCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfTERGTEFHUyA9ICIiCitDQ19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKLQlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59Ci0KLQlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCi0JbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKKwlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q0N9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q1hYfSIKIAogCWNkIHNyYwotCS4vbWFrZS5iYXNoCisJLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KIH0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wKIAljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZy90b29sLyR7VEFSR0VUX0dPVFVQTEV9ICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wvCiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYwogCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc3JjL2NtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy8KKwlmaW5kICR7RH0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIC1leGVjIHJtIC1yZiB7fSBcOwogCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9iaW4KIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KIAlmb3IgZiBpbiAke0J9LyR7R09fQlVJTERfQklORElSfS8qOyBkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2N2UyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIGdvLSR7UFZ9LmluYworcmVxdWlyZSBnby10YXJnZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCmluZGV4IGM2N2UyY2IuLmVjNWEzMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCkBAIC0xLDIgKzEsMTcgQEAKIHJlcXVpcmUgZ28tJHtQVn0uaW5jCiByZXF1aXJlIGdvLXRhcmdldC5pbmMKKworZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gImNtZCIKK2V4cG9ydCBHT19GTEFHUyA9ICItYSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7Q0N9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7Q1hYfSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBUTVBESVI9IiRHT1RNUERJUiIKKwlleHBvcnQgQ0M9JEJVSUxEX0NDCisKKwljZCBzcmMKKwkuL21ha2UuYmFzaAorCWNkICR7Qn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkYzMyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NDRhY2E0OTZhN2Q4OWRlM2U1ZDk5ZTU2YTJmMDNkMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNGVjZjY5N2QxM2YxNGRkMWE3OGM1OTk1ZjA2NDU5YmZmNzA2ZmQxY2U1OTNkMWMwMmQ4MTY2N2MwMjA3NzUzIgotCi1pbmhlcml0IGF1dG90b29scyBuYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKLSMgdXNlZC4KLWRvX2NvbmZpZ3VyZSgpIHsKLQlvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKLQlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkNmQzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzg4NjA2M2M5ZTBhYjQ2MzkwNmRlODA0NTk2YWEyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2E2MGIyNTE5ZmRiZTk3ZjQ2M2ZlMmRmNjZhNjE4OGQxOGI1MTRiZmQ0NDEyN2Q5ODVmMDIzNGVlMjQ2MWIxIgorCitpbmhlcml0IGF1dG90b29scyBuYXRpdmUKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCisKKyMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKKyMgdXNlZC4KK2RvX2NvbmZpZ3VyZSgpIHsKKwlvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKKwlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxYTUzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtaTJjLXRvb2xzLWVlcHJvZy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jeS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDAxNjc0ZmVmZTNiZDI0ZmQ5MzQxMmZiYjNlYjRlODVmZTcwYzgwYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxOCBEZWMgMjAxNyAxNjowMTozOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBpMmMtdG9vbHM6IGVlcHJvZy9Nb2R1bGUubWs6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY3kKKworQWJzZW5jZSBvZiB0aGlzIGRlcGVuZGVuY3kgY2F1c2VkIHBhcmFsbGVsIGJ1aWxkIHRvIHJ1biBpbnRvIGEgcmFjZQorYW5kIGJyZWFrLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvaTJjLXRvb2xzL2kyYy10b29scy5naXQvY29tbWl0Lz9pZD1mODdjOTczMTcwMTJhM2I5NmI2NzIzNzkyNTg5M2I4ZmZkNWY0ZjUwCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZWVwcm9nL01vZHVsZS5tayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2VlcHJvZy9Nb2R1bGUubWsgYi9lZXByb2cvTW9kdWxlLm1rCitpbmRleCA5ZDM2ODY5Li5kMjE1ODU1IDEwMDY0NAorLS0tIGEvZWVwcm9nL01vZHVsZS5taworKysrIGIvZWVwcm9nL01vZHVsZS5taworQEAgLTIwLDcgKzIwLDcgQEAgRUVQUk9HX1RBUkdFVFMJOj0gZWVwcm9nCisgIyBQcm9ncmFtcworICMKKyAKKy0kKEVFUFJPR19ESVIpL2VlcHJvZzogJChFRVBST0dfRElSKS9lZXByb2cubyAkKEVFUFJPR19ESVIpLzI0Y1hYLm8KKyskKEVFUFJPR19ESVIpL2VlcHJvZzogJChFRVBST0dfRElSKS9lZXByb2cubyAkKEVFUFJPR19ESVIpLzI0Y1hYLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKEVFUFJPR19MREZMQUdTKQorIAorICMKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS1saWItTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtbGliLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2YjQzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtbGliLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBhNmE1OTY5MzA2NmZkOGRhODFmNzEwNzQ3OWRmM2UzMmExMjkyNDdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorRGF0ZTogV2VkLCA2IERlYyAyMDE3IDA5OjU1OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYi9Nb2R1bGUubWs6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcworCitUaGUgbGliIHN5bWxpbmtzIGxhY2tlZCBhIGRlcGVuZGVuY3kgdG8gdGhlIGFjdHVhbCBsaWJyYXJ5IGZpbGUsIHNvCitwYXJhbGxlbCBidWlsZHMgY291bGQgcnVuIGludG8gYSByYWNlIGFuZCBicmVhay4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGxpYi9Nb2R1bGUubWsgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL01vZHVsZS5tayBiL2xpYi9Nb2R1bGUubWsKK2luZGV4IDQzMmEwNTEuLmZkMmM4YzQgMTAwNjQ0CistLS0gYS9saWIvTW9kdWxlLm1rCisrKysgYi9saWIvTW9kdWxlLm1rCitAQCAtNDIsMTEgKzQyLDExIEBAIGVuZGlmCisgJChMSUJfRElSKS8kKExJQl9TSExJQk5BTUUpOiAkKExJQl9ESVIpL3NtYnVzLm8KKyAJJChDQykgLXNoYXJlZCAkKExERkxBR1MpIC1XbCwtLXZlcnNpb24tc2NyaXB0PSQoTElCX0RJUikvbGliaTJjLm1hcCAtV2wsLXNvbmFtZSwkKExJQl9TSFNPTkFNRSkgLW8gJEAgJF4gLWxjCisgCistJChMSUJfRElSKS8kKExJQl9TSFNPTkFNRSk6CisrJChMSUJfRElSKS8kKExJQl9TSFNPTkFNRSk6ICQoTElCX0RJUikvJChMSUJfU0hMSUJOQU1FKQorIAkkKFJNKSAkQAorIAkkKExOKSAkKExJQl9TSExJQk5BTUUpICRACisgCistJChMSUJfRElSKS8kKExJQl9TSEJBU0VOQU1FKToKKyskKExJQl9ESVIpLyQoTElCX1NIQkFTRU5BTUUpOiAkKExJQl9ESVIpLyQoTElCX1NITElCTkFNRSkKKyAJJChSTSkgJEAKKyAJJChMTikgJChMSUJfU0hMSUJOQU1FKSAkQAorIAorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLXRvb2xzLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLXRvb2xzLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNjZjJkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtdG9vbHMtTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIDA4YjBkNjdiYTdlY2ViODYyY2IxN2Y1MmViMTkxMWU5NTc5NzI2ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CitEYXRlOiBUaHUsIDE0IERlYyAyMDE3IDA4OjUyOjI2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRvb2xzL01vZHVsZS5tazogQWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzCisKK0JldHRlciBidWlsZCB0aGUgbGlicmFyeSBiZWZvcmUgYnVpbGRpbmcgdGhlIHRvb2xzIHdoaWNoIGxpbmsgYWdhaW5zdAoraXQsIG90aGVyd2lzZSBwYXJhbGxlbCBidWlsZHMgY291bGQgcnVuIGludG8gYSByYWNlIGFuZCBicmVhay4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CitUZXN0ZWQtYnk6IEFuZ2VsbyBDb21wYWdudWNjaSA8YW5nZWxvQGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorQWNrZWQtYnk6IEFuZ2VsbyBDb21wYWdudWNjaSA8YW5nZWxvQGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBsaWIvTW9kdWxlLm1rICAgfCAgNyArKysrKysrCisgdG9vbHMvTW9kdWxlLm1rIHwgMTAgKysrKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworSW5kZXg6IGkyYy10b29scy00LjAvbGliL01vZHVsZS5taworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGkyYy10b29scy00LjAub3JpZy9saWIvTW9kdWxlLm1rCisrKysgaTJjLXRvb2xzLTQuMC9saWIvTW9kdWxlLm1rCitAQCAtMzUsNiArMzUsMTMgQEAgTElCX1RBUkdFVFMJKz0gJChMSUJfU1RMSUJOQU1FKQorIExJQl9PQkpFQ1RTCSs9IHNtYnVzLmFvCisgZW5kaWYKKyAKKysjIExpYnJhcnkgZmlsZSB0byBsaW5rIGFnYWluc3QgKHN0YXRpYyBvciBkeW5hbWljKQorK2lmZXEgKCQoVVNFX1NUQVRJQ19MSUIpLDEpCisrTElCX0RFUFMJOj0gJChMSUJfRElSKS8kKExJQl9TVExJQk5BTUUpCisrZWxzZQorK0xJQl9ERVBTCTo9ICQoTElCX0RJUikvJChMSUJfU0hCQVNFTkFNRSkKKytlbmRpZgorKworICMKKyAjIExpYnJhcmllcworICMKK0luZGV4OiBpMmMtdG9vbHMtNC4wL3Rvb2xzL01vZHVsZS5taworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGkyYy10b29scy00LjAub3JpZy90b29scy9Nb2R1bGUubWsKKysrKyBpMmMtdG9vbHMtNC4wL3Rvb2xzL01vZHVsZS5taworQEAgLTI0LDE5ICsyNCwxOSBAQCBUT09MU19UQVJHRVRTCTo9IGkyY2RldGVjdCBpMmNkdW1wIGkyY3NlCisgIyBQcm9ncmFtcworICMKKyAKKy0kKFRPT0xTX0RJUikvaTJjZGV0ZWN0OiAkKFRPT0xTX0RJUikvaTJjZGV0ZWN0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vCisrJChUT09MU19ESVIpL2kyY2RldGVjdDogJChUT09MU19ESVIpL2kyY2RldGVjdC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKExJQl9ERVBTKQorIAkkKENDKSAkKExERkxBR1MpIC1vICRAICReICQoVE9PTFNfTERGTEFHUykKKyAKKy0kKFRPT0xTX0RJUikvaTJjZHVtcDogJChUT09MU19ESVIpL2kyY2R1bXAubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubworKyQoVE9PTFNfRElSKS9pMmNkdW1wOiAkKFRPT0xTX0RJUikvaTJjZHVtcC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChUT09MU19MREZMQUdTKQorIAorLSQoVE9PTFNfRElSKS9pMmNzZXQ6ICQoVE9PTFNfRElSKS9pMmNzZXQubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubworKyQoVE9PTFNfRElSKS9pMmNzZXQ6ICQoVE9PTFNfRElSKS9pMmNzZXQubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubyAkKExJQl9ERVBTKQorIAkkKENDKSAkKExERkxBR1MpIC1vICRAICReICQoVE9PTFNfTERGTEFHUykKKyAKKy0kKFRPT0xTX0RJUikvaTJjZ2V0OiAkKFRPT0xTX0RJUikvaTJjZ2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjZ2V0OiAkKFRPT0xTX0RJUikvaTJjZ2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCistJChUT09MU19ESVIpL2kyY3RyYW5zZmVyOiAkKFRPT0xTX0RJUikvaTJjdHJhbnNmZXIubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubworKyQoVE9PTFNfRElSKS9pMmN0cmFuc2ZlcjogJChUT09MU19ESVIpL2kyY3RyYW5zZmVyLm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCisgIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvTW9kdWxlLm1rIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvTW9kdWxlLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2FmNzJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL01vZHVsZS5taworKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLSMgRUVQUk9NRVIKLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotCi1FRVBST01FUl9ESVIJOj0gZWVwcm9tZXIKLQotRUVQUk9NRVJfQ0ZMQUdTCTo9IC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdzaGFkb3cgLVdwb2ludGVyLWFyaXRoIC1XY2FzdC1xdWFsIFwKLQkJICAgLVdjYXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncyAtV25lc3RlZC1leHRlcm5zIC1XaW5saW5lIFwKLQkJICAgLVcgLVd1bmRlZiAtV21pc3NpbmctcHJvdG90eXBlcyAtSWluY2x1ZGUKLQotRUVQUk9NRVJfVEFSR0VUUwk6PSBlZXByb21lciBlZXByb20gZWVwcm9nCi0KLSMKLSMgUHJvZ3JhbXMKLSMKLQotJChFRVBST01FUl9ESVIpL2VlcHJvbWVyOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9tZXIubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4KLQotJChFRVBST01FUl9ESVIpL2VlcHJvbTogJChFRVBST01FUl9ESVIpL2VlcHJvbS5vCi0JJChDQykgJChMREZMQUdTKSAtbyAkQCAkXgotCi0kKEVFUFJPTUVSX0RJUikvZWVwcm9nOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9nLm8gJChFRVBST01FUl9ESVIpLzI0Y1hYLm8gCi0JJChDQykgJChMREZMQUdTKSAtbyAkQCAkXgotCi0jCi0jIE9iamVjdHMKLSMKLQotJChFRVBST01FUl9ESVIpL2VlcHJvbWVyLm86ICQoRUVQUk9NRVJfRElSKS9lZXByb21lci5jCi0JJChDQykgJChDRkxBR1MpICQoRUVQUk9NRVJfQ0ZMQUdTKSAtYyAkPCAtbyAkQAotCi0kKEVFUFJPTUVSX0RJUikvZWVwcm9tLm86ICQoRUVQUk9NRVJfRElSKS9lZXByb20uYwotCSQoQ0MpICQoQ0ZMQUdTKSAkKEVFUFJPTUVSX0NGTEFHUykgLWMgJDwgLW8gJEAKLQotJChFRVBST01FUl9ESVIpL2VlcHJvZy5vOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9nLmMKLQkkKENDKSAkKENGTEFHUykgJChFRVBST01FUl9DRkxBR1MpIC1jICQ8IC1vICRACi0KLSQoRUVQUk9NRVJfRElSKS8yNGNYWC5vOiAkKEVFUFJPTUVSX0RJUikvMjRjWFguYwotCSQoQ0MpICQoQ0ZMQUdTKSAkKEVFUFJPTUVSX0NGTEFHUykgLWMgJDwgLW8gJEAKLQotIwotIyBDb21tYW5kcwotIwotCi1hbGwtZWVwcm9tZXI6ICQoYWRkcHJlZml4ICQoRUVQUk9NRVJfRElSKS8sJChFRVBST01FUl9UQVJHRVRTKSkKLQotc3RyaXAtZWVwcm9tZXI6ICQoYWRkcHJlZml4ICQoRUVQUk9NRVJfRElSKS8sJChFRVBST01FUl9UQVJHRVRTKSkKLQlzdHJpcCAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0KLWNsZWFuLWVlcHJvbWVyOgotCSQoUk0pICQoYWRkcHJlZml4ICQoRUVQUk9NRVJfRElSKS8sKi5vICQoRUVQUk9NRVJfVEFSR0VUUykpCi0KLWluc3RhbGwtZWVwcm9tZXI6ICQoYWRkcHJlZml4ICQoRUVQUk9NRVJfRElSKS8sJChFRVBST01FUl9UQVJHRVRTKSkKLQkkKElOU1RBTExfRElSKSAkKERFU1RESVIpJChzYmluZGlyKSAkKERFU1RESVIpJChtYW44ZGlyKQotCWZvciBwcm9ncmFtIGluICQoRUVQUk9NRVJfVEFSR0VUUykgOyBkbyBcCi0JJChJTlNUQUxMX1BST0dSQU0pICQoRUVQUk9NRVJfRElSKS8kJHByb2dyYW0gJChERVNURElSKSQoc2JpbmRpcikgOyBkb25lCi0KLXVuaW5zdGFsbC1lZXByb21lcjoKLQlmb3IgcHJvZ3JhbSBpbiAkKEVFUFJPTUVSX1RBUkdFVFMpIDsgZG8gXAotCSQoUk0pICQoREVTVERJUikkKHNiaW5kaXIpLyQkcHJvZ3JhbSA7IFwKLQkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kJHByb2dyYW0uOCA7IGRvbmUKLQotYWxsOiBhbGwtZWVwcm9tZXIKLQotc3RyaXA6IHN0cmlwLWVlcHJvbWVyCi0KLWNsZWFuOiBjbGVhbi1lZXByb21lcgotCi1pbnN0YWxsOiBpbnN0YWxsLWVlcHJvbWVyCi0KLXVuaW5zdGFsbDogdW5pbnN0YWxsLWVlcHJvbWVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9yZW1vdmUtaTJjLWRldi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL3JlbW92ZS1pMmMtZGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMzY4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9yZW1vdmUtaTJjLWRldi5wYXRjaApAQCAtMCwwICsxLDk4IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDIyNmJjMDNhY2NhNDRjZjRiMzAwNTk3MzA4MDY0YzQ0Njc2YjZmNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CitEYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE0OjI0OjE2ICswMTAwCitTdWJqZWN0OiBEZWxldGUgZHVwbGljYXRlIGkyYy1kZXYuaAorCitUaGUgPGxpbnV4L2kyYy1kZXYuaD4gaGVhZGVyIGZpbGUgaXMgcHJvdmlkZWQgYnkgdGhlIGtlcm5lbCwgc28gZHJvcAorb3VyIG93biBjb3B5IG9mIHRoaXMgZmlsZS4KKworU2lnbmVkLW9mZi1ieTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorQWNrZWQtYnk6IFdvbGZyYW0gU2FuZyA8d3NhQHRoZS1kcmVhbXMuZGU+CistLS0KKyBpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaCB8IDcyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNzIgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvaTJjLWRldi5oCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2kyYy1kZXYuaCBiL2luY2x1ZGUvbGludXgvaTJjLWRldi5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDgzOWQyNWEuLjAwMDAwMDAKKy0tLSBhL2luY2x1ZGUvbGludXgvaTJjLWRldi5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3MiArMCwwIEBACistLyoKKy0gICAgaTJjLWRldi5oIC0gaTJjLWJ1cyBkcml2ZXIsIGNoYXIgZGV2aWNlIGludGVyZmFjZQorLQorLSAgICBDb3B5cmlnaHQgKEMpIDE5OTUtOTcgU2ltb24gRy4gVm9nbAorLSAgICBDb3B5cmlnaHQgKEMpIDE5OTgtOTkgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPgorLQorLSAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sCistICAgIE1BIDAyMTEwLTEzMDEgVVNBLgorLSovCistCistI2lmbmRlZiBfTElOVVhfSTJDX0RFVl9ICistI2RlZmluZSBfTElOVVhfSTJDX0RFVl9ICistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistCistCistLyogL2Rldi9pMmMtWCBpb2N0bCBjb21tYW5kcy4gIFRoZSBpb2N0bCdzIHBhcmFtZXRlciBpcyBhbHdheXMgYW4KKy0gKiB1bnNpZ25lZCBsb25nLCBleGNlcHQgZm9yOgorLSAqCS0gSTJDX0ZVTkNTLCB0YWtlcyBwb2ludGVyIHRvIGFuIHVuc2lnbmVkIGxvbmcKKy0gKgktIEkyQ19SRFdSLCB0YWtlcyBwb2ludGVyIHRvIHN0cnVjdCBpMmNfcmR3cl9pb2N0bF9kYXRhCistICoJLSBJMkNfU01CVVMsIHRha2VzIHBvaW50ZXIgdG8gc3RydWN0IGkyY19zbWJ1c19pb2N0bF9kYXRhCistICovCistI2RlZmluZSBJMkNfUkVUUklFUwkweDA3MDEJLyogbnVtYmVyIG9mIHRpbWVzIGEgZGV2aWNlIGFkZHJlc3Mgc2hvdWxkCistCQkJCSAgIGJlIHBvbGxlZCB3aGVuIG5vdCBhY2tub3dsZWRnaW5nICovCistI2RlZmluZSBJMkNfVElNRU9VVAkweDA3MDIJLyogc2V0IHRpbWVvdXQgaW4gdW5pdHMgb2YgMTAgbXMgKi8KKy0KKy0vKiBOT1RFOiBTbGF2ZSBhZGRyZXNzIGlzIDcgb3IgMTAgYml0cywgYnV0IDEwLWJpdCBhZGRyZXNzZXMKKy0gKiBhcmUgTk9UIHN1cHBvcnRlZCEgKGR1ZSB0byBjb2RlIGJyb2tlbm5lc3MpCistICovCistI2RlZmluZSBJMkNfU0xBVkUJMHgwNzAzCS8qIFVzZSB0aGlzIHNsYXZlIGFkZHJlc3MgKi8KKy0jZGVmaW5lIEkyQ19TTEFWRV9GT1JDRQkweDA3MDYJLyogVXNlIHRoaXMgc2xhdmUgYWRkcmVzcywgZXZlbiBpZiBpdAorLQkJCQkgICBpcyBhbHJlYWR5IGluIHVzZSBieSBhIGRyaXZlciEgKi8KKy0jZGVmaW5lIEkyQ19URU5CSVQJMHgwNzA0CS8qIDAgZm9yIDcgYml0IGFkZHJzLCAhPSAwIGZvciAxMCBiaXQgKi8KKy0KKy0jZGVmaW5lIEkyQ19GVU5DUwkweDA3MDUJLyogR2V0IHRoZSBhZGFwdGVyIGZ1bmN0aW9uYWxpdHkgbWFzayAqLworLQorLSNkZWZpbmUgSTJDX1JEV1IJMHgwNzA3CS8qIENvbWJpbmVkIFIvVyB0cmFuc2ZlciAob25lIFNUT1Agb25seSkgKi8KKy0KKy0jZGVmaW5lIEkyQ19QRUMJCTB4MDcwOAkvKiAhPSAwIHRvIHVzZSBQRUMgd2l0aCBTTUJ1cyAqLworLSNkZWZpbmUgSTJDX1NNQlVTCTB4MDcyMAkvKiBTTUJ1cyB0cmFuc2ZlciAqLworLQorLQorLS8qIFRoaXMgaXMgdGhlIHN0cnVjdHVyZSBhcyB1c2VkIGluIHRoZSBJMkNfU01CVVMgaW9jdGwgY2FsbCAqLworLXN0cnVjdCBpMmNfc21idXNfaW9jdGxfZGF0YSB7CistCV9fdTggcmVhZF93cml0ZTsKKy0JX191OCBjb21tYW5kOworLQlfX3UzMiBzaXplOworLQl1bmlvbiBpMmNfc21idXNfZGF0YSAqZGF0YTsKKy19OworLQorLS8qIFRoaXMgaXMgdGhlIHN0cnVjdHVyZSBhcyB1c2VkIGluIHRoZSBJMkNfUkRXUiBpb2N0bCBjYWxsICovCistc3RydWN0IGkyY19yZHdyX2lvY3RsX2RhdGEgeworLQlzdHJ1Y3QgaTJjX21zZyAqbXNnczsJLyogcG9pbnRlcnMgdG8gaTJjX21zZ3MgKi8KKy0JX191MzIgbm1zZ3M7CQkJLyogbnVtYmVyIG9mIGkyY19tc2dzICovCistfTsKKy0KKy0jZGVmaW5lICBJMkNfUkRSV19JT0NUTF9NQVhfTVNHUwk0MgorLQorLQorLSNlbmRpZiAvKiBfTElOVVhfSTJDX0RFVl9IICovCistLSAKK2NnaXQgdjEuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzMuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzMuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDE3MjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiU2V0IG9mIGkyYyB0b29scyBmb3IgbGludXgiCi1IT01FUEFHRSA9ICJodHRwczovL2kyYy53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0kyQ19Ub29scyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vTW9kdWxlLm1rIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3MTA0YTEwNDNkMTFhNWUyYzdiMTMxNjE0ZWIxYjk2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjVlNjlmMmUyYTZlM2FhMmVjZGZlNmE1ZjQ5MGIxNDljNTA0NDY4NzcwZjU4OTIxYzhjNWI4YTc4NjBhNDQxIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGNwICR7V09SS0RJUn0vTW9kdWxlLm1rICR7U30vZWVwcm9tZXIvCi0gICAgc2VkIC1pICdzIy91c3IvbG9jYWwjL3VzciMnICR7U30vTWFrZWZpbGUKLSAgICBlY2hvICJpbmNsdWRlIGVlcHJvbWVyL01vZHVsZS5tayIgPj4gJHtTfS9NYWtlZmlsZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2xpbnV4Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IGluY2x1ZGUvbGludXgvaTJjLWRldi5oICR7RH0ke2luY2x1ZGVkaXJ9L2xpbnV4L2kyYy1kZXYtdXNlci5oCi0gICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGludXgvaTJjLWRldi5oCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke3NiaW5kaXJ9L2kyYy1zdHViLWZyb20tZHVtcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGRjbW9uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtZWRpZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLWRpbW1zIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtdmFpbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICIKLVJERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtQTn0gcGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc180LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYWM0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiU2V0IG9mIGkyYyB0b29scyBmb3IgbGludXgiCitIT01FUEFHRSA9ICJodHRwczovL2kyYy53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0kyQ19Ub29scyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9pMmMtdG9vbHMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10b29scy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTJjLXRvb2xzLWVlcHJvZy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaTJjLWRldi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOTJhMjg4ZDcwZjMwNmQzODk1ZTNhN2U5YzE0YzlhYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjYwZGFmNmYwMTFkZTBhY2I2MWRlNTdkYmE2MmYyMDU0YmIzOWYxOTk2MWQ2N2UwYzkxNjEwZjA3MWNhNDAzIgorCitFWFRSQV9PRU1BS0UgPSAiYmluZGlyPSR7YmluZGlyfSBzYmluZGlyPSR7c2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIGluY2Rpcj0ke2luY2x1ZGVkaXJ9IGxpYmRpcj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgIG1hbmRpcj0ke21hbmRpcn0gXAorICAgICAgICAgICAgICAgIEVYVFJBPWVlcHJvZyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7c2JpbmRpcn0vaTJjLXN0dWItZnJvbS1kdW1wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZGNtb24gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RlY29kZS1lZGlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtZGltbXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RlY29kZS12YWlvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorUkRFUEVORFNfJHtQTn0tbWlzYyA9ICIke1BOfSBwZXJsIHBlcmwtbW9kdWxlLXBvc2l4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZjbnRsIHBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIFwKKyAgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmNGFlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJpY2VjYyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQiCi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgdmVyc2lvbiBvZiB0aGUgaWNlY2MtY3JlYXRlLWVudiBzY3JpcHQgdGhhdCBoYXMgXAotYmVlbiBtb2RpZmllZCBpbiBvcmRlciB0byBtYWtlIGl0IHdvcmsgd2l0aCBPRS4iCi1TRUNUSU9OID0gImJhc2UiCi0jIHNvdXJjZSBmaWxlIGhhcyBqdXN0IGEgIkdQTCIgd29yZCwgYnV0IHVwc3RyZWFtIGlzIEdQTHYyKy4KLSMgbW9zdCBwcm9iYWJseSBqdXN0IEdQTCB3b3VsZCBiZSBhIG1pc3Rha2UKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaWNlY2MtY3JlYXRlLWVudjtiZWdpbmxpbmU9MjtlbmRsaW5lPTU7bWQ1PWFlMWRmM2Q2YTA1OGJmZGE0MGI2NjA5NGM1ZjYwNjVmIgotCi1QUiA9ICJyMiIKLQotREVQRU5EUyA9ICIiCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotCi1pbmhlcml0IG5hdGl2ZQotCi0jIFRoaXMgaXMgbmVlZGVkLCBiZWNhdXNlIG90aGVyd2lzZSB0aGVyZSBpcyBkZXBlbmRlbmN5IGxvb3AgZnJvbSBxdWlsdC1uYXRpdmUKLSMgRGVwZW5kZW5jeSBsb29wICMxIGZvdW5kOgotIyAgVGFzayAxMDkwNyAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19pbnN0YWxsKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19jb21waWxlJ10pCi0jICBUYXNrIDEwOTA4IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX3BvcHVsYXRlX3N5c3Jvb3QpIChkZXBlbmRlbnQgVGFza3MgWydxdWlsdC1uYXRpdmUsIGRvX2luc3RhbGwnXSkKLSMgIFRhc2sgMTA5OTcgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fcGF0Y2gpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fdW5wYWNrJywgJ3F1aWx0LW5hdGl2ZSwgZG9fcG9wdWxhdGVfc3lzcm9vdCddKQotIyAgVGFzayAxMTAwMSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19jb25maWd1cmUpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fcGF0Y2gnXSkKLSMgIFRhc2sgMTEwMDIgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fY29tcGlsZSkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19jb25maWd1cmUnXSkKLSMgIFRhc2sgMTA5OTggKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9faW5zdGFsbCkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19jb21waWxlJ10pCi0jICBUYXNrIDEwOTk5IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX3BvcHVsYXRlX3N5c3Jvb3QpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9faW5zdGFsbCddKQotIyAgVGFzayAxMDkxMCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19jb25maWd1cmUpIChkZXBlbmRlbnQgVGFza3MgWydxdWlsdC1uYXRpdmUsIGRvX3BhdGNoJywgJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19wb3B1bGF0ZV9zeXNyb290J10pCi0jICBUYXNrIDEwOTExIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX2NvbXBpbGUpIChkZXBlbmRlbnQgVGFza3MgWydxdWlsdC1uYXRpdmUsIGRvX2NvbmZpZ3VyZSddKQotUEFUQ0hUT09MID0gInBhdGNoIgotU1JDX1VSSSA9ICJmaWxlOi8vaWNlY2MtY3JlYXRlLWVudiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pY2VjYy1jcmVhdGUtZW52ICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudgppbmRleCA3ZTRkYmM0Li42NGI1ZTIwIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYKQEAgLTQsNjkgKzQsMjA4IEBACiAjIENvcHlyaWdodCAoQykgMjAwNCBieSB0aGUgSWNlY3JlYW0gQXV0aG9ycwogIyBHUEwKIAotdGFyZ2V0X2ZpbGVzPQordGFyZ2V0X3BhdGhzPQordGFyZ2V0X2FsaWFzZXM9CiAKLWlzX2NvbnRhaW5lZCAoKQorIyBBbHdheXMgcHJpbnRzLCBvcHRpb25hbGx5IHRvIGEgbG9nIGZpbGUKK3ByaW50X291dHB1dCAoKQogewotICBjYXNlICIgJHRhcmdldF9maWxlcyAiIGluCi0gICAgKiIgJDEgIiogKSByZXR1cm4gMCA7OwotICAgICoiPSQxICIqICkgcmV0dXJuIDA7OwotICAgICogKSByZXR1cm4gMSA7OwotICBlc2FjCisgICAgaWYgdGVzdCAtbiAiJGxvZ19wYXRoIjsgdGhlbgorICAgICAgICBlY2hvICIkQCIgfCB0ZWUgLWEgIiRsb2dfcGF0aCIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIiRAIgorICAgIGZpCit9CisKKyMgT25seSBwcmludHMgaWYgdGhlIGRlYnVnIGZsYWcgaXMgc3BlY2lmaWVkCitwcmludF9kZWJ1ZyAoKQoreworICAgIGlmIHRlc3QgLW4gIiRkZWJ1ZyI7IHRoZW4KKyAgICAgICAgcHJpbnRfb3V0cHV0ICIkQCIKKyAgICBmaQorfQorCitpc19keW5hbWljX2VsZiAoKQoreworICAgICMgSXMgdGhlIGZpbGUgYW4gZHluYW1pY2FsbHkgbGlua2VkIEVMRiBleGVjdXRhYmxlPworICAgIChmaWxlIC1MICIkMSIgfCBncmVwICdFTEYnID4gL2Rldi9udWxsIDI+JjEpICYmICghIGZpbGUgLUwgIiQxIiB8IGdyZXAgJ3N0YXRpYycgPiAvZGV2L251bGwgMj4mMSkKK30KKworZml4X3JwYXRoICgpCit7CisgICAgIyBQYXRjaGVzIHRoZSBSUEFUSCBmb3IgYSBmaWxlLiBXaGVuIHRoZSBwcm9ncmFtIGlzIGV4ZWN1dGVkIGluIHRoZSBjaHJvb3QKKyAgICAjIGJlIGljZWNjZCwgL3Byb2MgaXMgbm90IG1vdW50ZWQuIEFzIHN1Y2gsICRPUklHSU4gY2FuJ3QgYmUgcmVzb2x2ZWQuIFRvCisgICAgIyB3b3JrIGFyb3VuZCB0aGlzLCByZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgJE9SSUdJTiBpbiBSUEFUSCB3aXRoIHRoZQorICAgICMga25vd24gY2hyb290IHBhdGggdG8gdGhlIGV4ZWN1dGFibGVzIGRpcmVjdG9yeQorICAgIGxvY2FsIHBhdGg9IiQxIgorICAgIGxvY2FsIG9yaWdpbj0iJDIiCisgICAgaWYgISBpc19keW5hbWljX2VsZiAiJHBhdGgiOyB0aGVuCisgICAgICAgIHJldHVybgorICAgIGZpCisgICAgbG9jYWwgb2xkX3JwYXRoPSJgJFBBVENIRUxGIC0tcHJpbnQtcnBhdGggIiRwYXRoImAiCisgICAgbG9jYWwgbmV3X3JwYXRoPSJgZWNobyAiJG9sZF9ycGF0aCIgfCBcCisgICAgICAgIHNlZCAncy8uKlxbXCguKlwpXF0vXDEvZycgfCBcCisgICAgICAgIHNlZCAicyxcXFwkT1JJR0lOLC8kb3JpZ2luLGciYCIKKworICAgIGlmIHRlc3QgLW4gIiRuZXdfcnBhdGgiOyB0aGVuCisgICAgICAgIHByaW50X2RlYnVnICJDb252ZXJ0aW5nIFJQQVRIICckb2xkX3JwYXRoJyAtPiAnJG5ld19ycGF0aCciCisgICAgICAgICRQQVRDSEVMRiAtLXNldC1ycGF0aCAiJG5ld19ycGF0aCIgIiRwYXRoIgorICAgIGZpCit9CisKK2FkZF9wYXRoICgpCit7CisgICAgY2FzZSAiICR0YXJnZXRfcGF0aHMgIiBpbgorICAgICAgICAqIiAkMSAiKikKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgdGFyZ2V0X3BhdGhzPSIkdGFyZ2V0X3BhdGhzICQxIgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIDs7CisgICAgZXNhYworfQorCithZGRfYWxpYXMgKCkKK3sKKyAgICBpZiB0ZXN0ICIkMSIgIT0gIiQyIjsgdGhlbgorICAgICAgICBsb2NhbCBhbGlhcz0iJDE9JDIiCisgICAgICAgIGNhc2UgIiAkdGFyZ2V0X2FsaWFzZXMgIiBpbgorICAgICAgICAgICAgKiIgJGFsaWFzICIqKQorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIHByaW50X2RlYnVnICJBZGRpbmcgYWxpYXMgJyQyJyAtPiAnJDEnIgorICAgICAgICAgICAgICAgIHRhcmdldF9hbGlhc2VzPSIkdGFyZ2V0X2FsaWFzZXMgJGFsaWFzIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICBmaQorfQorCitub3JtYWxpemVfcGF0aCAoKQoreworICAgICMgTm9ybWFsaXplcyB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5LCByZW1vdmluZyBhbGwgIi4iIGFuZCAiLi4iCisgICAgIyBlbnRyaWVzLiBVc2UgcHdkIC1MIHRvIGV4cGxpY2l0bHkgcHJldmVudCBzeW1saW5rIGV4cGFuc2lvbgorICAgIGxvY2FsIHBhdGg9JDEKKyAgICBpZiB0ZXN0IC1mICIkcGF0aCI7IHRoZW4KKyAgICAgICAgcHVzaGQgJChkaXJuYW1lICRwYXRoKSA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIGRpcl9wYXRoPSQocHdkIC1MKQorICAgICAgICBwYXRoPSRkaXJfcGF0aC8kKGJhc2VuYW1lICRwYXRoKQorICAgICAgICBwb3BkID4gL2Rldi9udWxsIDI+JjEKKyAgICBlbGlmIHRlc3QgLWQgIiRwYXRoIjsgdGhlbgorICAgICAgICBwdXNoZCAkcGF0aCA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIHBhdGg9JChwd2QgLUwpCisgICAgICAgIHBvcGQgPiAvZGV2L251bGwgMj4mMQorICAgIGZpCisgICAgZWNobyAkcGF0aAorfQorCithZGRfZmlsZV9jb21tb24oKQoreworICAgIGxvY2FsIHA9IiQxIgorICAgIGxvY2FsIHBhdGg9IiQyIgorICAgIGxvY2FsIGFsaWFzPSIkMyIKKworICAgIGFkZF9hbGlhcyAiJHBhdGgiICIkcCIKKyAgICBpZiB0ZXN0IC1uICIkYWxpYXMiOyB0aGVuCisgICAgICAgIGFkZF9hbGlhcyAiJHBhdGgiICIkYWxpYXMiCisgICAgZmkKKworICAgIGFkZF9wYXRoICIkcGF0aCIgfHwgcmV0dXJuIDEKKyAgICBwcmludF9kZWJ1ZyAiQWRkaW5nIGZpbGUgJyRwYXRoJyIKKworICAgIHJldHVybiAwCit9CisKK2FkZF9kZXBzKCkKK3sKKyAgICBsb2NhbCBwYXRoPSIkMSIKKyAgICBsb2NhbCBpbnRlcnA9IiQyIgorCisgICAgaWYgdGVzdCAtbiAiJGludGVycCIgJiYgdGVzdCAteCAiJGludGVycCI7IHRoZW4KKyAgICAgICAgIyBVc2UgdGhlIGR5bmFtaWMgbG9hZGVycyAtLWxpc3QgYXJndW1lbnQgdG8gbGlzdCB0aGUKKyAgICAgICAgIyBkZXBlbmRlbmNpZXMuIFRoZSBwcm9ncmFtIG1heSBoYXZlIGEgZGlmZmVyZW50IHByb2dyYW0KKyAgICAgICAgIyBpbnRlcnByZXRlciAodHlwaWNhbCB3aGVuIHVzaW5nIHVuaW5hdGl2ZSB0YXJiYWxscyksIHdoaWNoIGlzCisgICAgICAgICMgd2h5IHdlIGNhbid0IGp1c3QgY2FsbCBsZGQuCisgICAgICAgIGRlcHM9ImAkaW50ZXJwIC0tbGlzdCAiJHBhdGgiYCIKKyAgICBlbHNlCisgICAgICAgIGRlcHM9ImBsZGQgIiRwYXRoImAiCisgICAgZmkKKworICAgIHByaW50X2RlYnVnICJEZXBlbmRlbmNpZXMgYXJlOiIKKyAgICBwcmludF9kZWJ1ZyAiJGRlcHMiCisgICAgaWYgdGVzdCAtbiAiJGRlcHMiOyB0aGVuCisgICAgICAgIGZvciBsaWIgaW4gJGRlcHM7IGRvCisgICAgICAgICAgICAjIGxkZCBub3cgb3V0cHV0cyBsZCBhcyAvbGliL2xkLWxpbnV4LnNvLnh4IG9uIGN1cnJlbnQgbnB0bAorICAgICAgICAgICAgIyBiYXNlZCBnbGliYyB0aGlzIHJlZ2V4cCBwYXJzZSB0aGUgb3V0cHV0cyBsaWtlOgorICAgICAgICAgICAgIyBsZGQgL3Vzci9iaW4vZ2NjCisgICAgICAgICAgICAjICAgICAgICAgbGludXgtZ2F0ZS5zby4xID0+ICAoMHhmZmZmZTAwMCkKKyAgICAgICAgICAgICMgICAgICAgICBsaWJjLnNvLjYgPT4gL2xpYi90bHMvbGliYy5zby42ICgweGI3ZTgxMDAwKQorICAgICAgICAgICAgIyAgICAgICAgIC9saWIvbGQtbGludXguc28uMiAoMHhiN2ZlODAwMCkKKyAgICAgICAgICAgICMgY292ZXJpbmcgYm90aCBzaXR1YXRpb25zICggd2l0aCA9PiBhbmQgd2l0aG91dCApCisgICAgICAgICAgICBsaWI9ImBlY2hvICIkbGliIiB8IHNlZCAtbiAncyxeW14vXSpcKC9bXiBdKlwpLiosXDEscCdgIgorCisgICAgICAgICAgICB0ZXN0IC1mICIkbGliIiB8fCBjb250aW51ZQorICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBzYW1lIGxpYnJhcnkgYWxzbyBleGlzdHMgaW4gdGhlIHBhcmVudAorICAgICAgICAgICAgIyBkaXJlY3RvcnksIGFuZCBwcmVmZXIgdGhhdCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0IGlzIGEKKyAgICAgICAgICAgICMgbW9yZSBnZW5lcmljIG9uZS4KKyAgICAgICAgICAgIGxvY2FsIGJhc2VsaWI9YGVjaG8gIiRsaWIiIHwgc2VkICdzLFwoL1teL10qXCkvLipcKC9bXi9dKlwpJCxcMVwyLCdgCisgICAgICAgICAgICB0ZXN0IC1mICIkYmFzZWxpYiIgJiYgbGliPSRiYXNlbGliCisgICAgICAgICAgICBhZGRfZGVwZW5kZW5jeSAiJGxpYiIgIiRpbnRlcnAiCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCithZGRfZGVwZW5kZW5jeSgpCit7CisgICAgbG9jYWwgcD1gbm9ybWFsaXplX3BhdGggJDFgCisgICAgIyByZWFkbGluayBpcyByZXF1aXJlZCBmb3IgWW9jdG8sIHNvIHdlIGNhbiB1c2UgaXQKKyAgICBsb2NhbCBwYXRoPWByZWFkbGluayAtZiAiJHAiYAorICAgIGxvY2FsIGludGVycD0iJDIiCisKKyAgICBhZGRfZmlsZV9jb21tb24gIiRwIiAiJHBhdGgiIHx8IHJldHVybgorCisgICAgaWYgdGVzdCAteCAiJHBhdGgiICYmIGlzX2R5bmFtaWNfZWxmICIkcGF0aCI7IHRoZW4KKyAgICAgICAgYWRkX2RlcHMgIiRwYXRoIiAiJGludGVycCIKKyAgICBmaQogfQogCiBhZGRfZmlsZSAoKQogewotICBsb2NhbCBuYW1lPSIkMSIKLSAgbG9jYWwgcGF0aD0iJDEiOwotICBpZiB0ZXN0IC1uICIkMiI7IHRoZW4KLSAgICBuYW1lPSIkMiIKLSAgZmkKLSAgdGVzdCAteiAiJG5hbWUiICYmIHJldHVybgotICAjIGxzIC1IIGlzbid0IHJlYWxseSB0aGUgc2FtZSBhcyByZWFkbGluaywgYnV0Ci0gICMgcmVhZGxpbmsgaXMgbm90IHBvcnRhYmxlIGVub3VnaC4KLSAgcGF0aD1gbHMgLUggJHBhdGhgCi0gIHRvYWRkPSIkbmFtZT0kcGF0aCIKLSAgaXNfY29udGFpbmVkICIkdG9hZGQiICYmIHJldHVybgotICBpZiB0ZXN0IC16ICIkc2lsZW50IjsgdGhlbgotICBlY2hvICJhZGRpbmcgZmlsZSAkdG9hZGQiCi0gIGZpCi0gIHRhcmdldF9maWxlcz0iJHRhcmdldF9maWxlcyAkdG9hZGQiCi0gIGlmIHRlc3QgLXggIiRwYXRoIjsgdGhlbgotICAgICMgT25seSBjYWxsIGxkZCB3aGVuIGl0IG1ha2VzIHNlbnNlCi0gICAgaWYgZmlsZSAtTCAiJHBhdGgiIHwgZ3JlcCAnRUxGJyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JaWYgISBmaWxlIC1MICIkcGF0aCIgfCBncmVwICdzdGF0aWMnID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAjIGxkZCBub3cgb3V0cHV0cyBsZCBhcyAvbGliL2xkLWxpbnV4LnNvLnh4IG9uIGN1cnJlbnQgbnB0bCBiYXNlZCBnbGliYwotCQkjIHRoaXMgcmVnZXhwIHBhcnNlIHRoZSBvdXRwdXRzIGxpa2U6Ci0JCSMgbGRkIC91c3IvYmluL2djYwotCQkjICAgICAgICAgbGludXgtZ2F0ZS5zby4xID0+ICAoMHhmZmZmZTAwMCkKLQkJIyAgICAgICAgIGxpYmMuc28uNiA9PiAvbGliL3Rscy9saWJjLnNvLjYgKDB4YjdlODEwMDApCi0JCSMgICAgICAgICAvbGliL2xkLWxpbnV4LnNvLjIgKDB4YjdmZTgwMDApCi0JCSMgY292ZXJpbmcgYm90aCBzaXR1YXRpb25zICggd2l0aCA9PiBhbmQgd2l0aG91dCApCi0gICAgICAgICAgZm9yIGxpYiBpbiBgbGRkICIkcGF0aCIgfCBzZWQgLW4gJ3MsXlteL10qXCgvW14gXSpcKS4qLFwxLHAnYDsgZG8KLQkgICAgdGVzdCAtZiAiJGxpYiIgfHwgY29udGludWUKLQkgICAgIyBDaGVjayB3ZXRoZXIgdGhlIHNhbWUgbGlicmFyeSBhbHNvIGV4aXN0cyBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeSwKLQkgICAgIyBhbmQgcHJlZmVyIHRoYXQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBpdCBpcyBhIG1vcmUgZ2VuZXJpYyBvbmUuCi0JICAgIGxvY2FsIGJhc2VsaWI9YGVjaG8gIiRsaWIiIHwgc2VkICdzLFwoL1teL10qXCkvLipcKC9bXi9dKlwpJCxcMVwyLCdgCi0JICAgIHRlc3QgLWYgIiRiYXNlbGliIiAmJiBsaWI9JGJhc2VsaWIKLQkgIGFkZF9maWxlICIkbGliIgotICAgICAgICBkb25lCi0gICAgICBmaQorICAgIGxvY2FsIHA9YG5vcm1hbGl6ZV9wYXRoICQxYAorICAgICMgcmVhZGxpbmsgaXMgcmVxdWlyZWQgZm9yIFlvY3RvLCBzbyB3ZSBjYW4gdXNlIGl0CisgICAgbG9jYWwgcGF0aD1gcmVhZGxpbmsgLWYgIiRwImAKKworICAgIGFkZF9maWxlX2NvbW1vbiAiJHAiICIkcGF0aCIgIiQyIiB8fCByZXR1cm4KKworICAgIGlmIHRlc3QgLXggIiRwYXRoIiAmJiBpc19keW5hbWljX2VsZiAiJHBhdGgiOyB0aGVuCisgICAgICAgICMgUmVxdWVzdCB0aGUgcHJvZ3JhbSBpbnRlcnBldGVyIChkeW5hbWljIGxvYWRlcikKKyAgICAgICAgaW50ZXJwPWByZWFkZWxmIC1XIC1sICIkcGF0aCIgfCBncmVwICJSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IiB8IHNlZCAicy9ccypcW1JlcXVlc3RpbmcgcHJvZ3JhbSBpbnRlcnByZXRlcjpccypcKC4qXClcXS9cMS9nImAKKyAgICAgICAgcHJpbnRfZGVidWcgIkludGVycHJldGVyIGlzICckaW50ZXJwJyIKKworICAgICAgICBhZGRfZGVwcyAiJHBhdGgiICIkaW50ZXJwIgogICAgIGZpCi0gIGZpCiB9CiAKLSMgYmFja3dhcmQgY29tcGF0Ci1pZiB0ZXN0ICIkMSIgPSAiLS1yZXNwZWN0LXBhdGgiOyB0aGVuCi0gIHNoaWZ0Ci1maQotCi0jYWRkIGEgLS1zaWxlbnQgc3dpdGNoIHRvIGF2b2lkICJicm9rZW4gcGlwZSIgZXJyb3JzIHdoZW4gY2FsbGluZyB0aGlzIHNjaXB0IGZyb20gd2l0aGluIE9FCi1pZiB0ZXN0ICIkMSIgPSAiLS1zaWxlbnQiOyB0aGVuCi0gc2lsZW50PTEKLSBzaGlmdAotZmkKLQord2hpbGUgdGVzdCAtbiAiJDEiOyBkbworICAgIGNhc2UgIiQxIiBpbgorICAgICAgICAtLXJlc3BlY3QtcGF0aCkKKyAgICAgICAgICAgICMgSWdub3JlIGZvciBiYWNrd2FyZCBjb21wYXRhYmlsaXR5CisgICAgICAgICAgICA7OworICAgICAgICAtLWRlYnVnKQorICAgICAgICAgICAgZGVidWc9MQorICAgICAgICAgICAgOzsKKyAgICAgICAgLS1sb2cpCisgICAgICAgICAgICBkb19sb2c9MQorICAgICAgICAgICAgOzsKKyAgICAgICAgLS1leHRyYT0qKQorICAgICAgICAgICAgZXh0cmFfdG9vbHM9IiRleHRyYV90b29scyAkezEjLS1leHRyYT19IgorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICA7OworICAgIGVzYWMKKyAgICBzaGlmdAorZG9uZQogCiBhZGRlZF9nY2M9JDEKIHNoaWZ0CkBAIC03NiwxOSArMjE1LDM1IEBACiBzaGlmdAogYXJjaGl2ZV9uYW1lPSQxCiAKK2lmIHRlc3QgLW4gIiRkb19sb2ciOyB0aGVuCisgICAgbG9nX3BhdGg9IiRhcmNoaXZlX25hbWUubG9nIgorICAgIHJtIC1mICIkbG9nX3BhdGgiCitmaQorCitpZiB0ZXN0IC16ICIkUEFUQ0hFTEYiOyB0aGVuCisgICAgUEFUQ0hFTEY9YHdoaWNoIHBhdGNoZWxmIDI+IC9kZXYvbnVsbGAKK2ZpCitpZiB0ZXN0IC16ICIkUEFUQ0hFTEYiOyB0aGVuCisgICAgUEFUQ0hFTEY9YHdoaWNoIHBhdGNoZWxmLXVuaW5hdGl2ZSAyPiAvZGV2L251bGxgCitmaQoraWYgdGVzdCAteiAiJFBBVENIRUxGIjsgdGhlbgorICAgIHByaW50X291dHB1dCAicGF0Y2hlbGYgaXMgcmVxdWlyZWQiCisgICAgZXhpdCAxCitmaQorCiBpZiB0ZXN0IC16ICIkYWRkZWRfZ2NjIiB8fCB0ZXN0IC16ICIkYWRkZWRfZ3h4IiA7IHRoZW4KLQllY2hvICJ1c2FnZTogJDAgPGdjY19wYXRoPiA8ZysrX3BhdGg+IgotCWV4aXQgMQorICAgIHByaW50X291dHB1dCAidXNhZ2U6ICQwIDxnY2NfcGF0aD4gPGcrK19wYXRoPiIKKyAgICBleGl0IDEKIGZpCiAKIGlmICEgdGVzdCAteCAiJGFkZGVkX2djYyIgOyB0aGVuCi0gIGVjaG8gIickYWRkZWRfZ2NjJyBpcyBubyBleGVjdXRhYmxlLiIKLSAgZXhpdCAxCisgICAgcHJpbnRfb3V0cHV0ICInJGFkZGVkX2djYycgaXMgbm90IGV4ZWN1dGFibGUuIgorICAgIGV4aXQgMQogZmkKIAogaWYgISB0ZXN0IC14ICIkYWRkZWRfZ3h4IiA7IHRoZW4KLSAgZWNobyAiJyRhZGRlZF9nY2MnIGlzIG5vIGV4ZWN1dGFibGUuIgotICBleGl0IDEKKyAgICBwcmludF9vdXRwdXQgIickYWRkZWRfZ2NjJyBpcyBub3QgZXhlY3V0YWJsZS4iCisgICAgZXhpdCAxCiBmaQogCiAKQEAgLTk3LDk2ICsyNTIsMTMxIEBACiBhZGRfZmlsZSAkYWRkZWRfZ3h4IC91c3IvYmluL2crKwogCiBpZiB0ZXN0IC16ICIkYWRkZWRfYXMiIDsgdGhlbgotIGFkZF9maWxlIC91c3IvYmluL2FzIC91c3IvYmluL2FzCisgICAgYWRkX2ZpbGUgL3Vzci9iaW4vYXMgL3Vzci9iaW4vYXMKIGVsc2UKLSBpZiAhIHRlc3QgLXggIiRhZGRlZF9hcyIgOyB0aGVuCi0gIGVjaG8gIickYWRkZWRfYXMnIGlzIG5vIGV4ZWN1dGFibGUuIgotICBleGl0IDEKLSBmaQorICAgIGlmICEgdGVzdCAteCAiJGFkZGVkX2FzIiA7IHRoZW4KKyAgICAgICAgcHJpbnRfb3V0cHV0ICInJGFkZGVkX2FzJyBpcyBub3QgZXhlY3V0YWJsZS4iCisgICAgICAgIGV4aXQgMQorICAgIGZpCiAKLSBhZGRfZmlsZSAkYWRkZWRfYXMgIC91c3IvYmluL2FzCisgICAgYWRkX2ZpbGUgJGFkZGVkX2FzICAvdXNyL2Jpbi9hcwogZmkKIAogYWRkX2ZpbGUgYCRhZGRlZF9nY2MgLXByaW50LXByb2ctbmFtZT1jYzFgIC91c3IvYmluL2NjMQogYWRkX2ZpbGUgYCRhZGRlZF9neHggLXByaW50LXByb2ctbmFtZT1jYzFwbHVzYCAvdXNyL2Jpbi9jYzFwbHVzCiBzcGVjZmlsZT1gJGFkZGVkX2djYyAtcHJpbnQtZmlsZS1uYW1lPXNwZWNzYAogaWYgdGVzdCAtbiAiJHNwZWNmaWxlIiAmJiB0ZXN0IC1lICIkc3BlY2ZpbGUiOyB0aGVuCi0gIGFkZF9maWxlICIkc3BlY2ZpbGUiCisgICAgYWRkX2ZpbGUgIiRzcGVjZmlsZSIKIGZpCiAKIGx0b2ZpbGU9YCRhZGRlZF9nY2MgLXByaW50LXByb2ctbmFtZT1sdG8xYAotcGx1Z2luZmlsZT0iJHtsdG9maWxlJWx0bzF9bGlibHRvX3BsdWdpbi5zbyIKK3BsdWdpbmZpbGU9YG5vcm1hbGl6ZV9wYXRoICIke2x0b2ZpbGUlbHRvMX1saWJsdG9fcGx1Z2luLnNvImAKIGlmIHRlc3QgLXIgIiRwbHVnaW5maWxlIgogdGhlbgotICBhZGRfZmlsZSAkcGx1Z2luZmlsZSAgJHtwbHVnaW5maWxlIyp1c3J9Ci0gIGFkZF9maWxlICRwbHVnaW5maWxlICAvdXNyJHtwbHVnaW5maWxlIyp1c3J9CisgICAgYWRkX2ZpbGUgJHBsdWdpbmZpbGUgICR7cGx1Z2luZmlsZSMqdXNyfQorICAgIGFkZF9maWxlICRwbHVnaW5maWxlICAvdXNyJHtwbHVnaW5maWxlIyp1c3J9CiBmaQogCisjIGZvciB0ZXN0aW5nIHRoZSBlbnZpcm9ubWVudCBpcyB1c2FibGUgYXQgYWxsCitpZiB0ZXN0IC14IC9iaW4vdHJ1ZTsgdGhlbgorICAgIGFkZF9maWxlIC9iaW4vdHJ1ZQorZWxpZiB0ZXN0IC14IC91c3IvYmluL3RydWU7IHRoZW4KKyAgICBhZGRfZmlsZSAvdXNyL2Jpbi90cnVlIC9iaW4vdHJ1ZQorZWxzZQorICAgIHByaW50X291dHB1dCAiJ3RydWUnIG5vdCBmb3VuZCIKKyAgICBleGl0IDEKK2ZpCisKK2ZvciBleHRyYSBpbiAkZXh0cmFfdG9vbHM7IGRvCisgICAgaWYgdGVzdCAteCAiJGV4dHJhIjsgdGhlbgorICAgICAgICBhZGRfZmlsZSAiJGV4dHJhIgorICAgIGVsc2UKKyAgICAgICAgcHJpbnRfb3V0cHV0ICInJGV4dHJhJyBub3QgZm91bmQiCisgICAgICAgIGV4aXQgMQorICAgIGZpCitkb25lCisKK2xpbmtfcmVsICgpCit7CisgICAgbG9jYWwgdGFyZ2V0PSIkMSIKKyAgICBsb2NhbCBuYW1lPSIkMiIKKyAgICBsb2NhbCBiYXNlPSIkMyIKKworICAgIGxvY2FsIHByZWZpeD1gZGlybmFtZSAkbmFtZWAKKworICAgIHByZWZpeD1gZWNobyAkcHJlZml4IHwgc2VkICdzLFteL11cKywuLixnJyB8IHNlZCAncyxeLyosLGcnYAorCisgICAgbG4gLXMgJHByZWZpeC8kdGFyZ2V0ICRiYXNlLyRuYW1lCit9CisKIHRlbXBkaXI9YG1rdGVtcCAtZCAvdG1wL2ljZWNjZW52WFhYWFhYYAotbmV3X3RhcmdldF9maWxlcz0KLWZvciBpIGluICR0YXJnZXRfZmlsZXM7IGRvCi0gY2FzZSAkaSBpbgotICAgKj0vKikKK3RhcmdldF9maWxlcz0KK2ZvciBwYXRoIGluICR0YXJnZXRfcGF0aHM7IGRvCisgICAgbWtkaXIgLXAgJHRlbXBkaXIvYGRpcm5hbWUgJHBhdGhgCisgICAgY3AgLXBIICRwYXRoICR0ZW1wZGlyLyRwYXRoCisKKyAgICBpZiB0ZXN0IC1mICR0ZW1wZGlyLyRwYXRoIC1hIC14ICR0ZW1wZGlyLyRwYXRoOyB0aGVuCisgICAgICAgIHN0cmlwIC1zICR0ZW1wZGlyLyRwYXRoIDI+L2Rldi9udWxsCisgICAgZmkKKworICAgIGZpeF9ycGF0aCAkdGVtcGRpci8kcGF0aCBgZGlybmFtZSAkcGF0aGAKKyAgICB0YXJnZXRfZmlsZXM9IiR0YXJnZXRfZmlsZXMgJHBhdGgiCitkb25lCisKK2ZvciBpIGluICR0YXJnZXRfYWxpYXNlczsgZG8KICAgICB0YXJnZXQ9YGVjaG8gJGkgfCBjdXQgLWQ9IC1mMWAKLSAgICBwYXRoPWBlY2hvICRpIHwgY3V0IC1kPSAtZjJgCi0gICAgOzsKLSAgICopCi0gICAgcGF0aD0kaQotICAgIHRhcmdldD0kaQotICAgIDs7Ci0gIGVzYWMKLSAgbWtkaXIgLXAgJHRlbXBkaXIvYGRpcm5hbWUgJHRhcmdldGAKLSAgY3AgLXAgJHBhdGggJHRlbXBkaXIvJHRhcmdldAotICBpZiB0ZXN0IC1mICR0ZW1wZGlyLyR0YXJnZXQgLWEgLXggJHRlbXBkaXIvJHRhcmdldDsgdGhlbgotICAgIHN0cmlwIC1zICR0ZW1wZGlyLyR0YXJnZXQgMj4vZGV2L251bGwKLSAgZmkKLSAgdGFyZ2V0PWBlY2hvICR0YXJnZXQgfCBjdXQgLWIyLWAKLSAgbmV3X3RhcmdldF9maWxlcz0iJG5ld190YXJnZXRfZmlsZXMgJHRhcmdldCIKKyAgICBsaW5rX25hbWU9YGVjaG8gJGkgfCBjdXQgLWQ9IC1mMmAKKworICAgIG1rZGlyIC1wICR0ZW1wZGlyL2BkaXJuYW1lICRsaW5rX25hbWVgCisgICAgIyBSZWxhdGl2ZSBsaW5rcyBhcmUgdXNlZCBiZWNhdXNlIHRoZSBmaWxlcyBhcmUgY2hlY2tlZCBmb3IgYmVpbmcKKyAgICAjIGV4ZWN1dGFibGUgb3V0c2lkZSB0aGUgY2hyb290CisgICAgbGlua19yZWwgJHRhcmdldCAkbGlua19uYW1lICR0ZW1wZGlyCisKKyAgICBsaW5rX25hbWU9YGVjaG8gJGxpbmtfbmFtZSB8IGN1dCAtYjItYAorICAgIHRhcmdldF9maWxlcz0iJHRhcmdldF9maWxlcyAkbGlua19uYW1lIgogZG9uZQogCiAjc29ydCB0aGUgZmlsZXMKLXRhcmdldF9maWxlcz1gZm9yIGkgaW4gJG5ld190YXJnZXRfZmlsZXM7IGRvIGVjaG8gJGk7IGRvbmUgfCBzb3J0YAordGFyZ2V0X2ZpbGVzPWBmb3IgaSBpbiAkdGFyZ2V0X2ZpbGVzOyBkbyBlY2hvICRpOyBkb25lIHwgc29ydGAKIAogI3Rlc3QgaWYgYW4gYXJjaGl2ZSBuYW1lIHdhcyBzdXBwbGllZAogI2lmIG5vdCB1c2UgdGhlIG1kNSBvZiBhbGwgZmlsZXMgYXMgdGhlIGFyY2hpdmUgbmFtZQogaWYgdGVzdCAteiAiJGFyY2hpdmVfbmFtZSI7IHRoZW4KLSAgbWQ1c3VtPU5PTkUKLSAgZm9yIGZpbGUgaW4gL3Vzci9iaW4vbWQ1c3VtIC9iaW4vbWQ1IC91c3IvYmluL21kNTsgZG8KLSAgICBpZiB0ZXN0IC14ICRmaWxlOyB0aGVuCi0gICAgICBtZDVzdW09JGZpbGUKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQorICAgIG1kNXN1bT1OT05FCisgICAgZm9yIGZpbGUgaW4gL3Vzci9iaW4vbWQ1c3VtIC9iaW4vbWQ1IC91c3IvYmluL21kNTsgZG8KKyAgICAgICAgaWYgdGVzdCAteCAkZmlsZTsgdGhlbgorICAgICAgICAgICAgbWQ1c3VtPSRmaWxlCisgICAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgIGRvbmUKIAotICAjY2FsY3VsYXRlIG1kNSBhbmQgdXNlIGl0IGFzIHRoZSBhcmNoaXZlIG5hbWUKLSAgYXJjaGl2ZV9uYW1lPWBmb3IgaSBpbiAkdGFyZ2V0X2ZpbGVzOyBkbyB0ZXN0IC1mICR0ZW1wZGlyLyRpICYmICRtZDVzdW0gJHRlbXBkaXIvJGk7IGRvbmUgfCBzZWQgLWUgJ3MvIC4qJC8vJyB8ICRtZDVzdW0gfCBzZWQgLWUgJ3MvIC4qJC8vJ2AudGFyLmd6IHx8IHsKLSAgICBpZiB0ZXN0IC16ICIkc2lsZW50IjsgdGhlbgotICAgICBlY2hvICJDb3VsZG4ndCBjb21wdXRlIE1ENSBzdW0uIgotICAgIGZpCi0gICAgZXhpdCAyCi0gIH0KLSAgbXlkaXI9YHB3ZGAKLWVsc2UKLSAgbXlkaXI9ImBkaXJuYW1lICIkYXJjaGl2ZV9uYW1lImAiCi0KLSAgI2NoZWNrIGlmIHdlIGhhdmUgYSBmdWxsIHBhdGggb3Igb25seSBhIGZpbGVuYW1lCi0gIGlmIHRlc3QgIiRteWRpciIgPSAiLiIgOyB0aGVuCisgICAgI2NhbGN1bGF0ZSBtZDUgYW5kIHVzZSBpdCBhcyB0aGUgYXJjaGl2ZSBuYW1lCisgICAgYXJjaGl2ZV9uYW1lPWBmb3IgaSBpbiAkdGFyZ2V0X2ZpbGVzOyBkbyB0ZXN0IC1mICR0ZW1wZGlyLyRpICYmICRtZDVzdW0gJHRlbXBkaXIvJGk7IGRvbmUgfCBzZWQgLWUgJ3MvIC4qJC8vJyB8ICRtZDVzdW0gfCBzZWQgLWUgJ3MvIC4qJC8vJ2AudGFyLmd6IHx8IHsKKyAgICAgICAgcHJpbnRfb3V0cHV0ICJDb3VsZG4ndCBjb21wdXRlIE1ENSBzdW0uIgorICAgICAgICBleGl0IDIKKyAgICB9CiAgICAgbXlkaXI9YHB3ZGAKLSAgZWxzZQotICAgIG15ZGlyPSIiCi0gIGZpCitlbHNlCisgICAgbXlkaXI9ImBkaXJuYW1lICIkYXJjaGl2ZV9uYW1lImAiCisKKyAgICAjY2hlY2sgaWYgd2UgaGF2ZSBhIGZ1bGwgcGF0aCBvciBvbmx5IGEgZmlsZW5hbWUKKyAgICBpZiB0ZXN0ICIkbXlkaXIiID0gIi4iIDsgdGhlbgorICAgICAgICBteWRpcj1gcHdkYAorICAgIGVsc2UKKyAgICAgICAgbXlkaXI9IiIKKyAgICBmaQogZmkKIAotaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLWVjaG8gImNyZWF0aW5nICRhcmNoaXZlX25hbWUiCi1maQorcHJpbnRfb3V0cHV0ICJjcmVhdGluZyAkYXJjaGl2ZV9uYW1lIgogCiBjZCAkdGVtcGRpcgotdGFyIC1jemhmICIkbXlkaXIvJGFyY2hpdmVfbmFtZSIgJHRhcmdldF9maWxlcyB8fCB7Ci0gaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLSAgZWNobyAiQ291bGRuJ3QgY3JlYXRlIGFyY2hpdmUiCi0gZmkKLSAgZXhpdCAzCisjIEFkZCBldmVyeXRoaW5nIGluIHRoZSB0ZW1wIGRpcmVjdG9yeS4gVGFyIGRvZXNuJ3QgbGlrZSB0byBiZSBnaXZlbiBmaWxlcyB3aXRoCisjICIuLiIgaW4gdGhlbSwgd2hpY2ggZnJlcXVlbnRseSBoYXBwZW5zIGluICR0YXJnZXRfZmlsZXMsIGFuZCB3aWxsIHN0cmlwIG9mZgorIyB0aGUgcGF0aCBwcmVmaXggcGFzdCB0aGUgb2ZmZW5kaW5nICIuLiIuIFRoaXMgbWFrZXMgdGhlIGFyY2hpdmUgZ2VuZXJhdGUKKyMgaW5jb3JyZWN0bHkKK3RhciAtY3pmICIkbXlkaXIvJGFyY2hpdmVfbmFtZSIgLiB8fCB7CisgICAgcHJpbnRfb3V0cHV0ICJDb3VsZG4ndCBjcmVhdGUgYXJjaGl2ZSIKKyAgICBleGl0IDMKIH0KIGNkIC4uCiBybSAtcmYgJHRlbXBkaXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52XzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52XzAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTM5NDVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnZfMC4xLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiaWNlY2MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHZlcnNpb24gb2YgdGhlIGljZWNjLWNyZWF0ZS1lbnYgc2NyaXB0IHRoYXQgaGFzIFwKK2JlZW4gbW9kaWZpZWQgaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIHdpdGggT0UuIgorU0VDVElPTiA9ICJiYXNlIgorIyBzb3VyY2UgZmlsZSBoYXMganVzdCBhICJHUEwiIHdvcmQsIGJ1dCB1cHN0cmVhbSBpcyBHUEx2MisuCisjIG1vc3QgcHJvYmFibHkganVzdCBHUEwgd291bGQgYmUgYSBtaXN0YWtlCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnY7YmVnaW5saW5lPTI7ZW5kbGluZT01O21kNT1hZTFkZjNkNmEwNThiZmRhNDBiNjYwOTRjNWY2MDY1ZiIKKworUFIgPSAicjIiCisKK0RFUEVORFMgPSAiIgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworIyBUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhlcmUgaXMgZGVwZW5kZW5jeSBsb29wIGZyb20gcXVpbHQtbmF0aXZlCisjIERlcGVuZGVuY3kgbG9vcCAjMSBmb3VuZDoKKyMgIFRhc2sgMTA5MDcgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9faW5zdGFsbCkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fY29tcGlsZSddKQorIyAgVGFzayAxMDkwOCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19pbnN0YWxsJ10pCisjICBUYXNrIDEwOTk3IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX3BhdGNoKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3VucGFjaycsICdxdWlsdC1uYXRpdmUsIGRvX3BvcHVsYXRlX3N5c3Jvb3QnXSkKKyMgIFRhc2sgMTEwMDEgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3BhdGNoJ10pCisjICBUYXNrIDExMDAyIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2NvbXBpbGUpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29uZmlndXJlJ10pCisjICBUYXNrIDEwOTk4IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2luc3RhbGwpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29tcGlsZSddKQorIyAgVGFzayAxMDk5OSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2luc3RhbGwnXSkKKyMgIFRhc2sgMTA5MTAgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19wYXRjaCcsICdpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fcG9wdWxhdGVfc3lzcm9vdCddKQorIyAgVGFzayAxMDkxMSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19jb21waWxlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19jb25maWd1cmUnXSkKK1BBVENIVE9PTCA9ICJwYXRjaCIKK1NSQ19VUkkgPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnYiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaWNlY2MtY3JlYXRlLWVudiAke0R9LyR7YmluZGlyfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2MtZW52LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLWVudi5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDc2MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLWVudi5zaApAQCAtMCwwICsxLDQ5IEBACisjISAvYmluL3NoCisjIENvcHlyaWdodCAoYykgMjAxOCBKb3NodWEgV2F0dCwgR2FybWluIEludGVybmF0aW9uYWwsSW5jLgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisjIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorIyBTT0ZUV0FSRS4KKyMKKworaWYgWyAteiAiJElDRUNDX1BBVEgiIF07IHRoZW4KKyAgICBJQ0VDQ19QQVRIPSQod2hpY2ggaWNlY2MgMj4gL2Rldi9udWxsKQorZmkKKworaWYgWyAtbiAiJElDRUNDX1BBVEgiIF07IHRoZW4KKyAgICAjIERlZmF1bHQgdG8gZGlzYWJsaW5nIHRoZSBjYXJldCB3b3JrYXJvdW5kLiBJZiBzZXQgdG8gIjEiLCBpY2VjYyB3aWxsCisgICAgIyBsb2NhbGx5IHJlY29tcGlsZSBhbnkgZmlsZXMgdGhhdCBoYXZlIHdhcm5pbmdzLCB3aGljaCBjYW4gYWR2ZXJzZWx5CisgICAgIyBhZmZlY3QgcGVyZm9ybWFuY2UuCisgICAgIworICAgICMgU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaWNlY2MvaWNlY3JlYW0vaXNzdWVzLzE5MAorICAgIGlmIFsgLXogIiRJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EIiBdOyB0aGVuCisgICAgICAgIElDRUNDX0NBUkVUX1dPUktBUk9VTkQ9IjAiCisgICAgZmkKKyAgICBpZiBbICIkSUNFQ0NfQ0FSRVRfV09SS0FST1VORCIgIT0gIjEiIF07IHRoZW4KKyAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tZGlhZ25vc3RpY3Mtc2hvdy1jYXJldCIKKyAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAtZm5vLWRpYWdub3N0aWNzLXNob3ctY2FyZXQiCisgICAgZmkKKyAgICBleHBvcnQgSUNFQ0NfUEFUSCBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5ECisgICAgZXhwb3J0IElDRUNDX1ZFUlNJT049IiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL2ljZWNyZWFtL0BUT09MQ0hBSU5fRU5WQCIKKyAgICBleHBvcnQgSUNFQ0M9IiQod2hpY2ggJHtDUk9TU19DT01QSUxFfWdjYykiCisgICAgZXhwb3J0IElDRUNYWD0iJCh3aGljaCAke0NST1NTX0NPTVBJTEV9ZysrKSIKKyAgICBleHBvcnQgSUNFQVM9IiQod2hpY2ggJHtDUk9TU19DT01QSUxFfWFzKSIKKyAgICBleHBvcnQgUEFUSD0iJE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3Ivc2hhcmUvaWNlY3JlYW0vYmluOiRQQVRIIgorZWxzZQorICAgIGVjaG8gIkljZWNjIG5vdCBmb3VuZC4gRGlzYWJsaW5nIGRpc3RyaWJ1dGVkIGNvbXBpbGluZyIKK2ZpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDgwODI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLXNldHVwLnNoCkBAIC0wLDAgKzEsNDMgQEAKKyMhIC9iaW4vc2gKKyMgQ29weXJpZ2h0IChjKSAyMDE4IEpvc2h1YSBXYXR0LCBHYXJtaW4gSW50ZXJuYXRpb25hbCxJbmMuCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyMgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworIyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisjIFNPRlRXQVJFLgorIworCisjIFNldHVwIGVudmlyb25tZW50Citmb3IgZW52X3NldHVwX3NjcmlwdCBpbiBgbHMgJDEvZW52aXJvbm1lbnQtc2V0dXAtKmA7IGRvCisJLiAkZW52X3NldHVwX3NjcmlwdAorZG9uZQorCisjIElDRUNDX1BBVEggd2lsbCBoYXZlIGJlZW4gZm91bmQgaWNlY2MtZW52LnNoCitpZiBbIC16ICIkSUNFQ0NfUEFUSCIgXTsgdGhlbgorICAgIGV4aXQgMAorZmkKKworZWNobyAiU2V0dGluZyB1cCBJY2VDcmVhbSBkaXN0cmlidXRlZCBjb21waWxpbmcuLi4iCisKKyMgQ3JlYXRlIHRoZSBlbnZpcm9ubWVudAorbWtkaXIgLXAgImBkaXJuYW1lICRJQ0VDQ19WRVJTSU9OYCIKK2ljZWNjLWNyZWF0ZS1lbnYgJElDRUNDICRJQ0VDWFggJElDRUFTICRJQ0VDQ19WRVJTSU9OIHx8IGV4aXQgJD8KKworIyBDcmVhdGUgc3ltYm9saWMgbGlua3MKK2Q9IiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL2ljZWNyZWFtL2JpbiIKK21rZGlyIC1wICIkZCIKK2xuIC1zICIkSUNFQ0NfUEFUSCIgIiRkLyR7Q1JPU1NfQ09NUElMRX1nY2MiCitsbiAtcyAiJElDRUNDX1BBVEgiICIkZC8ke0NST1NTX0NPTVBJTEV9ZysrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vbmF0aXZlc2RrLWljZWNjLXRvb2xjaGFpbl8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9uYXRpdmVzZGstaWNlY2MtdG9vbGNoYWluXzAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDI3NTBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vbmF0aXZlc2RrLWljZWNjLXRvb2xjaGFpbl8wLjEuYmIKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTggSm9zaHVhIFdhdHQsIEdhcm1pbiBJbnRlcm5hdGlvbmFsLEluYy4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKK1NVTU1BUlkgPSAiR2VuZXJhdGVzIEljZWNyZWFtIHRvb2xjaGFpbiBmb3IgU0RLIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L2ljZWNjLWVudi5zaDtiZWdpbmxpbmU9MjtlbmRsaW5lPTIwO21kNT1kZDZiNjhjMWVmZWQ4YTlmYjA0ZTQwOWIzYjI4N2Q0NyIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworU1JDX1VSSSA9ICJcCisgICAgZmlsZTovL2ljZWNjLWVudi5zaCBcCisgICAgZmlsZTovL2ljZWNjLXNldHVwLnNoIFwKKyAgICAiCisKK2luaGVyaXQgbmF0aXZlc2RrCisKK0VOVl9OQU1FPSIke0RJU1RST30tJHtUQ0xJQkN9LSR7U0RLX0FSQ0h9LSR7VFVORV9QS0dBUkNIfS0ke0RJU1RST19WRVJTSU9OfS50YXIuZ3oiCisKK2RvX2NvbXBpbGUoKSB7Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtTREtQQVRITkFUSVZFfSR7ZGF0YWRpcn0vaWNlY3JlYW0vYmluCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaWNlY2MtZW52LnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvCisgICAgc2VkIC1pICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvaWNlY2MtZW52LnNoIFwKKyAgICAgICAgLWUgInMsQFRPT0xDSEFJTl9FTlZALCR7RU5WX05BTUV9LGciCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pY2VjYy1zZXR1cC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvCisgICAgc2VkIC1pICR7RH0ke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC9pY2VjYy1zZXR1cC5zaCBcCisgICAgICAgIC1lICJzLEBUT09MQ0hBSU5fRU5WQCwke0VOVl9OQU1FfSxnIgorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ID0gIiR7U0RLUEFUSE5BVElWRX0iCitSREVQRU5EU18ke1BOfSArPSAibmF0aXZlc2RrLWljZWNjLWNyZWF0ZS1lbnYiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9wZXJsLTUyMi1kZXByZWNhdGlvbnMucGF0Y2gKaW5kZXggZWI1MjE3Mi4uZjEwNDllNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9wZXJsLTUyMi1kZXByZWNhdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9wZXJsLTUyMi1kZXByZWNhdGlvbnMucGF0Y2gKQEAgLTEwLDkgKzEwLDExIEBACiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvaW50bHRvb2wvK2J1Zy8xNDY1MDEwKQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotLS0tIGludGx0b29sLTAuNTEuMC1PUklHL2ludGx0b29sLXVwZGF0ZS5pbgkyMDE1LTA1LTI3IDAwOjIwOjQzLjAzODM3OTk2MyArMDIwMAotKysrIGludGx0b29sLTAuNTEuMC9pbnRsdG9vbC11cGRhdGUuaW4JMjAxNS0wNS0yNyAwMDoyMzo1My4zMDkwNzgwNTIgKzAyMDAKLUBAIC0xMDYyLDcgKzEwNjIsNyBAQAorSW5kZXg6IGludGx0b29sLTAuNTEuMC9pbnRsdG9vbC11cGRhdGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpbnRsdG9vbC0wLjUxLjAub3JpZy9pbnRsdG9vbC11cGRhdGUuaW4KKysrKyBpbnRsdG9vbC0wLjUxLjAvaW50bHRvb2wtdXBkYXRlLmluCitAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3ViIFN1YnN0aXR1dGVWYXJpYWJsZQogIAl9CiAgICAgIH0KICAKQEAgLTIxLDcgKzIzLDcgQEAKICAgICAgewogIAlteSAkcmVzdCA9ICQzOwogIAlteSAkdW50b3VjaGVkID0gJDE7Ci1AQCAtMTE5MCwxMCArMTE5MCwxMCBAQAorQEAgLTExOTAsMTAgKzExOTAsMTAgQEAgc3ViIEZpbmRQYWNrYWdlTmFtZQogIAkkbmFtZSAgICA9fiBzL1woKyQvL2c7CiAgCSR2ZXJzaW9uID1+IHMvXCgrJC8vZzsKICAKQEAgLTM2LDcgKzM4LDcgQEAKICAgICAgfQogIAogICAgICBpZiAoJGNvbmZfc291cmNlID1+IC9eQUNfSU5JVFwoKFteLFwpXSspLChbXixcKV0rKVssXT8oW14sXCldKyk/L20pCi1AQCAtMTIxOSwxMSArMTIxOSwxMSBAQAorQEAgLTEyMTksMTEgKzEyMTksMTEgQEAgc3ViIEZpbmRQYWNrYWdlTmFtZQogIAkkdmVyc2lvbiA9fiBzL1woKyQvL2c7CiAgICAgICAgICAkYnVndXJsICA9fiBzL1woKyQvL2cgaWYgKGRlZmluZWQgJGJ1Z3VybCk7CiAgCkBAIC01Miw0ICs1NCw0IEBACiArICAgICAgICAkdmFyaGFzaHsiUEFDS0FHRV9CVUdSRVBPUlQifSA9ICRidWd1cmwgaWYgKGRlZmluZWQgJGJ1Z3VybCBhbmQgbm90ICRidWd1cmwgPX4gL1wkXHs/XHcrXH0/Lyk7CiAgICAgIH0KICAKLSAgICAgIyBccyBtYWtlcyB0aGlzIG5vdCB3b3JrLCB3aHk/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAjIFxzIG1ha2VzIHRoaXMgbm90IHdvcmssIHdoeT8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzN2JlNWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIDdiMjRmOGJkOTVhZDRmN2QwMGM5M2NhMmFkOTk4YzE0YTAyNjZkYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBtYXJ4aW4gPG1saXNrYUBzdXNlLmN6PgotRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAwODo0MjoxMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBBZGQgRkFMTFRIUlUgY29tbWVudCB0byBoYW5kbGUgR0NDNyB3YXJuaW5ncy4KLQotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0ganNvbl9vYmplY3QuYyAgfCAgMSArCi0ganNvbl90b2tlbmVyLmMgfCAgMSArCi0gbGlua2hhc2guYyAgICAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2pzb25fb2JqZWN0LmMgYi9qc29uX29iamVjdC5jCi1pbmRleCA2Y2M3M2JjLi43N2U4YjIxIDEwMDY0NAotLS0tIGEvanNvbl9vYmplY3QuYwotKysrIGIvanNvbl9vYmplY3QuYwotQEAgLTU1Miw2ICs1NTIsNyBAQCBpbnQ2NF90IGpzb25fb2JqZWN0X2dldF9pbnQ2NChzdHJ1Y3QganNvbl9vYmplY3QgKmpzbykKLSAgICAgcmV0dXJuIGpzby0+by5jX2Jvb2xlYW47Ci0gICBjYXNlIGpzb25fdHlwZV9zdHJpbmc6Ci0gCWlmIChqc29uX3BhcnNlX2ludDY0KGpzby0+by5jX3N0cmluZy5zdHIsICZjaW50KSA9PSAwKSByZXR1cm4gY2ludDsKLSsJLyogRkFMTFRIUlUgKi8KLSAgIGRlZmF1bHQ6Ci0gICAgIHJldHVybiAwOwotICAgfQotZGlmZiAtLWdpdCBhL2pzb25fdG9rZW5lci5jIGIvanNvbl90b2tlbmVyLmMKLWluZGV4IDlhNzYyOTMuLmFlN2IxYWUgMTAwNjQ0Ci0tLS0gYS9qc29uX3Rva2VuZXIuYwotKysrIGIvanNvbl90b2tlbmVyLmMKLUBAIC0zMDUsNiArMzA1LDcgQEAgc3RydWN0IGpzb25fb2JqZWN0KiBqc29uX3Rva2VuZXJfcGFyc2VfZXgoc3RydWN0IGpzb25fdG9rZW5lciAqdG9rLAotICAgICAgICAgICAgIHRvay0+ZXJyID0ganNvbl90b2tlbmVyX2Vycm9yX3BhcnNlX3VuZXhwZWN0ZWQ7Ci0gICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgICB9Ci0rCS8qIEZBTExUSFJVICovCi0gICAgICAgY2FzZSAnIic6Ci0gCXN0YXRlID0ganNvbl90b2tlbmVyX3N0YXRlX3N0cmluZzsKLSAJcHJpbnRidWZfcmVzZXQodG9rLT5wYik7Ci1kaWZmIC0tZ2l0IGEvbGlua2hhc2guYyBiL2xpbmtoYXNoLmMKLWluZGV4IDcxMmMzODcuLjc0ZTNiMGYgMTAwNjQ0Ci0tLS0gYS9saW5raGFzaC5jCi0rKysgYi9saW5raGFzaC5jCi1AQCAtMzc2LDE3ICszNzYsMTcgQEAgc3RhdGljIHVpbnQzMl90IGhhc2hsaXR0bGUoIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGxlbmd0aCwgdWludDMyX3QgaW5pdHZhbCkKLSAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsYXN0IGJsb2NrOiBhZmZlY3QgYWxsIDMyIGJpdHMgb2YgKGMpICovCi0gICAgIHN3aXRjaChsZW5ndGgpICAgICAgICAgICAgICAgICAgIC8qIGFsbCB0aGUgY2FzZSBzdGF0ZW1lbnRzIGZhbGwgdGhyb3VnaCAqLwotICAgICB7Ci0tICAgIGNhc2UgMTI6IGMrPSgodWludDMyX3Qpa1sxMV0pPDwyNDsKLS0gICAgY2FzZSAxMTogYys9KCh1aW50MzJfdClrWzEwXSk8PDE2OwotLSAgICBjYXNlIDEwOiBjKz0oKHVpbnQzMl90KWtbOV0pPDw4OwotLSAgICBjYXNlIDkgOiBjKz1rWzhdOwotLSAgICBjYXNlIDggOiBiKz0oKHVpbnQzMl90KWtbN10pPDwyNDsKLS0gICAgY2FzZSA3IDogYis9KCh1aW50MzJfdClrWzZdKTw8MTY7Ci0tICAgIGNhc2UgNiA6IGIrPSgodWludDMyX3Qpa1s1XSk8PDg7Ci0tICAgIGNhc2UgNSA6IGIrPWtbNF07Ci0tICAgIGNhc2UgNCA6IGErPSgodWludDMyX3Qpa1szXSk8PDI0OwotLSAgICBjYXNlIDMgOiBhKz0oKHVpbnQzMl90KWtbMl0pPDwxNjsKLS0gICAgY2FzZSAyIDogYSs9KCh1aW50MzJfdClrWzFdKTw8ODsKLSsgICAgY2FzZSAxMjogYys9KCh1aW50MzJfdClrWzExXSk8PDI0OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDExOiBjKz0oKHVpbnQzMl90KWtbMTBdKTw8MTY7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgMTA6IGMrPSgodWludDMyX3Qpa1s5XSk8PDg7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgOSA6IGMrPWtbOF07IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgOCA6IGIrPSgodWludDMyX3Qpa1s3XSk8PDI0OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDcgOiBiKz0oKHVpbnQzMl90KWtbNl0pPDwxNjsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSA2IDogYis9KCh1aW50MzJfdClrWzVdKTw8ODsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSA1IDogYis9a1s0XTsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSA0IDogYSs9KCh1aW50MzJfdClrWzNdKTw8MjQ7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgMyA6IGErPSgodWludDMyX3Qpa1syXSk8PDE2OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDIgOiBhKz0oKHVpbnQzMl90KWtbMV0pPDw4OyAvKiBGQUxMVEhSVSAqLwotICAgICBjYXNlIDEgOiBhKz1rWzBdOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgY2FzZSAwIDogcmV0dXJuIGM7Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxY2YxMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJDIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFuaXB1bGF0ZSBKU09OIGRhdGEiCi1ERVNDUklQVElPTiA9ICJKU09OLUMgaW1wbGVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGluZyBvYmplY3QgbW9kZWwgdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBjb25zdHJ1Y3QgSlNPTiBvYmplY3RzIGluIEMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pzb24tYy9qc29uLWMvd2lraSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGU1NGI2MGZiYmMzNTEyM2JhMTkzZmVhOGVlMjE2ZjIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NWY3ODUzZjdkOGNmNjY0NTU0Y2UzZmE3MWJmMWM3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTEzNjQ1MWE3OTMyZDgwYjdkMTk3YjEwNDQxZTI2ZTM5NDI4ZDY3YjE0NDNlYzQzYmJiYTgyNDcwNWUxMTIzIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJqc29uLWMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLSMganNvbi1jIHJlbGVhc2VzIHBhZ2UgaXMgZmV0Y2hpbmcgdGhlIGxpc3Qgb2YgcmVsZWFzZXMgaW4gc29tZSB3ZWlyZCBYTUwgZm9ybWF0Ci0jIGZyb20gaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcyBhbmQgcHJvY2Vzc2VzIGl0IHdpdGggamF2YXNjcmlwdCA6LS8KLSNVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy9pbmRleC5odG1sIgotUkVDSVBFX1VQU1RSRUFNX1ZFUlNJT04gPSAiMC4xMi4xIgotUkVDSVBFX1VQU1RSRUFNX0RBVEUgPSAiSnVuIDA3LCAyMDE2IgotQ0hFQ0tfREFURSA9ICJBcHIgMTksIDIwMTciCi0KLVJQUk9WSURFU18ke1BOfSA9ICJsaWJqc29uIgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtcmRyYW5kIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIENsZWFuIHVwIGF1dG9jb25mIGNydWZ0IHRoYXQgc2hvdWxkIG5vdCBiZSBpbiB0aGUgdGFyYmFsbAotICAgIHJtIC1mICR7U30vY29uZmlnLnN0YXR1cwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MzE5ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkMgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIEpTT04gZGF0YSIKK0RFU0NSSVBUSU9OID0gIkpTT04tQyBpbXBsZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9iamVjdCBtb2RlbCB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNvbnN0cnVjdCBKU09OIG9iamVjdHMgaW4gQy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy93aWtpIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZTU0YjYwZmJiYzM1MTIzYmExOTNmZWE4ZWUyMTZmMiIKKworU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMWZjNWQ5MGM3NzM3NWU1ZmM4NDAxZThiOWVmYmYyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzE2NzgwYmU5YWQxNmM0MmQ3YzI2YjAxNWE3ODRmZDVkZjRiMDkwOWZlZjBhYmE1MWNmYjEzZTQ5MmFjMjRkIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJqc29uLWMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKyMganNvbi1jIHJlbGVhc2VzIHBhZ2UgaXMgZmV0Y2hpbmcgdGhlIGxpc3Qgb2YgcmVsZWFzZXMgaW4gc29tZSB3ZWlyZCBYTUwgZm9ybWF0CisjIGZyb20gaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcyBhbmQgcHJvY2Vzc2VzIGl0IHdpdGggamF2YXNjcmlwdCA6LS8KKyNVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy9pbmRleC5odG1sIgorUkVDSVBFX1VQU1RSRUFNX1ZFUlNJT04gPSAiMC4xMyIKK1JFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkRlYyAwNywgMjAxNyIKK0NIRUNLX0RBVEUgPSAiSmFuIDMxLCAyMDE4IgorCitSUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKKyAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKaW5kZXggMjgwZWRiNy4uY2JkMDM2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCkBAIC0xLDcgKzEsOCBAQAotRnJvbSAzMDEyYTkzNzQ1MjIzNzUxY2M5NzllMzc3MDIwN2EwOWEwNzViZWM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyYmYwNjY2NTQ0MjkzZGNmYWMyZjY3YjY3OGUyNDM1M2FjZGNkNGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDcgRmViIDIwMTcgMTI6MTY6MDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcworU3ViamVjdDogW1BBVENIIDIvMl0gR2V0IHBhcmFtZXRlcnMgZm9yIGJvdGggbGlic29sdiBhbmQgbGlic29sdmV4dCAobGliZG5mIGlzCisKICB1c2luZyBib3RoKQogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KQEAgLTEyLDEyICsxMywxMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggOGIyYWI5YS4uZTJkMzNkNyAxMDA2NDQKK2luZGV4IGNhMjgwZjMuLjZhYjk4MjcgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKIEBAIC0yOSw3ICsyOSw3IEBAIGZpbmRfcGFja2FnZSAoUGtnQ29uZmlnIFJFUVVJUkVEKQogIFNFVCAoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzKQotIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ0LjAgUkVRVUlSRUQpCisgUEtHX0NIRUNLX01PRFVMRVMoR0xJQiBnaW8tdW5peC0yLjA+PTIuNDYuMCBSRVFVSVJFRCkKICBGSU5EX0xJQlJBUlkgKFJQTURCX0xJQlJBUlkgTkFNRVMgcnBtZGIpCiAtUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdikKICtQS0dfQ0hFQ0tfTU9EVUxFUyAoTElCU09MViBSRVFVSVJFRCBsaWJzb2x2IGxpYnNvbHZleHQpCkBAIC0yNSw1ICsyNiw1IEBACiAgaWYgKEVOQUJMRV9SSFNNX1NVUFBPUlQpCiAgICAgIHBrZ19jaGVja19tb2R1bGVzIChSSFNNIFJFUVVJUkVEIGxpYnJoc20pCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCmluZGV4IDFlYTkzMTAuLjZjZjQ4YTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaApAQCAtMSw3ICsxLDggQEAKLUZyb20gNTVjYmU2ZjQwZmUwODM2Mzg1ZTFhNzI0MWVjODExY2JlOTllNTg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmNlYTVjNTA2M2EyZDVmMDdkYmU2ZjQwYWVlMzAzNzBmYzRiYTY1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyNDo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDQvNV0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBTZXQgbGlic29sdiB2YXJpYWJsZXMgd2l0aCBwa2ctY29uZmlnIChjbWFrZSdzIG93biBtb2R1bGUKKwogIGRvZXNuJ3Qgd29yayBwcm9wZXJseSkuCiAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQpAQCAtMTIsMTIgKzEzLDEyIEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggYTc1ZGYwNC4uOGIyYWI5YSAxMDA2NDQKK2luZGV4IDg4NzViYmYuLmNhMjgwZjMgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKIEBAIC0yOSw3ICsyOSw4IEBAIGZpbmRfcGFja2FnZSAoUGtnQ29uZmlnIFJFUVVJUkVEKQogIFNFVCAoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzKQotIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ0LjAgUkVRVUlSRUQpCisgUEtHX0NIRUNLX01PRFVMRVMoR0xJQiBnaW8tdW5peC0yLjA+PTIuNDYuMCBSRVFVSVJFRCkKICBGSU5EX0xJQlJBUlkgKFJQTURCX0xJQlJBUlkgTkFNRVMgcnBtZGIpCiAtZmluZF9wYWNrYWdlIChMaWJTb2x2IDAuNi4yMSBSRVFVSVJFRCBDT01QT05FTlRTIGV4dCkKICtQS0dfQ0hFQ0tfTU9EVUxFUyAoTElCU09MViBSRVFVSVJFRCBsaWJzb2x2KQpAQCAtMjYsNSArMjcsNSBAQAogICAgICBwa2dfY2hlY2tfbW9kdWxlcyAoUkhTTSBSRVFVSVJFRCBsaWJyaHNtKQogICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzICgke1JIU01fSU5DTFVERV9ESVJTfSkKIC0tIAotMi4xMS4wCisyLjE0LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjMWQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjExLjEuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBzaW1wbGlmaWVkIEMgYW5kIFB5dGhvbiBBUEkgdG8gbGlic29sdiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNjBmOTc5YmQ4ZGI2NTEyMjljNTU5YzE0MTJmMWViODgwMjU3MTI3ZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCisKK2luaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQorCitFWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAorICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFkOTM0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIHNpbXBsaWZpZWQgQyBhbmQgUHl0aG9uIEFQSSB0byBsaWJzb2x2IgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICIxYjE5OTUwZTgyZDg4ZWVjMjhkMDFiNGU3YzFkYTcxMmM5NDEyMDFkIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnNvbHYgbGliY2hlY2sgbGlicmVwbyBycG0gZ3RrLWRvYyIKLQotaW5oZXJpdCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBjbWFrZSBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlCi0KLUVYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EV0lUSF9NQU49T0ZGIC1EUFlUSE9OX0RFU0lSRUQ9MyBcCi0gICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURXSVRIX0dJUj1PTicsICctRFdJVEhfR0lSPU9GRicsIGQpfSBcCi0gICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFdJVEhfR0lSPU9GRiIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURXSVRIX0dJUj1PRkYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAxLUNvcnJlY3RseS1zZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhhNThmMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAxLUNvcnJlY3RseS1zZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMzZkODc5MTkyMjNkYjliMDU0ODYyYWQzOGNkZGE4ZDkyMjJhMmJhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODowNDozNSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvNF0gQ29ycmVjdGx5IHNldCB0aGUgbGlicmFyeSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby9wdWxsLzExMF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbGlicmVwby9DTWFrZUxpc3RzLnR4dCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlicmVwby9DTWFrZUxpc3RzLnR4dCBiL2xpYnJlcG8vQ01ha2VMaXN0cy50eHQKLWluZGV4IDJmZTc2ZDguLjUwMjZkZWYgMTAwNjQ0Ci0tLS0gYS9saWJyZXBvL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJyZXBvL0NNYWtlTGlzdHMudHh0Ci1AQCAtNjAsNyArNjAsOCBAQCBDT05GSUdVUkVfRklMRSgidmVyc2lvbi5oLmluIiAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3ZlcnNpb24uaCIgQE9OTFkpCi0gSUYgKENNQUtFX1NJWkVPRl9WT0lEX1AgTUFUQ0hFUyAiOCIpCi0gICBTRVQgKExJQl9TVUZGSVggIjY0IikKLSBFTkRJRiAoQ01BS0VfU0laRU9GX1ZPSURfUCBNQVRDSEVTICI4IikKLS1TRVQgKExJQl9JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliJHtMSUJfU1VGRklYfSIpCi0rI1NFVCAoTElCX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIke0xJQl9TVUZGSVh9IikKLStTRVQgKExJQl9JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQotIAotIElOU1RBTEwoRklMRVMgJHtsaWJyZXBvX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvbGlicmVwbykKLSBJTlNUQUxMKFRBUkdFVFMgbGlicmVwbyBMSUJSQVJZIERFU1RJTkFUSU9OICR7TElCX0lOU1RBTExfRElSfSkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaAppbmRleCA3MTM4ZGZjLi5kNjlkZWI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoCkBAIC0xLDQxICsxLDYyIEBACi1Gcm9tIDE1NzBhZDMzZGQ3ZTVkODNmM2VlODBiZDEwNGIxMTQ3MDlhYzFlMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDViNjg0OWQ5ZDdlMDMwYzNhNTIxYjUyNDVkODZmODUzYjAyNzFhNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MDU6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gb2J0YWluIFBZVEhPTl9JTlNUQUxMX0RJUiBieSBydW5uaW5nCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3QgdHJ5IHRvIG9idGFpbiBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZwogIHB5dGhvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIGxpYnJlcG8vcHl0aG9uL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gbGlicmVwby9weXRob24vcHl0aG9uMy9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBsaWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0IHwgMTIgKysrKysrLS0tLS0tCisgbGlicmVwby9weXRob24vcHl0aG9uMy9DTWFrZUxpc3RzLnR4dCB8IDEyICsrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0IGIvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMzYxNWUxNy4uY2ZmYTk5ZiAxMDA2NDQKK2luZGV4IDVmZmJkNjIuLjkwZDNjMjIgMTAwNjQ0CiAtLS0gYS9saWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0CiArKysgYi9saWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw2ICsxLDYgQEAKK0BAIC0xLDExICsxLDExIEBACiAgRklORF9QQUNLQUdFIChQeXRob25MaWJzIDIgKQogIEZJTkRfUEFDS0FHRSAoUHl0aG9uSW50ZXJwIDIgUkVRVUlSRUQpCi0tRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCistRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgIgorLWZyb20gc3lzIGltcG9ydCBzdGRvdXQKKy1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCistcGF0aD1zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSwgcHJlZml4PScke0NNQUtFX0lOU1RBTExfUFJFRklYfScpCistc3Rkb3V0LndyaXRlKHBhdGgpIgorLU9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCisrI0VYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICIKKysjZnJvbSBzeXMgaW1wb3J0IHN0ZG91dAorKyNmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCisrI3BhdGg9c3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUsIHByZWZpeD0nJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0nKQorKyNzdGRvdXQud3JpdGUocGF0aCkiCisrI09VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiAgSU5DTFVERV9ESVJFQ1RPUklFUyAoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKICAKICBNRVNTQUdFKFNUQVRVUyAiUHl0aG9uIGluc3RhbGwgZGlyIGlzICR7UFlUSE9OX0lOU1RBTExfRElSfSIpCiBkaWZmIC0tZ2l0IGEvbGlicmVwby9weXRob24vcHl0aG9uMy9DTWFrZUxpc3RzLnR4dCBiL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKLWluZGV4IGRmZWNhYzkuLjM4YmNjNzIgMTAwNjQ0CitpbmRleCA0NzU1OWY3Li5iMzlhZGMyIDEwMDY0NAogLS0tIGEvbGlicmVwby9weXRob24vcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAogKysrIGIvbGlicmVwby9weXRob24vcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotQEAgLTEwLDcgKzEwLDcgQEAgbWVzc2FnZSgiLS0tICR7UFlUSE9OX0lOQ0xVREVfRElSfSIpCitAQCAtMTAsMTIgKzEwLDEyIEBAIG1lc3NhZ2UoIi0tLSAke1BZVEhPTl9JTkNMVURFX0RJUn0iKQogIAogIEZJTkRfUEFDS0FHRShQeXRob25MaWJzIDMuMCkKICBGSU5EX1BBQ0tBR0UoUHl0aG9uSW50ZXJwIDMuMCBSRVFVSVJFRCkKLS1FWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0rI0VYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0OyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUpKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKKy1FWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiCistZnJvbSBzeXMgaW1wb3J0IHN0ZG91dAorLWZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKy1wYXRoPXN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlLCBwcmVmaXg9JyR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9JykKKy1zdGRvdXQud3JpdGUocGF0aCkiCistT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKKysjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgIgorKyNmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0CisrI2Zyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKysjcGF0aD1zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSwgcHJlZml4PScke0NNQUtFX0lOU1RBTExfUFJFRklYfScpCisrI3N0ZG91dC53cml0ZShwYXRoKSIKKysjT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKICBJTkNMVURFX0RJUkVDVE9SSUVTICgke1BZVEhPTl9JTkNMVURFX1BBVEh9KQogIAogIE1FU1NBR0UoU1RBVFVTICJQeXRob24zIGluc3RhbGwgZGlyIGlzICR7UFlUSE9OX0lOU1RBTExfRElSfSIpCiAtLSAKLTIuMTEuMAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljYTYwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIGIxYTVjOTJkYmQxZDExZjFhZmRjMDk0ZmNjZWE2NGRlMzM0ZDI3ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MDY6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIHRlc3RzOiBmaXggYSByYWNlIHdoZW4gZGVsZXRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby9wdWxsLzExMF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkgfCAyICstCi0gdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19kb3dubG9hZGluZy5weSBiL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5Ci1pbmRleCBhZDU5N2RjLi40YTMyNTE5IDEwMDY0NAotLS0tIGEvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkKLSsrKyBiL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5Ci1AQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBUZXN0Q2FzZVl1bVJlcG9Eb3dubG9hZGluZyhUZXN0Q2FzZVdpdGhGbGFzayk6Ci0gICAgICAgICAgICAgb3MuZW52aXJvbi5wb3AoJ0dOVVBHSE9NRScpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIG9zLmVudmlyb25bJ0dOVVBHSE9NRSddID0gc2VsZi5fZ251cGdob21lCi0tICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudG1wZGlyKQotKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpciwgVHJ1ZSkKLSAKLSAgICAgZGVmIHRlc3RfZG93bmxvYWRfcmVwb18wMShzZWxmKToKLSAgICAgICAgIGggPSBsaWJyZXBvLkhhbmRsZSgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19sb2NhdGluZy5weQotaW5kZXggOGY0YmVhNS4uZGI0Mjk0YyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2xvY2F0aW5nLnB5Ci0rKysgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19sb2NhdGluZy5weQotQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgVGVzdENhc2VZdW1SZXBvTG9jYXRpbmcoVGVzdENhc2UpOgotICAgICAgICAgICAgIG9zLmVudmlyb24ucG9wKCdHTlVQR0hPTUUnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBvcy5lbnZpcm9uWydHTlVQR0hPTUUnXSA9IHNlbGYuX2dudXBnaG9tZQotLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpcikKLSsgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIsIFRydWUpCi0gCi0gICAgIGRlZiB0ZXN0X3JlYWRfbWlycm9ybGlzdChzZWxmKToKLSAgICAgICAgIGggPSBsaWJyZXBvLkhhbmRsZSgpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzdkMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhNGJiYmNjY2U2ZWRjMWEyZDFiZDQ3NTUwNmUyOTc1ZmQ3Njk2Yzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE2OjMxOjMwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0eXBvOiBjb3JyZWN0IExST19TU0xWRVJJRllIT1NUIHdpdGgKLSBDVVJMT1BUX1NTTF9WRVJJRllIT1NUCi0KLUluIGNvbW1pdCA1MWQzMmM2Y2Q4OGJhMDEzOWMzMjc5MzE4M2ZkNmEyMzZjMWVmNDU2Ci0tLS0KLUF1dGhvcjogVG9tYXMgTWxjb2NoIDx0bWxjb2NoQHJlZGhhdC5jb20+Ci1EYXRlOiAgIE1vbiBNYXkgNSAxNDozMTozNSAyMDE0ICswMjAwCi0KLSAgICBBZGQgTFJPX1NTTFZFUklGWVBFRVIgYW5kIExST19TU0xWRVJJRllIT1NUIG9wdGlvbnMgKFJoQnVnOiAxMDkzMDE0KQotLS0tCi0KLUl0IGluY29ycmVjdGx5IHNldG9wdCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGZvciBMUk9fU1NMVkVSSUZZSE9TVC4KLVVzZSBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIHRvIGNvcnJlY3QuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYnJlcG8vaGFuZGxlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJyZXBvL2hhbmRsZS5jIGIvbGlicmVwby9oYW5kbGUuYwotaW5kZXggY2NlYTc5Yi4uZmYzOWRiNCAxMDA2NDQKLS0tLSBhL2xpYnJlcG8vaGFuZGxlLmMKLSsrKyBiL2xpYnJlcG8vaGFuZGxlLmMKLUBAIC02MjksNyArNjI5LDcgQEAgbHJfaGFuZGxlX3NldG9wdChMckhhbmRsZSAqaGFuZGxlLAotIAotICAgICBjYXNlIExST19TU0xWRVJJRllIT1NUOgotICAgICAgICAgaGFuZGxlLT5zc2x2ZXJpZnlob3N0ID0gdmFfYXJnKGFyZywgbG9uZykgPyAyIDogMDsKLS0gICAgICAgIGNfcmMgPSBjdXJsX2Vhc3lfc2V0b3B0KGNfaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgaGFuZGxlLT5zc2x2ZXJpZnlob3N0KTsKLSsgICAgICAgIGNfcmMgPSBjdXJsX2Vhc3lfc2V0b3B0KGNfaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgaGFuZGxlLT5zc2x2ZXJpZnlob3N0KTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIExST19TU0xDTElFTlRDRVJUOgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1Njk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjguMS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIiBBIGxpYnJhcnkgcHJvdmlkaW5nIEMgYW5kIFB5dGhvbiAobGliY1VSTCBsaWtlKSBBUEkgZm9yIGRvd25sb2FkaW5nIGxpbnV4IHJlcG9zaXRvcnkgbWV0YWRhdGEgYW5kIHBhY2thZ2VzLiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICI3YjliN2JmMzg4ZjNmMDU5NTI5YzZmNTBjNDBiMzA5MTlmZWYzMGY5IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImN1cmwgZXhwYXQgZ2xpYi0yLjAgb3BlbnNzbCBhdHRyIGdwZ21lIgorCitpbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKKworRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIC1ERU5BQkxFX1RFU1RTPU9GRiAtREVOQUJMRV9ET0NTPU9GRiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMzhiMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICIgQSBsaWJyYXJ5IHByb3ZpZGluZyBDIGFuZCBQeXRob24gKGxpYmNVUkwgbGlrZSkgQVBJIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1zZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBWID0gIjEuNy4yMCtnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJlMTEzN2NiYmRhNzhmZWNiMTkyMTQ2MzAwNzkwNjgwYTViYzgxMWIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImN1cmwgZXhwYXQgZ2xpYi0yLjAgb3BlbnNzbCBhdHRyIGxpYmNoZWNrIGdwZ21lIgotCi1pbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgwOWU0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gN2Y3NzQzY2UyMzNmY2Q3MzVlYzU4MGM3NTI3MDQxMzQ5MzY1OGFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IEFwciAyMDE4IDE4OjA4OjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgZ2VuZXJhdGluZyBhIG5hdGl2ZSBsbHZtLWNvbmZpZworCitPcGVuRW1iZWRkZWQgYWxyZWFkeSBidWlsZHMgdGhpcyBhcyBwYXJ0IG9mIGxsdm0tbmF0aXZlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dCB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dCBiL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0CitpbmRleCAyNWY5OWNlYzk3OC4uYzQ1ZTliNjQyYTggMTAwNjQ0CistLS0gYS90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dAorKysrIGIvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQKK0BAIC02MywxOSArNjMsMyBAQCBlbmRpZigpCisgCisgIyBBZGQgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGdlbmVyYXRpb24gc3RlcC4KKyBhZGRfZmlsZV9kZXBlbmRlbmNpZXMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xsdm0tY29uZmlnLmNwcCAke0JVSUxEVkFSSUFCTEVTX09CSlBBVEh9KQorLQorLWlmKENNQUtFX0NST1NTQ09NUElMSU5HKQorLSAgc2V0KCR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFICIke0xMVk1fTkFUSVZFX0JVSUxEfS9iaW4vbGx2bS1jb25maWciKQorLSAgc2V0KCR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFICR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9IFBBUkVOVF9TQ09QRSkKKy0KKy0gIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgIiR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9IgorLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuIC0tdGFyZ2V0IGxsdm0tY29uZmlnIC0tY29uZmlnICQ8Q09ORklHVVJBVElPTj4KKy0gICAgREVQRU5EUyAke0xMVk1fTkFUSVZFX0JVSUxEfS9DTWFrZUNhY2hlLnR4dAorLSAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0xMVk1fTkFUSVZFX0JVSUxEfQorLSAgICBDT01NRU5UICJCdWlsZGluZyBuYXRpdmUgbGx2bS1jb25maWcuLi4iCistICAgIFVTRVNfVEVSTUlOQUwpCistICBhZGRfY3VzdG9tX3RhcmdldCgke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZyBERVBFTkRTICR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9KQorLSAgYWRkX2RlcGVuZGVuY2llcygke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZyBDT05GSUdVUkVfTExWTV9OQVRJVkUpCistCistICBhZGRfZGVwZW5kZW5jaWVzKGxsdm0tY29uZmlnICR7cHJvamVjdH1OYXRpdmVMTFZNQ29uZmlnKQorLWVuZGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoCmluZGV4IGUyNTE3OTkuLjIwOTc2NGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI4MjkzZTQ4Y2YxYTUyMDA0YzZhNzhkZTQ0ODcxODQ0MWY5ZTA1ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk2NTU4YzRmMjVkNTEzMjkzNjAxNGY2ZjJkNjI1MmNmZGZkZjQ3OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyMSBNYXkgMjAxNiAwMDozMzoyMCArMDAwMAogU3ViamVjdDogW1BBVENIIDEvMl0gbGx2bTogVGFyZ2V0TGlicmFyeUluZm86IFVuZGVmaW5lIGxpYmMgZnVuY3Rpb25zIGlmIHRoZXkKQEAgLTE1LDEwICsxNSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgotaW5kZXggOWNiZTkxN2MxNDYuLmFmZjg0MTljZjU0IDEwMDY0NAoraW5kZXggYTQ2MWVkODEzYjkuLmY5ZmQ5ZmFlZWUwIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgogKysrIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgotQEAgLTY1Niw2ICs2NTYsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm1vZGwiKQorQEAgLTY2NSw2ICs2NjUsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm1vZGwiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmb3BlbikKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9wZW4iKQogIC8vLyBGSUxFICpmb3BlbjY0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpvcGVudHlwZSkKQEAgLTI4LDcgKzI4LDcgQEAKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW42NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9wZW42NCIpCiAgLy8vIGludCBmcHJpbnRmKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotQEAgLTY5MSw2ICs2OTQsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWsiKQorQEAgLTcwMCw2ICs3MDMsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWsiKQogIC8vLyBpbnQgZnNlZWtvKEZJTEUgKnN0cmVhbSwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvKQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla28iKQpAQCAtMzgsNyArMzgsNyBAQAogIC8vLyBpbnQgZnNlZWtvNjQoRklMRSAqc3RyZWFtLCBvZmY2NF90IG9mZnNldCwgaW50IHdoZW5jZSkKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvNjQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrbzY0IikKLUBAIC03MDEsNiArNzA3LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZXRwb3MiKQorQEAgLTcxMCw2ICs3MTYsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNldHBvcyIpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzdGF0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc3RhdCIpCiAgLy8vIGludCBmc3RhdDY0KGludCBmaWxlZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpCkBAIC00OCw3ICs0OCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzdGF0NjQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzdGF0NjQiKQogIC8vLyBpbnQgZnN0YXR2ZnMoaW50IGZpbGRlcywgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7Ci1AQCAtNzE2LDYgKzcyNSw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbCIpCitAQCAtNzI1LDYgKzczNCw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbCIpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZ0ZWxsbykKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGxvIikKICAvLy8gb2ZmNjRfdCBmdGVsbG82NChGSUxFICpzdHJlYW0pCkBAIC01OCw3ICs1OCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZ0ZWxsbzY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbG82NCIpCiAgLy8vIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqZmlsZSk7Ci1AQCAtODM2LDYgKzg0OCw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJsb2dsIikKK0BAIC04NDUsNiArODU3LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxvZ2wiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChsc3RhdCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQiKQogIC8vLyBpbnQgbHN0YXQ2NChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpOwpAQCAtNjgsNyArNjgsNyBAQAogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChsc3RhdDY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJsc3RhdDY0IikKICAvLy8gdm9pZCAqbWFsbG9jKHNpemVfdCBzaXplKTsKLUBAIC0xMDU1LDYgKzEwNzAsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3NjYW5mIikKK0BAIC0xMDY0LDYgKzEwNzksOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3NjYW5mIikKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoc3RhdCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3RhdCIpCiAgLy8vIGludCBzdGF0NjQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQ2NCAqYnVmKTsKQEAgLTc4LDcgKzc4LDcgQEAKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoc3RhdDY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJzdGF0NjQiKQogIC8vLyBpbnQgc3RhdHZmcyhjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKLUBAIC0xMTg0LDYgKzEyMDIsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidGltZXMiKQorQEAgLTExOTMsNiArMTIxMSw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0aW1lcyIpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHRtcGZpbGUpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRtcGZpbGUiKQogIC8vLyBGSUxFICp0bXBmaWxlNjQodm9pZCkKQEAgLTg5LDUgKzg5LDUgQEAKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidG1wZmlsZTY0IikKICAvLy8gaW50IHRvYXNjaWkoaW50IGMpOwogLS0gCi0yLjEzLjEKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaAppbmRleCA4MzJiZDcyLi4yMWQyZjgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ3NzY0ODdiYWMxNzY1MDcwNDYxNDI0OGQxOWQxZTZiMzU3NzUwMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJmOGVhNzY3YWZkYWE0NDBjNjM2ODA0MDYzMGUxYjNlYTZhMDk3N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gS2VsbHkgPG1rZWxseUB4ZXZvLmNvbT4KIERhdGU6IEZyaSwgMTkgTWF5IDIwMTcgMDA6MjI6NTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAyLzJdIGxsdm06IGFsbG93IGVudiBvdmVycmlkZSBvZiBleGUgcGF0aApAQCAtMzUsNSArMzUsNSBAQAogICAgLy8gYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIDo6bWFpbiBob3dldmVyLgogICAgdm9pZCAqUCA9ICh2b2lkICopKGludHB0cl90KUdldEV4ZWN1dGFibGVQYXRoOwogLS0gCi0yLjEzLjEKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKaW5kZXggZjA2ZmE0OS4uY2IzYmJhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PWU4MjVlMDE3ZWRjMzVjZmQ1OGUyNjExNmU1MjUxNzcxIgogCi1ERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyLW5hdGl2ZSB6bGliIG5pbmphLW5hdGl2ZSBsbHZtLW5hdGl2ZSIKK0RFUEVORFMgPSAibGliZmZpIGxpYnhtbDIgemxpYiBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCiAKIFJERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG5jdXJzZXMtdGVybWluZm8iCiAKQEAgLTE5LDE0ICsxOSwxNiBAQAogTExWTV9SRUxFQVNFID0gIiR7UFZ9IgogTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKIAotU1JDUkVWID0gIjlhNWMzMzMzODhjYmI1NGEwY2UzYTY3YzRmNTM5ZjVlNTkwYTA4OWIiCi1QViA9ICI1LjAiCitTUkNSRVYgPSAiMDg5ZDRjMGM0OTA2ODdkYjZjNzVmMWQwNzRlOTljNGQ0MjkzNmE1MCIKK1BWID0gIjYuMCIKK0JSQU5DSCA9ICJyZWxlYXNlXzYwIgogUEFUQ0hfVkVSU0lPTiA9ICIwIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xsdm0tbWlycm9yL2xsdm0uZ2l0O2JyYW5jaD1yZWxlYXNlXzUwO3Byb3RvY29sPWh0dHAgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xsdm0tbWlycm9yL2xsdm0uZ2l0O2JyYW5jaD0ke0JSQU5DSH07cHJvdG9jb2w9aHR0cCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgpAQCAtODQsMTUgKzg2LDE1IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JTklOSkFfU1RBVFVTPSJbJXBdICIgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfQorCW5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KIH0KIAogZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0JTklOSkFfU1RBVFVTPSJbJXBdICIgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfSBsbHZtLWNvbmZpZyBsbHZtLXRibGdlbgorCW5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0gbGx2bS1jb25maWcgbGx2bS10YmxnZW4KIH0KIAogZG9faW5zdGFsbCgpIHsKLQlOSU5KQV9TVEFUVVM9IlslcF0gIiBERVNURElSPSR7TExWTV9JTlNUQUxMX0RJUn0gbmluamEgLXYgaW5zdGFsbAorCURFU1RESVI9JHtMTFZNX0lOU1RBTExfRElSfSBuaW5qYSAtdiBpbnN0YWxsCiAJaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vYmluL2xsdm0tY29uZmlnICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGx2bS1jb25maWcKIAogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke0xMVk1fRElSfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC0xLjQuMTguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC0xLjQuMTguaW5jCmluZGV4IGQ3Yzg2NDguLmVlOGJlZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtMS40LjE4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LTEuNC4xOC5pbmMKQEAgLTEsMjIgKzEsMjkgQEAKLXJlcXVpcmUgbTQuaW5jCitTVU1NQVJZID0gIlRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC9tNC5odG1sIgorREVTQ1JJUFRJT04gPSAiR05VIG00IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3Nvci4gIEl0IGlzIG1vc3RseSBTVlI0IFwKK2NvbXBhdGlibGUgYWx0aG91Z2ggaXQgaGFzIHNvbWUgZXh0ZW5zaW9ucyAoZm9yIGV4YW1wbGUsIGhhbmRsaW5nIG1vcmUgdGhhbiA5IHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYWNyb3MpLiBcCitHTlUgTTQgYWxzbyBoYXMgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBpbmNsdWRpbmcgZmlsZXMsIHJ1bm5pbmcgc2hlbGwgY29tbWFuZHMsIGRvaW5nIGFyaXRobWV0aWMsIGV0Yy4iCiAKLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNpZ3NlZ3YtcHJlZml4IgoraW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbTQvbTQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2FjX2NvbmZpZ19saW5rcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImEwNzc3NzlkYjI4N2FkZjRlMTJhMDM1MDI5MDAyZDI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiMjYzMzkyMWE1Y2QzOGU0ODc5N2JmNTUyMWFkMjU5YmRjNGI5NzkwNzgwMzRhM2I3OTBkN2ZlYzU0OTNmYWIiCiAKIExJQ0VOU0UgPSAiR1BMdjMiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAogCSAgICAgICAgICAgIGZpbGU6Ly9leGFtcGxlcy9DT1BZSU5HO21kNT00MDMxNTkzYjIxNjZkNmM0N2NhZTI4MmQ5NDRhN2VkZSIKIAotU1JDX1VSSSArPSAiZmlsZTovL2FjX2NvbmZpZ19saW5rcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLQkgICAiCi0KICMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCiBhY3BhdGhzID0gIi1JIC4vbTQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMDc3Nzc5ZGIyODdhZGY0ZTEyYTAzNTAyOTAwMmQyOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjI2MzM5MjFhNWNkMzhlNDg3OTdiZjU1MjFhZDI1OWJkYzRiOTc5MDc4MDM0YTNiNzkwZDdmZWM1NDkzZmFiIgorRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2lnc2Vndi1wcmVmaXgiCisKK0VYVFJBX09FTUFLRSArPSAiJ2luZm9kaXI9JHtpbmZvZGlyfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LW5hdGl2ZV8xLjQuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LW5hdGl2ZV8xLjQuMTguYmIKaW5kZXggMDZkOGFhMi4uNDA3YWQ4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC1uYXRpdmVfMS40LjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtbmF0aXZlXzEuNC4xOC5iYgpAQCAtMTEsMyArMTEsNCBAQAogCW9lX3J1bmNvbmYKIH0KIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vbTQvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwMjU5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhZGl0aW9uYWwgVW5peCBtYWNybyBwcm9jZXNzb3IiCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL200L200Lmh0bWwiCi1ERVNDUklQVElPTiA9ICJHTlUgbTQgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yLiAgSXQgaXMgbW9zdGx5IFNWUjQgXAotY29tcGF0aWJsZSBhbHRob3VnaCBpdCBoYXMgc29tZSBleHRlbnNpb25zIChmb3IgZXhhbXBsZSwgaGFuZGxpbmcgbW9yZSB0aGFuIDkgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHRvIG1hY3JvcykuIFwKLUdOVSBNNCBhbHNvIGhhcyBidWlsdC1pbiBmdW5jdGlvbnMgZm9yIGluY2x1ZGluZyBmaWxlcywgcnVubmluZyBzaGVsbCBjb21tYW5kcywgZG9pbmcgYXJpdGhtZXRpYywgZXRjLiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1FWFRSQV9PRU1BS0UgKz0gIidpbmZvZGlyPSR7aW5mb2Rpcn0nIgotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L200L200LSR7UFZ9LnRhci5neiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC9hY19jb25maWdfbGlua3MucGF0Y2gKaW5kZXggMjc1YzBiMi4uNzFlZGY1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC9hY19jb25maWdfbGlua3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC9hY19jb25maWdfbGlua3MucGF0Y2gKQEAgLTE0LDEwICsxNCwxMSBAQAogCiAyMDA5LTExLTEwCUVzYmVuIEhhYWJlbmRhbAkgICAgPGVoYUBkb3JlZGV2ZWxvcG1lbnQuZGs+CiAKLWRpZmYgLXVyTiBtNC0xLjQuMTMub3JpZy9jb25maWd1cmUgbTQtMS40LjEzL2NvbmZpZ3VyZQotLS0tIG00LTEuNC4xMy5vcmlnL2NvbmZpZ3VyZQkyMDA5LTExLTEwIDEwOjU0OjAwLjMwMTcwNzA5NyArMDEwMAotKysrIG00LTEuNC4xMy9jb25maWd1cmUJMjAwOS0xMS0xMCAxMDo1NDoxNy4zMTQyMDYzNzkgKzAxMDAKLUBAIC0xNDg2MCw4ICsxNDg2MCw4IEBACitJbmRleDogbTQtMS40LjE4L2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG00LTEuNC4xOC5vcmlnL2NvbmZpZ3VyZQorKysrIG00LTEuNC4xOC9jb25maWd1cmUKK0BAIC0yNDQxNSw4ICsyNDQxNSw4IEBAICRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX0dFVFRJTUVPRkQKICAgICMgb25seSwgaXQgZG9lcyBub3QgbWF0dGVyIGlmIHdlIHNraXAgdGhlIGxpbmsgd2l0aCBvbGRlciBhdXRvY29uZi4KICAgICMgQXV0b21ha2UgMS4xMC4xIGFuZCBlYXJsaWVyIHRyeSB0byByZW1vdmUgR05VbWFrZWZpbGUgaW4gbm9uLVZQQVRICiAgICAjIGJ1aWxkcywgc28gdXNlIGEgc2hlbGwgdmFyaWFibGUgdG8gYnlwYXNzIHRoaXMuCkBAIC0yNyw0ICsyOCw0IEBACiArICMgYWNfY29uZmlnX2xpbmtzPSIkYWNfY29uZmlnX2xpbmtzICRHTlVtYWtlZmlsZTokR05VbWFrZWZpbGUiCiAgCiAgCi0gCisgICA6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKaW5kZXggODQ5Yjc0Mi4uYjg5MDViYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYwpAQCAtNSw3ICs1LDEwIEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbWFrZS8iCiBTRUNUSU9OID0gImRldmVsIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjZlNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBjOTBhN2RkYTZjNTcyZjc5YjhlNzhkYTQ0YjZlYmY4NzA0ZWRlZjY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IFN1biwgMjQgU2VwIDIwMTcgMDk6MTI6NTggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGdsb2I6IERvIG5vdCBhc3N1bWUgZ2xpYmMgZ2xvYiBpbnRlcm5hbHMuCisKK0l0IGhhcyBiZWVuIHByb3Bvc2VkIHRoYXQgZ2xpYmMgZ2xvYiBzdGFydCB1c2luZyBnbF9sc3RhdCwKK3doaWNoIHRoZSBBUEkgYWxsb3dzIGl0IHRvIGRvLiAgR05VICdtYWtlJyBzaG91bGQgbm90IGdldCBpbgordGhlIHdheSBvZiB0aGlzLiAgU2VlOgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTctMDkvbXNnMDA0MDkuaHRtbAorCisqIGRpci5jIChsb2NhbF9sc3RhdCk6IE5ldyBmdW5jdGlvbiwgbGlrZSBsb2NhbF9zdGF0LgorKGRpcl9zZXR1cF9nbG9iKTogVXNlIGl0IHRvIGluaXRpYWxpemUgZ2xfbHN0YXQgdG9vLCBhcyB0aGUgQVBJCityZXF1aXJlcy4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGRpci5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Rpci5jIGIvZGlyLmMKK2luZGV4IGYzNGJiZjUuLjEyZWVmMzAgMTAwNjQ0CistLS0gYS9kaXIuYworKysrIGIvZGlyLmMKK0BAIC0xMjk5LDE1ICsxMjk5LDQwIEBAIGxvY2FsX3N0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCisgfQorICNlbmRpZgorIAorKy8qIFNpbWlsYXJseSBmb3IgbHN0YXQuICAqLworKyNpZiAhZGVmaW5lZChsc3RhdCkgJiYgIWRlZmluZWQoV0lORE9XUzMyKSB8fCBkZWZpbmVkKFZNUykKKysjIGlmbmRlZiBWTVMKKysjICBpZm5kZWYgSEFWRV9TWVNfU1RBVF9ICisraW50IGxzdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc2J1Zik7CisrIyAgZW5kaWYKKysjIGVsc2UKKysgICAgLyogV2UgYXJlIGRvbmUgd2l0aCB0aGUgZmFrZSBsc3RhdC4gIEdvIGJhY2sgdG8gdGhlIHJlYWwgbHN0YXQgKi8KKysjICAgaWZkZWYgbHN0YXQKKysjICAgICB1bmRlZiBsc3RhdAorKyMgICBlbmRpZgorKyMgZW5kaWYKKysjIGRlZmluZSBsb2NhbF9sc3RhdCBsc3RhdAorKyNlbGlmIGRlZmluZWQoV0lORE9XUzMyKQorKy8qIFdpbmRvd3MgZG9lc24ndCBzdXBwb3J0IGxzdGF0KCkuICAqLworKyMgZGVmaW5lIGxvY2FsX2xzdGF0IGxvY2FsX3N0YXQKKysjZWxzZQorK3N0YXRpYyBpbnQKKytsb2NhbF9sc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKKyt7CisrICBpbnQgZTsKKysgIEVJTlRSTE9PUCAoZSwgbHN0YXQgKHBhdGgsIGJ1ZikpOworKyAgcmV0dXJuIGU7CisrfQorKyNlbmRpZgorKworIHZvaWQKKyBkaXJfc2V0dXBfZ2xvYiAoZ2xvYl90ICpnbCkKKyB7CisgICBnbC0+Z2xfb3BlbmRpciA9IG9wZW5fZGlyc3RyZWFtOworICAgZ2wtPmdsX3JlYWRkaXIgPSByZWFkX2RpcnN0cmVhbTsKKyAgIGdsLT5nbF9jbG9zZWRpciA9IGZyZWU7CisrICBnbC0+Z2xfbHN0YXQgPSBsb2NhbF9sc3RhdDsKKyAgIGdsLT5nbF9zdGF0ID0gbG9jYWxfc3RhdDsKKy0gIC8qIFdlIGRvbid0IGJvdGhlciBzZXR0aW5nIGdsX2xzdGF0LCBzaW5jZSBnbG9iIG5ldmVyIGNhbGxzIGl0LgorLSAgICAgVGhlIHNsb3QgaXMgb25seSB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIDQuNCBCU0QuICAqLworIH0KKyAKKyB2b2lkCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OWFjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDk4NTg3MDJkYmQxZTEzNzI2MmMwNjc2NTkxOTkzNzY2MDg3OWY2M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAorU3ViamVjdDogW1BBVENIIDIvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KKworSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAord2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCit0aGUgd2F5IG9mIHRoaXMuICBTZWU6CitodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCisKKyogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCisoZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKK3JlcXVpcmVzLgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBjb25maWd1cmUuYWMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjRlYzg3MC4uZTg3OTAxYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzk5LDEwICszOTksOSBAQCBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzdGVtIGxpYmMgaGFzIEdOVSBnbG9iXSwgW21ha2VfY3Zfc3lzX2dudV9nbG9iXSwKKyAjaW5jbHVkZSA8Z2xvYi5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCistI2RlZmluZSBHTE9CX0lOVEVSRkFDRV9WRVJTSU9OIDEKKyAjaWYgIWRlZmluZWQgX0xJQkMgJiYgZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID4gMQorICMgaW5jbHVkZSA8Z251LXZlcnNpb25zLmg+CistIyBpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTgorK2lmIF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAxIHx8IF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAyCisgICAgZ251IGdsb2IKKyAjIGVuZGlmCisgI2VuZGlmXSwKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLUxpbmtlci1ydWxlcy1tb3ZlLWNyb3NzX2FyZ3MtaW4tZnJvbnQtb2Ytb3V0cHV0X2FyZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3NzhjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNDY3NjIyNGRiZGZmMGY3MTA3ZThjYmRiZTBlYWIxOWM4NTVmMTQ1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAxMzoxODoyOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBMaW5rZXIgcnVsZXM6IG1vdmUge2Nyb3NzX2FyZ3N9IGluIGZyb250IG9mIHtvdXRwdXRfYXJnc30KKworVGhlIHByZXZpb3VzIG9yZGVyIHdhcyBmb3VuZCB0byBicmVhayBsaW5raW5nIGluIHNvbWUgY2FzZXMKKyhlLmcuIHdoZW4gLW5vLXBpYyAtZm5vLVBJQyB3YXMgcHJlc2VudCBpbiB7Y3Jvc3NfYXJnc30uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbmJ1aWxkL2JhY2tlbmQvbmluamFiYWNrZW5kLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weSBiL21lc29uYnVpbGQvYmFja2VuZC9uaW5qYWJhY2tlbmQucHkKK2luZGV4IGJiMjgxZTEuLjk2OWI3MGUgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL2JhY2tlbmQvbmluamFiYWNrZW5kLnB5CisrKysgYi9tZXNvbmJ1aWxkL2JhY2tlbmQvbmluamFiYWNrZW5kLnB5CitAQCAtMTUwMSw3ICsxNTAxLDcgQEAgaW50IGR1bW15OworICByc3BmaWxlX2NvbnRlbnQgPSAkQVJHUyAge291dHB1dF9hcmdzfSAkaW4gJExJTktfQVJHUyB7Y3Jvc3NfYXJnc30gJGFsaWFzaW5nCisgJycnCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBjb21tYW5kX3RlbXBsYXRlID0gJyBjb21tYW5kID0ge2V4ZWN1dGFibGV9ICRBUkdTIHtvdXRwdXRfYXJnc30gJGluICRMSU5LX0FSR1Mge2Nyb3NzX2FyZ3N9ICRhbGlhc2luZ1xuJworKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZF90ZW1wbGF0ZSA9ICcgY29tbWFuZCA9IHtleGVjdXRhYmxlfSAkQVJHUyB7Y3Jvc3NfYXJnc30ge291dHB1dF9hcmdzfSAkaW4gJExJTktfQVJHUyAkYWxpYXNpbmdcbicKKyAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmRfdGVtcGxhdGUuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZT0nICcuam9pbihjb21waWxlci5nZXRfbGlua2VyX2V4ZWxpc3QoKSksCisgICAgICAgICAgICAgICAgICAgICBjcm9zc19hcmdzPScgJy5qb2luKGNyb3NzX2FyZ3MpLAorLS0gCisyLjE1LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTEyZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gYzU2OTJjYWM5YzU1NTY2NDI4MTM3N2E4MmJmOGIxZTQ2OTM0ZjQzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjE2OjQxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBndGtkb2M6IGZpeCBpc3N1ZXMgdGhhdCBhcmlzZSB3aGVuIGNyb3NzLWNvbXBpbGluZworCitTcGVjaWZpY2FsbHk6CisxKSBNYWtlIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSB3cmFwcGVyIGZvciBleGVjdXRpbmcgYmluYXJpZXMKKyh1c3VhbGx5LCBzb21lIGtpbmQgb2YgdGFyZ2V0IGhhcmR3YXJlIGVtdWxhdG9yLCBzdWNoIGFzIHFlbXUpCisyKSBFeHBsaWNpdGx5IHByb3ZpZGUgQ0MgYW5kIExEIHZpYSBjb21tYW5kIGxpbmUsIGFzIG90aGVyd2lzZSBndGstZG9jIHdpbGwKK3RyeSB0byBndWVzcyB0aGVtLCBpbmNvcnJlY3RseS4KKzMpIElmIHRoaW5ncyBicmVhayBkb3duLCBwcmludCB0aGUgZnVsbCBjb21tYW5kIHdpdGggYXJndW1lbnRzLAorbm90IGp1c3QgdGhlIGJpbmFyeSBuYW1lLgorNCkgQ29ycmVjdGx5IGRldGVybWluZSB0aGUgY29tcGlsZXIvbGlua2VyIGV4ZWN1dGFibGVzIGFuZCBjcm9zcy1vcHRpb25zIHdoZW4gY3Jvc3MtY29tcGlsaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIG1lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSAgICAgICAgfCAxOCArKysrKysrKysrKysrKystLS0KKyBtZXNvbmJ1aWxkL3NjcmlwdHMvZ3RrZG9jaGVscGVyLnB5IHwgIDkgKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitpbmRleCA1Njc2NWE1Li40ZjdmZTMwIDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CisrKysgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK0BAIC03NjksNiArNzY5LDEwIEBAIFRoaXMgd2lsbCBiZWNvbWUgYSBoYXJkIGVycm9yIGluIHRoZSBmdXR1cmUuJycnKQorICAgICAgICAgICAgICAgICAnLS1tb2RlPScgKyBtb2RlXQorICAgICAgICAgaWYgbmFtZXNwYWNlOgorICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW5hbWVzcGFjZT0nICsgbmFtZXNwYWNlKQorKyAgICAgICAgZ3RrZG9jX2V4ZV93cmFwcGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQoJ2d0a2RvY19leGVfd3JhcHBlcicsIE5vbmUpCisrICAgICAgICBpZiBndGtkb2NfZXhlX3dyYXBwZXIgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tZ3RrZG9jLWV4ZS13cmFwcGVyPScgKyBndGtkb2NfZXhlX3dyYXBwZXIpCisrCisgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLWh0bWxhcmdzPScsICdodG1sX2FyZ3MnLCBrd2FyZ3MpCisgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLXNjYW5hcmdzPScsICdzY2FuX2FyZ3MnLCBrd2FyZ3MpCisgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLXNjYW5vYmpzYXJncz0nLCAnc2Nhbm9ianNfYXJncycsIGt3YXJncykKK0BAIC03OTYsMTQgKzgwMCwyMiBAQCBUaGlzIHdpbGwgYmVjb21lIGEgaGFyZCBlcnJvciBpbiB0aGUgZnV0dXJlLicnJykKKyAgICAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAnR2lyIGluY2x1ZGUgZGlycyBzaG91bGQgYmUgaW5jbHVkZV9kaXJlY3RvcmllcygpLicpCisgICAgICAgICBjZmxhZ3MudXBkYXRlKGdldF9pbmNsdWRlX2FyZ3MoaW5jX2RpcnMpKQorKworKyAgICAgICAgY3Jvc3NfY19hcmdzID0gIiAiLmpvaW4oc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQoJ2NfYXJncycsICIiKSkKKysgICAgICAgIGNyb3NzX2xpbmtfYXJncyA9ICIgIi5qb2luKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2xpbmtfYXJncycsICIiKSkKKysKKyAgICAgICAgIGlmIGNmbGFnczoKKy0gICAgICAgICAgICBhcmdzICs9IFsnLS1jZmxhZ3M9JXMnICUgJyAnLmpvaW4oY2ZsYWdzKV0KKysgICAgICAgICAgICBhcmdzICs9IFsnLS1jZmxhZ3M9JXMgJXMnICUgKGNyb3NzX2NfYXJncywnICcuam9pbihjZmxhZ3MpKV0KKyAgICAgICAgIGlmIGxkZmxhZ3M6CistICAgICAgICAgICAgYXJncyArPSBbJy0tbGRmbGFncz0lcycgJSAnICcuam9pbihsZGZsYWdzKV0KKysgICAgICAgICAgICBhcmdzICs9IFsnLS1sZGZsYWdzPSVzICVzJyAlIChjcm9zc19saW5rX2FyZ3MsICcgJy5qb2luKGxkZmxhZ3MpKV0KKyAgICAgICAgIGNvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY29tcGlsZXJzLmdldCgnYycpCistICAgICAgICBpZiBjb21waWxlcjoKKysgICAgICAgIGNyb3NzX2NvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY3Jvc3NfY29tcGlsZXJzLmdldCgnYycpCisrICAgICAgICBpZiBjb21waWxlciBhbmQgbm90IHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisgICAgICAgICAgICAgYXJncyArPSBbJy0tY2M9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2V4ZWxpc3QoKSldCisgICAgICAgICAgICAgYXJncyArPSBbJy0tbGQ9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpXQorKyAgICAgICAgZWxpZiBjcm9zc19jb21waWxlciBhbmQgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKKysgICAgICAgICAgICBhcmdzICs9IFsnLS1jYz0lcycgJSAnICcuam9pbihjcm9zc19jb21waWxlci5nZXRfZXhlbGlzdCgpKV0KKysgICAgICAgICAgICBhcmdzICs9IFsnLS1sZD0lcycgJSAnICcuam9pbihjcm9zc19jb21waWxlci5nZXRfbGlua2VyX2V4ZWxpc3QoKSldCisgCisgICAgICAgICByZXR1cm4gYXJncworIAorZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkgYi9tZXNvbmJ1aWxkL3NjcmlwdHMvZ3RrZG9jaGVscGVyLnB5CitpbmRleCA0NDA2YjI4Li5iODQ2ODI3IDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQorKysrIGIvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQorQEAgLTQ0LDEzICs0NCwxNCBAQCBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1oZWFkZXJzJywgZGVzdD0naWdub3JlX2hlYWRlcnMnLCBkZWZhdWx0PScnKQorIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbmFtZXNwYWNlJywgZGVzdD0nbmFtZXNwYWNlJywgZGVmYXVsdD0nJykKKyBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1vZGUnLCBkZXN0PSdtb2RlJywgZGVmYXVsdD0nJykKKyBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWluc3RhbGxkaXInLCBkZXN0PSdpbnN0YWxsX2RpcicpCisrcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1ndGtkb2MtZXhlLXdyYXBwZXInLCBkZXN0PSdndGtkb2NfZXhlX3dyYXBwZXInKQorIAorIGRlZiBndGtkb2NfcnVuX2NoZWNrKGNtZCwgY3dkKToKKyAgICAgIyBQdXQgc3RkZXJyIGludG8gc3Rkb3V0IHNpbmNlIHdlIHdhbnQgdG8gcHJpbnQgaXQgb3V0IGFueXdheS4KKyAgICAgIyBUaGlzIHByZXNlcnZlcyB0aGUgb3JkZXIgb2YgbWVzc2FnZXMuCisgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoY21kLCBjd2Q9Y3dkLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpWzA6Ml0KKyAgICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6CistICAgICAgICBlcnJfbXNnID0gWyJ7IXJ9IGZhaWxlZCB3aXRoIHN0YXR1cyB7OmR9Ii5mb3JtYXQoY21kWzBdLCBwLnJldHVybmNvZGUpXQorKyAgICAgICAgZXJyX21zZyA9IFsieyFyfSBmYWlsZWQgd2l0aCBzdGF0dXMgezpkfSIuZm9ybWF0KGNtZCwgcC5yZXR1cm5jb2RlKV0KKyAgICAgICAgIGlmIG91dDoKKyAgICAgICAgICAgICBlcnJfbXNnLmFwcGVuZChvdXQpCisgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignXG4nLmpvaW4oZXJyX21zZykpCitAQCAtNTgsNyArNTksNyBAQCBkZWYgZ3RrZG9jX3J1bl9jaGVjayhjbWQsIGN3ZCk6CisgZGVmIGJ1aWxkX2d0a2RvYyhzb3VyY2Vfcm9vdCwgYnVpbGRfcm9vdCwgZG9jX3N1YmRpciwgc3JjX3N1YmRpcnMsCisgICAgICAgICAgICAgICAgICBtYWluX2ZpbGUsIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgIGh0bWxfYXJncywgc2Nhbl9hcmdzLCBmaXh4cmVmX2FyZ3MsIG1rZGJfYXJncywKKy0gICAgICAgICAgICAgICAgIGdvYmplY3RfdHlwZXNmaWxlLCBzY2Fub2Jqc19hcmdzLCBsZCwgY2MsIGxkZmxhZ3MsIGNmbGFncywKKysgICAgICAgICAgICAgICAgIGdvYmplY3RfdHlwZXNmaWxlLCBzY2Fub2Jqc19hcmdzLCBndGtkb2NfZXhlX3dyYXBwZXIsIGxkLCBjYywgbGRmbGFncywgY2ZsYWdzLAorICAgICAgICAgICAgICAgICAgaHRtbF9hc3NldHMsIGNvbnRlbnRfZmlsZXMsIGlnbm9yZV9oZWFkZXJzLCBuYW1lc3BhY2UsCisgICAgICAgICAgICAgICAgICBleHBhbmRfY29udGVudF9maWxlcywgbW9kZSk6CisgICAgIHByaW50KCJCdWlsZGluZyBkb2N1bWVudGF0aW9uIGZvciAlcyIgJSBtb2R1bGUpCitAQCAtMTExLDYgKzExMiw5IEBAIGRlZiBidWlsZF9ndGtkb2Moc291cmNlX3Jvb3QsIGJ1aWxkX3Jvb3QsIGRvY19zdWJkaXIsIHNyY19zdWJkaXJzLAorICAgICBpZiBnb2JqZWN0X3R5cGVzZmlsZToKKyAgICAgICAgIHNjYW5vYmpzX2NtZCA9IFsnZ3RrZG9jLXNjYW5nb2JqJ10gKyBzY2Fub2Jqc19hcmdzICsgWyctLXR5cGVzPScgKyBnb2JqZWN0X3R5cGVzZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHVsZT0nICsgbW9kdWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcnVuPScgKyBndGtkb2NfZXhlX3dyYXBwZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jYz0nICsgY2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZD0nICsgbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jZmxhZ3M9JyArIGNmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWxkZmxhZ3M9JyArIGxkZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZD0nICsgbGRdCitAQCAtMjA3LDYgKzIxMSw3IEBAIGRlZiBydW4oYXJncyk6CisgICAgICAgICBta2RiYXJncywKKyAgICAgICAgIG9wdGlvbnMuZ29iamVjdF90eXBlc2ZpbGUsCisgICAgICAgICBzY2Fub2Jqc2FyZ3MsCisrICAgICAgICBvcHRpb25zLmd0a2RvY19leGVfd3JhcHBlciwKKyAgICAgICAgIG9wdGlvbnMubGQsCisgICAgICAgICBvcHRpb25zLmNjLAorICAgICAgICAgb3B0aW9ucy5sZGZsYWdzLAorLS0gCisyLjE1LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRldGVybWluZS1nLWlyLXNjYW5uZXItYW5kLWctaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ0MmQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSA5NzI2NjdlMGQ3ODlhNjk2OWE1ZDc5MjQ5NDA0ZjM1MzlmODkxODEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDQgQXVnIDIwMTcgMTY6MTg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGdvYmplY3QtaW50cm9zcGVjdGlvbjogZGV0ZXJtaW5lIGctaXItc2Nhbm5lciBhbmQKKyBnLWlyLWNvbXBpbGVyIHBhdGhzIGZyb20gcGtnY29uZmlnCisKK0RvIG5vdCBoYXJkY29kZSB0aGUgbmFtZSBvZiB0aG9zZSBiaW5hcmllczsgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitwcm92aWRlcyB0aGVtIHZpYSBwa2djb25maWcsIGFuZCB0aGV5IGNhbiBiZSBzZXQgdG8gc29tZXRoaW5nIGVsc2UKKyhmb3IgZXhhbXBsZSB3aGVuIGNyb3NzLWNvbXBpbGluZykuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIG1lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK2luZGV4IDRmN2ZlMzAuLjk2MTBjZjYgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKKysrKyBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorQEAgLTM5MCw4ICszOTAsNiBAQCBjbGFzcyBHbm9tZU1vZHVsZShFeHRlbnNpb25Nb2R1bGUpOgorICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdHaXIgdGFrZXMgb25lIGFyZ3VtZW50JykKKyAgICAgICAgIGlmIGt3YXJncy5nZXQoJ2luc3RhbGxfZGlyJyk6CisgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ2luc3RhbGxfZGlyIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBnZW5lcmF0ZV9naXIoKSwgc2VlICJpbnN0YWxsX2Rpcl9naXIiIGFuZCAiaW5zdGFsbF9kaXJfdHlwZWxpYiInKQorLSAgICAgICAgZ2lzY2FubmVyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCAnR2lyJykKKy0gICAgICAgIGdpY29tcGlsZXIgPSBmaW5kX3Byb2dyYW0oJ2ctaXItY29tcGlsZXInLCAnR2lyJykKKyAgICAgICAgIGdpcnRhcmdldCA9IGFyZ3NbMF0KKyAgICAgICAgIHdoaWxlIGhhc2F0dHIoZ2lydGFyZ2V0LCAnaGVsZF9vYmplY3QnKToKKyAgICAgICAgICAgICBnaXJ0YXJnZXQgPSBnaXJ0YXJnZXQuaGVsZF9vYmplY3QKK0BAIC00MDIsNiArNDAwLDggQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKKyAgICAgICAgICAgICAgICAgc2VsZi5naXJfZGVwID0gUGtnQ29uZmlnRGVwZW5kZW5jeSgnZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyduYXRpdmUnOiBUcnVlfSkKKysgICAgICAgICAgICBnaXNjYW5uZXIgPSBvcy5lbnZpcm9uWydQS0dfQ09ORklHX1NZU1JPT1RfRElSJ10gKyBzZWxmLmdpcl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZ19pcl9zY2FubmVyJywge30pCisrICAgICAgICAgICAgZ2ljb21waWxlciA9IG9zLmVudmlyb25bJ1BLR19DT05GSUdfU1lTUk9PVF9ESVInXSArIHNlbGYuZ2lyX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdnX2lyX2NvbXBpbGVyJywge30pCisgICAgICAgICAgICAgcGtnYXJncyA9IHNlbGYuZ2lyX2RlcC5nZXRfY29tcGlsZV9hcmdzKCkKKyAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ2dvYmplY3QtaW50cm9zcGVjdGlvbiBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQsIGdpciBjYW5ub3QgYmUgZ2VuZXJhdGVkLicpCistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWU2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaApAQCAtMCwwICsxLDExNCBAQAorRnJvbSBmZmE3MmVhYzU2NTU4YWE0MTcxZGQ3MGFjMWU5YzI3YTA3MzM4ZmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE1IE5vdiAyMDE3IDE1OjA1OjAxICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBuYXRpdmVfYmluZGlyCisKK1NvbWUgbGlicmFyaWVzLCBsaWtlIFFULCBoYXZlIHByZS1wcm9jZXNzb3JzIHRoYXQgY29udmVydCB0aGVpciBpbnB1dAorZmlsZXMgaW50byBzb21ldGhpbmcgdGhhdCB0aGUgY3Jvc3MtY29tcGlsZXIgY2FuIHByb2Nlc3MuIFdlIGZpbmQgdGhlCitwYXRoIG9mIHRob3NlIHByZS1wcm9jZXNzb3JzIHZpYSBwa2ctY29uZmlnLW5hdGl2ZSBpbnN0ZWFkIG9mCitwa2ctY29uZmlnLgorCitUaGlzIHBhdGggZm9yY2VzIHRoZSB1c2Ugb2YgcGtnLWNvbmZpZy1uYXRpdmUgZm9yIGhvc3RfYmlucyBhcmd1bWVudHMuCisKK1RoZXJlIGFyZSBzb21lIGRpc2N1c3Npb25zIHVwc3RyZWFtIHRvIG1lcmdlIHRoaXMgcGF0Y2gsIGJ1dCBJIHByZXNvbmFseSBiZWxpZXZlCit0aGF0IGlzIGlzIE9FIG9ubHkuIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy8xODQ5I2lzc3VlY29tbWVudC0zMDM3MzAzMjMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorCistLS0KKyBtZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5IHwgMTYgKysrKysrKysrKy0tLS0tLQorIG1lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5ICAgfCAgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weQoraW5kZXggYmY3OWJjNS4uYzlmZDA4YyAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkKKysrKyBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkKK0BAIC0xMzEsNyArMTMxLDcgQEAgY2xhc3MgRGVwZW5kZW5jeToKKyAgICAgZGVmIG5lZWRfdGhyZWFkcyhzZWxmKToKKyAgICAgICAgIHJldHVybiBGYWxzZQorIAorLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgorKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgorICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbigneyFyfSBpcyBub3QgYSBwa2djb25maWcgZGVwZW5kZW5jeScuZm9ybWF0KHNlbGYubmFtZSkpCisgCisgICAgIGRlZiBnZXRfY29uZmlndG9vbF92YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lKToKK0BAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgSW50ZXJuYWxEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgorICAgICAgICAgc2VsZi5zb3VyY2VzID0gc291cmNlcworICAgICAgICAgc2VsZi5leHRfZGVwcyA9IGV4dF9kZXBzCisgCistICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CisrICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CisgICAgICAgICByYWlzZSBEZXBlbmRlbmN5RXhjZXB0aW9uKCdNZXRob2QgImdldF9wa2djb25maWdfdmFyaWFibGUoKSIgaXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBmb3IgYW4gaW50ZXJuYWwgZGVwZW5kZW5jeScpCisgCitAQCAtNDI1LDEwICs0MjUsMTQgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIHNlbGYuaXNfZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3JlcXMpCisgCistICAgIGRlZiBfY2FsbF9wa2diaW4oc2VsZiwgYXJncywgZW52PU5vbmUpOgorKyAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCB1c2VfbmF0aXZlPUZhbHNlKToKKyAgICAgICAgIGlmIG5vdCBlbnY6CisgICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbgorLSAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShbc2VsZi5wa2diaW5dICsgYXJncywgZW52PWVudilbMDoyXQorKyAgICAgICAgaWYgdXNlX25hdGl2ZToKKysgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW4gKyAiLW5hdGl2ZSJdCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHBrZ2JpbiA9IFtzZWxmLnBrZ2Jpbl0KKysgICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUocGtnYmluICsgYXJncywgZW52PWVudilbMDoyXQorICAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSwgb3V0LnN0cmlwKCkKKyAKKyAgICAgZGVmIF9jb252ZXJ0X21pbmd3X3BhdGhzKHNlbGYsIGFyZ3MpOgorQEAgLTUyMiw3ICs1MjYsNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CisgICAgICAgICAgICAgIyBsaW5rZXJzIHN1Y2ggYXMgTVNWQywgc28gcHJlcGVuZCB0aGVtLgorICAgICAgICAgICAgIHNlbGYubGlua19hcmdzID0gWyctTCcgKyBscCBmb3IgbHAgaW4gbGlicGF0aHNdICsgc2VsZi5saW5rX2FyZ3MKKyAKKy0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKKysgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKKyAgICAgICAgIG9wdGlvbnMgPSBbJy0tdmFyaWFibGU9JyArIHZhcmlhYmxlX25hbWUsIHNlbGYubmFtZV0KKyAKKyAgICAgICAgIGlmICdkZWZpbmVfdmFyaWFibGUnIGluIGt3YXJnczoKK0BAIC01MzUsNyArNTM5LDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorIAorICAgICAgICAgICAgIG9wdGlvbnMgPSBbJy0tZGVmaW5lLXZhcmlhYmxlPScgKyAnPScuam9pbihkZWZpbml0aW9uKV0gKyBvcHRpb25zCisgCistICAgICAgICByZXQsIG91dCA9IHNlbGYuX2NhbGxfcGtnYmluKG9wdGlvbnMpCisrICAgICAgICByZXQsIG91dCA9IHNlbGYuX2NhbGxfcGtnYmluKG9wdGlvbnMsIHVzZV9uYXRpdmU9dXNlX25hdGl2ZSkKKyAgICAgICAgIHZhcmlhYmxlID0gJycKKyAgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgIGlmIHNlbGYucmVxdWlyZWQ6CitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQoraW5kZXggMWRiNTE4Yy4uNGVkMWQwNCAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5CisrKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQorQEAgLTIzOSw3ICsyMzksNyBAQCBjbGFzcyBRdEJhc2VEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CisgICAgICAgICBzZWxmLmJpbmRpciA9IHNlbGYuZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoY29yZSkKKyAgICAgICAgIGlmIG5vdCBzZWxmLmJpbmRpcjoKKyAgICAgICAgICAgICAjIElmIGV4ZWNfcHJlZml4IGlzIG5vdCBkZWZpbmVkLCB0aGUgcGtnLWNvbmZpZyBmaWxlIGlzIGJyb2tlbgorLSAgICAgICAgICAgIHByZWZpeCA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZXhlY19wcmVmaXgnLCB7fSkKKysgICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4Jywge30sIHVzZV9uYXRpdmU9VHJ1ZSkKKyAgICAgICAgICAgICBpZiBwcmVmaXg6CisgICAgICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCwgJ2JpbicpCisgCitAQCAtMzU5LDcgKzM1OSw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CisgICAgICAgICBhcHBsaWNhdGlvbnMgPSBbJ21vYycsICd1aWMnLCAncmNjJywgJ2x1cGRhdGUnLCAnbHJlbGVhc2UnXQorICAgICAgICAgZm9yIGFwcGxpY2F0aW9uIGluIGFwcGxpY2F0aW9uczoKKyAgICAgICAgICAgICB0cnk6CistICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbiwge30pKQorKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHt9LCB1c2VfbmF0aXZlPVRydWUpKQorICAgICAgICAgICAgIGV4Y2VwdCBNZXNvbkV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgcGFzcworIAorQEAgLTM2OSw3ICszNjksNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICAgICAgUXRCYXNlRGVwZW5kZW5jeS5fX2luaXRfXyhzZWxmLCAncXQ1JywgZW52LCBrd2FyZ3MpCisgCisgICAgIGRlZiBnZXRfcGtnY29uZmlnX2hvc3RfYmlucyhzZWxmLCBjb3JlKToKKy0gICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9KQorKyAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJywge30sIHVzZV9uYXRpdmU9VHJ1ZSkKKyAKKyAKKyAjIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgd2F5cyBvZiBkZXBlbmRpbmcgb24gU0RMMjoKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4MWRhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40NC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXNvbmJ1aWxkLmNvbSIKK1NVTU1BUlkgPSAiQSBoaWdoIHBlcmZvcm1hbmNlIGJ1aWxkIHN5c3RlbSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MmIxMTk4YmY3MTRiNWE0ZGE4NGJmZTgzNzZjNzljYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWExYTcyMTU3NGFkYjIzMTYwYjY0ODExOTFiY2MxMTczZjM3NGUwMmIwZmYzYmIwYWU4NWQ5ODhkOTdlNGZhIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzIgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIm5pbmphIHB5dGhvbjMtY29yZSBweXRob24zLW1vZHVsZXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNmZhYTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYworKysgL2Rldi9udWxsCkBAIC0xLDM0OCArMCwwIEBACi0weGZjLCAweGZhLCAweGEzLCAweDljLCAweDAyLCAweDAxLCAweDAwLCAweDg5LCAweDFkLCAweGEwLCAweDAyLCAweDAxLCAweDAwLCAweDgzLCAweGZjLCAweDAwLAotMHg3NCwgMHgwOSwgMHg4YiwgMHg0NCwgMHgyNCwgMHgwNCwgMHhhMywgMHhhNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4YiwgMHgyNSwgMHg4MCwgMHgxNCwgMHgwMSwKLTB4MDAsIDB4NmEsIDB4MDAsIDB4OWQsIDB4MzEsIDB4YzAsIDB4YmYsIDB4YjgsIDB4MTUsIDB4MDEsIDB4MDAsIDB4YjksIDB4NDQsIDB4NTgsIDB4MDEsIDB4MDAsCi0weDI5LCAweGY5LCAweGZjLCAweGYzLCAweGFhLCAweGJlLCAweGJhLCAweDAyLCAweDAxLCAweDAwLCAweGJmLCAweDAwLCAweDEwLCAweDAyLCAweDAwLCAweGI5LAotMHg3MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHhhNCwgMHgwZiwgMHgwMSwgMHgxNSwgMHhiNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwZiwgMHgwMSwgMHgxZCwKLTB4YWUsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YjgsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsIDB4OGUsIDB4ZTAsIDB4OGUsCi0weGU4LCAweDhlLCAweGQwLCAweDY4LCAweDkwLCAweDE0LCAweDAxLCAweDAwLCAweGZmLCAweDM1LCAweGE0LCAweDAyLCAweDAxLCAweDAwLCAweGZmLCAweDM1LAotMHhhMCwgMHgwMiwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwgMHg5YywgMHgwMiwgMHgwMSwgMHgwMCwgMHhlOCwgMHhlMywgMHgwOCwgMHgwMCwgMHgwMCwgMHg4OSwKLTB4YzYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4NmEsIDB4MDAsIDB4OWQsIDB4MzEsIDB4ZGIsIDB4YTEsIDB4YWMsIDB4MTQsIDB4MDEsIDB4MDAsIDB4ODMsIDB4ZjgsCi0weDAxLCAweDc0LCAweDEzLCAweDMxLCAweGMwLCAweDMxLCAweGM5LCAweDMxLCAweGQyLCAweDMxLCAweGZmLCAweDMxLCAweGVkLCAweDZhLCAweDEwLCAweGExLAotMHhhOCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg1MCwgMHhjYiwgMHg4OSwgMHhmMCwgMHhiZSwgMHgyYSwgMHgwMywgMHgwMSwgMHgwMCwgMHhiZiwgMHgwMCwgMHgyMCwKLTB4MDIsIDB4MDAsIDB4YjksIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YTQsIDB4ODksIDB4YzYsIDB4MGYsIDB4MDEsIDB4MTUsIDB4MmEsIDB4MDMsCi0weDAxLCAweDAwLCAweDMxLCAweGMwLCAweDBmLCAweGJhLCAweGU4LCAweDA1LCAweDBmLCAweDIyLCAweGUwLCAweGJmLCAweDAwLCAweDMwLCAweDAyLCAweDAwLAotMHgzMSwgMHhjMCwgMHhiOSwgMHgwMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHhmMywgMHhhYiwgMHhiZiwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHg4ZCwgMHg4NywKLTB4MDcsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ODksIDB4MDcsIDB4YmYsIDB4MDAsIDB4NDAsIDB4MDIsIDB4MDAsIDB4OGQsIDB4ODcsIDB4MDcsIDB4MTAsIDB4MDAsCi0weDAwLCAweGI5LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDA3LCAweDA1LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDgzLCAweGM3LCAweDA4LAotMHg0OSwgMHg3NSwgMHhmMywgMHhiZiwgMHgwMCwgMHg1MCwgMHgwMiwgMHgwMCwgMHhiOCwgMHg4MywgMHgwMSwgMHgwMCwgMHgwMCwgMHhiOSwgMHgwMCwgMHgwOCwKLTB4MDAsIDB4MDAsIDB4ODksIDB4MDcsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4ODMsIDB4YzcsIDB4MDgsIDB4NDksIDB4NzUsIDB4ZjMsIDB4YjgsCi0weDAwLCAweDMwLCAweDAyLCAweDAwLCAweDBmLCAweDIyLCAweGQ4LCAweGI5LCAweDgwLCAweDAwLCAweDAwLCAweGMwLCAweDBmLCAweDMyLCAweDBmLCAweGJhLAotMHhlOCwgMHgwOCwgMHgwZiwgMHgzMCwgMHg2YSwgMHgxMCwgMHhhMSwgMHhhOCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgzMSwgMHhjMCwgMHgwZiwgMHhiYSwKLTB4ZTgsIDB4MWYsIDB4MGYsIDB4YmEsIDB4ZTgsIDB4MDAsIDB4MGYsIDB4MjIsIDB4YzAsIDB4Y2IsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTMsIDB4NTYsIDB4NTcsCi0weDhiLCAweDdkLCAweDA4LCAweDgxLCAweGVmLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDhiLCAweDc1LCAweDBjLCAweDU2LCAweGU4LCAweGZjLCAweDAwLAotMHgwMCwgMHgwMCwgMHg2NiwgMHgzMSwgMHhkYiwgMHg2NiwgMHhiOCwgMHgyMCwgMHhlOCwgMHgwMCwgMHgwMCwgMHg2NiwgMHhiYSwgMHg1MCwgMHg0MSwgMHg0ZCwKLTB4NTMsIDB4NjYsIDB4YjksIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2QsIDB4MTUsIDB4NzIsIDB4MTgsIDB4NjYsIDB4M2QsIDB4NTAsIDB4NDEsIDB4NGQsCi0weDUzLCAweDc1LCAweDEwLCAweDY2LCAweDRlLCAweDY2LCAweDg1LCAweGY2LCAweDc0LCAweDA5LCAweDgzLCAweGM3LCAweDE0LCAweDY2LCAweDgzLCAweGZiLAotMHgwMCwgMHg3NSwgMHhkMiwgMHg2NiwgMHhlOCwgMHg4MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1OCwgMHgyOSwgMHhmMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHg4OSwKLTB4ZWMsIDB4NWQsIDB4YzMsIDB4NTMsIDB4NTYsIDB4NTcsIDB4ZTgsIDB4YjMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjksIDB4MzEsIDB4YzksIDB4MzEsIDB4ZDIsCi0weGI4LCAweDAxLCAweGU4LCAweGNkLCAweDE1LCAweDcyLCAweDI4LCAweDgzLCAweGY5LCAweDAwLCAweDc1LCAweDA5LCAweDgzLCAweGZhLCAweDAwLCAweDc1LAotMHgwNCwgMHg4OSwgMHhjMSwgMHg4OSwgMHhkYSwgMHg2NiwgMHg4MSwgMHhlMiwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg2NiwgMHhjMSwgMHhlMiwgMHgwNiwKLTB4NjYsIDB4ODksIDB4ZDAsIDB4NjYsIDB4ODEsIDB4ZTEsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4MDEsIDB4YzgsIDB4ZWIsIDB4MDMsIDB4NjYsCi0weDMxLCAweGMwLCAweDY2LCAweGU4LCAweDMzLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDVlLCAweDViLCAweGMzLCAweDUzLCAweDU2LCAweDU3LCAweGU4LAotMHg2YSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNCwgMHg4OCwgMHhjZCwgMHgxNSwgMHg2NiwgMHgyNSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg2NiwgMHhlOCwKLTB4MTcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4YzMsIDB4ZTgsIDB4NTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2QsIDB4MTIsIDB4ODksCi0weGMxLCAweDY2LCAweGU4LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDg5LCAweGM4LCAweGMzLCAweGZhLCAweDJlLCAweDY3LCAweDBmLCAweDAxLAotMHgxNSwgMHhiNCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwZiwgMHgyMCwgMHhjMCwgMHg2NiwgMHg4MywgMHhjOCwgMHgwMSwgMHgwZiwgMHgyMiwgMHhjMCwgMHg2NiwKLTB4ZWEsIDB4MzcsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4YjgsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsCi0weDhlLCAweGQwLCAweDgxLCAweGM0LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDMxLCAweGMwLCAweDhlLCAweGUwLCAweDhlLCAweGU4LCAweDU4LCAweDA1LAotMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHgyZSwgMHgwZiwgMHgwMSwgMHgxZCwgMHhhZSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhjMywgMHg1OCwgMHgyZCwKLTB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4ODEsIDB4ZWMsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ZWEsIDB4NzIsIDB4MDIsIDB4MDAsIDB4MDAsCi0weDA4LCAweDAwLCAweDBmLCAweDIwLCAweGMwLCAweDY2LCAweDgzLCAweGUwLCAweGZlLCAweDBmLCAweDIyLCAweGMwLCAweDY2LCAweGVhLCAweDg0LCAweDAyLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4YywgMHhjOCwgMHg4ZSwgMHhkOCwgMHg4ZSwgMHhjMCwgMHg4ZSwgMHhkMCwgMHg4ZSwgMHhlMCwgMHg4ZSwgMHhlOCwKLTB4MmUsIDB4NjcsIDB4MGYsIDB4MDEsIDB4MWQsIDB4YTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZmIsIDB4NjYsIDB4YzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2ZiwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OWIsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCi0weGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAxLCAweDkzLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKLTB4Y2YsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDIsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAotMHhhZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHg1NSwgMHg4OSwgMHhjMSwgMHg4OSwgMHhlNSwgMHhiYSwKLTB4ZmQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4YTgsIDB4MjAsIDB4NzQsIDB4ZmIsIDB4YmEsIDB4ZjgsIDB4MDMsIDB4MDAsIDB4MDAsIDB4ODgsIDB4YzgsCi0weGVlLCAweGJhLCAweGZkLCAweDAzLCAweDAwLCAweDAwLCAweGVjLCAweGE4LCAweDQwLCAweDc0LCAweGZiLCAweDVkLCAweGMzLCAweDU1LCAweDgzLCAweGY4LAotMHgwYSwgMHg4OSwgMHhlNSwgMHg1MywgMHg4OSwgMHhjMywgMHg3NSwgMHgwYSwgMHhiOCwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHhjOCwgMHhmZiwKLTB4ZmYsIDB4ZmYsIDB4ODksIDB4ZDgsIDB4NWIsIDB4NWQsIDB4ZWIsIDB4YzIsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODMsIDB4ZWMsCi0weDQ0LCAweDhkLCAweDVkLCAweDBjLCAweDhiLCAweDdkLCAweDA4LCAweDBmLCAweGJlLCAweDA3LCAweDg0LCAweGMwLCAweDBmLCAweDg0LCAweDY4LCAweDAxLAotMHgwMCwgMHgwMCwgMHgzYywgMHgyNSwgMHg3NCwgMHgwZCwgMHhlOCwgMHhjMiwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4OSwgMHg3ZCwgMHhiYywgMHhlOSwgMHg0ZSwKLTB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDcsIDB4MDEsIDB4ODksIDB4NDUsIDB4YmMsIDB4OGEsIDB4NDcsIDB4MDEsIDB4M2MsIDB4NzMsIDB4NzUsIDB4MWEsCi0weDg5LCAweGQ4LCAweDgzLCAweGMzLCAweDA0LCAweDhiLCAweDMwLCAweDBmLCAweGJlLCAweDA2LCAweDg0LCAweGMwLCAweDBmLCAweDg0LCAweDJmLCAweDAxLAotMHgwMCwgMHgwMCwgMHhlOCwgMHg5NiwgMHhmZiwgMHhmZiwgMHhmZiwgMHg0NiwgMHhlYiwgMHhlZCwgMHgzYywgMHg0YywgMHg3NSwgMHgwZCwgMHg4ZCwgMHg0NywKLTB4MDIsIDB4YmUsIDB4M2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NDUsIDB4YmMsIDB4ZWIsIDB4MzgsIDB4M2MsIDB4NmMsIDB4NzUsIDB4MGQsIDB4OGQsCi0weDQ3LCAweDAyLCAweGJlLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDI3LCAweGJlLCAweDFjLCAweDAwLCAweDAwLAotMHgwMCwgMHgzYywgMHg2OCwgMHg3NSwgMHgxZSwgMHg4MCwgMHg3ZiwgMHgwMiwgMHg2OCwgMHg3NCwgMHgwZCwgMHg4ZCwgMHg0NywgMHgwMiwgMHhiZSwgMHgwYywKLTB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NDUsIDB4YmMsIDB4ZWIsIDB4MGIsIDB4OGQsIDB4NDcsIDB4MDMsIDB4YmUsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDg5LCAweDQ1LCAweGJjLCAweDhiLCAweDQ1LCAweGJjLCAweDhhLCAweDAwLCAweDg4LCAweGMyLCAweDgzLCAweGNhLCAweDIwLCAweDgwLCAweGZhLCAweDc4LAotMHg3NSwgMHg1YiwgMHg4YiwgMHgxMywgMHg4MywgMHhmZSwgMHgxYywgMHg3ZSwgMHgwZSwgMHg4YiwgMHg0YiwgMHgwNCwgMHg4OSwgMHg1NSwgMHhiMCwgMHg4OSwKLTB4NGQsIDB4YjQsIDB4ODMsIDB4YzMsIDB4MDgsIDB4ZWIsIDB4MGIsIDB4MzEsIDB4YzksIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksIDB4NGQsIDB4YjQsIDB4ODMsCi0weGMzLCAweDA0LCAweDgzLCAweGUwLCAweDIwLCAweDhkLCAweDdkLCAweGM4LCAweDg4LCAweDQ1LCAweGJiLCAweDg5LCAweGYxLCAweDhiLCAweDU1LCAweGI0LAotMHg4YiwgMHg0NSwgMHhiMCwgMHgwZiwgMHhhZCwgMHhkMCwgMHhkMywgMHhlYSwgMHhmNiwgMHhjMSwgMHgyMCwgMHg3NCwgMHgwMiwgMHg4OSwgMHhkMCwgMHg4MywKLTB4ZTAsIDB4MGYsIDB4OGEsIDB4NTUsIDB4YmIsIDB4NDcsIDB4MGEsIDB4OTAsIDB4MTQsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ODgsIDB4NTcsIDB4ZmYsIDB4ODMsCi0weGU5LCAweDA0LCAweDc5LCAweGQ5LCAweGMxLCAweGVlLCAweDAyLCAweDhkLCAweDc0LCAweDM1LCAweGM5LCAweGViLCAweDYyLCAweDNjLCAweDY0LCAweDc1LAotMHg0YSwgMHg4YiwgMHgwMywgMHg4MywgMHhmZSwgMHgxYywgMHg3ZSwgMHgwNSwgMHg4MywgMHhjMywgMHgwOCwgMHhlYiwgMHgwMywgMHg4MywgMHhjMywgMHgwNCwKLTB4OGQsIDB4NGQsIDB4YzgsIDB4ODUsIDB4YzAsIDB4NzksIDB4MDksIDB4YzYsIDB4NDUsIDB4YzgsIDB4MmQsIDB4OGQsIDB4NGQsIDB4YzksIDB4ZjcsIDB4ZDgsCi0weDg5LCAweGNlLCAweGJmLCAweDBhLCAweDAwLCAweDAwLCAweDAwLCAweDk5LCAweDQ2LCAweGY3LCAweGZmLCAweDgzLCAweGMyLCAweDMwLCAweDg1LCAweGMwLAotMHg4OCwgMHg1NiwgMHhmZiwgMHg3NSwgMHhmMiwgMHg4OSwgMHhmMCwgMHg0OCwgMHgzOSwgMHhjMSwgMHg3MywgMHgyMywgMHgwZiwgMHhiNiwgMHgzOCwgMHg4YSwKLTB4MTEsIDB4NDEsIDB4ODgsIDB4MTAsIDB4ODksIDB4ZmEsIDB4ODgsIDB4NTEsIDB4ZmYsIDB4ZWIsIDB4ZWMsIDB4M2MsIDB4NjMsIDB4NzUsIDB4MGEsIDB4OGIsCi0weDAzLCAweDgzLCAweGMzLCAweDA0LCAweDg4LCAweDQ1LCAweGM4LCAweGViLCAweDAzLCAweDg4LCAweDQ1LCAweGM4LCAweDhkLCAweDc1LCAweGM5LCAweDhkLAotMHg3ZCwgMHhjOCwgMHgzOSwgMHhmNywgMHg3MywgMHgwYiwgMHgwZiwgMHhiZSwgMHgwNywgMHg0NywgMHhlOCwgMHg2ZSwgMHhmZSwgMHhmZiwgMHhmZiwgMHhlYiwKLTB4ZjEsIDB4OGIsIDB4N2QsIDB4YmMsIDB4NDcsIDB4ZTksIDB4OGQsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4NDQsIDB4NWIsIDB4NWUsIDB4NWYsCi0weDVkLCAweGMzLCAweDU1LCAweDMxLCAweGM5LCAweDg5LCAweGU1LCAweDU2LCAweDUzLCAweDMxLCAweGRiLCAweDgzLCAweGVjLCAweDEwLCAweDM5LCAweGQzLAotMHg3NCwgMHgyMywgMHgwZiwgMHhiNiwgMHgzNCwgMHgxOCwgMHhmNiwgMHhjMywgMHgwMSwgMHg3NCwgMHgwMywgMHhjMSwgMHhlNiwgMHgwOCwgMHgwMSwgMHhmMSwKLTB4ODEsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NzYsIDB4MGEsIDB4ODksIDB4Y2UsIDB4YzEsIDB4ZWUsIDB4MTAsIDB4MDEsIDB4ZjEsIDB4MGYsCi0weGI3LCAweGM5LCAweDQzLCAweGViLCAweGQ5LCAweDg4LCAweDRkLCAweGY2LCAweGMxLCAweGU5LCAweDA4LCAweDg4LCAweDRkLCAweGY3LCAweDBmLCAweGI3LAotMHg0NSwgMHhmNiwgMHg4MywgMHhjNCwgMHgxMCwgMHg1YiwgMHg1ZSwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4OSwKLTB4YzMsIDB4NTEsIDB4ODksIDB4NTUsIDB4ZjAsIDB4M2IsIDB4NWQsIDB4ZjAsIDB4NzMsIDB4NWYsIDB4ODEsIDB4M2IsIDB4NGMsIDB4NDIsIDB4NDksIDB4NGYsCi0weDc0LCAweDA1LCAweDgzLCAweGMzLCAweDEwLCAweGViLCAweGVlLCAweDgzLCAweDdiLCAweDA0LCAweDE4LCAweDc1LCAweGY1LCAweGJhLCAweDE4LCAweDAwLAotMHgwMCwgMHgwMCwgMHg4OSwgMHhkOCwgMHhlOCwgMHg4OSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmNywgMHhkMCwgMHg2NiwgMHg4NSwgMHhjMCwgMHg3NSwgMHhlMiwKLTB4OGQsIDB4NzMsIDB4MTgsIDB4OGIsIDB4NTMsIDB4MGMsIDB4ODksIDB4ZjAsIDB4ZTgsIDB4NzUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4MGYsCi0weGI3LCAweGMwLCAweDM5LCAweDQzLCAweDEwLCAweDc1LCAweGNiLCAweDhiLCAweDRiLCAweDBjLCAweDMxLCAweGMwLCAweDAxLCAweGYxLCAweDM5LCAweGYxLAotMHg3NiwgMHgxMCwgMHg4OSwgMHhjZiwgMHg4YiwgMHg1NiwgMHgwNCwgMHgyOSwgMHhmNywgMHgzOSwgMHhmYSwgMHg3NywgMHgwNSwgMHg0MCwgMHgwMSwgMHhkNiwKLTB4ZWIsIDB4ZWMsIDB4MzksIDB4NDMsIDB4MTQsIDB4NzUsIDB4YWIsIDB4ZWIsIDB4MDIsIDB4MzEsIDB4ZGIsIDB4NWEsIDB4ODksIDB4ZDgsIDB4NWIsIDB4NWUsCi0weDVmLCAweDVkLCAweGMzLCAweDU1LCAweGJhLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDg5LCAweGMzLAotMHgzMSwgMHhjMCwgMHg1MSwgMHhlOCwgMHg3MSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4NSwgMHhjMCwgMHg3NSwgMHgxNywgMHhiYSwgMHgwMCwgMHgwMCwgMHgxMCwKLTB4MDAsIDB4YjgsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MDAsIDB4ZTgsIDB4NWUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MDQsIDB4MzEsCi0weGMwLCAweGViLCAweDJmLCAweDhiLCAweDUwLCAweDA0LCAweDAxLCAweGMyLCAweDgzLCAweDNhLCAweDExLCAweDc1LCAweDE2LCAweDhiLCAweDcyLCAweDA4LAotMHg4OSwgMHhmMiwgMHg4OSwgMHhmMCwgMHg4MSwgMHhjMiwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHhlOCwgMHgzYSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4NSwKLTB4YzAsIDB4NzQsIDB4ZGMsIDB4ODksIDB4NDMsIDB4MjgsIDB4YzcsIDB4NDMsIDB4MjQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjgsIDB4MDEsIDB4MDAsCi0weDAwLCAweDAwLCAweDVhLCAweDViLCAweDVlLCAweDVmLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLAotMHgxNCwgMHg4OSwgMHg1NSwgMHhlOCwgMHg4YiwgMHg3NSwgMHgwYywgMHg4YiwgMHg1ZCwgMHgwOCwgMHg4OSwgMHg3NSwgMHhlNCwgMHg4OSwgMHg0ZCwgMHhlYywKLTB4MGYsIDB4YjYsIDB4YjAsIDB4ZTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODksIDB4NWQsIDB4ZTAsIDB4OGIsIDB4N2QsIDB4MTAsIDB4ODMsIDB4ZmUsIDB4MWYsCi0weDdmLCAweDMyLCAweDg5LCAweGYzLCAweDZiLCAweGY2LCAweDE0LCAweDAxLCAweGM2LCAweDQzLCAweDg5LCAweDk2LCAweGQwLCAweDAyLCAweDAwLCAweDAwLAotMHg4OSwgMHg4ZSwgMHhkNCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1NSwgMHhlMCwgMHg4YiwgMHg0ZCwgMHhlNCwgMHg4OSwgMHg5NiwgMHhkOCwgMHgwMiwKLTB4MDAsIDB4MDAsIDB4ODksIDB4OGUsIDB4ZGMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODksIDB4YmUsIDB4ZTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODgsIDB4OTgsCi0weGU4LCAweDAxLCAweDAwLCAweDAwLCAweDRmLCAweDc1LCAweDY1LCAweDhiLCAweDVkLCAweGUwLCAweDhiLCAweDc1LCAweGU0LCAweDAzLCAweDVkLCAweGU4LAotMHgxMywgMHg3NSwgMHhlYywgMHg4OSwgMHhkOSwgMHg4OSwgMHhmMywgMHhiZSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4MSwgMHhmYiwgMHhmZiwgMHgwMywKLTB4MDAsIDB4MDAsIDB4NzcsIDB4MTMsIDB4MGYsIDB4YWMsIDB4ZDksIDB4MGEsIDB4ODksIDB4Y2UsIDB4ODEsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsCi0weDc2LCAweDA1LCAweGJlLCAweGZmLCAweGZmLCAweDNmLCAweDAwLCAweDhiLCAweGI4LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDhkLCAweDk3LCAweDAwLAotMHgwNCwgMHgwMCwgMHgwMCwgMHgzOSwgMHhmMiwgMHg3MywgMHgyNSwgMHg4ZCwgMHg5NiwgMHgwMCwgMHhmYywgMHhmZiwgMHhmZiwgMHg4OSwgMHg5MCwgMHhlMCwKLTB4MDEsIDB4MDAsIDB4MDAsIDB4ODEsIDB4ZmEsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NzcsIDB4MGIsIDB4NjYsIDB4ODEsIDB4ZWUsIDB4MDAsIDB4MDQsCi0weDY2LCAweDg5LCAweDcwLCAweDAyLCAweGViLCAweDA2LCAweDY2LCAweGM3LCAweDQwLCAweDAyLCAweDAwLCAweGZjLCAweDgzLCAweGM0LCAweDE0LCAweDViLAotMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg1NSwgMHgwOCwgMHhlYywgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwKLTB4OGIsIDB4NTUsIDB4MDgsIDB4NjYsIDB4ZWQsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4ZWQsIDB4NWQsIDB4YzMsCi0weDU1LCAweDg5LCAweGU1LCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDU1LCAweDBjLCAweGVlLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLAotMHg0NSwgMHgwOCwgMHg4YiwgMHg1NSwgMHgwYywgMHg2NiwgMHhlZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwKLTB4NTUsIDB4MGMsIDB4ZWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzAsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4M2IsIDB4NDUsIDB4MGMsCi0weDc0LCAweDA5LCAweDgwLCAweDNjLCAweDAyLCAweDAwLCAweDc0LCAweDAzLCAweDQwLCAweGViLCAweGYyLCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGQyLAotMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg0ZCwgMHgwYywgMHgzYiwgMHg1NSwgMHgxMCwgMHg3NCwgMHgwNiwgMHg4OCwgMHgwYywgMHgxMCwKLTB4NDIsIDB4ZWIsIDB4ZjUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4ZDIsIDB4ODksIDB4ZTUsIDB4NTMsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NGQsCi0weDBjLCAweDNiLCAweDU1LCAweDEwLCAweDc0LCAweDA5LCAweDhhLCAweDFjLCAweDExLCAweDg4LCAweDFjLCAweDEwLCAweDQyLCAweGViLCAweGYyLCAweDViLAotMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjOSwgMHg4OSwgMHhlNSwgMHgzYiwgMHg0ZCwgMHgxMCwgMHg3NCwgMHgxNywgMHg4YiwgMHg0NSwgMHgwOCwgMHgwZiwKLTB4YjYsIDB4MTAsIDB4OGIsIDB4NDUsIDB4MGMsIDB4MGYsIDB4YjYsIDB4MDAsIDB4MzgsIDB4YzIsIDB4NzQsIDB4MDQsIDB4MjksIDB4ZDAsIDB4ZWIsIDB4MDUsCi0weDQxLCAweGViLCAweGU0LCAweDMxLCAweGMwLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDhiLCAweDQ1LCAweDA4LAotMHg2OCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0ZCwgMHgxMCwgMHg4ZCwgMHg5OCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg1MywgMHhlOCwKLTB4NzEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDEsIDB4YzMsIDB4NWUsIDB4ODEsIDB4ZjksIDB4ZmUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4OGQsIDB4NzMsCi0weDAxLCAweGM2LCAweDAzLCAweDIwLCAweDdlLCAweDA1LCAweGI5LCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDUxLCAweGZmLCAweDc1LCAweDBjLCAweGU4LAotMHg1MSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg1YSwgMHg1OSwgMHg1MCwgMHhmZiwgMHg3NSwgMHgwYywgMHg4OSwgMHhjNywgMHg1NiwgMHhlOCwgMHg3MywgMHhmZiwKLTB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MGMsIDB4YzYsIDB4NDQsIDB4M2IsIDB4MDEsIDB4MDAsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsCi0weDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDQ1LCAweDEwLCAweDhiLCAweDU1LCAweDBjLCAweDg5LCAweDQ1LCAweDBjLCAweDhiLCAweDQ1LAotMHgwOCwgMHg4OSwgMHg1NSwgMHgxMCwgMHg4YiwgMHg0MCwgMHgxMCwgMHg4OSwgMHg0NSwgMHgwOCwgMHg1ZCwgMHhlYiwgMHg4YSwgMHg1NSwgMHg4OSwgMHhlNSwKLTB4NTcsIDB4NTYsIDB4NTMsIDB4OGIsIDB4NWQsIDB4MDgsIDB4NjgsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4MDAsIDB4ZmYsIDB4NzMsIDB4MTAsCi0weGU4LCAweDE4LCAweGZmLCAweGZmLCAweGZmLCAweDhiLCAweDQzLCAweDEwLCAweGM3LCAweDQwLCAweDBlLCAweDE5LCAweDAxLCAweDEwLCAweDAwLCAweGM3LAotMHgwMCwgMHgwMCwgMHgxOSwgMHgwMCwgMHgwMCwgMHhjNywgMHg0MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHhjNiwgMHg4MCwgMHhlOCwgMHgwMSwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4YjgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsIDB4NDAsIDB4MGEsIDB4MDAsIDB4MDAsIDB4YzcsCi0weDQwLCAweDIwLCAweDNmLCAweGEzLCAweDAwLCAweDA4LCAweDg5LCAweGI4LCAweDI4LCAweDAyLCAweDAwLCAweDAwLCAweDhiLCAweDQzLCAweDBjLCAweDY4LAotMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg0OCwgMHgyOCwgMHg1MSwgMHhlOCwgMHhiOCwgMHhmZSwgMHhmZiwgMHhmZiwgMHg1YSwgMHg1ZSwgMHg4OSwKLTB4YzYsIDB4NTAsIDB4NTEsIDB4NTcsIDB4ZTgsIDB4ZGMsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4NDMsIDB4MTAsIDB4ODMsIDB4YzAsIDB4NDAsIDB4YzYsCi0weDg0LCAweDMwLCAweGMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDZhLCAweDQwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LCAweGFjLCAweGZlLCAweGZmLAotMHhmZiwgMHg4MywgMHhjNCwgMHgyNCwgMHg4YiwgMHg0MywgMHgxMCwgMHg4MywgMHhlOCwgMHg4MCwgMHg2YSwgMHgyMCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwKLTB4OTksIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4NTMsIDB4MGMsIDB4OGIsIDB4NDMsIDB4MTAsIDB4MDUsIDB4MDIsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsCi0weDRhLCAweDE0LCAweDY2LCAweDhiLCAweDUyLCAweDE2LCAweDY2LCAweDg5LCAweDQ4LCAweGY2LCAweDY2LCAweDg5LCAweDUwLCAweGZhLCAweDY2LCAweGM3LAotMHg4MCwgMHg5ZSwgMHhmZSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHhjNywgMHg0MCwgMHhkZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHhjNywKLTB4ODAsIDB4MDAsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsIDB4NDAsIDB4ZjAsIDB4ZmYsIDB4ZmYsIDB4YzYsIDB4NDAsIDB4ZmQsCi0weDAwLCAweDZhLCAweDA0LCAweDY4LCAweDI1LCAweDEwLCAweDAxLCAweDAwLCAweDUwLCAweGU4LCAweDY3LCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQzLAotMHgxMCwgMHg2NiwgMHhjNywgMHg4MCwgMHgxMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg1MCwgMHgwMCwgMHg4MywgMHhjNCwgMHgxOCwgMHg4YiwgMHg0YiwgMHgwYywKLTB4NjYsIDB4YzcsIDB4ODAsIDB4MDYsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDIsIDB4YzcsIDB4ODAsIDB4MTgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweGM3LCAweDgwLCAweDFjLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDUxLCAweDI0LAotMHg4NSwgMHhkMiwgMHg3NCwgMHgwZiwgMHg4YiwgMHg0OSwgMHgyMCwgMHg4OSwgMHg5MCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHg4OSwgMHg4OCwgMHgxOCwKLTB4MDIsIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDMsIDB4MmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsCi0weDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLCAweDRjLCAweGM3LCAweDQ1LCAweGM4LCAweDAwLCAweDAwLAotMHgwMiwgMHgwMCwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4OSwgMHg0NSwgMHhiOCwgMHg4YiwgMHg0NSwgMHgwYywgMHg4OSwgMHg0NSwgMHhiYywgMHg4YiwgMHg0NSwKLTB4MTAsIDB4ODksIDB4NDUsIDB4YzAsIDB4OGIsIDB4NDUsIDB4MTQsIDB4ODksIDB4NDUsIDB4YzQsIDB4OGQsIDB4NDUsIDB4YjgsIDB4NTAsIDB4ZTgsIDB4OWEsCi0weGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQ1LCAweGI4LCAweDU5LCAweDNkLCAweDAyLCAweGIwLCAweGFkLCAweDJiLCAweDc1LCAweDA5LCAweGM3LCAweDQ1LAotMHhjYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHgyMSwgMHgzMSwgMHhmNiwgMHgzZCwgMHgwNywgMHhiMCwgMHgxMSwgMHgwYSwgMHg3NSwgMHgyYywKLTB4OGIsIDB4NDUsIDB4YmMsIDB4OGIsIDB4MTAsIDB4ZTgsIDB4NTgsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4NjYsIDB4ODUsIDB4YzAsIDB4NzUsCi0weDBlLCAweGM3LCAweDQ1LCAweGQwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGJlLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGViLCAweDBkLCAweDUwLAotMHg2OCwgMHgyYSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhhZSwgMHhmOSwgMHhmZiwgMHhmZiwgMHg1OCwgMHg1YSwgMHgzMSwgMHhkYiwgMHg4MSwgMHg3ZCwKLTB4YjgsIDB4MDcsIDB4YjAsIDB4MWYsIDB4MGUsIDB4NzUsIDB4MDMsIDB4OGIsIDB4NWQsIDB4YmMsIDB4OGIsIDB4NDUsIDB4YzAsIDB4ODUsIDB4YzAsIDB4NzQsCi0weDBhLCAweDgxLCAweDM4LCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDAyLCAweDg5LCAweGMzLCAweDg1LCAweGY2LCAweDBmLCAweDg1LCAweGNlLAotMHgwMCwgMHgwMCwgMHgwMCwgMHg4NSwgMHhkYiwgMHgwZiwgMHg4NCwgMHhjNiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4MywgMHg3YiwgMHgwOCwgMHgwMCwKLTB4NzQsIDB4MGYsIDB4OGIsIDB4NTMsIDB4MDQsIDB4ODksIDB4ZDgsIDB4ZTgsIDB4ZjYsIDB4ZmEsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4MGYsIDB4YjcsCi0weGYwLCAweDhiLCAweDRiLCAweDA0LCAweDhkLCAweDQzLCAweDBjLCAweDAxLCAweGQ5LCAweDMxLCAweGZmLCAweDg5LCAweDRkLCAweGI0LCAweDM5LCAweDQ1LAotMHhiNCwgMHg3NiwgMHgxZiwgMHg4YiwgMHgwOCwgMHg4YiwgMHg1MCwgMHgwNCwgMHg4MywgMHhjMSwgMHgwMywgMHg4MywgMHhjMiwgMHgwMywgMHg4MywgMHhlMSwKLTB4ZmMsIDB4ODMsIDB4ZTIsIDB4ZmMsIDB4OGQsIDB4NTQsIDB4MTEsIDB4MGMsIDB4MDEsIDB4ZDAsIDB4MzksIDB4NDUsIDB4YjQsIDB4NzIsIDB4MDMsIDB4NDcsCi0weGViLCAweGRjLCAweDgxLCAweDNiLCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDFiLCAweDg1LCAweGY2LCAweDc1LCAweDE3LCAweDBmLCAweGI3LAotMHg0MywgMHgwYSwgMHgzOSwgMHhmOCwgMHg3NSwgMHgwZiwgMHhjNywgMHg0NSwgMHhkNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg1ZCwgMHhjMCwKLTB4ZTksIDB4OTUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4NjgsIDB4NGQsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MDgsIDB4ZjksIDB4ZmYsIDB4ZmYsCi0weDU2LCAweDY4LCAweDY3LCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGZkLCAweGY4LCAweGZmLCAweGZmLCAweDU3LCAweDY4LCAweDc5LCAweDEwLCAweDAxLAotMHgwMCwgMHhlOCwgMHhmMiwgMHhmOCwgMHhmZiwgMHhmZiwgMHg1MywgMHg2OCwgMHg4YiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhlNywgMHhmOCwgMHhmZiwKLTB4ZmYsIDB4ODMsIDB4YzQsIDB4MjAsIDB4ZmYsIDB4NzMsIDB4MDQsIDB4NjgsIDB4OWQsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZDcsIDB4ZjgsIDB4ZmYsCi0weGZmLCAweGZmLCAweDMzLCAweDY4LCAweGFmLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGNiLCAweGY4LCAweGZmLCAweGZmLCAweDBmLCAweGI3LCAweDQzLAotMHgwYSwgMHg1MCwgMHg2OCwgMHhjMSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhiYywgMHhmOCwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxOCwgMHhlYiwKLTB4MDQsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MzUsIDB4NTEsIDB4NjgsIDB4ZDMsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YTgsIDB4ZjgsIDB4ZmYsIDB4ZmYsCi0weGZmLCAweDc1LCAweGI4LCAweDY4LCAweGVlLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDliLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDc1LCAweGJjLAotMHg2OCwgMHhmNywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg4ZSwgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3NSwgMHhjMCwgMHg2OCwgMHgwMCwgMHgxMSwKLTB4MDEsIDB4MDAsIDB4ZTgsIDB4ODEsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MjAsIDB4YzcsIDB4NDUsIDB4ZDgsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweGM3LCAweDQ1LCAweGRjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweDdkLCAweGQ0LCAweDAwLCAweDBmLCAweDg0LCAweGZjLCAweDAwLAotMHgwMCwgMHgwMCwgMHg4YiwgMHg3ZCwgMHhjMCwgMHg4ZCwgMHg1NywgMHgwYywgMHgwMywgMHg3ZiwgMHgwNCwgMHgzOSwgMHhkNywgMHg3NiwgMHg1MSwgMHg4YiwKLTB4MzIsIDB4OGIsIDB4NWEsIDB4MDQsIDB4ODksIDB4NWQsIDB4YjQsIDB4ODMsIDB4YzMsIDB4MDMsIDB4OGQsIDB4NGUsIDB4MDMsIDB4ODMsIDB4ZTMsIDB4ZmMsCi0weDgzLCAweGUxLCAweGZjLCAweDhkLCAweDQyLCAweDBjLCAweDAxLCAweGNiLCAweDAxLCAweGMzLCAweDM5LCAweGRmLCAweDcyLCAweDMyLCAweDgzLCAweDdhLAotMHgwOCwgMHgwMSwgMHg3NSwgMHgyOCwgMHg4NSwgMHhmNiwgMHg3NSwgMHgyNCwgMHg4OSwgMHg1NSwgMHhiMCwgMHg4OSwgMHg0ZCwgMHhhYywgMHg1MiwgMHg2YSwKLTB4MDAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsIDB4MjksIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODksIDB4YzYsIDB4ODUsIDB4YzAsCi0weDhiLCAweDU1LCAweGIwLCAweDhiLCAweDRkLCAweGFjLCAweDBmLCAweDg0LCAweDFkLCAweDA0LCAweDAwLCAweDAwLCAweDg5LCAweGRhLCAweGViLCAweGFiLAotMHgzMSwgMHhkMiwgMHgzMSwgMHhmZiwgMHgzMSwgMHhmNiwgMHg4NSwgMHhkMiwgMHgwZiwgMHg5NSwgMHhjMywgMHhmNywgMHhjNiwgMHgwMSwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NzUsIDB4MzQsIDB4ODQsIDB4ZGIsIDB4NzQsIDB4MzAsIDB4MzEsIDB4ZjYsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MGEsIDB4NzUsIDB4MjgsIDB4ODksCi0weDU1LCAweGI0LCAweDUwLCAweDZhLCAweDBhLCAweDY4LCAweDM1LCAweDExLCAweDAxLCAweDAwLCAweDU3LCAweGU4LCAweGUyLCAweGZiLCAweGZmLCAweGZmLAotMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg1NSwgMHhiNCwgMHg4NSwgMHhjMCwgMHg3NSwgMHgwZCwgMHg4ZCwgMHg0NSwgMHhiOCwgMHhlOCwgMHgxMSwgMHhmYSwKLTB4ZmYsIDB4ZmYsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODksIDB4YzYsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MGYsIDB4ODQsIDB4ZGIsIDB4NzQsIDB4MGIsIDB4MzEsCi0weGMwLCAweDgzLCAweDdhLCAweDA0LCAweDAwLCAweDBmLCAweDk0LCAweGMwLCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDI1LCAweDg0LCAweGRiLAotMHg3NCwgMHgyMSwgMHg4MywgMHg3YSwgMHgwNCwgMHgwMSwgMHg3NSwgMHgxYiwgMHg1MCwgMHg2YSwgMHgwMSwgMHg2OCwgMHg2NiwgMHgxMCwgMHgwMSwgMHgwMCwKLTB4NTcsIDB4ZTgsIDB4OWMsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODUsIDB4YzAsIDB4MGYsIDB4OTQsIDB4YzAsIDB4MGYsIDB4YjYsCi0weGMwLCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDEzLCAweDg0LCAweGRiLCAweDc0LCAweDBmLCAweDU3LCAweDY4LCAweDBhLCAweDExLCAweDAxLAotMHgwMCwgMHhlOCwgMHg3MiwgMHhmNywgMHhmZiwgMHhmZiwgMHg1ZiwgMHg1OCwgMHhlYiwgMHgwNCwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxMywgMHg4ZCwgMHg0NSwKLTB4YjgsIDB4ZTgsIDB4YWQsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MDcsIDB4YzcsIDB4NDUsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsCi0weDAwLCAweDUxLCAweDY4LCAweDI1LCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDRjLCAweGY3LCAweGZmLCAweGZmLCAweDViLCAweDgzLCAweDdkLCAweGRjLAotMHgwMCwgMHg1ZSwgMHg3NCwgMHgwZCwgMHg1MCwgMHg2OCwgMHgzNCwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHgzOSwgMHhmNywgMHhmZiwgMHhmZiwgMHg1OCwKLTB4NWEsIDB4ODMsIDB4N2QsIDB4ZDgsIDB4MDAsIDB4NzQsIDB4MGQsIDB4NTMsIDB4NjgsIDB4M2YsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MjYsIDB4ZjcsCi0weGZmLCAweGZmLCAweDVlLCAweDVmLCAweDUwLCAweDY4LCAweDY1LCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDE5LCAweGY3LCAweGZmLCAweGZmLCAweDVhLAotMHg4MywgMHg3ZCwgMHhkYywgMHgwMCwgMHg1OSwgMHg3NSwgMHgzMSwgMHg4MywgMHg3ZCwgMHhkOCwgMHgwMCwgMHgwZiwgMHg4NCwgMHgxNiwgMHgwMSwgMHgwMCwKLTB4MDAsIDB4NTAsIDB4NTAsIDB4NmEsIDB4MjAsIDB4NjgsIDB4YzQsIDB4NTUsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YmIsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4YmIsCi0weGMwLCAweDU1LCAweDAxLCAweDAwLCAweGEzLCAweGMwLCAweDU1LCAweDAxLCAweDAwLCAweDgzLCAweGM0LCAweDEwLCAweGM3LCAweDQ1LCAweGI0LCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHhlOSwgMHhhYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0NSwgMHhlMCwgMHg4ZCwgMHg1OCwgMHgxOCwgMHg4YiwgMHg0OCwKLTB4MGMsIDB4MDEsIDB4ZDksIDB4ODksIDB4NGQsIDB4YjQsIDB4MzksIDB4NWQsIDB4YjQsIDB4NzYsIDB4YmMsIDB4OGIsIDB4NTUsIDB4YjQsIDB4OGIsIDB4NDMsCi0weDA0LCAweDI5LCAweGRhLCAweDM5LCAweGQwLCAweDc3LCAweGIwLCAweDgzLCAweDNiLCAweDAxLCAweDc1LCAweDRmLCAweDgzLCAweGU4LCAweDA4LCAweGI5LAotMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMSwgMHhkMiwgMHg4ZCwgMHg3MywgMHgwOCwgMHhmNywgMHhmMSwgMHg4OSwgMHg0NSwgMHhiMCwgMHgzMSwgMHhmZiwKLTB4MzksIDB4N2QsIDB4YjAsIDB4N2UsIDB4MmYsIDB4ODMsIDB4ZmYsIDB4MWYsIDB4N2YsIDB4MmEsIDB4MzEsIDB4YzAsIDB4OGIsIDB4MTYsIDB4ODMsIDB4N2UsCi0weDEwLCAweDAxLCAweDBmLCAweDk1LCAweGMwLCAweDgzLCAweGVjLCAweDA0LCAweDQwLCAweDhiLCAweDRlLCAweDA0LCAweDQ3LCAweDUwLCAweDhiLCAweDQ1LAotMHhjOCwgMHhmZiwgMHg3NiwgMHgwYywgMHhmZiwgMHg3NiwgMHgwOCwgMHg4MywgMHhjNiwgMHgxNCwgMHhlOCwgMHgyOSwgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywKLTB4YzQsIDB4MTAsIDB4ZWIsIDB4Y2MsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NWIsIDB4MDQsIDB4ZWIsIDB4OTYsCi0weDhiLCAweDQzLCAweDE0LCAweDhiLCAweDUzLCAweDA0LCAweDhiLCAweDRiLCAweDA4LCAweDhiLCAweDczLCAweDBjLCAweDhiLCAweDdiLCAweDEwLCAweDgzLAotMHhmOCwgMHgwMSwgMHg3NSwgMHgwNywgMHhjNywgMHg0NSwgMHhlNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhlYywgMHgwNCwgMHg4MywgMHhjMywKLTB4MTQsIDB4NTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4NTcsIDB4NTYsIDB4ZTgsIDB4ZWMsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NDUsIDB4YjQsIDB4ODMsCi0weGM0LCAweDEwLCAweDhiLCAweDQ1LCAweGI0LCAweDNiLCAweDA1LCAweGMwLCAweDU1LCAweDAxLCAweDAwLCAweDhiLCAweDQ1LCAweGM4LCAweDg5LCAweDQ1LAotMHhiMCwgMHg3YywgMHhiZCwgMHhlOCwgMHgzYiwgMHhmNCwgMHhmZiwgMHhmZiwgMHg4YiwgMHg3ZCwgMHhiMCwgMHg4OSwgMHg4NywgMHhlMCwgMHgwMSwgMHgwMCwKLTB4MDAsIDB4OGIsIDB4NWQsIDB4YzgsIDB4ZTgsIDB4NzMsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4NjYsIDB4ODksIDB4NDMsIDB4MDIsIDB4OGIsIDB4NDUsIDB4YzgsCi0weDgzLCAweGI4LCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDc1LCAweDA3LCAweDY2LCAweDgzLCAweDc4LCAweDAyLCAweDAwLCAweDc0LCAweDA3LAotMHhjNywgMHg0NSwgMHhlNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHg3ZCwgMHhjYywgMHgwMCwgMHgwZiwgMHg4NCwgMHhiOSwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4OGIsIDB4NzUsIDB4YmMsIDB4OGIsIDB4NTUsIDB4YzgsIDB4ODMsIDB4N2QsIDB4ZTQsIDB4MDAsIDB4OGIsIDB4MWUsIDB4NzQsIDB4NGQsIDB4ZjYsCi0weGMzLCAweDAxLCAweDc0LCAweDQ4LCAweDhiLCAweDQ2LCAweDA4LCAweDA1LCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDNkLCAweGZmLCAweGZmLCAweDNmLAotMHgwMCwgMHg3NiwgMHgwNSwgMHhiOCwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4YiwgMHhiYSwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg4ZiwKLTB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MzksIDB4YzEsIDB4NzMsIDB4MjQsIDB4OGQsIDB4ODgsIDB4MDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4OGEsCi0weGUwLCAweDAxLCAweDAwLCAweDAwLCAweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc3LCAweDBhLCAweDY2LCAweDJkLCAweDAwLCAweDA0LAotMHg2NiwgMHg4OSwgMHg0MiwgMHgwMiwgMHhlYiwgMHgwNiwgMHg2NiwgMHhjNywgMHg0MiwgMHgwMiwgMHgwMCwgMHhmYywgMHg4MCwgMHhlMywgMHgwNCwgMHg3NCwKLTB4MGYsIDB4NTAsIDB4NmEsIDB4ZmYsIDB4ZmYsIDB4NzYsIDB4MTAsIDB4NTIsIDB4ZTgsIDB4YWEsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsCi0weDgzLCAweDdkLCAweGU0LCAweDAwLCAweDBmLCAweDg0LCAweGJkLCAweDAxLCAweDAwLCAweDAwLCAweGY2LCAweDA2LCAweDQwLCAweDBmLCAweDg0LCAweGI0LAotMHgwMSwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1ZSwgMHgzMCwgMHg4YiwgMHg0NiwgMHgyYywgMHgwMSwgMHhkOCwgMHg4YiwgMHg3ZCwgMHhjOCwgMHg4OSwgMHg0NSwKLTB4YjQsIDB4OGIsIDB4NzMsIDB4ZmMsIDB4MzksIDB4NWQsIDB4YjQsIDB4MGYsIDB4ODYsIDB4OWEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MTMsIDB4OGIsCi0weDRiLCAweDA0LCAweDUwLCAweDg5LCAweGY4LCAweGZmLCAweDczLCAweDEwLCAweGZmLCAweDczLCAweDBjLCAweGZmLCAweDczLCAweDA4LCAweDAxLCAweGYzLAotMHhlOCwgMHhlMywgMHhmNywgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHhlYiwgMHhkYSwgMHg4MywgMHg3ZCwgMHhkMCwgMHgwMCwgMHgwZiwgMHg4NCwKLTB4YWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NzUsIDB4YmMsIDB4OGIsIDB4NDYsIDB4MGMsIDB4ODUsIDB4YzAsIDB4NzQsIDB4MTAsIDB4NTIsIDB4NTAsCi0weGZmLCAweDc2LCAweDA4LCAweGZmLCAweDc1LCAweGM4LCAweGU4LCAweDNjLCAweGY5LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDQ2LAotMHgxNCwgMHg4YiwgMHg1ZSwgMHgxMCwgMHg4OSwgMHg0NSwgMHhiNCwgMHg4MywgMHg3ZCwgMHhiNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHg0NiwgMHgwMSwgMHgwMCwKLTB4MDAsIDB4ODMsIDB4M2IsIDB4MDEsIDB4NzUsIDB4NmIsIDB4ODMsIDB4N2QsIDB4ZTQsIDB4MDAsIDB4NzQsIDB4NjUsIDB4OGIsIDB4NDUsIDB4YzgsIDB4YjksCi0weDE0LCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGIwLCAweDhiLCAweDQzLCAweDA0LCAweDgzLCAweGU4LCAweDA4LCAweDMxLCAweGQyLCAweGY3LAotMHhmMSwgMHg4OSwgMHg0NSwgMHhhYywgMHg4ZCwgMHg3MywgMHgwOCwgMHgzMSwgMHhmZiwgMHgzOSwgMHg3ZCwgMHhhYywgMHg3ZSwgMHgzYywgMHg4MywgMHhmZiwKLTB4MWYsIDB4N2YsIDB4MzcsIDB4OGIsIDB4NDYsIDB4MTAsIDB4OGQsIDB4NTAsIDB4ZmYsIDB4YjgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4ZmEsCi0weDAzLCAweDc3LCAweDA3LCAweDBmLCAweGI2LCAweDgyLCAweDEwLCAweDEwLCAweDAxLCAweDAwLCAweDgzLCAweGVjLCAweDA0LCAweDhiLCAweDE2LCAweDhiLAotMHg0ZSwgMHgwNCwgMHg0NywgMHg1MCwgMHg4YiwgMHg0NSwgMHhiMCwgMHhmZiwgMHg3NiwgMHgwYywgMHhmZiwgMHg3NiwgMHgwOCwgMHg4MywgMHhjNiwgMHgxNCwKLTB4ZTgsIDB4NDMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ZWIsIDB4YmYsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDhiLCAweDQzLCAweDA0LCAweDAxLCAweGMzLCAweDI5LCAweDQ1LCAweGI0LCAweGU5LCAweDc5LCAweGZmLCAweGZmLCAweGZmLCAweDgzLCAweDdkLAotMHhkNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhiZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1NSwgMHhjMCwgMHg4YiwgMHg3YSwgMHgwNCwgMHg4ZCwgMHg0MiwKLTB4MGMsIDB4MDEsIDB4ZDcsIDB4MzksIDB4YzcsIDB4MGYsIDB4ODYsIDB4YWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MTAsIDB4OGQsIDB4NDgsIDB4MGMsCi0weDhkLCAweDVhLCAweDAzLCAweDgzLCAweGUzLCAweGZjLCAweDhkLCAweDM0LCAweDE5LCAweDhiLCAweDU4LCAweDA0LCAweDg5LCAweDc1LCAweGI0LCAweDhkLAotMHg3MywgMHgwMywgMHg4MywgMHhlNiwgMHhmYywgMHgwMywgMHg3NSwgMHhiNCwgMHg4OSwgMHg3NSwgMHhiMCwgMHgzOSwgMHhmNywgMHgwZiwgMHg4MiwgMHg4NCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4MzUsIDB4NzAsIDB4MTQsIDB4MDEsIDB4MDAsIDB4OGIsIDB4NDAsIDB4MDgsIDB4ODksIDB4NzUsIDB4YWMsIDB4MzksCi0weDA1LCAweDc4LCAweDE0LCAweDAxLCAweDAwLCAweDhiLCAweDM1LCAweDc0LCAweDE0LCAweDAxLCAweDAwLCAweDc1LCAweDI3LCAweDNiLCAweDU1LCAweGFjLAotMHg3NSwgMHgyMiwgMHg1MCwgMHg1MiwgMHg1NiwgMHg1MSwgMHhlOCwgMHgxNywgMHhmOCwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4NSwgMHhjMCwKLTB4NzUsIDB4MTIsIDB4NTIsIDB4OGQsIDB4NDUsIDB4YjgsIDB4ZmYsIDB4NzUsIDB4YjQsIDB4NTMsIDB4NTAsIDB4ZmYsIDB4MTUsIDB4N2MsIDB4MTQsIDB4MDEsCi0weDAwLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDQ1LCAweGIwLCAweGViLCAweDhhLCAweDhkLCAweDdjLCAweDBhLCAweDBjLCAweDgzLCAweDdkLCAweGI0LAotMHgwNywgMHgwZiwgMHg4NSwgMHhkZiwgMHhmYiwgMHhmZiwgMHhmZiwgMHg4OSwgMHg1NSwgMHhiNCwgMHg1MCwgMHg2YSwgMHgwNywgMHg2OCwgMHg0MCwgMHgxMSwKLTB4MDEsIDB4MDAsIDB4NTcsIDB4ZTgsIDB4ZGEsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODUsIDB4YzAsCi0weDBmLCAweDg1LCAweGMwLCAweGZiLCAweGZmLCAweGZmLCAweGM3LCAweDQ1LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGJlLCAweDAxLCAweDAwLAotMHgwMCwgMHgwMCwgMHhlOSwgMHhhZiwgMHhmYiwgMHhmZiwgMHhmZiwgMHhiMCwgMHg4MCwgMHhlNiwgMHg3MCwgMHgzMSwgMHhjMCwgMHhlNiwgMHhmMCwgMHhlNiwKLTB4ZjEsIDB4YjAsIDB4MTEsIDB4ZTYsIDB4MjAsIDB4ZTYsIDB4YTAsIDB4YjAsIDB4MjAsIDB4ZTYsIDB4MjEsIDB4YjAsIDB4MjgsIDB4ZTYsIDB4YTEsIDB4YjAsCi0weDA0LCAweGU2LCAweDIxLCAweGIwLCAweDAyLCAweGU2LCAweGExLCAweGIwLCAweDAxLCAweGU2LCAweDIxLCAweGU2LCAweGExLCAweGIwLCAweGZmLCAweGU2LAotMHhhMSwgMHhiMCwgMHhmYiwgMHhlNiwgMHgyMSwgMHg4YiwgMHg0NSwgMHhjOCwgMHg4ZCwgMHg2NSwgMHhmNCwgMHg1YiwgMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywKLTB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MzAsIDB4MzEsIDB4MzIsIDB4MzMsIDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksIDB4NDEsIDB4NDIsCi0weDQzLCAweDQ0LCAweDQ1LCAweDQ2LCAweDAwLCAweDQ4LCAweDY0LCAweDcyLCAweDUzLCAweDAwLCAweDQyLCAweDYxLCAweDY0LCAweDIwLCAweDc1LCAweDZlLAotMHg2OSwgMHg2NiwgMHg2ZiwgMHg3MiwgMHg2ZCwgMHgyMCwgMHg2MiwgMHg2ZiwgMHg2ZiwgMHg3NCwgMHgyMCwgMHg2OCwgMHg2NSwgMHg2MSwgMHg2NCwgMHg2NSwKLTB4NzIsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NmIsIDB4NzMsIDB4NzUsIDB4NmQsIDB4MjEsIDB4MGEsIDB4MDAsIDB4NDIsIDB4NjEsIDB4NjQsCi0weDIwLCAweDQ1LCAweDRjLCAweDQ2LCAweDIwLCAweDcwLCAweDYxLCAweDcyLCAweDYxLCAweDZkLCAweDY1LCAweDc0LCAweDY1LCAweDcyLCAweDIwLCAweDc0LAotMHg2MSwgMHg2MiwgMHg2YywgMHg2NSwgMHgyMSwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg2MywgMHg2OCwgMHg2NSwgMHg2MywgMHg2YiwgMHg3MywKLTB4NzUsIDB4NmQsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NjMsCi0weDZmLCAweDc1LCAweDZlLCAweDc0LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAotMHgyMCwgMHgyMCwgMHgyMCwgMHg2OCwgMHg2NCwgMHg3MiwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwKLTB4MjAsIDB4MjAsIDB4NjIsIDB4NWYsIDB4NzMsIDB4NjksIDB4N2EsIDB4NjUsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NjIsCi0weDVmLCAweDczLCAweDY5LCAweDY3LCAweDZlLCAweDYxLCAweDc0LCAweDc1LCAweDcyLCAweDY1LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLAotMHgwMCwgMHgyMCwgMHgyMCwgMHg2MiwgMHg1ZiwgMHg3MiwgMHg2NSwgMHg2MywgMHg2ZiwgMHg3MiwgMHg2NCwgMHg3MywgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwKLTB4NzgsIDB4MGEsIDB4MDAsIDB4NTUsIDB4NmUsIDB4NmIsIDB4NmUsIDB4NmYsIDB4NzcsIDB4NmUsIDB4MjAsIDB4NjIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4NmMsCi0weDZmLCAweDYxLCAweDY0LCAweDY1LCAweDcyLCAweDIwLCAweDYzLCAweDZjLCAweDYxLCAweDczLCAweDczLCAweDIxLCAweDBhLCAweDAwLCAweDc0LCAweDc5LAotMHg3MCwgMHg2NSwgMHgzZCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHg2NCwgMHg2MSwgMHg3NCwgMHg2MSwgMHgzZCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwKLTB4NzAsIDB4NjEsIDB4NzIsIDB4NjEsIDB4NmQsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NTUsIDB4NmUsIDB4NmIsIDB4NmUsIDB4NmYsIDB4NzcsCi0weDZlLCAweDIwLCAweDY2LCAweDY5LCAweDcyLCAweDZkLCAweDc3LCAweDYxLCAweDcyLCAweDY1LCAweDIwLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDNhLAotMHgyMCwgMHgyNSwgMHg3MywgMHgwYSwgMHgwMCwgMHg0NiwgMHg2OSwgMHg3MiwgMHg2ZCwgMHg3NywgMHg2MSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3NCwgMHg3OSwKLTB4NzAsIDB4NjUsIDB4M2EsIDB4MDAsIDB4MjAsIDB4NGMsIDB4NjksIDB4NmUsIDB4NzUsIDB4NzgsIDB4NDIsIDB4NDksIDB4NGYsIDB4NTMsIDB4MDAsIDB4MjAsCi0weDUwLCAweDQzLCAweDQyLCAweDQ5LCAweDRmLCAweDUzLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMSwgMHg3YSwgMHg1MiwgMHgwMCwgMHgwMSwgMHg3YywgMHgwOCwgMHgwMSwgMHgxYiwgMHgwYywgMHgwNCwgMHgwNCwgMHg4OCwgMHgwMSwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTIsIDB4ZjEsIDB4ZmYsIDB4ZmYsIDB4MjMsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDVkLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNSwgMHhmMSwgMHhmZiwgMHhmZiwgMHgxYiwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDUsIDB4MGQsIDB4MDUsIDB4NDEsIDB4ODMsIDB4MDMsIDB4NTEsIDB4YzMsIDB4NDEsIDB4YzUsCi0weDBjLCAweDA0LCAweDA0LCAweDAwLCAweDJjLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLCAweDAwLCAweGRjLCAweGYxLCAweGZmLCAweGZmLAotMHg4YSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywKLTB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDMsIDB4N2QsIDB4MDEsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsCi0weDA0LCAweDAwLCAweDAwLCAweDAwLCAweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDkwLCAweDAwLCAweDAwLCAweDAwLCAweDM2LCAweGYzLCAweGZmLCAweGZmLAotMHg0NywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg0MiwgMHg4NiwgMHgwMywKLTB4ODMsIDB4MDQsIDB4N2QsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsCi0weGI4LCAweDAwLCAweDAwLCAweDAwLCAweDU1LCAweGYzLCAweGZmLCAweGZmLCAweDdhLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LAotMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0MywgMHg4NywgMHgwMywgMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg3MCwgMHhjMywgMHg0MSwKLTB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weGEzLCAweGYzLCAweGZmLCAweGZmLCAweDY1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ3LCAweDBkLAotMHgwNSwgMHg0MywgMHg4NywgMHgwMywgMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg1NiwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwKLTB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4ZjMsIDB4ZmYsIDB4ZmYsCi0weGNjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweDg3LCAweDAzLAotMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHhiZiwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4N2MsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ1LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1YywgMHgwMSwgMHgwMCwgMHgwMCwgMHg2NSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDdjLCAweDAxLCAweDAwLCAweDAwLCAweDRmLCAweGY0LCAweGZmLCAweGZmLCAweDA5LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MzgsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ4LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhiYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgyNCwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDksIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweGRjLCAweDAxLCAweDAwLCAweDAwLCAweDExLCAweGY0LCAweGZmLCAweGZmLCAweDBjLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDUyLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHhmNSwgMHhmMywgMHhmZiwgMHhmZiwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NTIsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDIwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAyLCAweDAwLCAweDAwLCAweGVkLCAweGYzLCAweGZmLCAweGZmLCAweDFkLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg0MSwgMHg4MywgMHgwMywgMHg1NSwgMHhjMywgMHg0MSwgMHhjNSwKLTB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZTYsIDB4ZjMsIDB4ZmYsIDB4ZmYsCi0weDI1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDVmLCAweGM1LCAweDBjLAotMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhlYiwgMHhmMywgMHhmZiwgMHhmZiwKLTB4NWIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsCi0weDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAyLCAweDUxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhhYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgxYiwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NTYsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDJjLCAweDAwLCAweDAwLCAweDAwLCAweGNjLCAweDAyLCAweDAwLCAweDAwLCAweDE1LCAweGY0LCAweGZmLCAweGZmLCAweDM1LCAweDAxLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0MywgMHg4NywgMHgwMywgMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwKLTB4MDMsIDB4MmIsIDB4MDEsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDJjLCAweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDAyLCAweDAwLCAweDAwLCAweDFhLCAweGY1LCAweGZmLCAweGZmLCAweGFlLCAweDA2LCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywgMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwKLTB4MDMsIDB4YTEsIDB4MDYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDEwLCAweDAxLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDEyLCAweDA4LCAweDAxLCAweDAwLAotMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4YTUsIDB4YTUsIDB4YTUsIDB4YTUsIDB4NzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsCi0weDhjLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MiwgMHg0ZiwgMHg0ZiwgMHg1NCwgMHg1ZiwgMHg0OSwgMHg0ZCwgMHg0MSwKLTB4NDcsIDB4NDUsIDB4M2QsIDB4NjgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4MmUsIDB4NTMsIDB4MjAsIDB4NjMsIDB4NmYsIDB4NmUsIDB4NzMsIDB4NmYsIDB4NmMsCi0weDY1LCAweDNkLCAweDc0LCAweDc0LCAweDc5LCAweDUzLCAweDMwLCAweDIwLCAweDY5LCAweDcwLCAweDNkLCAweDY0LCAweDY4LCAweDYzLCAweDcwLCAweDIwLAotMHg3MiwgMHg2ZiwgMHg2ZiwgMHg3NCwgMHgzZCwgMHgyZiwgMHg2NCwgMHg2NSwgMHg3NiwgMHgyZiwgMHg2ZSwgMHg2NiwgMHg3MywgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2MmViNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jcm9zcy1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLUZyb20gZGMyNzEyMTE5ZDY4MzJlMjRhOWI3YmVkOWVkNGNlNWFlMDNjZTBhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDE0IEp1bCAyMDEyIDE0OjE0OjA3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1rZWxmaW1hZ2U6IEZpeCBjcm9zcyBidWlsZAotCi1NYWtlIHRoZSB0b29sIHRvIGJlIGNyb3NzIGNvbXBpbGFibGUsIGJ5IHNlcGFyYXRpbmcgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGQKLXRvb2xzIGZyb20gdGhvc2UgZm9yIHRoZSB0YXJnZXQuIEFsc28gbW9kaWZpZWQgdG8gb2JleSBMREZMQUdTLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLQotIE1ha2VmaWxlLmNvbmYuaW4gICAgfCAzICsrKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgfCA3ICsrKysrLS0KLSBsaW51eC1pMzg2L01ha2VmaWxlIHwgMiArLQotIGxpbnV4LWlhNjQvTWFrZWZpbGUgfCAyICstCi0gbWFpbi9NYWtlZmlsZSAgICAgICB8IDQgKystLQotIDUgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmNvbmYuaW4gYi9NYWtlZmlsZS5jb25mLmluCi1pbmRleCA0NjQ1ZTQ0Li5kY2I2Y2YyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuY29uZi5pbgotKysrIGIvTWFrZWZpbGUuY29uZi5pbgotQEAgLTE3LDYgKzE3LDkgQEAgREVGUz1AREVGU0AKLSBMSUJTPUBMSUJTQAotIEhPU1RfQ0M9QEhPU1RfQ0NACi0gSE9TVF9DRkxBR1M9QEhPU1RfQ0ZMQUdTQCAgJChERUZTKQotK0NDPUBDQ0AKLStDRkxBR1M9QENGTEFHU0AgJChERUZTKQotK0xERkxBR1M9QExERkxBR1NACi0KLSBJMzg2X0NDICAgICA9QEkzODZfQ0NACi0gSTM4Nl9MRCAgICAgPUBJMzg2X0xEQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjUyYjk1Mi4uMGYyYWM3MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzAsNiArNzAsOSBAQCBpZiB0ZXN0ICJ3aXRoX2RlZmF1bHQiICE9IG5vIDsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtjYyBub3QgZm91bmRdKQotIAlmaQotIAlldmFsICIke3dpdGhfZGVmYXVsdH1fQ0M9JyRDQyciCi0rCWlmIHRlc3QgIngkSE9TVF9DQyIgPSAneCc7IHRoZW4KLSsJCUFDX0NIRUNLX1BST0coW0hPU1RfQ0NdLCBbJENDXSwgWyRDQ10sIFtnY2NdLCBbJFBBVEhdKQotKwlmaQotIAlBQ19QUk9HX0NQUAotIAlpZiB0ZXN0ICIkQ1BQIiA9IG5vOyB0aGVuCi0gCQlBQ19NU0dfRVJST1IoW2NwcCBub3QgZm91bmRdKQotQEAgLTE3Miw4ICsxNzUsOCBAQCBmaQotIAotIGRubCAtLS1PdXRwdXQgdmFyaWFibGVzLi4uCi0gCi0tSE9TVF9DQz0kQ0MKLS1IT1NUX0NGTEFHUz0iJEhPU1RfQ0ZMQUdTIC1PMiAtV2FsbCBcJChIT1NUX0NQUEZMQUdTKSIKLStDRkxBR1M9IiR7Q0ZMQUdTOi0tTzJ9IC1XYWxsIFwkKENQUEZMQUdTKSIKLStIT1NUX0NGTEFHUz0iJHtIT1NUX0NGTEFHUzotLU8yfSAtV2FsbCBcJChIT1NUX0NQUEZMQUdTKSIKLSAKLSBkbmwgVE9ETzogZmlndXJlIG91dCBob3cgdG8gc2V0IHRoZXNlIGFwcHJvcHJpYXRlbHkgZm9yIGNvbXBpbGVycyBvdGhlciB0aGFuIGdjYwotIEkzODZfQ0ZMQUdTPSIkSTM4Nl9DRkxBR1MgLU9zIC1mZnJlZXN0YW5kaW5nIC1XYWxsIC1XIC1Xbm8tZm9ybWF0IFwkKEkzODZfQ1BQRkxBR1MpIgotZGlmZiAtLWdpdCBhL2xpbnV4LWkzODYvTWFrZWZpbGUgYi9saW51eC1pMzg2L01ha2VmaWxlCi1pbmRleCA1MTUzMWQ2Li43ZThhYTNjIDEwMDY0NAotLS0tIGEvbGludXgtaTM4Ni9NYWtlZmlsZQotKysrIGIvbGludXgtaTM4Ni9NYWtlZmlsZQotQEAgLTQsNyArNCw3IEBAIExJMzg2X0RFUD1NYWtlZmlsZSBNYWtlZmlsZS5jb25mICQoTEkzODZfRElSKS9NYWtlZmlsZQotIAotICQoTEkzODZfT0JKKS9ta2VsZi1saW51eC1pMzg2Lm86ICQoTEkzODZfRElSKS9ta2VsZi1saW51eC1pMzg2LmMgJChMSTM4Nl9ESVIpL2NvbnZlcnQuYmluLmMgJChMSTM4Nl9ERVApCi0gCSQoTUtESVIpIC1wICQoQEQpCi0tCSQoSE9TVF9DQykgJChIT1NUX0NGTEFHUykgLWMgLWcgJDwgLW8gJEAKLSsJJChDQykgJChDRkxBR1MpIC1jIC1nICQ8IC1vICRACi0gCi0gCi0gaWZkZWYgSTM4Nl9DQwotZGlmZiAtLWdpdCBhL2xpbnV4LWlhNjQvTWFrZWZpbGUgYi9saW51eC1pYTY0L01ha2VmaWxlCi1pbmRleCAzOGY1ZDhjLi41ZGY4ODcwIDEwMDY0NAotLS0tIGEvbGludXgtaWE2NC9NYWtlZmlsZQotKysrIGIvbGludXgtaWE2NC9NYWtlZmlsZQotQEAgLTQsNyArNCw3IEBAIExJQTY0X0RFUD1NYWtlZmlsZSBNYWtlZmlsZS5jb25mICQoTElBNjRfRElSKS9NYWtlZmlsZQotIAotICQoTElBNjRfT0JKKS9ta2VsZi1saW51eC1pYTY0Lm86ICQoTElBNjRfRElSKS9ta2VsZi1saW51eC1pYTY0LmMgJChMSUE2NF9ESVIpL2NvbnZlcnQuYmluLmMgJChMSUE2NF9ERVApCi0gCSQoTUtESVIpIC1wICQoQEQpCi0tCSQoSE9TVF9DQykgJChIT1NUX0NGTEFHUykgLWMgLWcgJDwgLW8gJEAKLSsJJChDQykgJChDRkxBR1MpIC1jIC1nICQ8IC1vICRACi0gCi0gaWZkZWYgSUE2NF9DQwotIAotZGlmZiAtLWdpdCBhL21haW4vTWFrZWZpbGUgYi9tYWluL01ha2VmaWxlCi1pbmRleCA0MDNiMGE0Li5jZDUzNjEzIDEwMDY0NAotLS0tIGEvbWFpbi9NYWtlZmlsZQotKysrIGIvbWFpbi9NYWtlZmlsZQotQEAgLTQsMTEgKzQsMTEgQEAgTUtFTEZfT0JKUz0kKE9CSkRJUikvbWFpbi9ta2VsZkltYWdlLm8gXAotIAotICQoT0JKRElSKS9zYmluL21rZWxmSW1hZ2U6ICQoTUtFTEZfT0JKUykgJChERVBTKQotIAkkKE1LRElSKSAtcCAkKEBEKQotLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpICQoTUtFTEZfT0JKUykgLW8gJEAgJChMSUJTKQotKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKE1LRUxGX09CSlMpIC1vICRAICQoTElCUykKLSAKLSAkKE9CSkRJUikvbWFpbi9ta2VsZkltYWdlLm86IG1haW4vbWtlbGZJbWFnZS5jIGluY2x1ZGUvbWtlbGZJbWFnZS5oICQoREVQUykKLSAJJChNS0RJUikgLXAgJChARCkKLS0JJChIT1NUX0NDKSAkKEhPU1RfQ0ZMQUdTKSAtYyAkPCAtbyAkQAotKwkkKENDKSAkKENGTEFHUykgLWMgJDwgLW8gJEAKLSAKLSAkKE9CSkRJUikvbWFuL21hbjgvbWtlbGZJbWFnZS44OiBtYWluL21rZWxmSW1hZ2UubWFuCi0gCSQoTUtESVIpIC1wICQoQEQpCi0tLQotMi44LjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2ZpeC1tYWtlZmlsZS10by1maW5kLWxpYnoucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTU0NzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2ZpeC1tYWtlZmlsZS10by1maW5kLWxpYnoucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1MZXQgbWFrZWZpbGUgZmluZCBsaWJ6IGFuZCB6bGliLmggYnkgQ0ZMQUdTIGFuZCBMREZMQUdTLgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBmMmFjNzIuLmY5MDk5YTIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYyLDcgKzYyLDcgQEAgQUNfQ0hFQ0tfUFJPRyhbUlBNXSwgICBycG0sICAgcnBtLCAgIFtdLCBbJFBBVEhdKQotIEFDX0NIRUNLX1BST0coW1NFRF0sICAgc2VkLCAgIHNlZCwgICBbXSwgWyRQQVRIXSkKLSBBQ19DSEVDS19QUk9HKFtGSU5EXSwgIGZpbmQsICBmaW5kLCAgW10sIFskUEFUSF0pCi0gCi0tQUNfQ0hFQ0tfSEVBREVSKHpsaWIuaCwgQUNfQ0hFQ0tfTElCKHosIGluZmxhdGVJbml0XywgW0FDX0RFRklORShIQVZFX1pMSUJfSCwgMSkgTElCUz0iJExJQlMgLWx6Il0pKQotK0FDX0NIRUNLX0hFQURFUih6bGliLmgsIEFDX0NIRUNLX0xJQih6LCBpbmZsYXRlSW5pdF8sIFtBQ19ERUZJTkUoSEFWRV9aTElCX0gsIDEpIExJQlM9IiRMSUJTICRMREZMQUdTIC1seiJdKSkKLSAKLSBkbmwgRmluZCB0aGUgZGVmYXVsdCBwcm9ncmFtcwotIGlmIHRlc3QgIndpdGhfZGVmYXVsdCIgIT0gbm8gOyB0aGVuCi1AQCAtMTc2LDcgKzE3Niw3IEBAIGZpCi0gZG5sIC0tLU91dHB1dCB2YXJpYWJsZXMuLi4KLSAKLSBDRkxBR1M9IiR7Q0ZMQUdTOi0tTzJ9IC1XYWxsIFwkKENQUEZMQUdTKSIKLS1IT1NUX0NGTEFHUz0iJHtIT1NUX0NGTEFHUzotLU8yfSAtV2FsbCBcJChIT1NUX0NQUEZMQUdTKSIKLStIT1NUX0NGTEFHUz0iJHtIT1NUX0NGTEFHUzotLU8yfSAtV2FsbCBcJChIT1NUX0NQUEZMQUdTKSAkQ0ZMQUdTIgotIAotIGRubCBUT0RPOiBmaWd1cmUgb3V0IGhvdyB0byBzZXQgdGhlc2UgYXBwcm9wcmlhdGVseSBmb3IgY29tcGlsZXJzIG90aGVyIHRoYW4gZ2NjCi0gSTM4Nl9DRkxBR1M9IiRJMzg2X0NGTEFHUyAtT3MgLWZmcmVlc3RhbmRpbmcgLVdhbGwgLVcgLVduby1mb3JtYXQgXCQoSTM4Nl9DUFBGTEFHUykiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMwZmE3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdHkgZm9yIGNyZWF0aW5nIEVMRiBib290IGltYWdlcyBmb3IgRUxGLWJhc2VkIExpbnV4IGtlcm5lbCBpbWFnZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmNvcmVib290Lm9yZy9Na2VsZmltYWdlIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSIKLQotU1JDUkVWID0gIjY4NmE0OGEzMzliMzIwMDE4NGMyN2U3Zjk4ZDRjMDMxODBiMmJlNmMiCi1QViA9ICI0LjArZ2l0JHtTUkNQVn0iCi1SRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJta2VsZmltYWdlIGhhcyBiZWVuIHJlbW92ZWQgaW4gY29yZWJvb3QgNC4xIHJlbGVhc2U6IFwKLWh0dHA6Ly9yZXZpZXcuY29yZWJvb3Qub3JnL2dpdHdlYj9wPWNvcmVib290LmdpdDthPWNvbW1pdDtoPTM0ZmM0YWI4MGI1MDc3MzllMjU4MGQ0OTBkZmY2N2ZjZmRkZTExZWEiCi0KLQotREVQRU5EUyArPSAiemxpYiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9yZXZpZXcuY29yZWJvb3Qub3JnL3AvY29yZWJvb3Q7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoICAgXAotICAgICAgICAgICBmaWxlOi8vY29udmVydC5iaW4uYyBcCi0iCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQvdXRpbC9ta2VsZkltYWdlIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiXAotICAgIEhPU1RfQ0M9JyR7QlVJTERfQ0N9JyBcCi0gICAgSE9TVF9DRkxBR1M9JyR7QlVJTERfQ0ZMQUdTfScgXAotICAgIEhPU1RfQ1BQRkxBR1M9JyR7QlVJTERfQ1BQRkxBR1N9JyBcCi0gICAgSTM4Nl9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCi0gICAgSUE2NF9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCi0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS13aXRoLWkzODY9JHtIT1NUX1NZU30iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1kb19jb25maWd1cmVfcHJlcGVuZC1jbGFzcy1uYXRpdmUoKSB7Ci0JY3AgJHtXT1JLRElSfS9jb252ZXJ0LmJpbi5jICR7U30vbGludXgtaTM4Ni8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZS9lbGYzMi1pMzg2Ci0Jcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZQotCWNob3duIHJvb3Q6cm9vdCAke0R9LyR7c2JpbmRpcn0vbWtlbGZJbWFnZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvZmlsZXMvYXZvaWQtZmFpbHVyZS1vbi1zeW1ib2wtcHJvdmlkZWQtYnktYXBwbGljYXRpb24ucGF0Y2gKaW5kZXggN2Q2ZDYyZS4uMTdkOWFmNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvZmlsZXMvYXZvaWQtZmFpbHVyZS1vbi1zeW1ib2wtcHJvdmlkZWQtYnktYXBwbGljYXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvZmlsZXMvYXZvaWQtZmFpbHVyZS1vbi1zeW1ib2wtcHJvdmlkZWQtYnktYXBwbGljYXRpb24ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGYxNzIxMDExMzA2MDRlNGE5ZWZhNTc0NmY0ZDhkMzBkZTk5YTBmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRjYjQ1MjU2OTcwYjE1YjY3MmQwMDA0NTMzODI2Yzk0MDgzMzU2ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDE3IEFwciAyMDE1IDE0OjQ4OjIwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIGZhaWx1cmUgb24gc3ltYm9sIHByb3ZpZGVkIGJ5IGFwcGxpY2F0aW9uCitTdWJqZWN0OiBbUEFUQ0ggNC82XSBhdm9pZCBmYWlsdXJlIG9uIHN5bWJvbCBwcm92aWRlZCBieSBhcHBsaWNhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIApAQCAtMTMsMTIgKzEzLDEzIEBACiBvZiBzeW1ib2xzLgogCiBTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9ta2xpYnMgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbWtsaWJzIGIvc3JjL21rbGlicwotaW5kZXggYzU2MTRlYS4uYjBkOTAzNCAxMDA3NTUKK2luZGV4IGEzNTMzYzAuLjY2YjdhMDkgMTAwNzU1CiAtLS0gYS9zcmMvbWtsaWJzCiArKysgYi9zcmMvbWtsaWJzCiBAQCAtMTMzLDkgKzEzMyw5IEBAIGNsYXNzIFN5bWJvbChvYmplY3QpOgpAQCAtMzEsOSArMzIsOSBAQAogLSAgICAgICAgc2VsZi53ZWFrLCBzZWxmLmxpYnJhcnkgPSB3ZWFrLCBsaWJyYXJ5CiArICAgICAgICBzZWxmLndlYWssIHNlbGYubGlicmFyeSwgc2VsZi5vYmplY3QgPSB3ZWFrLCBsaWJyYXJ5LCBvYmplY3QKICAKLSAjIFJldHVybiB1bmRlZmluZWQgc3ltYm9scyBpbiBhbiBvYmplY3QgYXMgYSBzZXQgb2YgdHVwbGVzIChuYW1lLCB3ZWFrbmVzcykKLSBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKLUBAIC0xNDQsNiArMTQ0LDExIEBAIGRlZiB1bmRlZmluZWRfc3ltYm9scyhvYmopOgorIGRlZiBzeW1ib2xfaXNfYmxhY2tsaXN0ZWQobmFtZSk6CisgICAgICMgVGhlIEFSTSBFbWJlZGRlZCBBQkkgc3BlYyBzdGF0ZXMgc3ltYm9scyB1bmRlciB0aGlzIG5hbWVzcGFjZSBhcworQEAgLTE1Miw2ICsxNTIsMTEgQEAgZGVmIHVuZGVmaW5lZF9zeW1ib2xzKG9iaik6CiAgCiAgICAgIG91dHB1dCA9IGNvbW1hbmQoIm1rbGlicy1yZWFkZWxmIiwgIi0tcHJpbnQtc3ltYm9scy11bmRlZmluZWQiLCBvYmopCiAgCkBAIC00NSw3ICs0Niw3IEBACiAgICAgIHJlc3VsdCA9IFtdCiAgICAgIGZvciBsaW5lIGluIG91dHB1dDoKICAgICAgICAgIG5hbWUsIHdlYWtfc3RyaW5nLCB2ZXJzaW9uX3N0cmluZywgbGlicmFyeV9zdHJpbmcgPSBsaW5lLnNwbGl0KClbOjRdCi1AQCAtMTYwLDcgKzE2NSw3IEBAIGRlZiB1bmRlZmluZWRfc3ltYm9scyhvYmopOgorQEAgLTE3MSw3ICsxNzYsNyBAQCBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKICAgICAgICAgIGlmIGxpYnJhcnlfc3RyaW5nLmxvd2VyKCkgIT0gJ25vbmUnOgogICAgICAgICAgICAgIGxpYnJhcnkgPSBsaWJyYXJ5X3N0cmluZwogIApAQCAtNTQsNyArNTUsNyBAQAogIAogICAgICByZXR1cm4gcmVzdWx0CiAgCi1AQCAtNDk1LDEyICs1MDAsMTMgQEAgd2hpbGUgMToKK0BAIC00OTgsMTIgKzUwMywxMyBAQCB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICAgIGFuZCByZS5zZWFyY2goIl5wc18iLCBzdHIoc3ltYm9sKSkpCiAgICAgICAgICAgICAgICAgIGFuZCBub3QgKHJlLnNlYXJjaCgibGQtbGludXguc28uMyQiLCBzdHIoc3ltYm9sKSkpCiAgICAgICAgICAgICAgICAgIGFuZCBub3QgKHJlLnNlYXJjaCgiXl9fZ251X2xvY2FsX2dwIiwgc3RyKHN5bWJvbCkpKSk6CkBAIC02OCw4ICs2OSw4IEBACiArICAgIHByZXNlbnRfc3ltYm9sX3Byb2dzID0ge30KICAgICAgY2hlY2tlZF9saWJzID0gc21hbGxfbGlicwogICAgICBjaGVja2VkX2xpYnMuZXh0ZW5kKGF2YWlsYWJsZV9saWJzKQotICAgICBjaGVja2VkX2xpYnMuYXBwZW5kKGxkbGliKQotQEAgLTUxMCw2ICs1MTYsMTIgQEAgd2hpbGUgMToKKyAgICAgY2hlY2tlZF9saWJzLmFwcGVuZChzeXNyb290ICsgbGRsaWIpCitAQCAtNTEzLDYgKzUxOSwxMiBAQCB3aGlsZSAxOgogICAgICAgICAgICAgIG5hbWVzID0gc3ltYm9sLmJhc2VfbmFtZXMoKQogICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgICAgICBwcmVzZW50X3N5bWJvbHNbbmFtZV0gPSBzeW1ib2wKQEAgLTgyLDcgKzgzLDcgQEAKICAKICAgICAgIyBhcmUgd2UgZmluaXNoZWQ/CiAgICAgIG51bV91bnJlc29sdmVkID0gMAotQEAgLTU2NSw2ICs1NzcsMTQgQEAgd2hpbGUgMToKK0BAIC01NjgsNiArNTgwLDE0IEBAIHdoaWxlIDE6CiAgICAgIGZvciBuYW1lIGluIG5lZWRlZF9zeW1ib2xzOgogICAgICAgICAgaWYgbm90IG5hbWUgaW4gc3ltYm9sX3Byb3ZpZGVyOgogICAgICAgICAgICAgIGlmIG5vdCBuZWVkZWRfc3ltYm9sc1tuYW1lXS53ZWFrOgpAQCAtOTgsNSArOTksNSBAQAogICAgICAgICAgZWxzZToKICAgICAgICAgICAgICBsaWIgPSBzeW1ib2xfcHJvdmlkZXJbbmFtZV0KIC0tIAotMS44LjUuMi4yMzMuZzkzMmY3ZTQKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHMvMDAwMS1sc21tYy1yZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1tb3ZlLW9uLW92ZXJsYXBwaW5nLW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzLzAwMDEtbHNtbWMtcmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtbW92ZS1vbi1vdmVybGFwcGluZy1tZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmUyNWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzLzAwMDEtbHNtbWMtcmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtbW92ZS1vbi1vdmVybGFwcGluZy1tZS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDE3NWFjMGYzNjJiZjYxMjFjMzUzN2UyZjE3NjBhZDQxYzhmODEzNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAwMTowNDo1NyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsc21tYzogcmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtbW92ZSBvbiBvdmVybGFwcGluZyBtZW1vcnkKKyBjb3B5CisKK2hlcmUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgYXJlIG92ZXJsYXBwaW5nIHNvIHVzaW5nIG1lbW1vdmUgaXMKK2dvaW5nIHRvIGJlIG1vcmUgZWZmaWNpZW50LgorCitBZGRpdGlvbmFsbHksIHRoZSBib3VuZGVkIHNpemUgZm9yIGNvcHkgaXMgb3ZlcmZsb3dpbmcgZm9yIGZpcnN0IGNvcHkKKworSW4gZnVuY3Rpb24gJ3N0cm5jcHknLAorICAgIGlubGluZWQgZnJvbSAncmVhZF9maWxlJyBhdCBsc21tYy5jOjM1NjozOgorL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1nbnVlYWJpL21tYy11dGlscy8wLjEtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmdfZm9ydGlmaWVkLmg6MTA2OjEwOiBlcnJvcjogJ19fYnVpbHRpbl9zdHJuY3B5JyBhY2Nlc3NpbmcgNDA5NiBieXRlcyBhdCBvZmZzZXRzIDAgYW5kIDEgb3ZlcmxhcHMgNDA5NSBieXRlcyBhdCBvZmZzZXQgMSBbLVdlcnJvcj1yZXN0cmljdF0KKyAgIHJldHVybiBfX2J1aWx0aW5fX19zdHJuY3B5X2NoayAoX19kZXN0LCBfX3NyYywgX19sZW4sIF9fYm9zIChfX2Rlc3QpKTsKKyAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDMxNDcyMy9dCisgbHNtbWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xzbW1jLmMgYi9sc21tYy5jCitpbmRleCBjNGZhYTAwLi5iY2I4NTRkIDEwMDY0NAorLS0tIGEvbHNtbWMuYworKysrIGIvbHNtbWMuYworQEAgLTM1Myw3ICszNTMsNyBAQCBjaGFyICpyZWFkX2ZpbGUoY2hhciAqbmFtZSkKKyAJCWxpbmVbc3RybGVuKGxpbmUpIC0gMV0gPSAnXDAnOworIAorIAl3aGlsZSAoaXNzcGFjZShsaW5lWzBdKSkKKy0JCXN0cm5jcHkoJmxpbmVbMF0sICZsaW5lWzFdLCBzaXplb2YobGluZSkpOworKwkJbWVtbW92ZSgmbGluZVswXSwgJmxpbmVbMV0sIHNpemVvZihsaW5lKS0xKTsKKyAKKyAJcmV0dXJuIHN0cmR1cChsaW5lKTsKKyB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgppbmRleCA1MGFjZGIxLi4zN2E0NzU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKQEAgLTQsMTIgKzQsMTQgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL21tYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZhZTMyNzkyZTIwZjRkMjdhZGUxYzVhNzYyZDE2YjdkIgogCiBTUkNCUkFOQ0ggPz0gIm1hc3RlciIKLVNSQ1JFViA9ICIzN2M4NmU2MGMwNDQyZmVmNTcwYjc1Y2Q4MWFlYjFkYjRkMGNiYWZkIgorU1JDUkVWID0gImI0ZmUwYzhjMGU1N2E3NGMwMTc1NWZhOTM2MjcwM2I2MGQ3ZWU0OWQiCiAKIFBWID0gIjAuMSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvY2piL21tYy11dGlscy5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvY2piL21tYy11dGlscy5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxzbW1jLXJlcGxhY2Utc3RybmNweS13aXRoLW1lbW1vdmUtb24tb3ZlcmxhcHBpbmctbWUucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjNmOThmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDRkYWI5YmVkMTAzM2Y3OTdlZjliNDgyYzc3MzQyZmUzZmUyNmQwYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IE9jdCAyMDE1IDIzOjUxOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotLS0tCi0gamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMgYi9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKLWluZGV4IDU0NDZhMTYuLmNhNWUwZDUgMTAwNjQ0Ci0tLS0gYS9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKLSsrKyBiL2pmZnNYLXV0aWxzL21rZnMuamZmczIuYwotQEAgLTcyLDYgKzcyLDcgQEAKLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8Y3JjMzIuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgInJidHJlZS5oIgotICNpbmNsdWRlICJjb21tb24uaCIKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzLzAxMC1maXgtcnBtYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMTAtZml4LXJwbWF0Y2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1M2RlNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzLzAxMC1maXgtcnBtYXRjaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gODI4MzljM2MwMzcxY2EyYTE2NDNhOTlkN2QwMWY1YmMxYzg1MGIyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIE9iZXJob2xsZW56ZXIgPGRhdmlkLm9iZXJob2xsZW56ZXJAc2lnbWEtc3Rhci5hdD4KLURhdGU6IFRodSwgMiBNYXIgMjAxNyAxMTo0MDozNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIHJwbWF0Y2goKSB1c2FnZSB3aXRoIGNoZWNraW5nIGZpcnN0IGNoYXJhY3RlciBvZiBsaW5lCi0KLVRoaXMgaXMgYmFzZWQgb24gdGhlIHBhdGNoIGZyb20gS2hlbSBSYWogdXNlZCBieSBvcGVuZW1iZWRkZWQuIEluCi1hZGRpdGlvbiB0byB0aGUgb3JpZ2luYWwgcGF0Y2gsIHRoaXMgYWxzbyByZW1vdmVzIHRoZSBmYWxsYmFjawotaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgcHJvdmlkZWQgZm9yIEMgbGlicmFyaWVzIHRoYXQgZG9uJ3QgaW1wbGVtZW50Ci1ycG1hdGNoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEYXZpZCBPYmVyaG9sbGVuemVyIDxkYXZpZC5vYmVyaG9sbGVuemVyQHNpZ21hLXN0YXIuYXQ+Ci0tLS0KLSBpbmNsdWRlL2NvbW1vbi5oIHwgMjUgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKLWluZGV4IGQwYzcwNmQuLmQ2MDkyNTcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2NvbW1vbi5oCi1AQCAtMTI5LDIxICsxMjksNiBAQCBleHRlcm4gIkMiIHsKLSAJZnByaW50ZihzdGRlcnIsICIlczogd2FybmluZyE6ICIgZm10ICJcbiIsIFBST0dSQU1fTkFNRSwgIyNfX1ZBX0FSR1NfXyk7IFwKLSB9IHdoaWxlKDApCi0gCi0tLyogdUNsaWJjIHZlcnNpb25zIGJlZm9yZSAwLjkuMzQgYW5kIG11c2wgZG9uJ3QgaGF2ZSBycG1hdGNoKCkgKi8KLS0jaWYgZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCi0tCQkoX19VQ0xJQkNfTUFKT1JfXyA9PSAwICYmIFwKLS0JCShfX1VDTElCQ19NSU5PUl9fIDwgOSB8fCBcCi0tCQkoX19VQ0xJQkNfTUlOT1JfXyA9PSA5ICYmIF9fVUNMSUJDX1NVQkxFVkVMX18gPCAzNCkpKSB8fCBcCi0tCSFkZWZpbmVkKF9fR0xJQkNfXykKLS0jdW5kZWYgcnBtYXRjaAotLSNkZWZpbmUgcnBtYXRjaCBfX3JwbWF0Y2gKLS1zdGF0aWMgaW5saW5lIGludCBfX3JwbWF0Y2goY29uc3QgY2hhciAqcmVzcCkKLS17Ci0tICAgIHJldHVybiAocmVzcFswXSA9PSAneScgfHwgcmVzcFswXSA9PSAnWScpID8gMSA6Ci0tCShyZXNwWzBdID09ICduJyB8fCByZXNwWzBdID09ICdOJykgPyAwIDogLTE7Ci0tfQotLSNlbmRpZgotLQotIC8qKgotICAqIHByb21wdCB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uCi0gICovCi1AQCAtMTY0LDEwICsxNDksMTIgQEAgc3RhdGljIGlubGluZSBib29sIHByb21wdChjb25zdCBjaGFyICptc2csIGJvb2wgZGVmKQotIAkJfQotIAotIAkJaWYgKHN0cmNtcCgiXG4iLCBsaW5lKSAhPSAwKSB7Ci0tCQkJc3dpdGNoIChycG1hdGNoKGxpbmUpKSB7Ci0tCQkJY2FzZSAwOiByZXQgPSBmYWxzZTsgYnJlYWs7Ci0tCQkJY2FzZSAxOiByZXQgPSB0cnVlOyBicmVhazsKLS0JCQljYXNlIC0xOgotKwkJCXN3aXRjaCAobGluZVswXSkgewotKwkJCWNhc2UgJ04nOgotKwkJCWNhc2UgJ24nOiByZXQgPSBmYWxzZTsgYnJlYWs7Ci0rCQkJY2FzZSAnWSc6Ci0rCQkJY2FzZSAneSc6IHJldCA9IHRydWU7IGJyZWFrOwotKwkJCWRlZmF1bHQ6Ci0gCQkJCXB1dHMoInVua25vd24gcmVzcG9uc2U7IHBsZWFzZSB0cnkgYWdhaW4iKTsKLSAJCQkJY29udGludWU7Ci0gCQkJfQotLS0gCi0yLjYuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2gKaW5kZXggMGUzNzc2YS4uNWQ4NzRkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi0tLS0gL3RtcC9ta2ZzLmpmZnMyLmMJMjAwOS0wMS0xMSAxNToyODo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnaXQvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCTIwMDktMDEtMTEgMTU6NTk6MjkuMDAwMDAwMDAwICswMTAwCi1AQCAtMTAwLDYgKzEwMCwxMSBAQAorSW5kZXg6IGdpdC9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKKysrKyBnaXQvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCitAQCAtMTAwLDYgKzEwMCwxMSBAQCBzdHJ1Y3QgZmlsZXN5c3RlbV9lbnRyeSB7CiAgCXN0cnVjdCByYl9ub2RlIGhhcmRsaW5rX3JiOwogIH07CiAgCkBAIC0xNCw3ICsxNiw3IEBACiAgc3RydWN0IHJiX3Jvb3QgaGFyZGxpbmtzOwogIHN0YXRpYyBpbnQgb3V0X2ZkID0gLTE7CiAgc3RhdGljIGludCBpbl9mZCA9IC0xOwotQEAgLTQwOCw3ICs0MTMsNyBAQAorQEAgLTMwOSw3ICszMTQsNyBAQCBzdGF0aWMgc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKnJlY3Vyc2l2CiAgCWNoYXIgKmhwYXRoLCAqdHBhdGg7CiAgCXN0cnVjdCBkaXJlbnQgKmRwLCAqKm5hbWVsaXN0OwogIAlzdHJ1Y3QgZmlsZXN5c3RlbV9lbnRyeSAqZW50cnk7CkBAIC0yMiw4ICsyNCw4IEBACiArCXN0cnVjdCBpZ25vcmVwYXRoX2VudHJ5KiBlbGVtZW50ID0gaWdub3JlcGF0aDsKICAKICAJaWYgKGxzdGF0KGhvc3RwYXRoLCAmc2IpKSB7Ci0gCQlwZXJyb3JfbXNnX2FuZF9kaWUoIiVzIiwgaG9zdHBhdGgpOwotQEAgLTQxNyw2ICs0MjIsMTUgQEAKKyAJCXN5c19lcnJtc2dfZGllKCIlcyIsIGhvc3RwYXRoKTsKK0BAIC0zMTgsNiArMzIzLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZXN5c3RlbV9lbnRyeSAqcmVjdXJzaXYKICAJZW50cnkgPSBhZGRfaG9zdF9maWxlc3lzdGVtX2VudHJ5KHRhcmdldHBhdGgsIGhvc3RwYXRoLAogIAkJCXNiLnN0X3VpZCwgc2Iuc3RfZ2lkLCBzYi5zdF9tb2RlLCAwLCBwYXJlbnQpOwogIApAQCAtMzgsOCArNDAsOCBAQAogKwogIAluID0gc2NhbmRpcihob3N0cGF0aCwgJm5hbWVsaXN0LCAwLCBhbHBoYXNvcnQpOwogIAlpZiAobiA8IDApIHsKLSAJCXBlcnJvcl9tc2dfYW5kX2RpZSgib3BlbmluZyBkaXJlY3RvcnkgJXMiLCBob3N0cGF0aCk7Ci1AQCAtMTQ1Myw2ICsxNDY3LDcgQEAKKyAJCXN5c19lcnJtc2dfZGllKCJvcGVuaW5nIGRpcmVjdG9yeSAlcyIsIGhvc3RwYXRoKTsKK0BAIC0xMzU5LDYgKzEzNzMsNyBAQCBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKICAJeyJyb290IiwgMSwgTlVMTCwgJ3InfSwKICAJeyJwYWdlc2l6ZSIsIDEsIE5VTEwsICdzJ30sCiAgCXsiZXJhc2VibG9jayIsIDEsIE5VTEwsICdlJ30sCkBAIC00NywxNSArNDksMTUgQEAKICAJeyJvdXRwdXQiLCAxLCBOVUxMLCAnbyd9LAogIAl7ImhlbHAiLCAwLCBOVUxMLCAnaCd9LAogIAl7InZlcmJvc2UiLCAwLCBOVUxMLCAndid9LAotQEAgLTE1MDAsNiArMTUxNSw3IEBACi0gIiAgLUwsIC0tbGlzdC1jb21wcmVzc29ycyAgU2hvdyB0aGUgbGlzdCBvZiB0aGUgYXZhaWFibGUgY29tcHJlc3NvcnNcbiIKK0BAIC0xNDA5LDYgKzE0MjQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBoZWxwdGV4dFtdID0KKyAiICAtTCwgLS1saXN0LWNvbXByZXNzb3JzICBTaG93IHRoZSBsaXN0IG9mIHRoZSBhdmFpbGFibGUgY29tcHJlc3NvcnNcbiIKICAiICAtdCwgLS10ZXN0LWNvbXByZXNzaW9uICBDYWxsIGRlY29tcHJlc3MgYW5kIGNvbXBhcmUgd2l0aCB0aGUgb3JpZ2luYWwgKGZvciB0ZXN0KVxuIgogICIgIC1uLCAtLW5vLWNsZWFubWFya2VycyAgIERvbid0IGFkZCBhIGNsZWFubWFya2VyIHRvIGV2ZXJ5IGVyYXNlYmxvY2tcbiIKICsiICAtSSwgLS1pZ25vcmU9UEFUSCAgICAgICBJZ25vcmUgc3ViIGRpcmVjdG9yeSBhbmQgZmlsZSB0cmVlIGJlbG93IFBBVEggd2hlbiByZWN1cnNpbmcgb3ZlciB0aGUgZmlsZSBzeXN0ZW1cbiIKICAiICAtbywgLS1vdXRwdXQ9RklMRSAgICAgICBPdXRwdXQgdG8gRklMRSAoZGVmYXVsdDogc3Rkb3V0KVxuIgogICIgIC1sLCAtLWxpdHRsZS1lbmRpYW4gICAgIENyZWF0ZSBhIGxpdHRsZS1lbmRpYW4gZmlsZXN5c3RlbVxuIgogICIgIC1iLCAtLWJpZy1lbmRpYW4gICAgICAgIENyZWF0ZSBhIGJpZy1lbmRpYW4gZmlsZXN5c3RlbVxuIgotQEAgLTE2NjYsNiArMTY4Miw3IEBACitAQCAtMTU2Niw2ICsxNTgyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAljaGFyICpjb21wcl9uYW1lID0gTlVMTDsKICAJaW50IGNvbXByX3ByaW9yICA9IC0xOwogIAlpbnQgd2Fybl9wYWdlX3NpemUgPSAwOwpAQCAtNjMsNyArNjUsNyBAQAogIAogIAlwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CiAgCWlmIChwYWdlX3NpemUgPCAwKSAvKiBTeXN0ZW0gZG9lc24ndCBrbm93IHNvIC4uLiAqLwotQEAgLTE2NzYsNyArMTY5Myw3IEBACitAQCAtMTU3Niw3ICsxNTkzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAlqZmZzMl9jb21wcmVzc29yc19pbml0KCk7CiAgCiAgCXdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwKQEAgLTcyLDcgKzc0LDcgQEAKICAJewogIAkJc3dpdGNoIChvcHQpIHsKICAJCQljYXNlICdEJzoKLUBAIC0xNzAwLDYgKzE3MTcsMjggQEAKK0BAIC0xNjAwLDYgKzE2MTcsMjggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCQl3YXJuX3BhZ2Vfc2l6ZSA9IDA7IC8qIHNldCBieSB1c2VyLCBzbyBkb24ndCBuZWVkIHRvIHdhcm4gKi8KICAJCQkJYnJlYWs7CiAgCkBAIC0xMDAsNCArMTAyLDQgQEAKICsKICAJCQljYXNlICdvJzoKICAJCQkJaWYgKG91dF9mZCAhPSAtMSkgewotIAkJCQkJZXJyb3JfbXNnX2FuZF9kaWUoIm91dHB1dCBmaWxlbmFtZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiKTsKKyAJCQkJCWVycm1zZ19kaWUoIm91dHB1dCBmaWxlbmFtZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9maXgtYXJtdjctbmVvbi1hbGlnbm1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvZml4LWFybXY3LW5lb24tYWxpZ25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmM1OTRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9maXgtYXJtdjctbmVvbi1hbGlnbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDdkMDI2YTg1OTQ2YTA4YjgxNjdkY2Q3OTJlYTY2NjBiZjZhNDllMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZdWFuamllIEh1YW5nIDxZdWFuamllLkh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDIgTWFyIDIwMTcgMTA6NDM6NTYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFsaWdubWVudCB0cmFwIHRyaWdnZXJlZCBieSBORU9OIGluc3RydWN0aW9ucwotCi1ORU9OIGluc3RydWN0aW9uIFZMRDEuNjQgd2FzIHVzZWQgdG8gY29weSA2NCBiaXRzIGRhdGEgYWZ0ZXIgdHlwZQotY2FzdGluZywgYW5kIHRoZXkgd2lsbCB0cmlnZ2VyIGFsaWdubWVudCB0cmFwLgotVGhpcyBwYXRjaCB1c2VzIG1lbWNweSB0byBhdm9pZCBhbGlnbm1lbnQgcHJvYmxlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDxZdWFuamllLkh1YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEYXZpZCBPYmVyaG9sbGVuemVyIDxkYXZpZC5vYmVyaG9sbGVuemVyQHNpZ21hLXN0YXIuYXQ+Ci0tLS0KLSB1Ymlmcy11dGlscy9ta2ZzLnViaWZzL2tleS5oIHwgMTYgKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaCBiL3ViaWZzLXV0aWxzL21rZnMudWJpZnMva2V5LmgKLWluZGV4IDM5Mzc5ZmQuLjExODg1OGIgMTAwNjQ0Ci0tLS0gYS91Ymlmcy11dGlscy9ta2ZzLnViaWZzL2tleS5oCi0rKysgYi91Ymlmcy11dGlscy9ta2ZzLnViaWZzL2tleS5oCi1AQCAtMTU5LDEwICsxNTksMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGRhdGFfa2V5X2luaXQodW5pb24gdWJpZnNfa2V5ICprZXksIGlub190IGludW0sCi0gICovCi0gc3RhdGljIGlubGluZSB2b2lkIGtleV93cml0ZShjb25zdCB1bmlvbiB1Ymlmc19rZXkgKmZyb20sIHZvaWQgKnRvKQotIHsKLS0JdW5pb24gdWJpZnNfa2V5ICp0ID0gdG87Ci0rCV9fbGUzMiB4WzJdOwotIAotLQl0LT5qMzJbMF0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMF0pOwotLQl0LT5qMzJbMV0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMV0pOwotKwl4WzBdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzBdKTsKLSsJeFsxXSA9IGNwdV90b19sZTMyKGZyb20tPnUzMlsxXSk7Ci0rCi0rCW1lbWNweSh0bywgJngsIDgpOwotIAltZW1zZXQodG8gKyA4LCAwLCBVQklGU19NQVhfS0VZX0xFTiAtIDgpOwotIH0KLSAKLUBAIC0xNzQsMTAgKzE3NiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQga2V5X3dyaXRlKGNvbnN0IHVuaW9uIHViaWZzX2tleSAqZnJvbSwgdm9pZCAqdG8pCi0gICovCi0gc3RhdGljIGlubGluZSB2b2lkIGtleV93cml0ZV9pZHgoY29uc3QgdW5pb24gdWJpZnNfa2V5ICpmcm9tLCB2b2lkICp0bykKLSB7Ci0tCXVuaW9uIHViaWZzX2tleSAqdCA9IHRvOwotKwlfX2xlMzIgeFsyXTsKLSsKLSsJeFswXSA9IGNwdV90b19sZTMyKGZyb20tPnUzMlswXSk7Ci0rCXhbMV0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMV0pOwotIAotLQl0LT5qMzJbMF0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMF0pOwotLQl0LT5qMzJbMV0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMV0pOwotKwltZW1jcHkodG8sICZ4LCA4KTsKLSB9Ci0gCi0gLyoqCi0tLSAKLTIuNi4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9tdGQtdXRpbHMtZml4LWNvcnJ1cHQtY2xlYW5tYXJrZXItd2l0aC1mbGFzaF9lcmFzZS0tai1jb21tYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjQyZTczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9tdGQtdXRpbHMtZml4LWNvcnJ1cHQtY2xlYW5tYXJrZXItd2l0aC1mbGFzaF9lcmFzZS0tai1jb21tYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotRnJvbSBwYXRjaHdvcmsgTW9uIEF1ZyAgOCAwODoxNjo0MyAyMDExCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVN1YmplY3Q6IG10ZC11dGlsczogZml4IGNvcnJ1cHQgY2xlYW5tYXJrZXIgd2l0aCBmbGFzaF9lcmFzZSAtaiBjb21tYW5kCi1EYXRlOiBTdW4sIDA3IEF1ZyAyMDExIDIyOjE2OjQzIC0wMDAwCi1Gcm9tOiBiMzUzNjJAZnJlZXNjYWxlLmNvbQotWC1QYXRjaHdvcmstSWQ6IDEwODg3MwotTWVzc2FnZS1JZDogPDEzMTI3OTE0MDMtMTM0NzMtMS1naXQtc2VuZC1lbWFpbC1iMzUzNjJAZnJlZXNjYWxlLmNvbT4KLVRvOiA8ZHdtdzJAaW5mcmFkZWFkLm9yZz4KLUNjOiBMaXUgU2h1byA8YjM1MzYyQGZyZWVzY2FsZS5jb20+LCBBcnRlbS5CaXR5dXRza2l5QG5va2lhLmNvbSwKLSBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPiwgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKLQotRnJvbTogTGl1IFNodW8gPGIzNTM2MkBmcmVlc2NhbGUuY29tPgotCi1GbGFzaF9lcmFzZSAtaiBzaG91bGQgZmlsbCBkaXNjcmV0ZSBmcmVlb29iIGFyZWFzIHdpdGggcmVxdWlyZWQgYnl0ZXMKLW9mIEpGRlMyIGNsZWFubWFya2VyIGluIGpmZnMyX2NoZWNrX25hbmRfY2xlYW5tYXJrZXIoKS4gTm90IGp1c3QgZmlsbAotdGhlIGZpcnN0IGZyZWVvb2IgYXJlYS4KLQotVGhlIGJlbG93IGlzIHRoZSByZXN1bHQgd2l0aG91dCB0aGlzIHdvcmthcm91bmQ6Ci0KLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDAwMDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAwNDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMDgwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDBjMDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAxMDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMTQwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDE4MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAxYzAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMjAwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDI0MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAyODAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotLi4uCi0KLVNpZ25lZC1vZmYtYnk6IExpdSBTaHVvIDxiMzUzNjJAZnJlZXNjYWxlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+Ci0KLVVwZGF0ZWQgZm9yIHRoZSBuZXcgdmVyc2lvbgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tCi12MiA6IGdldCBsZW5ndGggb2YgYXZhaWxibGUgZnJlZW9vYiBieXRlcyBmcm9tIG9vYmluZm8gaW5mb3JtYXRpb24sCi0gICAgICBub3QgdXNlIHRoZSBpb2N0bCBFQ0NHRVRMQVlPVVQgd2hpY2ggaXMgYmVpbmcgZGVwcmVjYXRlZC4KLQotIGZsYXNoX2VyYXNlLmMgfCAgIDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mbGFzaF9lcmFzZS5jIGIvZmxhc2hfZXJhc2UuYwotaW5kZXggOTMzMzczYS4uNGI5ZDg0YiAxMDA2NDQKLS0tLSBhL21pc2MtdXRpbHMvZmxhc2hfZXJhc2UuYwotKysrIGIvbWlzYy11dGlscy9mbGFzaF9lcmFzZS5jCi1AQCAtOTksNiArOTksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlib29sIGlzTkFORDsKLSAJaW50IGVycm9yID0gMDsKLSAJb2ZmX3Qgb2Zmc2V0ID0gMDsKLSsJdm9pZCAqb29iX2RhdGEgPSBOVUxMOwotIAotIAkvKgotIAkgKiBQcm9jZXNzIHVzZXIgYXJndW1lbnRzCi1AQCAtMjAxLDE1ICsyMDIsNDMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQlpZiAoaW9jdGwoZmQsIE1FTUdFVE9PQlNFTCwgJm9vYmluZm8pICE9IDApCi0gCQkJCXJldHVybiBzeXNfZXJybXNnKCIlczogdW5hYmxlIHRvIGdldCBOQU5EIG9vYmluZm8iLCBtdGRfZGV2aWNlKTsKLSAKLSsJCQljbGVhbm1hcmtlci50b3RsZW4gPSBjcHVfdG9famUzMig4KTsKLSAJCQkvKiBDaGVjayBmb3IgYXV0b3BsYWNlbWVudCAqLwotIAkJCWlmIChvb2JpbmZvLnVzZWVjYyA9PSBNVERfTkFOREVDQ19BVVRPUExBQ0UpIHsKLS0JCQkJLyogR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZnJlZSBieXRlcyAqLwotLQkJCQlpZiAoIW9vYmluZm8ub29iZnJlZVswXVsxXSkKLSsJCQkJc3RydWN0IG5hbmRfZWNjbGF5b3V0X3VzZXIgZWNjbGF5b3V0OwotKwkJCQlpbnQgaSwgb29iYXZhaWw7Ci0rCi0rCQkJCWZvciAoaSA9IDAsIG9vYmF2YWlsID0gMDsgb29iaW5mby5vb2JmcmVlW2ldWzFdOyBpKyspCi0rCQkJCQlvb2JhdmFpbCArPSBvb2JpbmZvLm9vYmZyZWVbaV1bMV07Ci0rCi0rCQkJCWlmICghb29iYXZhaWwpCi0gCQkJCQlyZXR1cm4gZXJybXNnKCIgRWVlcC4gQXV0b3BsYWNlbWVudCBzZWxlY3RlZCBhbmQgbm8gZW1wdHkgc3BhY2UgaW4gb29iIik7Ci0rCi0rCQkJCS8qIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGZyZWUgYnl0ZXMgKi8KLSAJCQkJY2xtcG9zID0gb29iaW5mby5vb2JmcmVlWzBdWzBdOwotLQkJCQljbG1sZW4gPSBvb2JpbmZvLm9vYmZyZWVbMF1bMV07Ci0tCQkJCWlmIChjbG1sZW4gPiA4KQotLQkJCQkJY2xtbGVuID0gODsKLSsJCQkJY2xtbGVuID0gTUlOKG9vYmF2YWlsLCA4KTsKLSsKLSsJCQkJaWYgKG9vYmluZm8ub29iZnJlZVswXVsxXSA8IDggJiYgb29iYXZhaWwgPj0gOCkgewotKwkJCQkJaW50IGxlZnQsIG4sIGxhc3QgPSAwOwotKwkJCQkJdm9pZCAqY207Ci0rCi0rCQkJCQlvb2JfZGF0YSA9IG1hbGxvYyhtdGQub29iX3NpemUpOwotKwkJCQkJaWYgKCFvb2JfZGF0YSkKLSsJCQkJCQlyZXR1cm4gLUVOT01FTTsKLSsKLSsJCQkJCW1lbXNldChvb2JfZGF0YSwgMHhmZiwgbXRkLm9vYl9zaXplKTsKLSsJCQkJCWNtID0gJmNsZWFubWFya2VyOwotKwkJCQkJZm9yIChpID0gMCwgbGVmdCA9IGNsbWxlbjsgbGVmdCA7IGkrKykgewotKwkJCQkJCW4gPSBNSU4obGVmdCwgb29iaW5mby5vb2JmcmVlW2ldWzFdKTsKLSsJCQkJCQltZW1jcHkob29iX2RhdGEgKyBvb2JpbmZvLm9vYmZyZWVbaV1bMF0sCi0rCQkJCQkJCQljbSwgbik7Ci0rCQkJCQkJbGVmdCAtPSBuOwotKwkJCQkJCWNtICAgKz0gbjsKLSsJCQkJCQlsYXN0ID0gb29iaW5mby5vb2JmcmVlW2ldWzBdICsgbjsKLSsJCQkJCX0KLSsKLSsJCQkJCWNsbWxlbiA9IGxhc3QgLSBjbG1wb3M7Ci0rCQkJCX0KLSAJCQl9IGVsc2UgewotIAkJCQkvKiBMZWdhY3kgbW9kZSAqLwotIAkJCQlzd2l0Y2ggKG10ZC5vb2Jfc2l6ZSkgewotQEAgLTIyNyw3ICsyNTYsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJCQkJCWJyZWFrOwotIAkJCQl9Ci0gCQkJfQotLQkJCWNsZWFubWFya2VyLnRvdGxlbiA9IGNwdV90b19qZTMyKDgpOwotIAkJfQotIAkJY2xlYW5tYXJrZXIuaGRyX2NyYyA9IGNwdV90b19qZTMyKG10ZF9jcmMzMigwLCAmY2xlYW5tYXJrZXIsIHNpemVvZihjbGVhbm1hcmtlcikgLSA0KSk7Ci0gCX0KLUBAIC0yNzYsNyArMzA0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAKLSAJCS8qIHdyaXRlIGNsZWFubWFya2VyICovCi0gCQlpZiAoaXNOQU5EKSB7Ci0tCQkJaWYgKG10ZF93cml0ZV9vb2IobXRkX2Rlc2MsICZtdGQsIGZkLCAodWludDY0X3Qpb2Zmc2V0ICsgY2xtcG9zLCBjbG1sZW4sICZjbGVhbm1hcmtlcikgIT0gMCkgewotKwkJCXZvaWQgKmRhdGEgPSBvb2JfZGF0YSA/IG9vYl9kYXRhICsgY2xtcG9zIDogJmNsZWFubWFya2VyOwotKwkJCWlmIChtdGRfd3JpdGVfb29iKG10ZF9kZXNjLCAmbXRkLCBmZCwgKHVpbnQ2NF90KW9mZnNldCArIGNsbXBvcywgY2xtbGVuLCBkYXRhKSAhPSAwKSB7Ci0gCQkJCXN5c19lcnJtc2coIiVzOiBNVEQgd3JpdGVvb2IgZmFpbHVyZSIsIG10ZF9kZXZpY2UpOwotIAkJCQljb250aW51ZTsKLSAJCQl9Ci1AQCAtMjkxLDUgKzMyMCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXNob3dfcHJvZ3Jlc3MoJm10ZCwgb2Zmc2V0LCBlYiwgZWJfc3RhcnQsIGViX2NudCk7Ci0gCWJhcmV2ZXJib3NlKCFxdWlldCwgIlxuIik7Ci0gCi0rCWlmIChvb2JfZGF0YSkKLSsJCWZyZWUob29iX2RhdGEpOwotKwotIAlyZXR1cm4gMDsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgppbmRleCA0OGJhMmVlLi5hMGUxY2Y3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKQEAgLTgsNDIgKzgsNjEgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIERFUEVORFMgPSAiemxpYiBsem8gZTJmc3Byb2dzIHV0aWwtbGludXgiCitSREVQRU5EU19tdGQtdXRpbHMtdGVzdHMgKz0gImJhc2giCiAKLVBWID0gIjIuMC4wIgorUFYgPSAiMi4wLjErJHtTUkNQVn0iCiAKLVNSQ1JFViA9ICIxYmZlZTg2NjAxMzFmY2E3YTE4ZjY4ZTk1NDhhMThjYTZiMzM3OGEwIgorU1JDUkVWID0gIjljNjE3MzU1OWY5NWU5MzllNjZlZmIyZWMzMTkzZDZmMzYxOGNmNjkiCiBTUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL210ZC11dGlscy5naXQgXAogICAgICAgICAgICBmaWxlOi8vYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1hcm12Ny1uZW9uLWFsaWdubWVudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdGQtdXRpbHMtZml4LWNvcnJ1cHQtY2xlYW5tYXJrZXItd2l0aC1mbGFzaF9lcmFzZS0tai1jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMTAtZml4LXJwbWF0Y2gucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0LyIKIAorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1pbnN0YWxsLXRlc3RzIgorCiAjIHhhdHRyIHN1cHBvcnQgY3JlYXRlcyBhbiBhZGRpdGlvbmFsIGNvbXBpbGUtdGltZSBkZXBlbmRlbmN5IG9uIGFjbCBiZWNhdXNlCiAjIHRoZSBzeXMvYWNsLmggaGVhZGVyIGlzIG5lZWRlZC4gbGliYWNsIGlzIG5vdCBuZWVkZWQgYW5kIHRodXMgZW5hYmxpbmcgeGF0dHIKICMgcmVnYXJkbGVzcyB3aGV0aGVyIGFjbCBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGluIHRoZSBkaXN0cm8gc2hvdWxkIGJlIG9rYXkuCiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIiwsYWNsLCIKIAorQ1BQRkxBR1NfYXBwZW5kX3Jpc2N2NjQgID0gIiAtcHRocmVhZCAtRF9SRUVOVFJBTlQiCisKIEVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdSQU5MSUI9JHtSQU5MSUJ9JyAnQVI9JHtBUn0nICdDRkxBR1M9JHtDRkxBR1N9ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3hhdHRyJywgJycsICctRFdJVEhPVVRfWEFUVFInLCBkKX0gLUkke1N9L2luY2x1ZGUnICdCVUlMRERJUj0ke1N9JyIKIAotQUxURVJOQVRJVkVfJHtQTn0gPSAiZmxhc2hfZXJhc2VhbGwiCisjIFVzZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBjb3JyZXNwb25kaW5nIEJ1c3lCb3gtcHJvdmlkZWQgYXBwbGV0cworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmbGFzaGNwIGZsYXNoX2VyYXNlYWxsIGZsYXNoX2xvY2sgZmxhc2hfdW5sb2NrIG5hbmRkdW1wIG5hbmR3cml0ZSIKK0FMVEVSTkFUSVZFXyR7UE59LXViaWZzID0gInViaWF0dGFjaCB1YmlkZXRhY2ggdWJpbWt2b2wgdWJpcmVuYW1lIHViaXJtdm9sIHViaXJzdm9sIHViaXVwZGF0ZXZvbCIKKwogQUxURVJOQVRJVkVfTElOS19OQU1FW2ZsYXNoX2VyYXNlYWxsXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX2VyYXNlYWxsIgotIyBVc2UgaGlnaGVyIHByaW9yaXR5IHRoYW4gYnVzeWJveCdzIGZsYXNoX2VyYXNlYWxsIChjcmVhdGVkIHdoZW4gYnVpbHQgd2l0aCBDT05GSUdfRkxBU0hfRVJBU0VBTEwpCi1BTFRFUk5BVElWRV9QUklPUklUWVtmbGFzaF9lcmFzZWFsbF0gPSAiMTAwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW25hbmR3cml0ZV0gPSAiJHtzYmluZGlyfS9uYW5kd3JpdGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbmFuZGR1bXBdID0gIiR7c2JpbmRpcn0vbmFuZGR1bXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpYXR0YWNoXSA9ICIke3NiaW5kaXJ9L3ViaWF0dGFjaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1YmlhdHRhY2hdID0gIiR7c2JpbmRpcn0vdWJpYXR0YWNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaWRldGFjaF0gPSAiJHtzYmluZGlyfS91YmlkZXRhY2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpbWt2b2xdID0gIiR7c2JpbmRpcn0vdWJpbWt2b2wiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpcmVuYW1lXSA9ICIke3NiaW5kaXJ9L3ViaXJlbmFtZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1YmlybXZvbF0gPSAiJHtzYmluZGlyfS91YmlybXZvbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1Ymlyc3ZvbF0gPSAiJHtzYmluZGlyfS91Ymlyc3ZvbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1Yml1cGRhdGV2b2xdID0gIiR7c2JpbmRpcn0vdWJpdXBkYXRldm9sIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZsYXNoX2VyYXNlYWxsXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX2VyYXNlYWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZsYXNoX2xvY2tdID0gIiR7c2JpbmRpcn0vZmxhc2hfbG9jayIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF91bmxvY2tdID0gIiR7c2JpbmRpcn0vZmxhc2hfdW5sb2NrIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZsYXNoY3BdID0gIiR7c2JpbmRpcn0vZmxhc2hjcCIKIAogZG9faW5zdGFsbCAoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBTQklORElSPSR7c2JpbmRpcn0gTUFORElSPSR7bWFuZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0KIH0KIAotUEFDS0FHRVMgPSsgIm10ZC11dGlscy1qZmZzMiBtdGQtdXRpbHMtdWJpZnMgbXRkLXV0aWxzLW1pc2MiCitQQUNLQUdFUyA9KyAibXRkLXV0aWxzLWpmZnMyIG10ZC11dGlscy11YmlmcyBtdGQtdXRpbHMtbWlzYyBtdGQtdXRpbHMtdGVzdHMiCiAKIEZJTEVTX210ZC11dGlscy1qZmZzMiA9ICIke3NiaW5kaXJ9L21rZnMuamZmczIgJHtzYmluZGlyfS9qZmZzMmR1bXAgJHtzYmluZGlyfS9qZmZzMnJlYWRlciAke3NiaW5kaXJ9L3N1bXRvb2wiCiBGSUxFU19tdGQtdXRpbHMtdWJpZnMgPSAiJHtzYmluZGlyfS9ta2ZzLnViaWZzICR7c2JpbmRpcn0vdWJpKiIKIEZJTEVTX210ZC11dGlscy1taXNjID0gIiR7c2JpbmRpcn0vbmZ0bCogJHtzYmluZGlyfS9mdGwqICR7c2JpbmRpcn0vcmZkKiAke3NiaW5kaXJ9L2RvYyogJHtzYmluZGlyfS9zZXJ2ZV9pbWFnZSAke3NiaW5kaXJ9L3JlY3ZfaW1hZ2UiCitGSUxFU19tdGQtdXRpbHMtdGVzdHMgPSAiJHtsaWJleGVjZGlyfS9tdGQtdXRpbHMvKiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvbXRvb2xzLW1ha2VpbmZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL210b29scy1tYWtlaW5mby5wYXRjaAppbmRleCAyZTI4NzNhLi44Y2ViMGFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvbXRvb2xzLW1ha2VpbmZvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9tdG9vbHMtbWFrZWluZm8ucGF0Y2gKQEAgLTEsOCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtsaWNlbnNpbmddCiAKLS0tLSBtdG9vbHMtMy45LjkvY29uZmlndXJlLmluLm9yaWcJMjAwNi0wNC0xNCAxNjowNTo1NC4zMzc2NTUxOTIgLTA2MDAKLSsrKyBtdG9vbHMtMy45LjkvY29uZmlndXJlLmluCTIwMDYtMDQtMTQgMTY6MTI6MjkuNzM2NTQ1NDI0IC0wNjAwCi1AQCAtMjEsNiArMjEsMzMgQEAKK0luZGV4OiBtdG9vbHMtNC4wLjE4L2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG10b29scy00LjAuMTgub3JpZy9jb25maWd1cmUuaW4KKysrKyBtdG9vbHMtNC4wLjE4L2NvbmZpZ3VyZS5pbgorQEAgLTM1LDYgKzM1LDMzIEBAIEFDX0NBTk9OSUNBTF9TWVNURU0KICBBQ19DX0NPTlNUCiAgQUNfQ19JTkxJTkUKICAKQEAgLTM2LDkgKzM4LDExIEBACiAgCiAgZG5sIENoZWNrIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMKICBkbmwgRW5hYmxlIE9TLzIgZXh0ZW5kZWQgZGVuc2l0eSBmb3JtYXQgZGlza3MKLS0tLSBtdG9vbHMtMy45LjkvTWFrZWZpbGUuaW4uc2F2CTIwMDYtMDQtMTQgMTU6NTY6MTkuMDAwMDAwMDAwIC0wNjAwCi0rKysgbXRvb2xzLTMuOS45L01ha2VmaWxlLmluCTIwMDYtMDQtMTQgMTY6MTU6MjkuMzE1MjQ1MzEyIC0wNjAwCi1AQCAtMTEsMTAgKzExLDExIEBACitJbmRleDogbXRvb2xzLTQuMC4xOC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG10b29scy00LjAuMTgub3JpZy9NYWtlZmlsZS5pbgorKysrIG10b29scy00LjAuMTgvTWFrZWZpbGUuaW4KK0BAIC0yNiwxMCArMjYsMTEgQEAgVVNFUkNGTEFHUyA9CiAgVVNFUkxERkxBR1MgPQogIFVTRVJMRExJQlMgPQogIApAQCAtNTQsNyArNTgsNyBAQAogIAogIAogICMgZG8gbm90IGVkaXQgYmVsb3cgdGhpcyBsaW5lCi1AQCAtMTgxLDcgKzE4Miw3IEBACitAQCAtMTk4LDcgKzE5OSw3IEBAIGR2aTogbXRvb2xzLmR2aQogIAogIHBzOiBtdG9vbHMucHMKICAlLnBzOiAlLmR2aQpAQCAtNjIsNCArNjYsNCBAQAogKwkkKERWSTJQUykgLWYgPCAkPCA+ICRACiAgCiAgcGRmOiBtdG9vbHMucGRmCi0gJS5wZGY6ICUudGV4aQorICUucGRmOiAlLnRleGkgc3lzY29uZmRpci50ZXhpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLWFzbWxpYi1Ecm9wLXB1cmUtZnVuY3Rpb24tYXR0cmlidXRlLWZyb20tc2VnX2luaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLWFzbWxpYi1Ecm9wLXB1cmUtZnVuY3Rpb24tYXR0cmlidXRlLWZyb20tc2VnX2luaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhZTNhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDEtYXNtbGliLURyb3AtcHVyZS1mdW5jdGlvbi1hdHRyaWJ1dGUtZnJvbS1zZWdfaW5pdC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDc3YzNhNzcyMTBkOGNhOGI5NGU5OTljNzExMTU2ZTk4NGE4ZGM3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMSBNYXIgMjAxOCAxMTowNTozMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhc21saWI6IERyb3AgcHVyZSBmdW5jdGlvbiBhdHRyaWJ1dGUgZnJvbSBzZWdfaW5pdAorCitzZWdfaW5pdCByZXR1cm5zIHZvaWQsIHNvIGl0IGlzIGltcHVyZSBmdW5jdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgaW5jbHVkZS9uYXNtbGliLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL25hc21saWIuaCBiL2luY2x1ZGUvbmFzbWxpYi5oCitpbmRleCA3OWU4NjZiLi5iODBiN2UyIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9uYXNtbGliLmgKKysrKyBiL2luY2x1ZGUvbmFzbWxpYi5oCitAQCAtMTkxLDcgKzE5MSw3IEBAIGludDY0X3QgcmVhZHN0cm51bShjaGFyICpzdHIsIGludCBsZW5ndGgsIGJvb2wgKndhcm4pOworICAqIHNlZ19pbml0OiBJbml0aWFsaXNlIHRoZSBzZWdtZW50LW51bWJlciBhbGxvY2F0b3IuCisgICogc2VnX2FsbG9jOiBhbGxvY2F0ZSBhIGhpdGhlcnRvIHVudXNlZCBzZWdtZW50IG51bWJlci4KKyAgKi8KKy12b2lkIHB1cmVfZnVuYyBzZWdfaW5pdCh2b2lkKTsKKyt2b2lkIHNlZ19pbml0KHZvaWQpOworIGludDMyX3QgcHVyZV9mdW5jIHNlZ19hbGxvYyh2b2lkKTsKKyAKKyAvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMThjZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMy4wMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWY3ZDQ2NjIwNDBkMjQzNTFkZjdkNjcxOWVkNGY5N2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhmOTdiYWYwYTdmODkyMTI4YzY0MTNjZmE5M2I2OWRjNTgyNWZiYmQwNmM3MDkyOGFlYTAyODgzNWQxOThmYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0JCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAotCWZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKLQotCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLURFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMy4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2ZDdlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDMuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJHZW5lcmFsLXB1cnBvc2UgeDg2IGFzc2VtYmxlciIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwOTA0NDg2ZjhmYmYxODYxY2Y0Mjc1MmUxYTM5ZWZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmFzbS51cy9wdWIvbmFzbS9yZWxlYXNlYnVpbGRzLyR7UFZ9L25hc20tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzbWxpYi1Ecm9wLXB1cmUtZnVuY3Rpb24tYXR0cmlidXRlLWZyb20tc2VnX2luaXQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYzU4MWQ0ODJmMzlkNTExMTg3OWNhOTYwMTkzOGY3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2VjODY0NzdhZDNmMGY2MjkyMzI1ZmQ4OWUxZDkzYWVhMmUyZmQ0OTAwNzA4NjNmMTdkNDhmN2NkMzg3MDExIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWlmIFsgLWYgJHtTfS9hY2xvY2FsLm00IF0gJiYgWyAhIC1mICR7U30vYWNpbmNsdWRlLm00IF07IHRoZW4KKwkJbXYgJHtTfS9hY2xvY2FsLm00ICR7U30vYWNpbmNsdWRlLm00CisJZmkKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuMQorCisJb2VfcnVubWFrZSAnSU5TVEFMTFJPT1Q9JHtEfScgaW5zdGFsbAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworREVQRU5EUyA9ICJncm9mZi1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQzYjI3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuNy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKLQotREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCi0KLVNSQ1JFViA9ICI3MTdiN2I0YTMxZGI2MDI3MjA3NTg4YzBmYjg5YzNlYWQzODQ3NDdiIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWFydGluZS9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKLQkuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAotfQotCi1kb19jb21waWxlKCkgewotCS4vY29uZmlndXJlLnB5Ci0JbmluamEKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmZjZmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjguMi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIk5pbmphIGlzIGEgc21hbGwgYnVpbGQgc3lzdGVtIHdpdGggYSBmb2N1cyBvbiBzcGVlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vbWFydGluZS5naXRodWIuY29tL25pbmphLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE4MTU4NmE2NGFkNGU0NzZjNzkxY2RhN2UyZjJjNTJlIgorCitERVBFTkRTID0gInJlMmMtbmF0aXZlIG5pbmphLW5hdGl2ZSIKKworU1JDUkVWID0gIjI1M2U5NGMxZmE1MTE3MDRiYWViNjFjZjY5OTk1YmJmMDliYTQzNWUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uaW5qYS1idWlsZC9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwkuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAorfQorCitkb19jb21waWxlKCkgeworCS4vY29uZmlndXJlLnB5CisJbmluamEKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLU9ubHktdXNlLXNvcnQtbmFtZS1vbi12ZXJzaW9ucy1vZi10YXItd2hpY2gtc3VwcG9ydC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLU9ubHktdXNlLXNvcnQtbmFtZS1vbi12ZXJzaW9ucy1vZi10YXItd2hpY2gtc3VwcG9ydC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI3Y2E3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtT25seS11c2Utc29ydC1uYW1lLW9uLXZlcnNpb25zLW9mLXRhci13aGljaC1zdXBwb3J0LS5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIGVmNWRiMDYyYjdkMjVlNjA3MGFjYzY5MjJlYTQ4ZjUwNDkxMzEzYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDA5OjQyOjU2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBPbmx5IHVzZSAtLXNvcnQ9bmFtZSBvbiB2ZXJzaW9ucyBvZiB0YXIgd2hpY2ggc3VwcG9ydCBpdC4KKyBUaGlzIGZpeGVzIGNvbXBhdGliaWxpdHkgd2l0aCBic2R0YXIgYW5kIG9sZCB2ZXJzaW9ucyBvZiBHTlUgdGFyIChlLmcuCisgUkhFTDYpLgorCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBvcGtnLWJ1aWxkIHwgMTEgKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogb3BrZy11dGlscy0wLjMuNi9vcGtnLWJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BrZy11dGlscy0wLjMuNi5vcmlnL29wa2ctYnVpbGQKKysrKyBvcGtnLXV0aWxzLTAuMy42L29wa2ctYnVpbGQKK0BAIC0yMzIsNiArMjMyLDExIEBAIGlmIFsgJGNvbXByZXNzb3IgPSAiZ3ppcCIgXSA7IHRoZW4KKyAJY29tcHJlc3NvcmFyZ3M9JHppcGFyZ3MKKyBmaQorIAorK3Rzb3J0YXJncz0KKytpZiB0YXIgLS1oZWxwIDI+JjEgfCBncmVwIC0tICItLXNvcnQ9IiA+IC9kZXYvbnVsbDsgdGhlbgorKwl0c29ydGFyZ3M9Ii0tc29ydD1uYW1lIgorK2ZpCisrCisgc2hpZnQgJCgoJE9QVElORCAtIDEpKQorIAorICMgY29udGludWUgb24gdG8gcHJvY2VzcyBhZGRpdGlvbmFsIGFyZ3VtZW50cworQEAgLTI4MCw4ICsyODUsOCBAQCBta2RpciAkdG1wX2RpcgorIGJ1aWxkX2RhdGU9IiQoZGF0ZSAtLXV0YyAtLWRhdGU9IkAke1NPVVJDRV9EQVRFX0VQT0NIOi0kKGRhdGUgKyVzKX0iICslWS0lbS0lZCkiCisgCisgZWNobyAkQ09OVFJPTCA+ICR0bXBfZGlyL3RhclgKKy0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzIC0tc29ydD1uYW1lIC0tbXRpbWU9JGJ1aWxkX2RhdGUgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCistKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAtLXNvcnQ9bmFtZSAtLW10aW1lPSRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisrKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgLWMgJHRhcmZvcm1hdCAuIHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkKKyBybSAkdG1wX2Rpci90YXJYCisgCisgZWNobyAiMi4wIiA+ICR0bXBfZGlyL2RlYmlhbi1iaW5hcnkKK0BAIC0yOTYsNyArMzAxLDcgQEAgcm0gLWYgJHBrZ19maWxlCisgaWYgWyAiJG91dGVyIiA9ICJhciIgXSA7IHRoZW4KKyAgICggY2QgJHRtcF9kaXIgJiYgYXIgLWNyZiAkcGtnX2ZpbGUgLi9kZWJpYW4tYmluYXJ5IC4vY29udHJvbC50YXIuZ3ogLi9kYXRhLnRhci4kY2V4dCApCisgZWxzZQorLSAgKCBjZCAkdG1wX2RpciAmJiB0YXIgLWMgLS1zb3J0PW5hbWUgLS1tdGltZT0kYnVpbGRfZGF0ZSAkdGFyZm9ybWF0IC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgfCBnemlwICR6aXBhcmdzID4gJHBrZ19maWxlICkKKysgICggY2QgJHRtcF9kaXIgJiYgdGFyIC1jICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAkdGFyZm9ybWF0IC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgfCBnemlwICR6aXBhcmdzID4gJHBrZ19maWxlICkKKyBmaQorIAorIHJtICR0bXBfZGlyL2RlYmlhbi1iaW5hcnkgJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgJHRtcF9kaXIvY29udHJvbC50YXIuZ3oKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzM4OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMi1vcGtnLWJ1aWxkLVVzZS1sb2NhbC10aW1lLWZvci1idWlsZF9kYXRlLXNpbmNlLW9wa2ctLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNTcyNzgyNmI1MWNmOTlmZWFmZjM0ODNhOWRmOGFmMjA0M2U3ZWZjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgSGFuc2VuIDxtaWNoYWVsLmouaGFuc2VuQGhwLmNvbT4KK0RhdGU6IE1vbiwgMjYgRmViIDIwMTggMTA6MTc6MDEgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIG9wa2ctYnVpbGQ6IFVzZSBsb2NhbCB0aW1lIGZvciBidWlsZF9kYXRlLCBzaW5jZSBvcGtnCisgZXh0cmFjdHMgZmlsZXMgYXNzdW1pbmcgbG9jYWwgdGltZSByYXRoZXIgdGhhbiBVVEMuIEFsc28gaW5jcmVhc2UgcmVzb2x1dGlvbgorIG9mIGJ1aWxkIGRhdGUgZG93biB0byB0aGUgc2Vjb25kLCByYXRoZXIgdGhhbiBjbGFtcGluZyB0byBtaWRuaWdodCBvZiB0aGUKKyBjdXJyZW50IGRhdGUuCisKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGFuc2VuIDxtaWNoYWVsLmouaGFuc2VuQGhwLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKy0tLQorIG9wa2ctYnVpbGQgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wa2ctdXRpbHMtMC4zLjYvb3BrZy1idWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wa2ctdXRpbHMtMC4zLjYub3JpZy9vcGtnLWJ1aWxkCisrKysgb3BrZy11dGlscy0wLjMuNi9vcGtnLWJ1aWxkCitAQCAtMjgyLDExICsyODIsMTEgQEAgZmkKKyB0bXBfZGlyPSRkZXN0X2Rpci9JUEtHX0JVSUxELiQkCisgbWtkaXIgJHRtcF9kaXIKKyAKKy1idWlsZF9kYXRlPSIkKGRhdGUgLS11dGMgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiArJVktJW0tJWQpIgorK2J1aWxkX2RhdGU9IiQoZGF0ZSAtLWRhdGU9IkAke1NPVVJDRV9EQVRFX0VQT0NIOi0kKGRhdGUgKyVzKX0iICIrJVktJW0tJWQgJUg6JU06JVMiKSIKKyAKKyBlY2hvICRDT05UUk9MID4gJHRtcF9kaXIvdGFyWAorLSggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisrKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKysoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0iJGJ1aWxkX2RhdGUiIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisgcm0gJHRtcF9kaXIvdGFyWAorIAorIGVjaG8gIjIuMCIgPiAkdG1wX2Rpci9kZWJpYW4tYmluYXJ5CitAQCAtMzAxLDcgKzMwMSw3IEBAIHJtIC1mICRwa2dfZmlsZQorIGlmIFsgIiRvdXRlciIgPSAiYXIiIF0gOyB0aGVuCisgICAoIGNkICR0bXBfZGlyICYmIGFyIC1jcmYgJHBrZ19maWxlIC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgKQorIGVsc2UKKy0gICggY2QgJHRtcF9kaXIgJiYgdGFyIC1jICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAkdGFyZm9ybWF0IC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgfCBnemlwICR6aXBhcmdzID4gJHBrZ19maWxlICkKKysgICggY2QgJHRtcF9kaXIgJiYgdGFyIC1jICR0c29ydGFyZ3MgLS1tdGltZT0iJGJ1aWxkX2RhdGUiICR0YXJmb3JtYXQgLi9kZWJpYW4tYmluYXJ5IC4vY29udHJvbC50YXIuZ3ogLi9kYXRhLnRhci4kY2V4dCB8IGd6aXAgJHppcGFyZ3MgPiAkcGtnX2ZpbGUgKQorIGZpCisgCisgcm0gJHRtcF9kaXIvZGViaWFuLWJpbmFyeSAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCAkdG1wX2Rpci9jb250cm9sLnRhci5negpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGFyX2lnbm9yZV9lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2gKaW5kZXggMzgyNGViMy4uZDg5MzFiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGFyX2lnbm9yZV9lcnJvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy90YXJfaWdub3JlX2Vycm9yLnBhdGNoCkBAIC0xOCwyNiArMTgsMjcgQEAKIAogCiBJbmRleDogZ2l0L29wa2ctYnVpbGQKKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL29wa2ctYnVpbGQKICsrKyBnaXQvb3BrZy1idWlsZAotQEAgLTI1MCw4ICsyNTAsMjEgQEAgdG1wX2Rpcj0kZGVzdF9kaXIvSVBLR19CVUlMRC4kJAotIG1rZGlyICR0bXBfZGlyCitAQCAtMjg1LDggKzI4NSwyMSBAQCBta2RpciAkdG1wX2RpcgorIGJ1aWxkX2RhdGU9IiQoZGF0ZSAtLWRhdGU9IkAke1NPVVJDRV9EQVRFX0VQT0NIOi0kKGRhdGUgKyVzKX0iICIrJVktJW0tJWQgJUg6JU06JVMiKSIKICAKICBlY2hvICRDT05UUk9MID4gJHRtcF9kaXIvdGFyWAotLSggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgLVggJHRtcF9kaXIvdGFyWCAtYyAtLSRjb21wcmVzc29yICR0YXJmb3JtYXQgLWYgJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgLiApCi0tKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAtY3ogJHRhcmZvcm1hdCAtZiAkdG1wX2Rpci9jb250cm9sLnRhci5neiAuICkKKy0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0iJGJ1aWxkX2RhdGUiIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLWMgJHRhcmZvcm1hdCAuIHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkKICsKICsKICsjIElnbm9yZSBlcnJvciBjb2RlIDEsIGNhdXNlZCBieSBtb2RpZnlpbmcgdGhlIG51bWJlciBvZiBoYXJkIGxpbmtzIHdoaWxlIGNyZWF0aW5nIHRoZSB0YXIgZmlsZQogK3JjPTAKLSsoIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzIC1YICR0bXBfZGlyL3RhclggLWN6ICR0YXJmb3JtYXQgLWYgJHRtcF9kaXIvZGF0YS50YXIuZ3ogLiApIHx8IHJjPSQ/CisrKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkgfHwgcmM9JD8KICtpZiBbICRyYyAtbmUgMSBdICYmIFsgJHJjIC1uZSAwIF07IHRoZW4KICsgICAgICAgIGV4aXQgJHJjIAogK2ZpCiArCiArcmM9MAotKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgLWN6ICR0YXJmb3JtYXQgLWYgJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogLiApIHx8IHJjPSQ/CisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKSB8fCByYz0kPwogK2lmIFsgJHJjIC1uZSAxIF0gJiYgWyAkcmMgLW5lIDAgXTsgdGhlbgogKyAgICAgICAgZXhpdCAkcmMKICtmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGhyZWFkZWQteHoucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy90aHJlYWRlZC14ei5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2E0OWY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGhyZWFkZWQteHoucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorUGFzcyAtLXRocmVhZHM9MCB0byB4eiBzbyB0aGF0IGl0IHdpbGwgdXNlIGFzIG1hbnkgdGhyZWFkcyBhcyB0aGVyZSBhcmUgY29yZXMgdG8gY29tcHJlc3MgdGhlIHBhY2thZ2VzLiAgVGhpcyBtYWtlcyBxZW11J3MgZG9fcGFja2FnZV9pcGsgcnVuIGluIDM0cyBpbnN0ZWFkIG9mIDI3NXMgb24gbXkgbWFjaGluZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlICh1Z2x5IGJ1dCB3b3JrcywgZGlzY3Vzc2luZyB3aXRoIHVwc3RyZWFtIG5vdykKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9vcGtnLWJ1aWxkIGIvb3BrZy1idWlsZAoraW5kZXggMDA1MGMyYi4uOTNhNzk1NiAxMDA3NTUKKy0tLSBhL29wa2ctYnVpbGQKKysrKyBiL29wa2ctYnVpbGQKK0BAIC0yMzAsNiArMjMwLDggQEAgaWYgZ3ppcCAtLWhlbHAgMj4mMSB8IGdyZXAgLS0gIi1UIiA+IC9kZXYvbnVsbDsgdGhlbgorIGZpCisgaWYgWyAkY29tcHJlc3NvciA9ICJnemlwIiBdIDsgdGhlbgorIAljb21wcmVzc29yYXJncz0kemlwYXJncworK2VsaWYgWyAkY29tcHJlc3NvciA9ICJ4eiIgXSA7IHRoZW4KKysJY29tcHJlc3NvcmFyZ3M9Ii0tdGhyZWFkcyAwIgorIGZpCisgCisgdHNvcnRhcmdzPQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ2Y2M4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKLVNVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT02M2NlOWU2YmNjNDQ1MTgxY2Q5ZTRiYWY0YjRjY2MzNSIKLVBST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvJHtCUE59L3NuYXBzaG90LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vdGFyX2lnbm9yZV9lcnJvci5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImExOWUwOWM3OWJmMTE1MmFhYzYyZThhMTIwZDY3OWZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmNGIwODkxMmUyNmEzZjRmNmY0MjNmM2I0ZTcxNTdhNzNiMWYzYTc0ODNmYzU5YjIxNmQxYTgwYjUwYjBjMzgiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi0jIEZvciBuYXRpdmUgYnVpbGRzIHdlIHVzZSB0aGUgaG9zdCBQeXRob24KLVBZVEhPTlJERVBTID0gInB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtbWF0aCBweXRob24zLWNyeXB0IHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWZjbnRsIHB5dGhvbjMtc3VicHJvY2VzcyBweXRob24zLXBpY2tsZSBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtdGV4dHV0aWxzIHB5dGhvbjMtc3RyaW5nb2xkIgotUFlUSE9OUkRFUFNfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJRyA9ICJweXRob24gdXBkYXRlLWFsdGVybmF0aXZlcyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCwke1BZVEhPTlJERVBTfSIKLVBBQ0tBR0VDT05GSUdbdXBkYXRlLWFsdGVybmF0aXZlc10gPSAiLCwsIgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCXJtIC1mICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi0JZmkKLQotICAgIGlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgZ3JlcCAtbFogIi91c3IvYmluL2Vudi4qcHl0aG9uIiAke0R9JHtiaW5kaXJ9LyogfCB4YXJncyAtMCBybQotICAgIGZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KLQkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJwotCWZpCi19Ci0KLSMgVGhlc2UgYXJlIGVtcHR5IGFuZCB3aWxsIHB1bGwgcHl0aG9uMy1kZXYgaW50byBpbWFnZXMgd2hlcmUgaXQgd291bGRuJ3QKLSMgaGF2ZSBiZWVuIG90aGVyd2lzZSwgc28gZG9uJ3QgZ2VuZXJhdGUgdGhlbS4KLVBBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgotCi1QQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgotRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotCi1wa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKLQlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcwotCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4N2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKK1NVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT02M2NlOWU2YmNjNDQ1MTgxY2Q5ZTRiYWY0YjRjY2MzNSIKK1BST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvJHtCUE59L3NuYXBzaG90LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90aHJlYWRlZC14ei5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly90YXJfaWdub3JlX2Vycm9yLnBhdGNoIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMvcmVmcy8iCisKKworU1JDX1VSSVttZDVzdW1dID0gIjM5MWMxYzgwYWNhMjY5NjEzNzVkZDIyZTFkMmQwY2JmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2YjNmNGRkMWMxZWY2NWY1MTlkNGNkZGZiMzVlYmVhNDFhZThhZjk4OWFlYTI2OTlhMzk3ODM1OThjMzM3NjkiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCisjIEZvciBuYXRpdmUgYnVpbGRzIHdlIHVzZSB0aGUgaG9zdCBQeXRob24KK1BZVEhPTlJERVBTID0gInB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtbWF0aCBweXRob24zLWNyeXB0IHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWZjbnRsIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1zdHJpbmdvbGQiCitQWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgorCitQQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgorUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKKwlmaQorCisgICAgaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBncmVwIC1sWiAiL3Vzci9iaW4vZW52LipweXRob24iICR7RH0ke2JpbmRpcn0vKiB8IHhhcmdzIC0wIHJtCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCWlmIFsgLWUgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIgXTsgdGhlbgorCQlzZWQgLWkgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIC1lICdzLC91c3IvYmluLCR7YmluZGlyfSxnOyBzLC91c3IvbGliLCR7bm9uYXJjaF9saWJkaXJ9LGcnCisJZmkKK30KKworIyBUaGVzZSBhcmUgZW1wdHkgYW5kIHdpbGwgcHVsbCBweXRob24zLWRldiBpbnRvIGltYWdlcyB3aGVyZSBpdCB3b3VsZG4ndAorIyBoYXZlIGJlZW4gb3RoZXJ3aXNlLCBzbyBkb24ndCBnZW5lcmF0ZSB0aGVtLgorUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCisKK1BBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCitGSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCitSUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCisKK3BrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgeworCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCisJcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1MTFiNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQyMDJkMDllYTA5MzI5NDMwNzFiODQyNjI2Y2FiMTNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczNGJjMjFkZWExMTI2MjExM2ZhODZiOTI4ZDA5ODEyNjE4YjM5NjZmMzUyMzUwY2Y5MTZhNmFlMGQzNDNmMzIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIgotCi10YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKLU9QS0dMSUJESVIgPSAiJHt0YXJnZXRfbG9jYWxzdGF0ZWRpcn0vbGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGlic29sdiIKLQotUEFDS0FHRUNPTkZJR1tncGddID0gIi0tZW5hYmxlLWdwZywtLWRpc2FibGUtZ3BnLGdwZ21lIGxpYmdwZy1lcnJvcixnbnVwZyIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tzc2wtY3VybF0gPSAiLS1lbmFibGUtc3NsLWN1cmwsLS1kaXNhYmxlLXNzbC1jdXJsLGN1cmwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwtLWRpc2FibGUtc2hhMjU2IgotUEFDS0FHRUNPTkZJR1twYXRoZmluZGVyXSA9ICItLWVuYWJsZS1wYXRoZmluZGVyLC0tZGlzYWJsZS1wYXRoZmluZGVyLHBhdGhmaW5kZXIiCi1QQUNLQUdFQ09ORklHW2xpYnNvbHZdID0gIi0td2l0aC1saWJzb2x2LC0td2l0aG91dC1saWJzb2x2LGxpYnNvbHYiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1sb2NhbHN0YXRlZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7bG9jYWxzdGF0ZWRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IC0tc3lzY29uZmRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke3N5c2NvbmZkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vb3BrZwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCWVjaG8gIm9wdGlvbiBsaXN0c19kaXIgJHtPUEtHTElCRElSfS9vcGtnL2xpc3RzIiA+PiR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCi0KLQkjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeQotCWluc3RhbGwgLWQgJHtEfSR7T1BLR0xJQkRJUn0vb3BrZwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy1jb25maWd1cmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQkJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNURU1EX1VOSVRESVJALCR7c3lzdGVtZF91bml0ZGlyfSxnJyBcCi0JCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCi0JZmkKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gb3BrZy1hcmNoLWNvbmZpZyBsaWJhcmNoaXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1SUkVQTEFDRVNfJHtQTn0gPSAib3BrZy1ub2dwZyBvcGtnLWNvbGxhdGVyYWwiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKLVJQUk9WSURFU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi0KLVBBQ0tBR0VTID0rICJsaWJvcGtnIgotCi1GSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmMjBhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiCkBAIC0wLDAgKzEsNzUgQEAKK1NVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCitTVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCisKK0RFUEVORFMgPSAibGliYXJjaGl2ZSIKKworUEUgPSAiMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjc5ZTA0MzA3ZjZmNTRkYjQzMWMyNTE3NzJkN2Q5ODdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2MDdmMGU2MWJlOGNmOGEzYmJkMGQyZGNjZDllYzllOWI2YzIxZGQ0MzA3YjY3MWM2MDBkNmVlYWY4NGQzMGIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIgorCit0YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKK09QS0dMSUJESVIgPSAiJHt0YXJnZXRfbG9jYWxzdGF0ZWRpcn0vbGliIgorCitQQUNLQUdFQ09ORklHID8/PSAibGlic29sdiIKKworUEFDS0FHRUNPTkZJR1tncGddID0gIi0tZW5hYmxlLWdwZywtLWRpc2FibGUtZ3BnLGdwZ21lIGxpYmdwZy1lcnJvcixnbnVwZyIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgorUEFDS0FHRUNPTkZJR1tzc2wtY3VybF0gPSAiLS1lbmFibGUtc3NsLWN1cmwsLS1kaXNhYmxlLXNzbC1jdXJsLGN1cmwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwtLWRpc2FibGUtc2hhMjU2IgorUEFDS0FHRUNPTkZJR1twYXRoZmluZGVyXSA9ICItLWVuYWJsZS1wYXRoZmluZGVyLC0tZGlzYWJsZS1wYXRoZmluZGVyLHBhdGhmaW5kZXIiCitQQUNLQUdFQ09ORklHW2xpYnNvbHZdID0gIi0td2l0aC1saWJzb2x2LC0td2l0aG91dC1saWJzb2x2LGxpYnNvbHYiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1sb2NhbHN0YXRlZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7bG9jYWxzdGF0ZWRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IC0tc3lzY29uZmRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke3N5c2NvbmZkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vb3BrZworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCWVjaG8gIm9wdGlvbiBsaXN0c19kaXIgJHtPUEtHTElCRElSfS9vcGtnL2xpc3RzIiA+PiR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCisKKwkjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeQorCWluc3RhbGwgLWQgJHtEfSR7T1BLR0xJQkRJUn0vb3BrZworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy1jb25maWd1cmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwkJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKKwkJCS1lICdzLEBTWVNURU1EX1VOSVRESVJALCR7c3lzdGVtZF91bml0ZGlyfSxnJyBcCisJCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCisJZmkKK30KKworUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gb3BrZy1hcmNoLWNvbmZpZyBsaWJhcmNoaXZlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCitSUkVQTEFDRVNfJHtQTn0gPSAib3BrZy1ub2dwZyBvcGtnLWNvbGxhdGVyYWwiCitSQ09ORkxJQ1RTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKK1JQUk9WSURFU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCisKK1BBQ0tBR0VTID0rICJsaWJvcGtnIgorCitGSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDNmOTkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1ODM3ZGMyMGRhY2I1YjY2ODkzNWJiZGVkMTBjYmI2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWU1M2U1OGZjODE1OGU1OTg2YTFmMWE0OWE2ZDk3MGM1YjE2NDkzODQxY2Y3YjlkZTJjMmJkZTdjZTM2YjkzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgotRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNWRlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI4LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiT3B0aW1pc2VkIElubmVyIExvb3AgUnVudGltZSBDb21waWxlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL21vZHVsZXMvb3JjLmh0bWwiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0MDBiZDlkMDllOGFmNTZiOWVjOTgyYjNkODU3OTdlIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9vcmMvb3JjLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjZiNTgyZWM0YjMyNzVjNWVmZDUxZTNhZTY0MDZkNDQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmY2Q3YzY1NjNiMDU2NzIzODZjNGVlZGZjNGMwZDRhMGExMmI0YjQ3NzViNzRlYzZkZWI4OGZjMmJjZDgzY2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgIm9yYy1leGFtcGxlcyIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcmMtLioiCitGSUxFU19vcmMtZXhhbXBsZXMgPSAiJHtsaWJkaXJ9L29yYy8qIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAyLUZpeC1zZWdmYXVsdC13aXRoLW1hbmdsZWQtcmVuYW1lLXBhdGNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAyLUZpeC1zZWdmYXVsdC13aXRoLW1hbmdsZWQtcmVuYW1lLXBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYmQ2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDItRml4LXNlZ2ZhdWx0LXdpdGgtbWFuZ2xlZC1yZW5hbWUtcGF0Y2gucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBmMjkwZjQ4YTYyMTg2NzA4NDg4NGJmZmY4N2Y4MDkzYzE1MTk1ZTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQGdudS5vcmc+CitEYXRlOiBNb24sIDEyIEZlYiAyMDE4IDE2OjQ4OjI0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBzZWdmYXVsdCB3aXRoIG1hbmdsZWQgcmVuYW1lIHBhdGNoCisKK2h0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzUzMTMyCisqIHNyYy9wY2guYyAoaW50dWl0X2RpZmZfdHlwZSk6IEVuc3VyZSB0aGF0IHR3byBmaWxlbmFtZXMgYXJlIHNwZWNpZmllZAorZm9yIHJlbmFtZXMgYW5kIGNvcGllcyAoZml4IHRoZSBleGlzdGluZyBjaGVjaykuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3BhdGNoLmdpdC9jb21taXQvP2lkPWYyOTBmNDhhNjIxODY3MDg0ODg0YmZmZjg3ZjgwOTNjMTUxOTVlNmFdCitDVkU6IENWRS0yMDE4LTY5NTEKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgc3JjL3BjaC5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGNoLmMgYi9zcmMvcGNoLmMKK2luZGV4IGZmOWVkMmMuLmJjNjI3OGMgMTAwNjQ0CistLS0gYS9zcmMvcGNoLmMKKysrKyBiL3NyYy9wY2guYworQEAgLTk3NCw3ICs5NzQsOCBAQCBpbnR1aXRfZGlmZl90eXBlIChib29sIG5lZWRfaGVhZGVyLCBtb2RlX3QgKnBfZmlsZV90eXBlKQorICAgICBpZiAoKHBjaF9yZW5hbWUgKCkgfHwgcGNoX2NvcHkgKCkpCisgCSYmICEgaW5uYW1lCisgCSYmICEgKChpID09IE9MRCB8fCBpID09IE5FVykgJiYKKy0JICAgICAgcF9uYW1lWyEgcmV2ZXJzZV0gJiYKKysJICAgICAgcF9uYW1lW3JldmVyc2VdICYmIHBfbmFtZVshIHJldmVyc2VdICYmCisrCSAgICAgIG5hbWVfaXNfdmFsaWQgKHBfbmFtZVtyZXZlcnNlXSkgJiYKKyAJICAgICAgbmFtZV9pc192YWxpZCAocF9uYW1lWyEgcmV2ZXJzZV0pKSkKKyAgICAgICB7CisgCXNheSAoIkNhbm5vdCAlcyBmaWxlIHdpdGhvdXQgdHdvIHZhbGlkIGZpbGUgbmFtZXNcbiIsIHBjaF9yZW5hbWUgKCkgPyAicmVuYW1lIiA6ICJjb3B5Iik7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAzLUFsbG93LWlucHV0LWZpbGVzLXRvLWJlLW1pc3NpbmctZm9yLWVkLXN0eWxlLXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwOWQwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYjVhOTFhMDFlNWQwODk3ZmFjZGQwZjQ5ZDY0Yjc2YjBmMDJiNDNlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBnbnUub3JnPgorRGF0ZTogRnJpLCA2IEFwciAyMDE4IDExOjM0OjUxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGlucHV0IGZpbGVzIHRvIGJlIG1pc3NpbmcgZm9yIGVkLXN0eWxlIHBhdGNoZXMKKworKiBzcmMvcGNoLmMgKGRvX2VkX3NjcmlwdCk6IEFsbG93IGlucHV0IGZpbGVzIHRvIGJlIG1pc3Npbmcgc28gdGhhdCBuZXcKK2ZpbGVzIHdpbGwgYmUgY3JlYXRlZCBhcyB3aXRoIG5vbi1lZC1zdHlsZSBwYXRjaGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD1iNWE5MWEwMWU1ZDA4OTdmYWNkZDBmNDlkNjRiNzZiMGYwMmI0M2UxXQorQ1ZFOiBDVkUtMjAxOC0xMDAwMTU2CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGNoLmMgfCA4ICsrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wY2guYyBiL3NyYy9wY2guYworaW5kZXggYmM2Mjc4Yy4uMGM1Y2MyNiAxMDA2NDQKKy0tLSBhL3NyYy9wY2guYworKysrIGIvc3JjL3BjaC5jCitAQCAtMjM5NCw5ICsyMzk0LDExIEBAIGRvX2VkX3NjcmlwdCAoY2hhciBjb25zdCAqaW5uYW1lLCBjaGFyIGNvbnN0ICpvdXRuYW1lLAorIAorICAgICBpZiAoISBkcnlfcnVuICYmICEgc2tpcF9yZXN0X29mX3BhdGNoKSB7CisgCWludCBleGNsdXNpdmUgPSAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID8gMCA6IE9fRVhDTDsKKy0JYXNzZXJ0ICghIGluZXJybm8pOworLQkqb3V0bmFtZV9uZWVkc19yZW1vdmFsID0gdHJ1ZTsKKy0JY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworKwlpZiAoaW5lcnJubyAhPSBFTk9FTlQpCisrCSAgeworKwkgICAgKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CisrCSAgICBjb3B5X2ZpbGUgKGlubmFtZSwgb3V0bmFtZSwgMCwgZXhjbHVzaXZlLCBpbnN0YXQuc3RfbW9kZSwgdHJ1ZSk7CisrCSAgfQorIAlzcHJpbnRmIChidWYsICIlcyAlcyVzIiwgZWRpdG9yX3Byb2dyYW0sCisgCQkgdmVyYm9zaXR5ID09IFZFUkJPU0UgPyAiIiA6ICItICIsCisgCQkgb3V0bmFtZSk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwNC1GaXgtYXJiaXRyYXJ5LWNvbW1hbmQtZXhlY3V0aW9uLWluLWVkLXN0eWxlLXBhdGNoZXMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDA0LUZpeC1hcmJpdHJhcnktY29tbWFuZC1leGVjdXRpb24taW4tZWQtc3R5bGUtcGF0Y2hlcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc0YzJmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwNC1GaXgtYXJiaXRyYXJ5LWNvbW1hbmQtZXhlY3V0aW9uLWluLWVkLXN0eWxlLXBhdGNoZXMtLnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitGcm9tIDEyM2VhZmYwZDVkMWFlYmUxMjgyOTU5NTk0MzViOWNhNTkwOWMyNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5AZ251Lm9yZz4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMjoxNDo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGNvbW1hbmQgZXhlY3V0aW9uIGluIGVkLXN0eWxlIHBhdGNoZXMgKENWRS0yMDE4LTEwMDAxNTYpCisKKyogc3JjL3BjaC5jIChkb19lZF9zY3JpcHQpOiBXcml0ZSBlZCBzY3JpcHQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBpbnN0ZWFkCitvZiBwaXBpbmcgaXQgdG8gZWQ6IHRoaXMgd2lsbCBjYXVzZSBlZCB0byBhYm9ydCBvbiBpbnZhbGlkIGNvbW1hbmRzCitpbnN0ZWFkIG9mIHJlamVjdGluZyB0aGVtIGFuZCBjYXJyeWluZyBvbi4KKyogdGVzdHMvZWQtc3R5bGU6IE5ldyB0ZXN0IGNhc2UuCisqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUUyk6IEFkZCB0ZXN0IGNhc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3BhdGNoLmdpdC9jb21taXQvP2lkPTEyM2VhZmYwZDVkMWFlYmUxMjgyOTU5NTk0MzViOWNhNTkwOWMyNmRdCitDVkU6IENWRS0yMDE4LTEwMDAxNTYKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wY2guYyAgICAgICAgIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIHRlc3RzL01ha2VmaWxlLmFtIHwgIDEgKworIHRlc3RzL2VkLXN0eWxlICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9lZC1zdHlsZQorCitkaWZmIC0tZ2l0IGEvc3JjL3BjaC5jIGIvc3JjL3BjaC5jCitpbmRleCAwYzVjYzI2Li40ZmQ1YTA1IDEwMDY0NAorLS0tIGEvc3JjL3BjaC5jCisrKysgYi9zcmMvcGNoLmMKK0BAIC0zMyw2ICszMyw3IEBACisgIyBpbmNsdWRlIDxpby5oPgorICNlbmRpZgorICNpbmNsdWRlIDxzYWZlLmg+CisrI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgCisgI2RlZmluZSBJTklUSFVOS01BWCAxMjUJCQkvKiBpbml0aWFsIGR5bmFtaWMgYWxsb2NhdGlvbiBzaXplICovCisgCitAQCAtMjM4OSwyNCArMjM5MCwyOCBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAgICAgc3RhdGljIGNoYXIgY29uc3QgZWRpdG9yX3Byb2dyYW1bXSA9IEVESVRPUl9QUk9HUkFNOworIAorICAgICBmaWxlX29mZnNldCBiZWdpbm5pbmdfb2ZfdGhpc19saW5lOworLSAgICBGSUxFICpwaXBlZnAgPSAwOworICAgICBzaXplX3QgY2hhcnNfcmVhZDsKKysgICAgRklMRSAqdG1wZnAgPSAwOworKyAgICBjaGFyIGNvbnN0ICp0bXBuYW1lOworKyAgICBpbnQgdG1wZmQ7CisrICAgIHBpZF90IHBpZDsKKysKKysgICAgaWYgKCEgZHJ5X3J1biAmJiAhIHNraXBfcmVzdF9vZl9wYXRjaCkKKysgICAgICB7CisrCS8qIFdyaXRlIGVkIHNjcmlwdCB0byBhIHRlbXBvcmFyeSBmaWxlLiAgVGhpcyBjYXVzZXMgZWQgdG8gYWJvcnQgb24KKysJICAgaW52YWxpZCBjb21tYW5kcyBzdWNoIGFzIHdoZW4gbGluZSBudW1iZXJzIG9yIHJhbmdlcyBleGNlZWQgdGhlCisrCSAgIG51bWJlciBvZiBhdmFpbGFibGUgbGluZXMuICBXaGVuIGVkIHJlYWRzIGZyb20gYSBwaXBlLCBpdCByZWplY3RzCisrCSAgIGludmFsaWQgY29tbWFuZHMgYW5kIHRyZWF0cyB0aGUgbmV4dCBsaW5lIGFzIGEgbmV3IGNvbW1hbmQsIHdoaWNoCisrCSAgIGNhbiBsZWFkIHRvIGFyYml0cmFyeSBjb21tYW5kIGV4ZWN1dGlvbi4gICovCisrCisrCXRtcGZkID0gbWFrZV90ZW1wZmlsZSAoJnRtcG5hbWUsICdlJywgTlVMTCwgT19SRFdSIHwgT19CSU5BUlksIDApOworKwlpZiAodG1wZmQgPT0gLTEpCisrCSAgcGZhdGFsICgiQ2FuJ3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlICVzIiwgcXVvdGVhcmcgKHRtcG5hbWUpKTsKKysJdG1wZnAgPSBmZG9wZW4gKHRtcGZkLCAidytiIik7CisrCWlmICghIHRtcGZwKQorKwkgIHBmYXRhbCAoIkNhbid0IG9wZW4gc3RyZWFtIGZvciBmaWxlICVzIiwgcXVvdGVhcmcgKHRtcG5hbWUpKTsKKysgICAgICB9CisgCistICAgIGlmICghIGRyeV9ydW4gJiYgISBza2lwX3Jlc3Rfb2ZfcGF0Y2gpIHsKKy0JaW50IGV4Y2x1c2l2ZSA9ICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPyAwIDogT19FWENMOworLQlpZiAoaW5lcnJubyAhPSBFTk9FTlQpCistCSAgeworLQkgICAgKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CistCSAgICBjb3B5X2ZpbGUgKGlubmFtZSwgb3V0bmFtZSwgMCwgZXhjbHVzaXZlLCBpbnN0YXQuc3RfbW9kZSwgdHJ1ZSk7CistCSAgfQorLQlzcHJpbnRmIChidWYsICIlcyAlcyVzIiwgZWRpdG9yX3Byb2dyYW0sCistCQkgdmVyYm9zaXR5ID09IFZFUkJPU0UgPyAiIiA6ICItICIsCistCQkgb3V0bmFtZSk7CistCWZmbHVzaCAoc3Rkb3V0KTsKKy0JcGlwZWZwID0gcG9wZW4oYnVmLCBiaW5hcnlfdHJhbnNwdXQgPyAid2IiIDogInciKTsKKy0JaWYgKCFwaXBlZnApCistCSAgcGZhdGFsICgiQ2FuJ3Qgb3BlbiBwaXBlIHRvICVzIiwgcXVvdGVhcmcgKGJ1ZikpOworLSAgICB9CisgICAgIGZvciAoOzspIHsKKyAJY2hhciBlZF9jb21tYW5kX2xldHRlcjsKKyAJYmVnaW5uaW5nX29mX3RoaXNfbGluZSA9IGZpbGVfdGVsbCAocGZwKTsKK0BAIC0yNDE3LDE0ICsyNDIyLDE0IEBAIGRvX2VkX3NjcmlwdCAoY2hhciBjb25zdCAqaW5uYW1lLCBjaGFyIGNvbnN0ICpvdXRuYW1lLAorIAl9CisgCWVkX2NvbW1hbmRfbGV0dGVyID0gZ2V0X2VkX2NvbW1hbmRfbGV0dGVyIChidWYpOworIAlpZiAoZWRfY29tbWFuZF9sZXR0ZXIpIHsKKy0JICAgIGlmIChwaXBlZnApCistCQlpZiAoISBmd3JpdGUgKGJ1Ziwgc2l6ZW9mICpidWYsIGNoYXJzX3JlYWQsIHBpcGVmcCkpCisrCSAgICBpZiAodG1wZnApCisrCQlpZiAoISBmd3JpdGUgKGJ1Ziwgc2l6ZW9mICpidWYsIGNoYXJzX3JlYWQsIHRtcGZwKSkKKyAJCSAgICB3cml0ZV9mYXRhbCAoKTsKKyAJICAgIGlmIChlZF9jb21tYW5kX2xldHRlciAhPSAnZCcgJiYgZWRfY29tbWFuZF9sZXR0ZXIgIT0gJ3MnKSB7CisgCSAgICAgICAgcF9wYXNzX2NvbW1lbnRzX3Rocm91Z2ggPSB0cnVlOworIAkJd2hpbGUgKChjaGFyc19yZWFkID0gZ2V0X2xpbmUgKCkpICE9IDApIHsKKy0JCSAgICBpZiAocGlwZWZwKQorLQkJCWlmICghIGZ3cml0ZSAoYnVmLCBzaXplb2YgKmJ1ZiwgY2hhcnNfcmVhZCwgcGlwZWZwKSkKKysJCSAgICBpZiAodG1wZnApCisrCQkJaWYgKCEgZndyaXRlIChidWYsIHNpemVvZiAqYnVmLCBjaGFyc19yZWFkLCB0bXBmcCkpCisgCQkJICAgIHdyaXRlX2ZhdGFsICgpOworIAkJICAgIGlmIChjaGFyc19yZWFkID09IDIgICYmICBzdHJFUSAoYnVmLCAiLlxuIikpCisgCQkJYnJlYWs7CitAQCAtMjQzNywxMyArMjQ0Miw0OSBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAJICAgIGJyZWFrOworIAl9CisgICAgIH0KKy0gICAgaWYgKCFwaXBlZnApCisrICAgIGlmICghdG1wZnApCisgICAgICAgcmV0dXJuOworLSAgICBpZiAoZndyaXRlICgid1xucVxuIiwgc2l6ZW9mIChjaGFyKSwgKHNpemVfdCkgNCwgcGlwZWZwKSA9PSAwCistCXx8IGZmbHVzaCAocGlwZWZwKSAhPSAwKQorKyAgICBpZiAoZndyaXRlICgid1xucVxuIiwgc2l6ZW9mIChjaGFyKSwgKHNpemVfdCkgNCwgdG1wZnApID09IDAKKysJfHwgZmZsdXNoICh0bXBmcCkgIT0gMCkKKyAgICAgICB3cml0ZV9mYXRhbCAoKTsKKy0gICAgaWYgKHBjbG9zZSAocGlwZWZwKSAhPSAwKQorLSAgICAgIGZhdGFsICgiJXMgRkFJTEVEIiwgZWRpdG9yX3Byb2dyYW0pOworKworKyAgICBpZiAobHNlZWsgKHRtcGZkLCAwLCBTRUVLX1NFVCkgPT0gLTEpCisrICAgICAgcGZhdGFsICgiQ2FuJ3QgcmV3aW5kIHRvIHRoZSBiZWdpbm5pbmcgb2YgZmlsZSAlcyIsIHF1b3RlYXJnICh0bXBuYW1lKSk7CisrCisrICAgIGlmICghIGRyeV9ydW4gJiYgISBza2lwX3Jlc3Rfb2ZfcGF0Y2gpIHsKKysJaW50IGV4Y2x1c2l2ZSA9ICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPyAwIDogT19FWENMOworKwkqb3V0bmFtZV9uZWVkc19yZW1vdmFsID0gdHJ1ZTsKKysJaWYgKGluZXJybm8gIT0gRU5PRU5UKQorKwkgIHsKKysJICAgICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPSB0cnVlOworKwkgICAgY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworKwkgIH0KKysJc3ByaW50ZiAoYnVmLCAiJXMgJXMlcyIsIGVkaXRvcl9wcm9ncmFtLAorKwkJIHZlcmJvc2l0eSA9PSBWRVJCT1NFID8gIiIgOiAiLSAiLAorKwkJIG91dG5hbWUpOworKwlmZmx1c2ggKHN0ZG91dCk7CisrCisrCXBpZCA9IGZvcmsoKTsKKysJaWYgKHBpZCA9PSAtMSkKKysJICBwZmF0YWwgKCJDYW4ndCBmb3JrIik7CisrCWVsc2UgaWYgKHBpZCA9PSAwKQorKwkgIHsKKysJICAgIGR1cDIgKHRtcGZkLCAwKTsKKysJICAgIGV4ZWNsICgiL2Jpbi9zaCIsICJzaCIsICItYyIsIGJ1ZiwgKGNoYXIgKikgMCk7CisrCSAgICBfZXhpdCAoMik7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAgaW50IHdzdGF0dXM7CisrCSAgICBpZiAod2FpdHBpZCAocGlkLCAmd3N0YXR1cywgMCkgPT0gLTEKKysJICAgICAgICB8fCAhIFdJRkVYSVRFRCAod3N0YXR1cykKKysJCXx8IFdFWElUU1RBVFVTICh3c3RhdHVzKSAhPSAwKQorKwkgICAgICBmYXRhbCAoIiVzIEZBSUxFRCIsIGVkaXRvcl9wcm9ncmFtKTsKKysJICB9CisrICAgIH0KKysKKysgICAgZmNsb3NlICh0bXBmcCk7CisrICAgIHNhZmVfdW5saW5rICh0bXBuYW1lKTsKKyAKKyAgICAgaWYgKG9mcCkKKyAgICAgICB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNmI2ZGY2My4uMTZmODY5MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTMyLDYgKzMyLDcgQEAgVEVTVFMgPSBcCisgCWNybGYtaGFuZGxpbmcgXAorIAlkYXNoLW8tYXBwZW5kIFwKKyAJZGVlcC1kaXJlY3RvcmllcyBcCisrCWVkLXN0eWxlIFwKKyAJZW1wdHktZmlsZXMgXAorIAlmYWxzZS1tYXRjaCBcCisgCWZpZm8gXAorZGlmZiAtLWdpdCBhL3Rlc3RzL2VkLXN0eWxlIGIvdGVzdHMvZWQtc3R5bGUKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kOGMwNjg5CistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0cy9lZC1zdHlsZQorQEAgLTAsMCArMSw0MSBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMKKysjIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisrIyBpbiBhbnkgbWVkaXVtLCBhcmUgcGVybWl0dGVkIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CisrIyBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuCisrCisrLiAkc3JjZGlyL3Rlc3QtbGliLnNoCisrCisrcmVxdWlyZSBjYXQKKyt1c2VfbG9jYWxfcGF0Y2gKKyt1c2VfdG1wZGlyCisrCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKworK2NhdCA+IGVkMS5kaWZmIDw8RU9GCisrMGEKKytmb28KKysuCisrRU9GCisrCisrY2hlY2sgJ3BhdGNoIC1lIGZvbyAtaSBlZDEuZGlmZicgPDxFT0YKKytFT0YKKysKKytjaGVjayAnY2F0IGZvbycgPDxFT0YKKytmb28KKytFT0YKKysKKytjYXQgPiBlZDIuZGlmZiA8PEVPRgorKzEzMzdhCisrciAhZWNobyBiYXIKKysscAorK0VPRgorKworK2NoZWNrICdwYXRjaCAtZSBmb28gLWkgZWQyLmRpZmYgMj4gL2Rldi9udWxsIHx8IGVjaG8gIlN0YXR1czogJD8iJyA8PEVPRgorKz8KKytTdGF0dXM6IDIKKytFT0YKKysKKytjaGVjayAnY2F0IGZvbycgPDxFT0YKKytmb28KKytFT0YKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MWYwMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgcGF0Y2guaW5jCi1MSUNFTlNFID0gIkdQTHYzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImVkNGQ1Njc0ZWY0NTQzYjRlYjQ2M2RiMTY4ODg2ZGM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc0MzZmNWExOWY5M2MzY2E4MzE1M2NlOWM1Y2JlNDg0N2U5N2M1ZDk1NmU1N2EyMjAxMjFlNzQxZjZlNzk2OGYiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1hY3BhdGhzID0gIi1JICR7U30vbTQgIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzNDg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBwYXRjaC5pbmMKK0xJQ0VOU0UgPSAiR1BMdjMiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1zZWdmYXVsdC13aXRoLW1hbmdsZWQtcmVuYW1lLXBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFsbG93LWlucHV0LWZpbGVzLXRvLWJlLW1pc3NpbmctZm9yLWVkLXN0eWxlLXBhdGNoZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LWFyYml0cmFyeS1jb21tYW5kLWV4ZWN1dGlvbi1pbi1lZC1zdHlsZS1wYXRjaGVzLS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YzY4Y2VlOTg5ZDgzYzg3YjAwYTM4NjBiY2QwNTYwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Y2Y4NmUwMGFkM2FhYTZkMjZhY2EzMDY0MGU4NmIwZTNlMWYzOTVlZDk5ZjE4OWIwNmQ0YzlmNzRiYzU4YTRlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworYWNwYXRocyA9ICItSSAke1N9L200ICIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWUwZTdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkVycm9yIC0gRXJyb3IvZXhjZXB0aW9uIGhhbmRsaW5nIGluIGFuIE9PLWlzaCB3YXkiCi1ERVNDUklQVElPTiA9ICJUaGUgRXJyb3IgcGFja2FnZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gRmlyc3RseSBcCi1FcnJvciBwcm92aWRlcyBhIHByb2NlZHVyYWwgaW50ZXJmYWNlIHRvIGV4Y2VwdGlvbiBoYW5kbGluZy4gXAotU2Vjb25kbHkgRXJyb3IgaXMgYSBiYXNlIGNsYXNzIGZvciBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IGNhbiBcCi1laXRoZXIgYmUgdGhyb3duLCBmb3Igc3Vic2VxdWVudCBjYXRjaCwgb3IgY2FuIHNpbXBseSBiZSByZWNvcmRlZC4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZTM2NzZhN2ZiMTRmNjVmNTY4ZjEyZDRiNDBhMmE3MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRkYjdjNzgzYTY3YjA2NjdlY2E2NGE0ZjZhMGMzZGU5NDk5OGFmYzkyYzAxZDY0NTMxNjNlYjA0YjkxNTBkIgotCi1TID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1kb19jb21waWxlKCkgewotCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0JY3Bhbl9kb19jb21waWxlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZkYzMwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgorREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAorRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKK1NlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAorZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWEyZWU3ZjBkYzQ0ZjllZTc2NjYxYTE2YmJiYzBjNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM5ZjQ3NGFkM2Q0ZmUwY2FiZmY2YjZiZTUzMmNiMWRkMzQ4MjQ1OTg2ZDRhNmI2MDBhZDkyMWQ1Y2ZkZWZhZiIKKworUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnRlc3QtbmVlZHMtcGVybF8wLjAwMjAwNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ0ZXN0LW5lZWRzLXBlcmxfMC4wMDIwMDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhYjdhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ0ZXN0LW5lZWRzLXBlcmxfMC4wMDIwMDUuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJTa2lwIHRlc3RzIHdoZW4gbW9kdWxlcyBub3QgYXZhaWxhYmxlIgorREVTQ1JJUFRJT04gPSAiU2tpcCB0ZXN0IHNjcmlwdHMgaWYgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZS4gXAorVGhlIHJlcXVlc3RlZCBtb2R1bGVzIHdpbGwgYmUgbG9hZGVkLCBhbmQgb3B0aW9uYWxseSBoYXZlIHRoZWlyIHZlcnNpb25zIFwKK2NoZWNrZWQuIElmIHRoZSBtb2R1bGUgaXMgbWlzc2luZywgdGhlIHRlc3Qgc2NyaXB0IHdpbGwgYmUgc2tpcHBlZC4gTW9kdWxlcyBcCit0aGF0IGFyZSBmb3VuZCBidXQgZmFpbCB0byBjb21waWxlIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yIHJhdGhlciB0aGFuIHNraXAuIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL1Rlc3QtTmVlZHMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitDUEFOX05BTUUgPSAiVGVzdC1OZWVkcyIKK0NQQU5fQVVUSE9SID0gIkhBQVJHIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTNmM2NjZDIxYTBhNDhhYTMxM2RiMjEyY2MzYjFiYzA5O2JlZ2lubGluZT04MTtlbmRsaW5lPTgyIgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9IL0hBLyR7Q1BBTl9BVVRIT1J9LyR7Q1BBTl9OQU1FfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNTY2MzRhNTZjOTkyODJlODA1OWYyOTBmNWQ1MzRjOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTRmMzM5ODM1ODZlZGFjZGJlMDBhM2I0MjlhOTgzNDE5MDE0MDE5MGRhYjI4ZDBmODczYzM5NGViN2RmMzk5IgorCitTID0gIiR7V09SS0RJUn0vJHtDUEFOX05BTUV9LSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtdGVzdC1tb3JlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOTljMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIG1hbmlwdWxhdGUgYW5kIGFjY2VzcyBVUkkgc3RyaW5ncyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgVVJJLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIFwKLVRoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgVVJJIGNsYXNzLiBVUkkgb2JqZWN0cyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgXAotYW5kIG1hbmlwdWxhdGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlc2Ugc3RyaW5ncy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9VUkkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ1M2U5NGZhZTY3MjgwMGY4M2JjMWJkN2EzOGI1M2YiCi0KLURFUEVORFMgKz0gInBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0UvRVQvRVRIRVIvVVJJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImNkNTZkODFlZDQyOWVmYWE5N2U3ZjNmZjA4ODUxYjQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1ZjE0NDMxZDRiMzAwZGU0YmUxMTYzYjBiNTMzMmRlMmQ3ZmJkYTRmMDVmZjFlZDE5OGE4ZTkzMzBkNDBhMzIiCi0KLVMgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyMzhmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAorVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCithbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRS9FVC9FVEhFUi9VUkktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzdkNDRhMDhlNTk5YWE5NDViMzJhOTQzNGZmZTAwYTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NhN2FiNGE2ZjYzZjNjY2FhY2FlMGYyZTEzMzdlOGVkZjg0MTM3ZTczZjE4NTQ4ZWM3ZDY1OWYyM2VmZTQxMyIKKworUyA9ICIke1dPUktESVJ9L1VSSS0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgdGhlc2UgdGVzdHMgcmVxdWlyZSAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgorCXJtIC1yZiAke0J9L3QvY3dkLnQKKwlybSAtcmYgJHtCfS90L2ZpbGUudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGlidGVzdC1uZWVkcy1wZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgppbmRleCBjYzNhNjYwLi5jNWUwYWU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIEVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IENDPScke0NDfScgTEQ9JyR7Q0NMRH0nIEZVTExfQVI9JyR7QVJ9JyIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiAjIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAogIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgpAQCAtMzQsNCArMzQsMTMgQEAKIAljcGFuX2RvX2NvbXBpbGUKIH0KIAorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxzdGF0cworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGZpbHRlcgorCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGNvbW1lbnRzCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMvY2Fub25pY2FsCisJY3AgLXIgJHtCfS9zYW1wbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3NhbXBsZXMKK30KKwogQkJDTEFTU0VYVEVORD0ibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKaW5kZXggMDQ3ODQyNy4uMGY2MDk5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKQEAgLTE5LDcgKzE5LDcgQEAKIAogRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogZG9fY29tcGlsZSgpIHsKIAlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCmluZGV4IDBjZjJlZWIuLmY5ZDAwZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIKQEAgLTE5LDYgKzE5LDYgQEAKIAogRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKaW5kZXggNmM1NmE3ZC4uNzFmNDU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCkBAIC0xLDggKzEsNyBAQAogcmVxdWlyZSBwZXJsLmluYwogCiAjIFdlIG5lZWQgZ251Z3JlcCAoZm9yIC1JKQotREVQRU5EUyA9ICJ2aXJ0dWFsL2RiLW5hdGl2ZSBncmVwLW5hdGl2ZSIKLURFUEVORFMgKz0gImdkYm0tbmF0aXZlIHpsaWItbmF0aXZlIgorREVQRU5EUyA9ICJkYi1uYXRpdmUgZ3JlcC1uYXRpdmUgZ2RibS1uYXRpdmUgemxpYi1uYXRpdmUiCiAKIEVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgogCkBAIC0xNiw2ICsxNSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wZXJsLVBhdGhUb29scy1kb24tdC1maWx0ZXItb3V0LWJsaWItZnJvbS1JTkMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImFmNmE4NGM3YzNlMmI4YjI2OWMxMDVhNWRiMmY2ZDUzIgpAQCAtMTM1LDMgKzEzNSw1IEBACiAKICMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQogU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlICs9ICJecGVybC1tb2R1bGUtLipuYXRpdmUkIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKaW5kZXggMWY1NDlhZi4uNmE3YTJkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYwpAQCAtMiwzMSArMiw0MyBAQAogCiBTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIgotCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKIAlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfQogCXNlZCAtZSAiczpcL3VzclwvbG9jYWw6JHtiaW5kaXJ9OmciIC1pIGNwYW4vdmVyc2lvbi90LyoKIAlzZWQgLWUgInM6XC9vcHQ6XC91c3I6IiAtaSBQb3J0aW5nL2FkZC1wYWNrYWdlLnBsCiAJc2VkIC1lICJzOlwvbG9jYWxcL2dudVwvOlwvOiIgLWkgaGludHMvY3h1eC5zaAotCXRhciAtYyAtLWV4Y2x1ZGU9XCoubyAtLWV4Y2x1ZGU9bGlicGVybC5zbyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLS1leGNsdWRlPW1ha2VmaWxlIC0tZXhjbHVkZT1ob3N0cGVybCBcCisJdGFyIC1jIC0tZXhjbHVkZT0nKi5vJyAtLWV4Y2x1ZGU9bGlicGVybC5zbyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLS1leGNsdWRlPW1ha2VmaWxlIC0tZXhjbHVkZT1ob3N0cGVybCBcCisJICAgIC0tZXhjbHVkZT1jeWd3aW4gLS1leGNsdWRlPW9zMiAtLWV4Y2x1ZGU9ZGpncHAgLS1leGNsdWRlPXFueCAtLWV4Y2x1ZGU9c3ltYmlhbiAtLWV4Y2x1ZGU9aGFpa3UgXAorCSAgICAtLWV4Y2x1ZGU9dm1zIC0tZXhjbHVkZT12b3MgLS1leGNsdWRlPU5ldFdhcmUgLS1leGNsdWRlPWFtaWdhb3M0ICAtLWV4Y2x1ZGU9YnVpbGRjdXN0b21pemUucGwgXAorCSAgICAtLWV4Y2x1ZGU9J3dpbjMyL2NvbmZpZy4qJyAtLWV4Y2x1ZGU9cGxhbjkgLS1leGNsdWRlPVJFQURNRS5wbGFuOSAtLWV4Y2x1ZGU9cGVybHBsYW45LnBvZCAtLWV4Y2x1ZGU9Q29uZmlndXJlIFwKKwkgICAgLS1leGNsdWRlPXZlcnljbGVhbi5zaCAtLWV4Y2x1ZGU9cmVhbGNsZWFuLnNoICAtLWV4Y2x1ZGU9Z2V0aW9jdGxzaXplcyBcCisJICAgIC0tZXhjbHVkZT1kbF9haXgueHMgLS1leGNsdWRlPXNkYm0uMyAtLWV4Y2x1ZGU9J2NmbGFncy5TSCcgLS1leGNsdWRlPW1ha2VmaWxlLm9sZCBcCiAJCS0tZXhjbHVkZT1taW5pcGVybCAtLWV4Y2x1ZGU9Z2VuZXJhdGVfdXVkbWFwIC0tZXhjbHVkZT1wYXRjaGVzICogfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteCApCiAKLQlzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAorCWxuIC1zZiAke2JpbmRpcn0vcGVybCAke0R9JHtQVEVTVF9QQVRIfS90L3BlcmwKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgc2NhdHRlcmVkIGZpbGVzLi4uCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIFwKKwkgICAgIFwoIC1uYW1lICcqLlBMJyAtbyAtbmFtZSAnbXljb25maWcnIC1vIC1uYW1lICdjZmxhZ3MnIC1vIC1uYW1lICcqLnBsJyAtbyAtbmFtZSAnKi5zaCcgLW8gLW5hbWUgJyoucG0nIFwKKwkgICAgIC1vIC1uYW1lICdoMnhzJyAtbyAtbmFtZSAnaDJwaCcgXAorCSAgICAgLW8gLW5hbWUgJyouaCcgLW8gLW5hbWUgJ2NvbmZpZy5zaC0qJyAtbyAtbmFtZSAncG9kMm1hbicgIC1vIC1uYW1lICdwb2QydGV4dCcgXCkgXAorCSAgICAtdHlwZSBmIC1leGVjIHNlZCAtaSBcCisJICAgICAgIC1lICJzLCR7RH0sLGciIFwKIAkgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKIAkgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKKwkgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAogCSAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXAogCSAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAogCSAgICAgICAtZSAicywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGciIFwKLQkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAogCSAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0vJHtUQVJHRVRfUFJFRklYfSwke2JpbmRpcn0sZyIgXAotCSAgICAke0R9JHtQVEVTVF9QQVRIfS9saWIvQ29uZmlnLnBtIFwKLQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vY3Bhbi9wb2RsYXRvcnMvc2NyaXB0cy9wb2QybWFuIFwKLQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vY3Bhbi9wb2RsYXRvcnMvc2NyaXB0cy9wb2QydGV4dAorCSAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgICAgIHt9ICsKIAotCWxuIC1zZiAke2JpbmRpcn0vcGVybCAke0R9JHtQVEVTVF9QQVRIfS90L3BlcmwKLQkjIFJlbW92ZSBwbGFuOSByZWxhdGVkIHN0dWZmCi0Jcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L3BsYW45ICR7RH0ke1BURVNUX1BBVEh9L1JFQURNRS5wbGFuOSAke0R9JHtQVEVTVF9QQVRIfS9wb2QvcGVybHBsYW45LnBvZAorCSAjIFJlbW92ZSBhIHVzZWxlc3MgdGltZXN0YW1wLi4uCisJIHNlZCAtaSAtZSAnL0F1dG9nZW5lcmF0ZWQgc3RhcnRpbmcgb24vZCcgJHtEfSR7UFRFU1RfUEFUSH0vbGliL3VuaWNvcmUvbWt0YWJsZXMubHN0CiB9CiAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjgzNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU5ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA3M2Q3MjQ3ZWNhYjg2M2VmMjZiNTY4N2EzN2NjYzc1ZDYxNDRhZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+CitEYXRlOiBUdWUsIDE3IE9jdCAyMDE3IDEzOjQ5OjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBDVkUtMjAxNy0xMjgzNworCitTaWduZWQtb2ZmLWJ5OiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFN0ZXZlIEhheSA8c3RldmUubS5oYXlAZ29vZ2xlbWFpbC5jb20+CisKK0NWRTogQ1ZFLTIwMTctMTI4MzcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvOTZjODNlZDc4YWVlYTFhMDQ5NmRkMmIyZDkzNTg2OWE4MjJkYzhhNQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyByZWdjb21wLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3JlZ2NvbXAuYyBiL3JlZ2NvbXAuYworaW5kZXggNTQ5OGQxNC4uMzFlYzM4MyAxMDA2NDQKKy0tLSBhL3JlZ2NvbXAuYworKysrIGIvcmVnY29tcC5jCitAQCAtMTMwMjEsNiArMTMwMjEsNyBAQCBTX3JlZ2F0b20ocFRIWF8gUkV4Q19zdGF0ZV90ICpwUkV4Q19zdGF0ZSwgSTMyICpmbGFncCwgVTMyIGRlcHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGxvb3Bkb25lOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBwID0gUkV4Q19wYXJzZTsKKysgICAgICAgICAgICAgICAgICAgICAgICBSRXhDX3BhcnNlID0gcGFyc2Vfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZGVyID4gMHhmZikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVSVJFX1VURjgoZmxhZ3ApOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODgzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMTgwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDQwYjNjZGFkMzY0OTMzNDU4NWNlZThmNDYzMGVjOWEwMjVlNjJiZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KK0RhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTE6MzM6NTggLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gUEFUQ0g6IFtwZXJsICMxMzE1OThdCisKK1RoZSBjYXVzZSBvZiB0aGlzIGlzIHRoYXQgdGhlIHZGQUlMIG1hY3JvIHVzZXMgUkV4Q19wYXJzZSwgYW5kIHRoYXQKK3ZhcmlhYmxlIGhhcyBqdXN0IGJlZW4gY2hhbmdlZCBpbiBwcmVwYXJhdGlvbiBmb3IgY29kZSBhZnRlciB0aGUgdkZBSUwuCitUaGUgc29sdXRpb24gaXMgdG8gbm90IGNoYW5nZSBSRXhDX3BhcnNlIHVudGlsIGFmdGVyIHRoZSB2RkFJTC4KKworVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIG1hY3JvIGhpZGVzIHN0dWZmIHRoYXQgY2FuIGJpdGUgeW91LgorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyYmU0ZWRlZGU0YWUyMjZlMmVlYmQ0ZWZmMjhjZWRkMjA0MWYzMDBmKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTEyODMzCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgcmVnY29tcC5jIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogcGVybC01LjI0LjEvcmVnY29tcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjI0LjEub3JpZy9yZWdjb21wLmMKKysrKyBwZXJsLTUuMjQuMS9yZWdjb21wLmMKK0BAIC0xMTkxOCwxNCArMTE5MTgsMTYgQEAgU19ncm9rX2JzbGFzaF9OKHBUSFhfIFJFeENfc3RhdGVfdCAqcFJFeAorIAl9CisgICAgICAgICBzdl9jYXRwdihzdWJzdGl0dXRlX3BhcnNlLCAiKSIpOworIAorLSAgICAgICAgUkV4Q19wYXJzZSA9IFJFeENfc3RhcnQgPSBSRXhDX2FkanVzdGVkX3N0YXJ0ID0gU3ZQVihzdWJzdGl0dXRlX3BhcnNlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOworKyAgICAgICAgbGVuID0gU3ZDVVIoc3Vic3RpdHV0ZV9wYXJzZSk7CisgCisgCS8qIERvbid0IGFsbG93IGVtcHR5IG51bWJlciAqLworIAlpZiAobGVuIDwgKFNUUkxFTikgOCkgeworICAgICAgICAgICAgIFJFeENfcGFyc2UgPSBlbmRicmFjZTsKKyAJICAgIHZGQUlMKCJJbnZhbGlkIGhleGFkZWNpbWFsIG51bWJlciBpbiBcXE57VSsuLi59Iik7CisgCX0KKysKKysgICAgICAgIFJFeENfcGFyc2UgPSBSRXhDX3N0YXJ0ID0gUkV4Q19hZGp1c3RlZF9zdGFydAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFN2UFZfbm9sZW4oc3Vic3RpdHV0ZV9wYXJzZSk7CisgCVJFeENfZW5kID0gUkV4Q19wYXJzZSArIGxlbjsKKyAKKyAgICAgICAgIC8qIFRoZSB2YWx1ZXMgYXJlIFVuaWNvZGUsIGFuZCB0aGVyZWZvcmUgbm90IHN1YmplY3QgdG8gcmVjb2RpbmcsIGJ1dApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9NYWtlZmlsZS5TSC5wYXRjaAppbmRleCBmZDgyMzdmLi5jMWRiMzM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9NYWtlZmlsZS5TSC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9NYWtlZmlsZS5TSC5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgTWFrZWZpbGUuU0ggfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuU0ggYi9NYWtlZmlsZS5TSAotaW5kZXggOTE2YjMzMi4uYjE0M2Q0NiAxMDA3NTUKLS0tLSBhL01ha2VmaWxlLlNICi0rKysgYi9NYWtlZmlsZS5TSAorSW5kZXg6IHBlcmwtNS4yNC4xL01ha2VmaWxlLlNICis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjI0LjEub3JpZy9NYWtlZmlsZS5TSAorKysrIHBlcmwtNS4yNC4xL01ha2VmaWxlLlNICiBAQCAtNDgsMTAgKzQ4LDEwIEBAIGNhc2UgIiR1c2VzaHJwbGliIiBpbgogIHRydWUpCiAgCSMgUHJlZml4IGFsbCBydW5zIG9mICdtaW5pcGVybCcgYW5kICdwZXJsJyB3aXRoCkBAIC03NCw2ICs3NCwxMCBAQAogLWFsbDogJChGSVJTVE1BS0VGSUxFKSAkKE1JTklQRVJMX0VYRSkgJChnZW5lcmF0ZWRfcG9kcykgJChwcml2YXRlKSAkKHVuaWRhdGFmaWxlcykgJChwdWJsaWMpICQoZHluYW1pY19leHQpICQobm9ueHNfZXh0KSBleHRyYXMubWFrZSAkKE1BTklGRVNUX1NSVCkKIC0JQGVjaG8gIiAiOwogLQlAZWNobyAiCUV2ZXJ5dGhpbmcgaXMgdXAgdG8gZGF0ZS4gVHlwZSAnJChNQUtFKSB0ZXN0JyB0byBydW4gdGVzdCBzdWl0ZS4iCistCistJChNQU5JRkVTVF9TUlQpOglNQU5JRkVTVCAkKFBFUkxfRVhFKQorLQlAJChSVU5fUEVSTCkgUG9ydGluZy9tYW5pc29ydCAtcSB8fCAoZWNobyAiV0FSTklORzogcmUtc29ydGluZyBNQU5JRkVTVCI7IFwKKy0JICAgICQoUlVOX1BFUkwpIFBvcnRpbmcvbWFuaXNvcnQgLXEgLW8gTUFOSUZFU1Q7IHNoIC1jIHRydWUpCiArI2FsbDogJChGSVJTVE1BS0VGSUxFKSAkKE1JTklQRVJMX0VYRSkgJChnZW5lcmF0ZWRfcG9kcykgJChwcml2YXRlKSAkKHVuaWRhdGFmaWxlcykgJChwdWJsaWMpICQoZHluYW1pY19leHQpICQobm9ueHNfZXh0KSBleHRyYXMubWFrZSAkKE1BTklGRVNUX1NSVCkKICsjCUBlY2hvICIgIjsKICsjCUBlY2hvICIJRXZlcnl0aGluZyBpcyB1cCB0byBkYXRlLiBUeXBlICckKE1BS0UpIHRlc3QnIHRvIHJ1biB0ZXN0IHN1aXRlLiIKQEAgLTgzLDEwICs4Nyw3IEBACiArbW9yZTogJChnZW5lcmF0ZWRfcG9kcykgJChwcml2YXRlKSAkKHB1YmxpYykKICsKICttb3JlMjogJChkeW5hbWljX2V4dCkKLSAKLS0kKE1BTklGRVNUX1NSVCk6CU1BTklGRVNUICQoUEVSTF9FWEUpCi0tCUAkKFJVTl9QRVJMKSBQb3J0aW5nL21hbmlzb3J0IC1xIHx8IChlY2hvICJXQVJOSU5HOiByZS1zb3J0aW5nIE1BTklGRVNUIjsgXAotLQkgICAgJChSVU5fUEVSTCkgUG9ydGluZy9tYW5pc29ydCAtcSAtbyBNQU5JRkVTVDsgc2ggLWMgdHJ1ZSkKKysKICttb3JlMzogJChub254c19leHQpCiArCiArbW9yZTQ6IGV4dHJhcy5tYWtlICQoTUFOSUZFU1RfU1JUKQpAQCAtMTUxLDcgKzE1Miw3IEBACiAgCS4vJChNSU5JUEVSTEVYUCkgbWFrZWRlZi5wbCBQTEFURk9STT1vczIgLURQRVJMX0RMTD0kKFBFUkxfRExMKSBDQ19GTEFHUz0iJChPUFRJTUlaRSkiID4gcGVybDUuZGVmCiAgCiAgIU5PIVNVQlMhCi1AQCAtODc4LDcgKzg3OCw3IEBAICQoTElCUEVSTCk6ICQmICQocGVybGxpYl9vYmpzKSAkKERZTkFMT0FERVIpICQoTElCUEVSTEVYUE9SVCkKK0BAIC04NzgsNyArODc4LDcgQEAgJChMSUJQRVJMKTogJCYgJChwZXJsbGliX29ianMpICQoRFlOQUxPQQogIAl0cnVlKQogIAkJJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCiAgCXJtIC1mICRACkBAIC0xNjAsNyArMTYxLDcgQEAKICAhTk8hU1VCUyEKICAJCWNhc2UgIiRvc25hbWUiIGluCiAgCQlhaXgpCi1AQCAtOTM2LDE1ICs5MzYsMTkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29ianMpIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsCitAQCAtOTM2LDE1ICs5MzYsMTkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29iagogIAkJJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCiAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29ianMpCiAgCSQoQ0MpIC1vICQoTUlOSVBFUkxfRVhFKSAkKENMREZMQUdTKSAkKG1pbmlwZXJsX29ianMpICQobGlicykKQEAgLTE4Myw3ICsxODQsNyBAQAogIAkkKE1JTklQRVJMKSAtZiB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbCAgICAKICAhTk8hU1VCUyEKICAJCTs7Ci1AQCAtOTY2LDcgKzk3MCw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKSB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAorQEAgLTk2Niw3ICs5NzAsOSBAQCBsaWIvYnVpbGRjdXN0b21pemUucGw6ICQmICQobWluaXBlcmxfb2JqCiAgCS1Acm0gLWYgbWluaXBlcmwueG9rCiAgCSQoQ0MpICQoQ0xERkxBR1MpICQoTkFNRVNQQUNFRkxBR1MpIC1vICQoTUlOSVBFUkxfRVhFKSBcCiAgCSAgICAkKG1pbmlwZXJsX29ianMpICQobGlicykKQEAgLTE5NCw3ICsxOTUsNyBAQAogIAkkKE1JTklQRVJMKSAtZiB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAogICFOTyFTVUJTIQogIAkJOzsKLUBAIC05NzcsNyArOTgzLDkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiBcJCYgXCQobWluaXBlcmxfb2Jqcykgd3JpdGVfYnVpbGRjdXN0b21pemUucGwKK0BAIC05NzcsNyArOTgzLDkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiBcJCYgXCQobWluaXBlcmxfbwogIAktQHJtIC1mIG1pbmlwZXJsLnhvawogIAktQHJtIFwkKE1JTklQRVJMX0VYRSkKICAJXCQoTE5TKSBcJChIT1NUX1BFUkwpIFwkKE1JTklQRVJMX0VYRSkKQEAgLTIwNSw3ICsyMDYsNyBAQAogIAlcJChNSU5JUEVSTCkgLWYgd3JpdGVfYnVpbGRjdXN0b21pemUucGwgJ29zbmFtZScgIiRvc25hbWUiCiAgIUdST0shVEhJUyEKICAJCWVsc2UKLUBAIC05ODYsNyArOTk0LDkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29ianMpIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsCitAQCAtOTg2LDcgKzk5NCw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmoKICAJLUBybSAtZiBtaW5pcGVybC54b2sKICAJJChDQykgJChDTERGTEFHUykgLW8gJChNSU5JUEVSTF9FWEUpIFwKICAJICAgICQobWluaXBlcmxfb2JqcykgJChsaWJzKQpAQCAtMjI1LDcgKzIyNiw3IEBACiAgCS1AZm9yIGYgaW4gTWFrZWZpbGUuUEwgUFBQb3J0X3BtLlBMIFBQUG9ydF94cy5QTCBwcHBvcnRfaC5QTDsgZG8gXAogIAkoY2QgZXh0L0RldmVsLVBQUG9ydCAmJiBgcHdkYC9ydW4uc2ggLi4vLi4vJChNSU5JUEVSTF9FWEUpIC1JLi4vLi4vbGliIFwkXCRmKTsgXAogIAlkb25lCi1AQCAtMTA0Niw3ICsxMDU2LDcgQEAgbWFrZXBwcG9ydDogXCQoTUlOSVBFUkxfRVhFKSBcJChDT05GSUdQTSkKK0BAIC0xMDQ2LDcgKzEwNTYsNyBAQCBtYWtlcHBwb3J0OiBcJChNSU5JUEVSTF9FWEUpIFwkKENPTkZJR1BNCiAgKikKICAkc3BpdHNoZWxsID4+JE1ha2VmaWxlIDw8JyFOTyFTVUJTIScKICAuUEhPTlk6IG1ha2VwcHBvcnQKQEAgLTI1NCw3ICsyNTUsNyBAQAogIAkkKE1JTklQRVJMKSBsaWIvdW5pY29yZS9ta3RhYmxlcyAtQyBsaWIvdW5pY29yZSAtUCBwb2QgLW1ha2V0ZXN0IC1tYWtlbGlzdCAtcAogICMJQ29tbWVudGVkIG91dCBzbyBhbHdheXMgcnVucywgbWt0YWJsZXMgbG9va3MgYXQgZmFyIG1vcmUgZmlsZXMgdGhhbiB3ZQogICMJY2FuIGluIHRoaXMgbWFrZWZpbGUgdG8gZGVjaWRlIGlmIG5lZWRzIHRvIHJ1biBvciBub3QKLUBAIC0xMDc0LDEyICsxMDg0LDEyIEBAIHVuaS5kYXRhOiAkKE1JTklQRVJMX0VYRSkgJChDT05GSUdQTSkgbGliL3VuaWNvcmUvbWt0YWJsZXMgJChub254c19leHQpCitAQCAtMTA3NCwxMiArMTA4NCwxMiBAQCB1bmkuZGF0YTogJChNSU5JUEVSTF9FWEUpICQoQ09ORklHUE0pIGxpCiAgIyAkKFBFUkxfRVhFKSBhbmQgZXh0IGJlY2F1c2UgcG9kX2xpYi5wbCBuZWVkcyBEaWdlc3Q6Ok1ENQogICMgQnV0IGFsc28gdGhpcyBlbnN1cmVzIHRoYXQgYWxsIGV4dGVuc2lvbnMgYXJlIGJ1aWx0IGJlZm9yZSB3ZSB0cnkgdG8gc2NhbgogICMgdGhlbSwgd2hpY2ggcGlja3MgdXAgRGV2ZWw6OlBQUG9ydCdzIGRvY3VtZW50YXRpb24uCkBAIC0yNzAsOSArMjcxLDkgQEAKICAJJChNSU5JUEVSTCkgYXV0b2RvYy5wbAogIAogIHBvZC9wZXJsbW9kbGliLnBvZDogJChNSU5JUEVSTF9FWEUpIHBvZC9wZXJsbW9kbGliLlBMIE1BTklGRVNUCi1AQCAtMTA4OSw3ICsxMDk5LDcgQEAgcG9kL3Blcmw1MjQwZGVsdGEucG9kOiBwb2QvcGVybGRlbHRhLnBvZAotIAkkKFJNUykgcG9kL3Blcmw1MjQwZGVsdGEucG9kCi0gCSQoTE5TKSBwZXJsZGVsdGEucG9kIHBvZC9wZXJsNTI0MGRlbHRhLnBvZAorQEAgLTEwODksNyArMTA5OSw3IEBAIHBvZC9wZXJsNTI0MWRlbHRhLnBvZDogcG9kL3BlcmxkZWx0YS5wb2QKKyAJJChSTVMpIHBvZC9wZXJsNTI0MWRlbHRhLnBvZAorIAkkKExOUykgcGVybGRlbHRhLnBvZCBwb2QvcGVybDUyNDFkZWx0YS5wb2QKICAKIC1leHRyYS5wb2RzOiAkKE1JTklQRVJMX0VYRSkKICtleHRyYS5wb2RzOgpAQCAtMzQ1LDcgKzM0Niw3IEBACiAgCSQoTUlOSVBFUkwpIG1ha2VfZXh0LnBsICRAICQoTUFLRV9FWFRfQVJHUykgTUFLRT0iJChNQUtFKSIgTElCUEVSTF9BPSQoTElCUEVSTCkgTElOS1RZUEU9c3RhdGljICQoU1RBVElDX0xERkxBR1MpCiAgCiAgbl9kdW1teSAkKG5vbnhzX2V4dCk6CSQoTUlOSVBFUkxfRVhFKSBsaWIvYnVpbGRjdXN0b21pemUucGwgcHJlcGxpYnJhcnkgRk9SQ0UKLUBAIC0xNDc5LDE0ICsxNDY4LDE0IEBAIHRlc3RfcHJlcF9wcmU6IHByZXBsaWJyYXJ5IHV0aWxpdGllcyAkKG5vbnhzX2V4dCkKK0BAIC0xNDc5LDE0ICsxNDY4LDE0IEBAIHRlc3RfcHJlcF9wcmU6IHByZXBsaWJyYXJ5IHV0aWxpdGllcyAkKG4KICAKICBjYXNlICIkdGFyZ2V0aG9zdCIgaW4KICAnJykgJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCkBAIC0zNjIsNyArMzYzLDcgQEAKICAJXCQoZHluYW1pY19leHQpIFwkKFRFU1RfUEVSTF9ETEwpIHJ1bnRlc3RzIFwKICAJXCQoZ2VuZXJhdGVkX3BvZHMpCiAgCSR0byBsaWJwZXJsLioKLUBAIC0xNTM5LDcgKzE1MjgsNyBAQCB0ZXN0X3ByZXAgdGVzdC1wcmVwOiB0ZXN0X3ByZXBfcHJlIFwkKE1JTklQRVJMX0VYRSkgXCQodW5pZGF0YWZpbGVzKSBcJChQRVJMX0VYRQorQEAgLTE1MzksNyArMTUyOCw3IEBAIHRlc3RfcHJlcCB0ZXN0LXByZXA6IHRlc3RfcHJlcF9wcmUgXCQoTUkKICBlc2FjCiAgCiAgJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCkBAIC0zODAsNiArMzgxLDMgQEAKICAJLSBjZCB0ICYmICQoUlVOX1BFUkwpIFRFU1QgJChNSU5JVEVTVF9URVNUUykgPCQoZGV2dHR5KQogIAogIG1pbml0ZXN0LW5vdHR5IG1pbml0ZXN0X25vdHR5OiAkKE1JTklQRVJMX0VYRSkgbWluaXRlc3RfcHJlcAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKaW5kZXggNDY1NzY3My4uYWMwNDg0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaApAQCAtMzYxLDcgKzM2MSw3IEBACiBkX2xkZXhwbD0nZGVmaW5lJwogZF9sZ2FtbWE9J2RlZmluZScKIGRfbGdhbW1hX3I9J2RlZmluZScKLWRfbGlibV9saWJfdmVyc2lvbj0nZGVmaW5lJworZF9saWJtX2xpYl92ZXJzaW9uPSd1bmRlZicKIGRfbGlibmFtZV91bmlxdWU9J3VuZGVmJwogZF9saW5rPSdkZWZpbmUnCiBkX2xscmludD0nZGVmaW5lJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoCmluZGV4IGEwMGFkNjEuLjMzZTIyMjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2gKQEAgLTEsMTUgKzEsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAotSW5kZXg6IHBlcmwtNS4xNC4yL01ha2VmaWxlLlNICitJbmRleDogcGVybC01LjI0LjEvTWFrZWZpbGUuU0gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMTQuMi5vcmlnL01ha2VmaWxlLlNICi0rKysgcGVybC01LjE0LjIvTWFrZWZpbGUuU0gKLUBAIC02MjIsNyArNjIyLDcgQEAgYml0Y291bnQuaDogZ2VuZXJhdGVfdXVkbWFwJChIT1NUX0VYRV9FWAotIAkkKFJVTikgLi9nZW5lcmF0ZV91dWRtYXAkKEhPU1RfRVhFX0VYVCkgdXVkbWFwLmggYml0Y291bnQuaAorLS0tIHBlcmwtNS4yNC4xLm9yaWcvTWFrZWZpbGUuU0gKKysrKyBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAorQEAgLTcxMCw3ICs3MTAsNyBAQCBiaXRjb3VudC5oOiBnZW5lcmF0ZV91dWRtYXBcJChIT1NUX0VYRV9FCiAgCisgJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCiAgZ2VuZXJhdGVfdXVkbWFwJChIT1NUX0VYRV9FWFQpOiBnZW5lcmF0ZV91dWRtYXAkKE9CSl9FWFQpCiAtCSQoQ0MpIC1vIGdlbmVyYXRlX3V1ZG1hcCQoRVhFX0VYVCkgJChMREZMQUdTKSBnZW5lcmF0ZV91dWRtYXAkKE9CSl9FWFQpICQobGlicykKICsJJChCVUlMRF9DQykgLW8gZ2VuZXJhdGVfdXVkbWFwJChFWEVfRVhUKSBnZW5lcmF0ZV91dWRtYXAuYwogIAotIG1pbmlwZXJsbWFpbiQoT0JKX0VYVCk6IG1pbmlwZXJsbWFpbi5jIHBhdGNobGV2ZWwuaAotIAkkKENDQ01EKSAkKFBMRExGTEFHUykgJCouYworICFOTyFTVUJTIQorIDs7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9maXhfYmFkX3JwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaAppbmRleCA3NjUwMTI4Li40OWVmY2JlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9maXhfYmFkX3JwYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2ZpeF9iYWRfcnBhdGgucGF0Y2gKQEAgLTEwLDE1ICsxMCwxNSBAQAogSXQgaXMgYSBmaXggdG8gTWFrZU1ha2VyIHdpdGhpbiBwZXJsLCBzbyBhbGwgc3VjaCBwZXJsIHJlY2lwZXMgd2lsbCBnZXQgCiBmaXhlZCB3aXRoIHRoaXMgcGVybCBmaXguCiAKLUluZGV4OiBwZXJsLTUuMTQuMi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KK0luZGV4OiBwZXJsLTUuMjQuMS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMTQuMi5vcmlnL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbQotKysrIHBlcmwtNS4xNC4yL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbQotQEAgLTU1LDYgKzU1LDcgQEAgc3ViIF91bml4X29zMl9leHQgewotICAgICBteSgkZm91bmQpID0gMDsKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbQorKysrIHBlcmwtNS4yNC4xL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbQorQEAgLTU3LDYgKzU3LDcgQEAgc3ViIF91bml4X29zMl9leHQgeworICAgICBteSAoICRmb3VuZCApID0gMDsKICAKICAgICAgIyBEZWJpYW4tc3BlY2lmaWM6IGRvbid0IHVzZSBMRF9SVU5fUEFUSCBmb3Igc3RhbmRhcmQgZGlycwogKyAgICBwdXNoKEBsaWJwYXRoLCAiU1lTUk9PVExJQiIpOwogICAgICAkbGRfcnVuX3BhdGhfc2VlbnskX30rKyBmb3IgQGxpYnBhdGg7CiAgCi0gICAgIGZvcmVhY2ggbXkgJHRoaXNsaWIgKHNwbGl0ICcgJywgJHBvdGVudGlhbF9saWJzKSB7CisgICAgIGZvcmVhY2ggbXkgJHRoaXNsaWIgKCBzcGxpdCAnICcsICRwb3RlbnRpYWxfbGlicyApIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvaW5zdGFsbHBlcmwucGF0Y2gKaW5kZXggNDU2MDEyMy4uN2ZkMWY1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvaW5zdGFsbHBlcmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvaW5zdGFsbHBlcmwucGF0Y2gKQEAgLTEsMTIgKzEsMTIgQEAKIFVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAotSW5kZXg6IHBlcmwtNS4xMi4zL2luc3RhbGxwZXJsCitJbmRleDogcGVybC01LjI0LjEvaW5zdGFsbHBlcmwKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMTIuMy5vcmlnL2luc3RhbGxwZXJsCi0rKysgcGVybC01LjEyLjMvaW5zdGFsbHBlcmwKLUBAIC0zLDggKzMsOCBAQAorLS0tIHBlcmwtNS4yNC4xLm9yaWcvaW5zdGFsbHBlcmwKKysrKyBwZXJsLTUuMjQuMS9pbnN0YWxscGVybAorQEAgLTIsOCArMiw4IEBACisgCiAgQkVHSU4gewotICAgICByZXF1aXJlIDUuMDA0OwogICAgICBjaGRpciAnLi4nIGlmICEtZCAnbGliJyBhbmQgLWQgJy4uL2xpYic7CiAtICAgIEBJTkMgPSAnbGliJzsKIC0gICAgJEVOVntQRVJMNUxJQn0gPSAnbGliJzsKQEAgLTE0LDQgKzE0LDQgQEAKICsjICAgICRFTlZ7UEVSTDVMSUJ9ID0gJ2xpYic7CiAgCiAgICAgICMgVGhpcyBuZWVkcyB0byBiZSBhdCBCRUdJTiB0aW1lLCBiZWZvcmUgYW55IHVzZSBvZiBDb25maWcKLSAgICAgcmVxdWlyZSAnLi9pbnN0YWxsX2xpYi5wbCc7CisgICAgICMgaW5zdGFsbF9saWIgaXRzZWxmIGxvYWRzIGFuZCBpbXBvcnRzIENvbmZpZyBpbnRvIG1haW46OgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2gKaW5kZXggZGU2ZjY1Mi4uYjJjNTk3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9tYWtlX2V4dC5wbC1maXgtcmVnZW5lcmF0ZS1tYWtlZmlsZS1mYWlsZWQtd2hpbGUtY2MtLnBhdGNoCkBAIC0xMCwxMCArMTAsMTAgQEAKICBtYWtlX2V4dC5wbCB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL21ha2VfZXh0LnBsIGIvbWFrZV9leHQucGwKLWluZGV4IGI0MzM3NjIuLjlmYzFhMzYgMTAwNjQ0Ci0tLS0gYS9tYWtlX2V4dC5wbAotKysrIGIvbWFrZV9leHQucGwKK0luZGV4OiBwZXJsLTUuMjQuMS9tYWtlX2V4dC5wbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4yNC4xLm9yaWcvbWFrZV9leHQucGwKKysrKyBwZXJsLTUuMjQuMS9tYWtlX2V4dC5wbAogQEAgLTMzNSw2ICszMzUsMTAgQEAgc3ViIGJ1aWxkX2V4dGVuc2lvbiB7CiAgICAgICAgICAgICAgICAgIHByaW50ICJEZWxldGluZyBub24tQ3Jvc3MgbWFrZWZpbGVcbiI7CiAgICAgICAgICAgICAgICAgIGNsb3NlICRtZmggb3IgZGllICJjbG9zZSAkbWFrZWZpbGU6ICQhIjsKQEAgLTI0LDcgKzI0LDQgQEAKICsgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjguMS4yCi0KKyAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmM2Q2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK2NvbW1pdCAxM2U3MGIzOTdkY2IwZDFiZjRhODY5YjY3MGYwNDFjMWQ3YjczMGQwCitBdXRob3I6IEJq4Lij4LiWcm4gRXNzZXIgPGJlc3NlcjgyQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogICBTYXQgSmFuIDIwIDIwOjIyOjUzIDIwMTggKzAxMDAKKworICAgIHBwOiBHdWFyZCBmaXggZm9yIHJlYWxseSBvbGQgYnVnIGluIGdsaWJjIGxpYmNyeXB0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK2RpZmYgLS1naXQgYS9wcC5jIGIvcHAuYworaW5kZXggZDUwYWQ3ZGRiZi4uNjUxMGM3YjE1YyAxMDA2NDQKKy0tLSBhL3BwLmMKKysrKyBiL3BwLmMKK0BAIC0zNjUwLDggKzM2NTAsMTIgQEAgUFAocHBfY3J5cHQpCisgI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fRU1YX18pCisgCWlmIChQTF9yZWVudHJhbnRfYnVmZmVyLT5fY3J5cHRfc3RydWN0X2J1ZmZlcikgeworIAkgICAgUExfcmVlbnRyYW50X2J1ZmZlci0+X2NyeXB0X3N0cnVjdF9idWZmZXItPmluaXRpYWxpemVkID0gMDsKKy0JICAgIC8qIHdvcmsgYXJvdW5kIGdsaWJjLTIuMi41IGJ1ZyAqLworKyNpZiAoZGVmaW5lZChfX0dMSUJDX18pICYmIF9fR0xJQkNfXyA9PSAyKSAmJiBcCisrICAgIChkZWZpbmVkKF9fR0xJQkNfTUlOT1JfXykgJiYgX19HTElCQ19NSU5PUl9fID49IDIgJiYgX19HTElCQ19NSU5PUl9fIDwgNCkKKysJICAgIC8qIHdvcmsgYXJvdW5kIGdsaWJjLTIuMi41IGJ1ZywgaGFzIGJlZW4gZml4ZWQgYXQgc29tZQorKwkgICAgICogdGltZSBpbiBnbGliYy0yLjMuWCAqLworIAkgICAgUExfcmVlbnRyYW50X2J1ZmZlci0+X2NyeXB0X3N0cnVjdF9idWZmZXItPmN1cnJlbnRfc2FsdGJpdHMgPSAwOworKyNlbmRpZgorIAl9CisgI2VuZGlmCisgICAgIH0KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1hcmNobGliLWV4cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtYXJjaGxpYi1leHAucGF0Y2gKaW5kZXggZDkxMmQwMC4uMzdiZjUyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1hcmNobGliLWV4cC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWFyY2hsaWItZXhwLnBhdGNoCkBAIC0yNSwxNiArMjUsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KIAotSW5kZXg6IHBlcmwtNS4xNC4yL2NvbmZpZ19oLlNICitJbmRleDogcGVybC01LjI0LjEvY29uZmlnX2guU0gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMTQuMi5vcmlnL2NvbmZpZ19oLlNICi0rKysgcGVybC01LjE0LjIvY29uZmlnX2guU0gKLUBAIC05OTYsNyArOTk2LDcgQEAgc2VkIDw8IUdST0shVEhJUyEgPiRDT05GSUdfSCAtZSAncyFeI3VuZAorLS0tIHBlcmwtNS4yNC4xLm9yaWcvY29uZmlnX2guU0gKKysrKyBwZXJsLTUuMjQuMS9jb25maWdfaC5TSAorQEAgLTE0MzQsNyArMTQzNCw3IEBAIHNlZCA8PCFHUk9LIVRISVMhID4kQ09ORklHX0ggLWUgJ3MhXiN1bmQKICAgKglpbiBwcm9ncmFtcyB0aGF0IGFyZSBub3QgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIH4gZXhwYW5zaW9uIGF0IHJ1bi10aW1lLgogICAqLwogICMkZF9hcmNobGliIEFSQ0hMSUIgIiRhcmNobGliIgkJLyoqLwogLSMkZF9hcmNobGliIEFSQ0hMSUJfRVhQICIkYXJjaGxpYmV4cCIJCS8qKi8KICsjJGRfYXJjaGxpYiBBUkNITElCX0VYUCAiJGFyY2hsaWJfZXhwIgkJLyoqLwogIAotIC8qIEFSQ0hOQU1FOgotICAqCVRoaXMgc3ltYm9sIGhvbGRzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYXJjaGl0ZWN0dXJlIG5hbWUuCisgLyogQklOOgorICAqCVRoaXMgc3ltYm9sIGhvbGRzIHRoZSBwYXRoIG9mIHRoZSBiaW4gZGlyZWN0b3J5IHdoZXJlIHRoZSBwYWNrYWdlIHdpbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1keW5sb2FkZXIucGF0Y2gKaW5kZXggMDM1YmViYS4uMjU3MjA2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1keW5sb2FkZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1keW5sb2FkZXIucGF0Y2gKQEAgLTcsMTMgKzcsMTMgQEAKIAogVXBkYXRlIGJ5IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMDQvMjEKIAotSW5kZXg6IHBlcmwtNS4xNC4yL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKK0luZGV4OiBwZXJsLTUuMjQuMS9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCi0rKysgcGVybC01LjE0LjIvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAotQEAgLTI4LDYgKzI4LDIwIEBAIHN1YiBsb2FkIHsKLSAKLSAgICAgbXkgKCRtb2R1bGUsICRtb2RsaWJuYW1lKSA9IGNhbGxlcigpOworLS0tIHBlcmwtNS4yNC4xLm9yaWcvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAorKysrIHBlcmwtNS4yNC4xL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKK0BAIC01Miw2ICs1MiwyMCBAQCBzdWIgbG9hZCB7CisgICAgIG15ICgkY2FsbGVyLCAkbW9kbGlibmFtZSkgPSBjYWxsZXIoKTsKKyAgICAgbXkgJG1vZHVsZSA9ICRjYWxsZXI7CiAgCiArICAgICMgT0U6IEFsbG93IGVudiB0byBmb3JtIGR5bmFtaWMgbG9hZGVyIHRvIGxvb2sgaW4gYSBkaWZmZXJlbnQgcGxhY2UKICsgICAgIyBUaGlzIGlzIHNvIGl0IGZpbmRzIHRoZSBob3N0IC5zbyBmaWxlcywgbm90IHRoZSB0YXJnZXRzCkBAIC0zMCw1ICszMCw1IEBACiArICAgIH0KICsKICAgICAgaWYgKEBfKSB7Ci0gCSRtb2R1bGUgPSAkX1swXTsKKyAgICAgICAgICRtb2R1bGUgPSAkX1swXTsKICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZW5hYmxlLWdkYm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWVuYWJsZS1nZGJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTgzZmNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZW5hYmxlLWdkYm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLUluZGV4OiBwZXJsLTUuOC44L2NvbmZpZ19oLlNICi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjguOC5vcmlnL2NvbmZpZ19oLlNICTIwMDUtMTEtMDEgMDI6MTM6MDUuMDAwMDAwMDAwICswODAwCi0rKysgcGVybC01LjguOC9jb25maWdfaC5TSAkyMDEwLTExLTAxIDE3OjA2OjA3LjIxNTIxOTczOCArMDgwMAotQEAgLTcwOSw2ICs3MDksMTIgQEAKLSAgKi8KLSAjJGlfZmxvYXQgSV9GTE9BVAkJLyoqLwotIAotKy8qIElfR0RCTToKLSsgKiAgICAgIFRoaXMgc3ltYm9sLCBpZiBkZWZpbmVkLCBpbmRpY2F0ZXMgdGhhdCA8Z2RibS5oPiBleGlzdHMgYW5kIHNob3VsZAotKyAqICAgICAgYmUgaW5jbHVkZWQuCi0rICovCi0rIyRpX2dkYm0gSV9HREJNIC8qKi8KLSsKLSAvKiBJX0xJTUlUUzoKLSAgKglUaGlzIHN5bWJvbCwgaWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRvIHRoZSBDIHByb2dyYW0gdGhhdCBpdCBzaG91bGQKLSAgKglpbmNsdWRlIDxsaW1pdHMuaD4gdG8gZ2V0IGRlZmluaXRpb24gb2Ygc3ltYm9scyBsaWtlIFdPUkRfQklUIG9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoCmluZGV4IDkwZTRkY2QuLjFkOWE1NmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoCkBAIC0zMiw3ICszMiw3IEBACiAgRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC5wbSAwZTFlNGMyNWVkZGI5OTlmZWM2YzRkYzY2NTkzZjc2ZGIzNGNmZDE2CiAtRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gYmZkMmFhMDBjYTRlZDI1MWYzNDJlMWQxYWQ3MDRhYmJhZjVhNjE1ZQogLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01ha2VNYWtlci5wbSA1NTI5YWUzMDY0MzY1ZWFmZDk5NTM2NjIxMzA1ZDUyZjRhYjMxYjQ1Ci0rRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gZDU5M2Q4ZmRjNWMwZWJjYjZkMzcwMWM3MGZjNjY0MGM1MGQ5MzQ1NQorK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIGYxY2E1ZWMyNDdlYjY5YmExM2EyNjlmMzRkYzIwNWRhMzdiNjEyNDQKICtFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gYmY5MTc0YzcwYTBlNTBmZjJmZWU0NTUyYzdkZjg5YjM3ZDI5MmRhMQogIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01ha2VNYWtlci9Db25maWcucG0gYmM4OGIyNzVhZjczYjhmYWFjNmFiZDU5YTlhYWQzZjYyNTkyNTgxMAogIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01ha2VNYWtlci9GQVEucG9kIDA2MmU1ZDE0YTgwM2ZiYmVjOGQ2MTgwMzA4NmEzZDc5OTdlOGE0NzMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgppbmRleCBiNTVkMjIyLi45MWYzMTBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCkBAIC0xLDggKzEsNyBAQAogcmVxdWlyZSBwZXJsLmluYwogCiAjIFdlIG5lZWQgZ251Z3JlcCAoZm9yIC1JKQotREVQRU5EUyA9ICJ2aXJ0dWFsL2RiIGdyZXAtbmF0aXZlIgotREVQRU5EUyArPSAiZ2RibSB6bGliIgorREVQRU5EUyA9ICJkYiBncmVwLW5hdGl2ZSBnZGJtIHpsaWIgdmlydHVhbC9jcnlwdCIKIAogIyBQaWNrIHVwIHBhdGNoZXMgZnJvbSBkZWJpYW4KICMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vcC9wZXJsL3BlcmxfNS4yMi4wLTEuZGViaWFuLnRhci54egpAQCAtNDYsNyArNDUsNiBAQAogICAgICAgICBmaWxlOi8vbGV0Z2NjLWZpbmQtZXJybm8ucGF0Y2ggXAogICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc2gucGF0Y2ggXAogICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1lbmFibGUtZ2RibS5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2ggXAogICAgICAgICBmaWxlOi8vZml4X2JhZF9ycGF0aC5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCkBAIC02NSw2ICs2Myw5IEBACiAgICAgICAgIGZpbGU6Ly9wZXJsLWVycm5vLWdlbmVyYXRpb24tZ2NjNS5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9wZXJsLWZpeC1jb25mbGljdC1iZXR3ZWVuLXNraXBfYWxsLWFuZC1FTkQucGF0Y2ggXAogICAgICAgICBmaWxlOi8vcGVybC10ZXN0LWN1c3RvbWl6ZWQucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg4My5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjgzNy5wYXRjaCBcCiAiCiAKICMgRml4IHRlc3QgY2FzZSBpc3N1ZXMKQEAgLTE4OSw2ICsxOTAsMTkgQEAKICAgICAgICAgb2VfcnVubWFrZSBwZXJsIExEPSIke0NDTER9IgogfQogCitkb19jb21waWxlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIG51bWVyb3VzIGNvbW1lbnRzLi4uCisgICAgICAgIGZpbmQgIiR7U30vY3Bhbi9FbmNvZGUiIC10eXBlIGYgXAorICAgICAgICAgICAgXCggLW5hbWUgJyouZXhoJyAtbyAtbmFtZSAnKi5jJyAtbyAtbmFtZSAnKi5oJyBcKVwKKyAgICAgICAgICAgIC1leGVjIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIHt9ICsKKyAgICAgICAgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyAke1N9L3BlcmwuaCAke1N9L3BwLmgKKyAgICAgICAgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfS91c3IvYmluL3BlcmwtbmF0aXZlL3Blcmwke1BWfS5yZWFsOi91c3IvYmluL3Blcmwke1BWfTpnJyAgXAorICAgICAgICAgICAgJHtTfS9jcGFuL0NvbXByZXNzLVJhdy1CemlwMi9jb25zdGFudHMuaCBcCisgICAgICAgICAgICAke1N9L2NwYW4vQ29tcHJlc3MtUmF3LVpsaWIvY29uc3RhbnRzLmggXAorICAgICAgICAgICAgJHtTfS9jcGFuL0lQQy1TeXNWL2NvbnN0LWMuaW5jIFwKKyAgICAgICAgICAgICR7U30vZGlzdC9UaW1lLUhpUmVzL2NvbnN0LWMuaW5jCit9CisKIGRvX2luc3RhbGwoKSB7CiAJI2V4cG9ydCBob3N0cGVybD0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3Blcmwke1BWfSIKIAlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9CkBAIC0yMzIsNiArMjQ2LDcgQEAKICAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCiAgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vLCxnIiBcCiAgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0vJHtUQVJHRVRfUFJFRklYfSwke2JpbmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKICAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJ4cyBcCiAgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gycGggXAogICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QybWFuIFwKQEAgLTI2Nyw2ICsyODIsNyBAQAogRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJwZXJsLnNvKiBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1IFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC9jb25maWcuc2ggXAorCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfZ2l0LnBsIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnkucGwgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS10YXJnZXQucGwiCiBGSUxFU18ke1BOfS1wb2QgPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vcG9kIFwKQEAgLTMyNCw3ICszNDAsNyBAQAogICAgIGQuc2V0VmFyKGQuZXhwYW5kKCJSUkVDT01NRU5EU18ke1BOfS1tb2R1bGVzIiksICcgJy5qb2luKHBhY2thZ2VzKSkKIH0KIAotUEFDS0FHRVNfRFlOQU1JQyArPSAiXnBlcmwtbW9kdWxlLS4qIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXnBlcmwtbW9kdWxlLS4qKD88IVwtbmF0aXZlKSQiCiBQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZXNkayArPSAiXm5hdGl2ZXNkay1wZXJsLW1vZHVsZS0uKiIKIAogUlBST1ZJREVTX3BlcmwtbGliID0gInBlcmwtbGliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MDVhZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi1Gcm9tIDRkN2I0ZDdjOGU5OTY2YzU5M2Y0NzIzNTU2MDcyMDRjNmM4MGZlY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgotRGF0ZTogU3VuLCA0IEp1biAyMDE3IDE5OjE5OjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1pbmltYWwgdHdlYWtzIHRvIGNvbXBpbGUgd2l0aCBWaXN1YWwgQyAyMDE1Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBnZXRvcHRfbG9uZy5jICAgICAgICAgICB8ICAyICsrCi0gbGlicGtnY29uZi9ic2RzdHVicy5jICAgfCAgMSArCi0gbGlicGtnY29uZi9saWJwa2djb25mLmggfCAgMiArLQotIGxpYnBrZ2NvbmYvcGF0aC5jICAgICAgIHwgMTAgKysrKystLS0tLQotIGxpYnBrZ2NvbmYvcGtnLmMgICAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIGxpYnBrZ2NvbmYvc3RkaW5jLmggICAgIHwgIDkgKysrKysrKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dldG9wdF9sb25nLmMgYi9nZXRvcHRfbG9uZy5jCi1pbmRleCBhZmViNjhkLi41Y2U5YmZkIDEwMDY0NAotLS0tIGEvZ2V0b3B0X2xvbmcuYwotKysrIGIvZ2V0b3B0X2xvbmcuYwotQEAgLTYyLDcgKzYyLDkgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpZm5kZWYgX1dJTjMyCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNlbmRpZgotIAotICNkZWZpbmUgUEtHQ09ORl9IQUNLX0xPR0lDQUxfT1JfQUxMX1ZBTFVFUwotIAotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYyBiL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYwotaW5kZXggOGY3MGZmMy4uMmMwMDBhYyAxMDA2NDQKLS0tLSBhL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYwotKysrIGIvbGlicGtnY29uZi9ic2RzdHVicy5jCi1AQCAtMTcsNiArMTcsNyBAQAotICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0gICovCi0gCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9saWJwa2djb25mLmggYi9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAotaW5kZXggNDA0YmYwYy4uNTUxZDg1ZCAxMDA2NDQKLS0tLSBhL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oCi0rKysgYi9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAotQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIHBrZ2NvbmZfYXVkaXRfbG9nX2RlcGVuZGVuY3kocGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBjb25zdCBwa2djb25mX3BrZ190Ci0gLyogcGF0aC5jICovCi0gdm9pZCBwa2djb25mX3BhdGhfYWRkKGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcik7Ci0gc2l6ZV90IHBrZ2NvbmZfcGF0aF9zcGxpdChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOwotLXNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOwotK3NpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOwotIGJvb2wgcGtnY29uZl9wYXRoX21hdGNoX2xpc3QoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QpOwotIHZvaWQgcGtnY29uZl9wYXRoX2ZyZWUocGtnY29uZl9saXN0X3QgKmRpcmxpc3QpOwotIGJvb2wgcGtnY29uZl9wYXRoX3JlbG9jYXRlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7Ci1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9wYXRoLmMgYi9saWJwa2djb25mL3BhdGguYwotaW5kZXggZGRkYjNiZi4uNTllMDAzZSAxMDA2NDQKLS0tLSBhL2xpYnBrZ2NvbmYvcGF0aC5jCi0rKysgYi9saWJwa2djb25mL3BhdGguYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjIGluY2x1ZGUgPHN5cy9jeWd3aW4uaD4KLSAjZW5kaWYKLSAKLS0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0rI2lmIGRlZmluZWQoSEFWRV9TWVNfU1RBVF9IKSAmJiAhIGRlZmluZWQoX1dJTjMyKQotICMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjIGRlZmluZSBQS0dDT05GX0NBQ0hFX0lOT0RFUwotICNlbmRpZgotQEAgLTE1NiwxMiArMTU2LDEyIEBAIHBrZ2NvbmZfcGF0aF9zcGxpdChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCi0gLyoKLSAgKiAhZG9jCi0gICoKLS0gKiAuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KQotKyAqIC4uIGM6ZnVuY3Rpb246OiBzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QpCi0gICoKLSAgKiAgICBBZGRzIHRoZSBwYXRocyBzcGVjaWZpZWQgaW4gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBwYXRoIGxpc3QuICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCwKLSAgKiAgICBhbiBvcHRpb25hbCBkZWZhdWx0IHNldCBvZiBwYXRocyBpcyBhZGRlZC4KLSAgKgotLSAqICAgIDpwYXJhbSBjaGFyKiBlbnZpcm9uOiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gbG9vayB1cC4KLSsgKiAgICA6cGFyYW0gY2hhciogZW52dmFybmFtZTogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvb2sgdXAuCi0gICogICAgOnBhcmFtIGNoYXIqIGZhbGxiYWNrOiBUaGUgZmFsbGJhY2sgcGF0aHMgdG8gdXNlIGlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgotICAqICAgIDpwYXJhbSBwa2djb25mX2xpc3RfdCogZGlybGlzdDogVGhlIHBhdGggbGlzdCB0byBhZGQgdGhlIHBhdGggbm9kZXMgdG8uCi0gICogICAgOnBhcmFtIGJvb2wgZmlsdGVyOiBXaGV0aGVyIHRvIHBlcmZvcm0gZHVwbGljYXRlIGZpbHRlcmluZy4KLUBAIC0xNjksMTEgKzE2OSwxMSBAQCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQotICAqICAgIDpydHlwZTogc2l6ZV90Ci0gICovCi0gc2l6ZV90Ci0tcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQotK3BrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKLSB7Ci0gCWNvbnN0IGNoYXIgKmRhdGE7Ci0gCi0tCWRhdGEgPSBnZXRlbnYoZW52aXJvbik7Ci0rCWRhdGEgPSBnZXRlbnYoZW52dmFybmFtZSk7Ci0gCWlmIChkYXRhICE9IE5VTEwpCi0gCQlyZXR1cm4gcGtnY29uZl9wYXRoX3NwbGl0KGRhdGEsIGRpcmxpc3QsIGZpbHRlcik7Ci0gCi1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9wa2cuYyBiL2xpYnBrZ2NvbmYvcGtnLmMKLWluZGV4IDdhZWJkNjEuLjVkYWNhZTMgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3BrZy5jCi0rKysgYi9saWJwa2djb25mL3BrZy5jCi1AQCAtMzAsNiArMzAsOCBAQAotICMJZGVmaW5lIFBLR19DT05GSUdfUkVHX0tFWSAiU29mdHdhcmVcXHBrZ2NvbmZpZ1xcUEtHX0NPTkZJR19QQVRIIgotICMJdW5kZWYgUEtHX0RFRkFVTFRfUEFUSAotICMJZGVmaW5lIFBLR19ERUZBVUxUX1BBVEggIi4uL2xpYi9wa2djb25maWc7Li4vc2hhcmUvcGtnY29uZmlnIgotKyNkZWZpbmUgc3RybmNhc2VjbXAgX3N0cm5pY21wCi0rI2RlZmluZSBzdHJjYXNlY21wIF9zdHJpY21wCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBQS0dfQ09ORklHX0VYVAkJIi5wYyIKLUBAIC0xMzQsMjEgKzEzNiwyMSBAQCBzdGF0aWMgaW50IHBrZ2NvbmZfcGtnX3BhcnNlcl9rZXl3b3JkX3BhaXJfY21wKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqcHRyKQotIHN0YXRpYyB2b2lkCi0gcGtnY29uZl9wa2dfcGFyc2VyX3R1cGxlX2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQotIHsKLS0JY2hhciAqKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKLSsJY2hhciAqKmRlc3QgPSAoY2hhciAqKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKLSAJKmRlc3QgPSBwa2djb25mX3R1cGxlX3BhcnNlKGNsaWVudCwgJnBrZy0+dmFycywgdmFsdWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIHBrZ2NvbmZfcGtnX3BhcnNlcl9mcmFnbWVudF9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKLSB7Ci0tCXBrZ2NvbmZfbGlzdF90ICpkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7Ci0rCXBrZ2NvbmZfbGlzdF90ICpkZXN0ID0gKHBrZ2NvbmZfbGlzdF90ICopKChjaGFyICopIHBrZyArIG9mZnNldCk7Ci0gCXBrZ2NvbmZfZnJhZ21lbnRfcGFyc2UoY2xpZW50LCBkZXN0LCAmcGtnLT52YXJzLCB2YWx1ZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0gcGtnY29uZl9wa2dfcGFyc2VyX2RlcGVuZGVuY3lfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCi0gewotLQlwa2djb25mX2xpc3RfdCAqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOwotKwlwa2djb25mX2xpc3RfdCAqZGVzdCA9IChwa2djb25mX2xpc3RfdCAqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOwotIAlwa2djb25mX2RlcGVuZGVuY3lfcGFyc2UoY2xpZW50LCBwa2csIGRlc3QsIHZhbHVlKTsKLSB9Ci0gCi1AQCAtMjM4LDcgKzI0MCw3IEBAIHBrZ2NvbmZfcGtnX3ZhbGlkYXRlKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgcGtnY29uZl9wa2dfdCAqcGtnKQotIAotIAlmb3IgKGkgPSAwOyBpIDwgUEtHQ09ORl9BUlJBWV9TSVpFKHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zKTsgaSsrKQotIAl7Ci0tCQljaGFyICoqcCA9ICgodm9pZCAqKSBwa2cgKyBwa2djb25mX3BrZ192YWxpZGF0aW9uc1tpXS5vZmZzZXQpOwotKwkJY2hhciAqKnAgPSAoY2hhciAqKikoKGNoYXIgKikgcGtnICsgcGtnY29uZl9wa2dfdmFsaWRhdGlvbnNbaV0ub2Zmc2V0KTsKLSAKLSAJCWlmICgqcCAhPSBOVUxMKQotIAkJCWNvbnRpbnVlOwotQEAgLTU4Nyw3ICs1ODksNyBAQCBwa2djb25mX3NjYW5fYWxsKHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgdm9pZCAqZGF0YSwgcGtnY29uZl9wa2dfaXRlcmF0aW9uX2Z1bgotIAotICNpZmRlZiBfV0lOMzIKLSBzdGF0aWMgcGtnY29uZl9wa2dfdCAqCi0tcGtnY29uZl9wa2dfZmluZF9pbl9yZWdpc3RyeV9rZXkoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBIS0VZIGhrZXksIGNvbnN0IGNoYXIgKm5hbWUpCi0rcGtnY29uZl9wa2dfZmluZF9pbl9yZWdpc3RyeV9rZXkocGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBIS0VZIGhrZXksIGNvbnN0IGNoYXIgKm5hbWUpCi0gewotIAlwa2djb25mX3BrZ190ICpwa2cgPSBOVUxMOwotIAotQEAgLTEwNDgsOCArMTA1MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gCi0gc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlc1tdID0gewotIAlbUEtHQ09ORl9DTVBfQU5ZXSA9IHsKLS0JCS5ydWxlY21wID0ge30sCi0tCQkuZGVwY21wID0ge30sCi0rCQkucnVsZWNtcCA9IHsKLSsJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAotKyAgICAgICAgICAgICAgICB9LAotKwkJLmRlcGNtcCA9IHsKLSsJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAotKyAgICAgICAgICAgICAgICB9LAotIAl9LAotIAlbUEtHQ09ORl9DTVBfTEVTU19USEFOXSA9IHsKLSAJCS5ydWxlY21wID0gewotQEAgLTExMjEsNyArMTEyNyw5IEBAIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfCi0gCQkJW1BLR0NPTkZfQ01QX0VRVUFMXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9lcSwKLSAJCQlbUEtHQ09ORl9DTVBfTk9UX0VRVUFMXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9uZQotIAkJfSwKLS0JCS5kZXBjbXAgPSB7fSwKLSsJCS5kZXBjbXAgPSB7Ci0rCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKLSsgICAgICAgICAgICAgICAgfSwKLSAJfSwKLSAJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0gPSB7Ci0gCQkucnVsZWNtcCA9IHsKLUBAIC0xMTMzLDcgKzExNDEsOSBAQCBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoXwotIAkJCVtQS0dDT05GX0NNUF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfbmUsCi0gCQkJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfZXEKLSAJCX0sCi0tCQkuZGVwY21wID0ge30sCi0rCQkuZGVwY21wID0gewotKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCi0rICAgICAgICAgICAgICAgIH0sCi0gCX0sCi0gfTsKLSAKLWRpZmYgLS1naXQgYS9saWJwa2djb25mL3N0ZGluYy5oIGIvbGlicGtnY29uZi9zdGRpbmMuaAotaW5kZXggNThjYzZjNy4uYWM3ZTUzYyAxMDA2NDQKLS0tLSBhL2xpYnBrZ2NvbmYvc3RkaW5jLmgKLSsrKyBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKLUBAIC0yNCw5ICsyNCw3IEBACi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaWZkZWYgX1dJTjMyCi1AQCAtMzQsOCArMzIsMTUgQEAKLSAjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSAjIGluY2x1ZGUgPG1hbGxvYy5oPgotICMgZGVmaW5lIFBBVEhfREVWX05VTEwJIm51bCIKLSsjIGlmbmRlZiBzc2l6ZV90Ci0rIyAgaW5jbHVkZSA8QmFzZVRzZC5oPgotKyMgIGRlZmluZSBzc2l6ZV90IFNTSVpFX1QKLSsjIGVuZGlmCi0rIyBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCi0gI2Vsc2UKLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSIvZGV2L251bGwiCi0rIyBpbmNsdWRlIDxkaXJlbnQuaD4KLSsjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotICNlbmRpZgotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDllYmUzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBlYTI4YzViMzQ0NTdjZjc2NzYxODFiMjg0ZTIyZWE1Zjc5YTMwZDg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTQ6NDc6MzEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RkaW5jLmg6IGZpeCBidWlsZCB3aXRoIG1pbmd3Ci0KLUZpeGVzIHRoaXMgYnVpbGQgZXJyb3Igd2l0aCBtaW5ndzoKLS4uLgotfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL2xpYnBrZ2NvbmYuaDoxOTowLAotfCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9hdWRpdC5jOjE2OgotfCAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvc3RkaW5jLmg6MzY6MTI6IGZhdGFsIGVycm9yOiBCYXNlVHNkLmg6IE5vCi1zdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18ICMgaW5jbHVkZSA8QmFzZVRzZC5oPgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIGxpYnBrZ2NvbmYvc3RkaW5jLmggfCAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKLWluZGV4IGFjN2U1M2MuLmQ4ZWZjZjUgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCi0rKysgYi9saWJwa2djb25mL3N0ZGluYy5oCi1AQCAtMzMsMTAgKzMzLDE4IEBACi0gIyBpbmNsdWRlIDxtYWxsb2MuaD4KLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCi0gIyBpZm5kZWYgc3NpemVfdAotKyMgaWZuZGVmIF9fTUlOR1czMl9fCi0gIyAgaW5jbHVkZSA8QmFzZVRzZC5oPgotKyMgZWxzZQotKyMgIGluY2x1ZGUgPGJhc2V0c2QuaD4KLSsjIGVuZGlmCi0gIyAgZGVmaW5lIHNzaXplX3QgU1NJWkVfVAotICMgZW5kaWYKLS0jIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKLSsjIGlmbmRlZiBfX01JTkdXMzJfXwotKyMgIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKLSsjIGVsc2UKLSsjIGluY2x1ZGUgPGRpcmVudC5oPgotKyMgZW5kaWYKLSAjZWxzZQotICMgZGVmaW5lIFBBVEhfREVWX05VTEwJIi9kZXYvbnVsbCIKLSAjIGluY2x1ZGUgPGRpcmVudC5oPgotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuMy43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGEwZGQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuMy43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJwa2djb25mIHByb3ZpZGVzIGNvbXBpbGVyIGFuZCBsaW5rZXIgY29uZmlndXJhdGlvbiBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4iCi1ERVNDUklQVElPTiA9ICJwa2djb25mIGlzIGEgcHJvZ3JhbSB3aGljaCBoZWxwcyB0byBjb25maWd1cmUgY29tcGlsZXIgYW5kIGxpbmtlciBcCi1mbGFncyBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4gSXQgaXMgc2ltaWxhciB0byBwa2ctY29uZmlnIGZyb20gXAotZnJlZWRlc2t0b3Aub3JnLCBwcm92aWRpbmcgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHdoaWxlIGFsc28gbWFpbnRhaW5pbmcgXAotY29tcGF0aWJpbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGtnY29uZi5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wa2djb25mL3BrZ2NvbmYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLVBST1ZJREVTICs9ICJwa2djb25maWciCi1SUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyIKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotIyBUaGUgcGtnY29uZiBsaWNlbnNlIHNlZW1zIHRvIGJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJTRC0yLUNsYXVzZSBvcgotIyBJU0MsIGJ1dCBoYXMgZGlmZmVyZW50IHdvcmRpbmcsIHNvIG5lZWRzIGl0cyBvd24gbmFtZS4KLUxJQ0VOU0UgPSAicGtnY29uZiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU0OGE5ZDFkYjEwY2MwYTg0ODEwYzMxM2EwZTkyNjZmIgotCi1TUkNfVVJJID0gIlwKLSAgICBodHRwczovL2Rpc3RmaWxlcy5kZXJlZmVyZW5jZWQub3JnL3BrZ2NvbmYvcGtnY29uZi0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBcCi0gICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCi0gICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKLSAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhYzM1YzM0ZDg0ZWViNmEwM2Q0ZDYxYjg1NTVkNjE5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmU3ZTQwOTAwYzc0Njc4OTNjNjVmODEwMjExYjFlNjhkYTNmOGQ1ZTcwZmRkYjg4M2ZjMjQ4MzljYWQwMzM5IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCi0gICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgotICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCi0gICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KLSAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCi0gICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKLSAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQotICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKLSAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAotICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKLSAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInBrZy1jb25maWciCi0KLSMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKLSMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQotIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCi1SUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKLQotIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKLUZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLQotQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7Ci0gICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgotICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCi0gICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCi0gICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCi0gICBmaQotfQotCi1TU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3YjY2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNC4yLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAicGtnY29uZiBwcm92aWRlcyBjb21waWxlciBhbmQgbGlua2VyIGNvbmZpZ3VyYXRpb24gZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIgorREVTQ1JJUFRJT04gPSAicGtnY29uZiBpcyBhIHByb2dyYW0gd2hpY2ggaGVscHMgdG8gY29uZmlndXJlIGNvbXBpbGVyIGFuZCBsaW5rZXIgXAorZmxhZ3MgZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIEl0IGlzIHNpbWlsYXIgdG8gcGtnLWNvbmZpZyBmcm9tIFwKK2ZyZWVkZXNrdG9wLm9yZywgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB3aGlsZSBhbHNvIG1haW50YWluaW5nIFwKK2NvbXBhdGliaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BrZ2NvbmYub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcGtnY29uZi9wa2djb25mL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitQUk9WSURFUyArPSAicGtnY29uZmlnIgorUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWciCitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKKyMgVGhlIHBrZ2NvbmYgbGljZW5zZSBzZWVtcyB0byBiZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCU0QtMi1DbGF1c2Ugb3IKKyMgSVNDLCBidXQgaGFzIGRpZmZlcmVudCB3b3JkaW5nLCBzbyBuZWVkcyBpdHMgb3duIG5hbWUuCitMSUNFTlNFID0gInBrZ2NvbmYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMjE0MjIyZWMxYTgyMGJkNmNjNzUxNjdhNTY5MjVlMCIKKworU1JDX1VSSSA9ICJcCisgICAgaHR0cHM6Ly9kaXN0ZmlsZXMuZGVyZWZlcmVuY2VkLm9yZy9wa2djb25mL3BrZ2NvbmYtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy13cmFwcGVyIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAorICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjY3OGQyNDJiNGVlZjE3NTRiYmE2YTU4NjQyYWYxMGJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhYjM5MzcxZDRhYjk3MmJlMWQ1MzlhOGIxMGI2Y2MyMWY4ZWFmYzk3ZjYxNzEwMmU2NjdlODJiZDMyZWIyMzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcGtnLWNvbmZpZy1kaXI9JyR7bGliZGlyfS9wa2djb25maWc6JHtkYXRhZGlyfS9wa2djb25maWcnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBJbnN0YWxsIGEgd3JhcHBlciB3aGljaCBkZWFscywgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aXRoIHBrZ2NvbmYgdnMKKyAgICAjIHBrZy1jb25maWcgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCisgICAgaW5zdGFsbCAtbSAwNzU1ICIke1dPUktESVJ9L3BrZy1jb25maWctd3JhcHBlciIgIiR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZyIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICAjIEluc3RhbGwgYSBwa2ctY29uZmlnLW5hdGl2ZSB3cmFwcGVyIHRoYXQgd2lsbCB1c2UgdGhlIG5hdGl2ZSBzeXNyb290IGluc3RlYWQKKyAgICAjIG9mIHRoZSBNQUNISU5FIHN5c3Jvb3QsIGZvciB1c2luZyBwa2ctY29uZmlnIHdoZW4gYnVpbGRpbmcgbmF0aXZlIHRvb2xzLgorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctbmF0aXZlLmluID4gJHtCfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLW5hdGl2ZSAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctbmF0aXZlCisgICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAorICAgICAgICAtZSAic3xATElCRElSX05BVElWRUB8JHtQS0dfQ09ORklHX0xJQkRJUn18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLWVzZGsuaW4gPiAke0J9L3BrZy1jb25maWctZXNkaworICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLWVzZGsgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLWVzZGsKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAicGtnLWNvbmZpZyIKKworIyBXaGVuIHVzaW5nIHRoZSBSUE0gZ2VuZXJhdGVkIGF1dG9tYXRpYyBwYWNrYWdlIGRlcGVuZGVuY2llcywgc29tZSBwYWNrYWdlcworIyB3aWxsIGVuZCB1cCByZXF1aXJpbmcgJ3BrZ2NvbmZpZyhwa2ctY29uZmlnKScuICBBbGxvdyB0aGlzIGJlaGF2aW9yIGJ5CisjIHNwZWNpZnlpbmcgYW4gYXBwcm9wcmlhdGUgcHJvdmlkZS4KK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnKHBrZy1jb25maWcpIgorCisjIEluY2x1ZGUgcGtnLm00IGluIHRoZSBtYWluIHBhY2thZ2UsIGxlYXZpbmcgbGlicGtnY29uZiBkZXYgZmlsZXMgaW4gLWRldgorRklMRVNfJHtQTn0tZGV2X3JlbW92ZSA9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrICgpIHsKKyAgIGlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiAtYSAiJHtXSVRISU5fRVhUX1NES30iID0gIjEiIF0gOyB0aGVuCisgICAgICAgcGtnY29uZmRpcj0iJHtTU1RBVEVfSU5TVERJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLyR7YmluZGlyX25hdGl2ZX0iCisgICAgICAgbXYgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZyAkcGtnY29uZmRpci9wa2ctY29uZmlnLnJlYWwKKyAgICAgICBsbnIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1lc2RrICRwa2djb25mZGlyL3BrZy1jb25maWcKKyAgICAgICBzZWQgLWkgLWUgInN8XnBrZy1jb25maWd8cGtnLWNvbmZpZy5yZWFsfCIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1uYXRpdmUKKyAgIGZpCit9CisKK1NTVEFURVBPU1RVTlBBQ0tGVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wb3N0aW5zdC1pbnRlcmNlcHQvbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3Bvc3RpbnN0LWludGVyY2VwdC9uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0XzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4YWM4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3Bvc3RpbnN0LWludGVyY2VwdC9uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0XzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUG9zdGluc3RhbGwgc2NyaXB0bGV0cyIKLUxJQ0VOU0UgPSAiTUlUIgotCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8qIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzCi0JaW5zdGFsbCAtbSA3NTUgJHtDT1JFQkFTRX0vc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3Bvc3RpbnN0X2ludGVyY2VwdCAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzLwotCWluc3RhbGwgLW0gNzU1ICR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZSAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzLwotCWluc3RhbGwgLW0gNzU1ICR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfaWNvbl9jYWNoZSAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzLwotCWluc3RhbGwgLW0gNzU1ICR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfcGl4YnVmX2NhY2hlICR7RH0ke2RhdGFkaXJ9L3Bvc3RpbnN0LWludGVyY2VwdHMvCi19Ci0KLWluaGVyaXQgbmF0aXZlc2RrCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IDU3MGVmMzYuLjBmNmQxNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTksNyArOSw3IEBACiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLVNSQ1JFViA9ICJlZjIwNjI4ZGQ3OGI5MmUxYTMxMjNhZmM2N2I2NGNmMDEwYmRkOWU0IgorU1JDUkVWID0gIjA1YWVhZmQwNTNlNTYzNTZlYzhjNjJmNGJiOGY3Yjk1YmFlMTkyZjMiCiBQViA9ICIxLjArZ2l0JHtTUkNQVn0iCiAKICMKQEAgLTMyLDggKzMyLDcgQEAKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAogCSAgIGZpbGU6Ly9tYWNyb3MucHJlbGluayIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInVwc3RyZWFtIGhhcyBubyB1c2FibGUgdGFncyIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBUQVJHRVRfT1NfT1JJRyA6PSAiJHtUQVJHRVRfT1N9IgogT1ZFUlJJREVTX2FwcGVuZCA9ICI6JHtUQVJHRVRfT1NfT1JJR30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNTU3YjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkyICswLDAgQEAKLUZyb20gOWU0MDdlMGJlMDE2OTVlN2I5MjdmNTgyMGFkZTg3ZWU5NjAyYzI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNSBTZXAgMjAxNyAxNzowMDoxNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBVc2UgZXBvbGwgQVBJIG9uIExpbnV4Ci0KLUFsc28gYSBjb3VwbGUgb2Ygb3RoZXIgbW9kaWZpY2F0aW9ucyBkdWUgdG8gZXBvbGwgaGF2aW5nCi1hIGRpZmZlcmVudCBhcHByb2FjaCB0byBob3cgdGhlIHdvcmtpbmcgc2V0IG9mIGZkcyBpcyBkZWZpbmVkCi1hbmQgdXNlZDoKLTEpIG9wZW5fY2xpZW50KCkgcmV0dXJucyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheSBvZiBjbGllbnRzCi0yKSBjbG9zZV9jbGllbnQoKSBoYXMgYSBwcm90ZWN0aW9uIGFnYWluc3QgYmVpbmcgY2FsbGVkIHR3aWNlCi13aXRoIHRoZSBzYW1lIGNsaWVudCAod2hpY2ggd291bGQgbWVzcyB1cCB0aGUgYWN0aXZlX2NsaWVudHMKLWNvdW50ZXIpCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtTZWVicyBDQydkIGJ5IGVtYWlsXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGVudW1zL2V4aXRfc3RhdHVzLmluIHwgICAzICsKLSBwc2V1ZG9fc2VydmVyLmMgICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZW51bXMvZXhpdF9zdGF0dXMuaW4gYi9lbnVtcy9leGl0X3N0YXR1cy5pbgotaW5kZXggNmJlNDRkMy4uODhmOTRjZCAxMDA2NDQKLS0tLSBhL2VudW1zL2V4aXRfc3RhdHVzLmluCi0rKysgYi9lbnVtcy9leGl0X3N0YXR1cy5pbgotQEAgLTE4LDMgKzE4LDYgQEAgbGlzdGVuX2ZkLCAic2VydmVyIGxvb3AgaGFkIG5vIHZhbGlkIGxpc3RlbiBmZCIKLSBwc2V1ZG9fbG9hZGVkLCAic2VydmVyIGNvdWxkbid0IGdldCBvdXQgb2YgcHNldWRvIGVudmlyb25tZW50IgotIHBzZXVkb19wcmVmaXgsICJjb3VsZG4ndCBnZXQgdmFsaWQgcHNldWRvIHByZWZpeCIKLSBwc2V1ZG9faW52b2NhdGlvbiwgImludmFsaWQgc2VydmVyIGNvbW1hbmQgYXJndW1lbnRzIgotK2Vwb2xsX2NyZWF0ZSwgImVwb2xsX2NyZWF0ZSgpIGZhaWxlZCIKLStlcG9sbF9jdGwsICJlcG9sbF9jdGwoKSBmYWlsZWQiCi0rCi1kaWZmIC0tZ2l0IGEvcHNldWRvX3NlcnZlci5jIGIvcHNldWRvX3NlcnZlci5jCi1pbmRleCBmZjE2ZWZkLi4xNGQzNGRlIDEwMDY0NAotLS0tIGEvcHNldWRvX3NlcnZlci5jCi0rKysgYi9wc2V1ZG9fc2VydmVyLmMKLUBAIC00MCw2ICs0MCwxMiBAQAotICNpbmNsdWRlICJwc2V1ZG9fY2xpZW50LmgiCi0gI2luY2x1ZGUgInBzZXVkb19kYi5oIgotIAotKy8vIFRoaXMgaGFzIHRvIGNvbWUgYWZ0ZXIgcHNldWRvIGluY2x1ZGVzLCBhcyB0aGF0J3Mgd2hlcmUgUFNFVURPX1BPUlQgZGVmaW5lcyBhcmUKLSsjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKLSsjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+Ci0rI2VuZGlmCi0rCi0rCi0gc3RhdGljIGludCBsaXN0ZW5fZmQgPSAtMTsKLSAKLSB0eXBlZGVmIHN0cnVjdCB7Ci1AQCAtNTksNiArNjUsNyBAQCBzdGF0aWMgaW50IGFjdGl2ZV9jbGllbnRzID0gMCwgaGlnaGVzdF9jbGllbnQgPSAwLCBtYXhfY2xpZW50cyA9IDA7Ci0gCi0gI2RlZmluZSBMT09QX0RFTEFZIDIKLSAjZGVmaW5lIERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUIDMwCi0rI2RlZmluZSBFUE9MTF9NQVhfRVZFTlRTIDEwCi0gaW50IHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOwotIHN0YXRpYyBpbnQgZGllX3BlYWNlZnVsbHkgPSAwOwotIHN0YXRpYyBpbnQgZGllX2ZvcmNlZnVsbHkgPSAwOwotQEAgLTgwLDYgKzg3LDkgQEAgcXVpdF9ub3coaW50IHNpZ25hbCkgewotIHN0YXRpYyBpbnQgbWVzc2FnZXMgPSAwLCByZXNwb25zZXMgPSAwOwotIHN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBtZXNzYWdlX3RpbWUgPSB7IC50dl9zZWMgPSAwIH07Ci0gCi0rI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCi0rc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKHZvaWQpOwotKyNlbmRpZgotIHN0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKTsKLSAKLSAvKiBoZWxwZXIgZnVuY3Rpb24gdG8gbWFrZSBhIGRpcmVjdG9yeSwganVzdCBsaWtlIG1rZGlyIC1wLgotQEAgLTM2OSwxMiArMzc5LDE2IEBAIHBzZXVkb19zZXJ2ZXJfc3RhcnQoaW50IGRhZW1vbml6ZSkgewotIAkJCWtpbGwocHBpZCwgU0lHVVNSMSk7Ci0gCQl9Ci0gCX0KLSsjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKLSsJcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKCk7Ci0rI2Vsc2UKLSAJcHNldWRvX3NlcnZlcl9sb29wKCk7Ci0rI2VuZGlmCi0gCXJldHVybiAwOwotIH0KLSAKLSAvKiBtZXNzIHdpdGggaW50ZXJuYWwgdGFibGVzIGFzIG5lZWRlZCAqLwotLXN0YXRpYyB2b2lkCi0rc3RhdGljIHVuc2lnbmVkIGludAotIG9wZW5fY2xpZW50KGludCBmZCkgewotIAlwc2V1ZG9fY2xpZW50X3QgKm5ld19jbGllbnRzOwotIAlpbnQgaTsKLUBAIC0zOTAsNyArNDA0LDcgQEAgb3Blbl9jbGllbnQoaW50IGZkKSB7Ci0gCQkJKythY3RpdmVfY2xpZW50czsKLSAJCQlpZiAoaSA+IGhpZ2hlc3RfY2xpZW50KQotIAkJCQloaWdoZXN0X2NsaWVudCA9IGk7Ci0tCQkJcmV0dXJuOwotKwkJCXJldHVybiBpOwotIAkJfQotIAl9Ci0gCi1AQCAtNDE0LDkgKzQyOCwxMSBAQCBvcGVuX2NsaWVudChpbnQgZmQpIHsKLSAKLSAJCW1heF9jbGllbnRzICs9IDE2OwotIAkJKythY3RpdmVfY2xpZW50czsKLSsJCXJldHVybiBtYXhfY2xpZW50cyAtIDE2OwotIAl9IGVsc2UgewotIAkJcHNldWRvX2RpYWcoImVycm9yIGFsbG9jYXRpbmcgbmV3IGNsaWVudCwgZmQgJWRcbiIsIGZkKTsKLSAJCWNsb3NlKGZkKTsKLSsJCXJldHVybiAwOwotIAl9Ci0gfQotIAotQEAgLTQzMyw2ICs0NDksMTAgQEAgY2xvc2VfY2xpZW50KGludCBjbGllbnQpIHsKLSAJCQljbGllbnQsIGhpZ2hlc3RfY2xpZW50KTsKLSAJCXJldHVybjsKLSAJfQotKwlpZiAoY2xpZW50c1tjbGllbnRdLmZkID09IC0xKSB7Ci0rCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiY2xpZW50ICVkIGFscmVhZHkgY2xvc2VkXG4iLCBjbGllbnQpOwotKwkJcmV0dXJuOwotKwl9Ci0gCWNsb3NlKGNsaWVudHNbY2xpZW50XS5mZCk7Ci0gCWNsaWVudHNbY2xpZW50XS5mZCA9IC0xOwotIAlmcmVlKGNsaWVudHNbY2xpZW50XS50YWcpOwotQEAgLTU2Niw2ICs1ODYsMTcxIEBAIHNlcnZlX2NsaWVudChpbnQgaSkgewotIAl9Ci0gfQotIAotKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAotK3N0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCh2b2lkKQotK3sKLSsJc3RydWN0IHNvY2thZGRyX3VuIGNsaWVudDsKLSsJc29ja2xlbl90IGxlbjsKLSsgICAgICAgIGludCBpOwotKyAgICAgICAgaW50IHJjOwotKyAgICAgICAgaW50IGZkOwotKwlpbnQgdGltZW91dDsKLSsJc3RydWN0IGVwb2xsX2V2ZW50IGV2LCBldmVudHNbRVBPTExfTUFYX0VWRU5UU107Ci0rCWludCBsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7Ci0rCi0rCWNsaWVudHMgPSBtYWxsb2MoMTYgKiBzaXplb2YoKmNsaWVudHMpKTsKLSsKLSsJY2xpZW50c1swXS5mZCA9IGxpc3Rlbl9mZDsKLSsJY2xpZW50c1swXS5waWQgPSBnZXRwaWQoKTsKLSsKLSsJZm9yIChpID0gMTsgaSA8IDE2OyArK2kpIHsKLSsJCWNsaWVudHNbaV0uZmQgPSAtMTsKLSsJCWNsaWVudHNbaV0ucGlkID0gMDsKLSsJCWNsaWVudHNbaV0udGFnID0gTlVMTDsKLSsJCWNsaWVudHNbaV0ucHJvZ3JhbSA9IE5VTEw7Ci0rCX0KLSsKLSsJYWN0aXZlX2NsaWVudHMgPSAxOwotKwltYXhfY2xpZW50cyA9IDE2OwotKwloaWdoZXN0X2NsaWVudCA9IDA7Ci0rCi0rCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBzdGFydGVkLlxuIik7Ci0rCWlmIChsaXN0ZW5fZmQgPCAwKSB7Ci0rCQlwc2V1ZG9fZGlhZygiZ290IGludG8gbG9vcCB3aXRoIG5vIHZhbGlkIGxpc3RlbiBmZC5cbiIpOwotKwkJZXhpdChQU0VVRE9fRVhJVF9MSVNURU5fRkQpOwotKwl9Ci0rCi0rCXRpbWVvdXQgPSBMT09QX0RFTEFZICogMTAwMDsKLSsKLSsJaW50IGVwb2xsZmQgPSBlcG9sbF9jcmVhdGUxKDApOwotKwlpZiAoZXBvbGxmZCA9PSAtMSkgewotKwkJcHNldWRvX2RpYWcoImVwb2xsX2NyZWF0ZTEoKSBmYWlsZWQuXG4iKTsKLSsJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1JFQVRFKTsKLSsJfQotKwlldi5ldmVudHMgPSBFUE9MTElOOwotKwlldi5kYXRhLnU2NCA9IDA7Ci0rCWlmIChlcG9sbF9jdGwoZXBvbGxmZCwgRVBPTExfQ1RMX0FERCwgY2xpZW50c1swXS5mZCwgJmV2KSA9PSAtMSkgewotKwkJcHNldWRvX2RpYWcoImVwb2xsX2N0bCgpIGZhaWxlZCB3aXRoIGxpc3RlbmluZyBzb2NrZXQuXG4iKTsKLSsJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1RMKTsKLSsJfQotKwotKwlwZGJfbG9nX21zZyhTRVZFUklUWV9JTkZPLCBOVUxMLCBOVUxMLCBOVUxMLCAic2VydmVyIHN0YXJ0ZWQgKHBpZCAlZCkiLCBnZXRwaWQoKSk7Ci0rCi0rICAgICAgICBmb3IgKDs7KSB7Ci0rCQlyYyA9IGVwb2xsX3dhaXQoZXBvbGxmZCwgZXZlbnRzLCBFUE9MTF9NQVhfRVZFTlRTLCB0aW1lb3V0KTsKLSsJCWlmIChyYyA9PSAwIHx8IChyYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikpIHsKLSsJCQkvKiBJZiB0aGVyZSdzIG5vIGNsaWVudHMsIHN0YXJ0IHRpbWluZyBvdXQuICBJZiB0aGVyZQotKwkJCSAqIGFyZSBhY3RpdmUgY2xpZW50cywgbmV2ZXIgdGltZSBvdXQuCi0rCQkJICovCi0rCQkJaWYgKGFjdGl2ZV9jbGllbnRzID09IDEpIHsKLSsJCQkJbG9vcF90aW1lb3V0IC09IExPT1BfREVMQVk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXliZSBmbHVzaCBkYXRhYmFzZSB0byBkaXNrICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGJfbWF5YmVfYmFja3VwKCk7Ci0rCQkJCWlmIChsb29wX3RpbWVvdXQgPD0gMCkgewotKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIm5vIG1vcmUgY2xpZW50cywgZ290IGJvcmVkLlxuIik7Ci0rCQkJCQlkaWVfcGVhY2VmdWxseSA9IDE7Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQkvKiBkaXNwbGF5IHRoaXMgaWYgbm90IGV4aXRpbmcgKi8KLSsJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIgfCBQREJHRl9CRU5DSE1BUkssICIlZCBtZXNzYWdlcyBoYW5kbGVkIGluICUuNGYgc2Vjb25kcywgJWQgcmVzcG9uc2VzXG4iLAotKwkJCQkJCW1lc3NhZ2VzLAotKwkJCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKwotKwkJCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcyk7Ci0rCQkJCX0KLSsJCQl9Ci0rCQl9IGVsc2UgaWYgKHJjID4gMCkgewotKwkJCWxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKLSsJCQlmb3IgKGkgPSAwOyBpIDwgcmM7ICsraSkgewotKwkJCQlpZiAoY2xpZW50c1tldmVudHNbaV0uZGF0YS51NjRdLmZkID09IGxpc3Rlbl9mZCkgewotKwkJCQkJaWYgKCFkaWVfZm9yY2VmdWxseSkgewotKwkJCQkJCWxlbiA9IHNpemVvZihjbGllbnQpOwotKwkJCQkJCWlmICgoZmQgPSBhY2NlcHQobGlzdGVuX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZjbGllbnQsICZsZW4pKSAhPSAtMSkgewotKwkJCQkJCS8qIERvbid0IGFsbG93IGNsaWVudHMgdG8gZW5kIHVwIG9uIGZkIDIsIGJlY2F1c2UgZ2xpYmMncwotKwkJCQkJCSAqIG1hbGxvYyBkZWJ1ZyB1c2VzIHRoYXQgZmQgdW5jb25kaXRpb25hbGx5LgotKwkJCQkJCSAqLwotKwkJCQkJCQlpZiAoZmQgPT0gMikgewotKwkJCQkJCQkJaW50IG5ld2ZkID0gZmNudGwoZmQsIEZfRFVQRkQsIDMpOwotKwkJCQkJCQkJY2xvc2UoZmQpOwotKwkJCQkJCQkJZmQgPSBuZXdmZDsKLSsJCQkJCQkJfQotKwkJCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAibmV3IGNsaWVudCBmZCAlZFxuIiwgZmQpOwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEEgbmV3IGNsaWVudCBpbXBsaWNpdGx5IGNhbmNlbHMgYW55Ci0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcHJldmlvdXMgc2h1dGRvd24gcmVxdWVzdCwgb3IgYQotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNodXRkb3duIGZvciBsYWNrIG9mIGNsaWVudHMuCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7Ci0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllX3BlYWNlZnVsbHkgPSAwOwotKwotKwkJCQkJCQlldi5ldmVudHMgPSBFUE9MTElOOwotKwkJCQkJCQlldi5kYXRhLnU2NCA9IG9wZW5fY2xpZW50KGZkKTsKLSsJCQkJCQkJaWYgKGV2LmRhdGEudTY0ICE9IDAgJiYgZXBvbGxfY3RsKGVwb2xsZmQsIEVQT0xMX0NUTF9BREQsIGNsaWVudHNbZXYuZGF0YS51NjRdLmZkLCAmZXYpID09IC0xKSB7Ci0rCQkJCQkJCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3RsKCkgZmFpbGVkIHdpdGggYWNjZXB0ZWQgc29ja2V0LlxuIik7Ci0rCQkJCQkJCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NUTCk7Ci0rCQkJCQkJCX0KLSsJCQkJCQl9IGVsc2UgaWYgKGVycm5vID09IEVNRklMRSkgewotKwkJCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiSGl0IG1heCBvcGVuIGZpbGVzLCBkcm9wcGluZyBhIGNsaWVudC5cbiIpOwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluIHRoZW9yeSB0aGVyZSBpcyBhIHBvdGVudGlhbCByYWNlIGhlcmUgd2hlcmUgaWYgd2UgY2xvc2UgYSBjbGllbnQsIAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG1heSBoYXZlIHNlbnQgdXMgYSBmYXN0b3AgbWVzc2FnZSB3aGljaCB3ZSBkb24ndCBhY3QgdXBvbi4KLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB3ZSBkb24ndCBjbG9zZSBhIGZpbGVoYW5kbGUgd2UnbGwgbG9vcCBpbmRlZmluaXRlbHkgdGhvdWdodC4gCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBjbG9zZSBvbmUgcGVyIGxvb3AgaXRlcmF0aW9uIGluIHRoZSBpbnRlcmVzdHMgb2YgY2F1dGlvbiAqLwotKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBoaWdoZXN0X2NsaWVudDsgKytqKSB7Ci0rCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudHNbal0uZmQgIT0gLTEpIHsKLSsJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2NsaWVudChqKTsKLSsJCQkJCQkJCQlicmVhazsKLSsJCQkJCQkJCX0KLSsJCQkJCQkJfQotKwkJCQkJCX0KLSsJCQkJCX0KLSsJCQkJfSBlbHNlIHsKLSsJCQkJCXN0cnVjdCB0aW1ldmFsIHR2MSwgdHYyOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmM7Ci0rCQkJCQlnZXR0aW1lb2ZkYXkoJnR2MSwgTlVMTCk7Ci0rCQkJCQlyYyA9IHNlcnZlX2NsaWVudChldmVudHNbaV0uZGF0YS51NjQpOwotKwkJCQkJZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOwotKwkJCQkJKyttZXNzYWdlczsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytyZXNwb25zZXM7Ci0rCQkJCQltZXNzYWdlX3RpbWUudHZfc2VjICs9ICh0djIudHZfc2VjIC0gdHYxLnR2X3NlYyk7Ci0rCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyArPSAodHYyLnR2X3VzZWMgLSB0djEudHZfdXNlYyk7Ci0rCQkJCQlpZiAobWVzc2FnZV90aW1lLnR2X3VzZWMgPCAwKSB7Ci0rCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgKz0gMTAwMDAwMDsKLSsJCQkJCQktLW1lc3NhZ2VfdGltZS50dl9zZWM7Ci0rCQkJCQl9IGVsc2Ugd2hpbGUgKG1lc3NhZ2VfdGltZS50dl91c2VjID4gMTAwMDAwMCkgewotKwkJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjIC09IDEwMDAwMDA7Ci0rCQkJCQkJKyttZXNzYWdlX3RpbWUudHZfc2VjOwotKwkJCQkJfQotKwkJCQl9Ci0rCQkJCWlmIChkaWVfZm9yY2VmdWxseSkKLSsJCQkJCWJyZWFrOwotKwkJCX0KLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3AgY29tcGxldGUgWyVkIGNsaWVudHMgbGVmdF1cbiIsIGFjdGl2ZV9jbGllbnRzKTsKLSsJCX0gZWxzZSB7Ci0rCQkJcHNldWRvX2RpYWcoImVwb2xsX3dhaXQgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJCQlicmVhazsKLSsJCX0KLSsJCWlmIChkaWVfcGVhY2VmdWxseSB8fCBkaWVfZm9yY2VmdWxseSkgewotKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJxdWl0dGluZy5cbiIpOwotKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIgfCBQREJHRl9CRU5DSE1BUkssICJzZXJ2ZXIgJWQgZXhpdGluZzogaGFuZGxlZCAlZCBtZXNzYWdlcyBpbiAlLjRmIHNlY29uZHNcbiIsCi0rCQkJCWdldHBpZCgpLCBtZXNzYWdlcywKLSsJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCi0rCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wKTsKLSsJCQlwZGJfbG9nX21zZyhTRVZFUklUWV9JTkZPLCBOVUxMLCBOVUxMLCBOVUxMLCAic2VydmVyICVkIGV4aXRpbmc6IGhhbmRsZWQgJWQgbWVzc2FnZXMgaW4gJS40ZiBzZWNvbmRzIiwKLSsJCQkJZ2V0cGlkKCksIG1lc3NhZ2VzLAotKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKLSsJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjApOwotKwkJCS8qIGFuZCBhdCB0aGlzIHBvaW50LCB3ZSdsbCBzdGFydCByZWZ1c2luZyBjb25uZWN0aW9ucyAqLwotKwkJCWNsb3NlKGNsaWVudHNbMF0uZmQpOwotKwkJCS8qIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIGluc2VydCBhIGRlbGF5IGZvcgotKwkJCSAqIGRlYnVnZ2luZyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHN0YXJ0dXAuICovCi0rCQkJLyogdXNsZWVwKDMwMDAwMCk7ICovCi0rCQkJZXhpdCgwKTsKLSsJCX0KLSsJfQotKwotK30KLSsKLSsjZW5kaWYKLSsKLSAvKiBnZXQgY2xpZW50cywgaGFuZGxlIG1lc3NhZ2VzLCBzaHV0IGRvd24uCi0gICogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGRvIGFueSB3b3JrLCBpdCBqdXN0IGNhbGxzIGEgdG9uIG9mIHRoaW5ncyB3aGljaAotICAqIGRvIHdvcmsuCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9iNmI2OGRiODk2Zjk5NjM1NTgzMzRhZmY3ZmNhNjFhZGRlNGVjMTBmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0NWEzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9iNmI2OGRiODk2Zjk5NjM1NTgzMzRhZmY3ZmNhNjFhZGRlNGVjMTBmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBiNmI2OGRiODk2Zjk5NjM1NTgzMzRhZmY3ZmNhNjFhZGRlNGVjMTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KLURhdGU6IFRodSwgMTMgQXByIDIwMTcgMTg6MTI6MDEgLTA1MDAKLVN1YmplY3Q6IFByZXZlbnQgYmFzaCBmcm9tIHNlZ2ZhdWx0aW5nIHdoZW4gdW5sb2FkaW5nIHBzZXVkbwotCi1iYXNoJ3MgZXh0cmVtZWx5IGZhbmN5IGludGVybmFsIGF3YXJlbmVzcyBvZiBob3cgdGhlIGVudmlyb25tZW50IGxvb2tzCi1tZWFucyB0aGF0LCBpZiB5b3UgZGlyZWN0bHkgY2FsbCB0aGUgdW5kZXJseWluZyBsaWJjICJ1bnNldGVudiIgb24KLWEgdmFyaWFibGUsIGJhc2ggY2FuIGVuZCB1cCB0cnlpbmcgdG8gYWNjZXNzIGEgbnVsbCBwb2ludGVyLiBGaXhpbmcKLXRoaXMgZ2VuZXJpY2FsbHkgaXMgYWN0dWFsbHkgcmF0aGVyIGhhcmQ7IHlvdSBjYW4ndCByZWFsbHkgYXZvaWQKLXdyaXRpbmcgdG8gZW52aXJvbiBvbiBmb3JrKCkgb3IgcG9wZW4oKSwgZXZlbiBpZiB5b3UgY2hhbmdlIGFsbAotZXhlY3YqKCkgZnVuY3Rpb25zIHRvIHVzZSB0aGUgZXhlY3YqZSgpIHZhcmlhbnRzLiBTbyBmb3Igbm93LCBpbnN0ZWFkCi1vZiB1bnNldHRpbmcgdGhlIHZhcmlhYmxlLCBzZXQgaXQgdG8gYW4gZW1wdHkgc3RyaW5nLgotCi1UaGFua3MgdG8gU2F1ciBpbiBJUkMgZm9yIHNwb3R0aW5nIHRoaXMgYW5kIGhlbHBpbmcgZGVidWcgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IFNlZWJzIDxzZWVic0BzZWVicy5uZXQ+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZy50eHQgYi9DaGFuZ2VMb2cudHh0Ci1pbmRleCBhMmQzMGU5Li44YmExZmZhIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nLnR4dAotKysrIGIvQ2hhbmdlTG9nLnR4dAotQEAgLTEsMyArMSw4IEBACi0rMjAxNy0wNC0xMzoKLSsJKiAoc2VlYnMpIGRvbid0IHVuc2V0IExEX1BSRUxPQUQgb3IgdGhlIGxpa2UsIGJlY2F1c2UgaWYgeW91Ci0rCSAgZG8gdGhhdCwgYmFzaCBjYW4gc2VnZmF1bHQgYmVjYXVzZSBpdCAia25vd3MiIGhvdyBtYW55Ci0rCSAgZmllbGRzIGFyZSBpbiBlbnZpcm9uLgotKwotIDIwMTctMDItMjQ6Ci0gCSogKHNlZWJzKSBpbXBvcnQgcG9zaXhfYWNsX2RlZmF1bHQgZml4IGZyb20gQW50b24gR2VyYXNpbW92Ci0gCSAgPGFudG9uQGFkdmFuY2VkdGVsZW1hdGljLmNvbT4KLWRpZmYgLS1naXQgYS9wc2V1ZG9fdXRpbC5jIGIvcHNldWRvX3V0aWwuYwotaW5kZXggMTcyOTkwYi4uNmExZmFjMiAxMDA2NDQKLS0tLSBhL3BzZXVkb191dGlsLmMKLSsrKyBiL3BzZXVkb191dGlsLmMKLUBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBwc2V1ZG9fZHJvcGVudigpIHsKLSAJCWlmIChsZF9wcmVsb2FkICYmIHN0cmxlbihsZF9wcmVsb2FkKSkgewotIAkJCVNFVEVOVihQUkVMSU5LX0xJQlJBUklFUywgbGRfcHJlbG9hZCwgMSk7Ci0gCQl9IGVsc2UgewotLQkJCVVOU0VURU5WKFBSRUxJTktfTElCUkFSSUVTKTsKLSsJCQlTRVRFTlYoUFJFTElOS19MSUJSQVJJRVMsICIiLCAxKTsKLSAJCX0KLSAJfQotIH0KLS0tIAotY2dpdCB2MC4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2VmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGZjNThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2VmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1Gcm9tIGVmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgotRGF0ZTogRnJpLCAyNCBGZWIgMjAxNyAxMjo0NzozOCAtMDYwMAotU3ViamVjdDogRG9uJ3QgdHJ5IHRvIHJlY29yZCAwLWxlbmd0aCBwb3NpeF9hY2xfZGVmYXVsdCB4YXR0cnMKLQotQmFzZWQgb24gYSBzdWJtaXNzaW9uIGZyb20gQW50b24gR2VyYXNpbW92IDxhbnRvbkBhZHZhbmNlZHRlbGVtYXRpYy5jb20+Ci0KLU9uIHNvbWUgc3lzdGVtcywgd2l0aCBzb21lIGtlcm5lbCBjb25maWdzLCAiY3AgLWEiIGFwcGFyZW50bHkgdHJpZXMgdG8KLXNldCBhbiBlbXB0eSBBQ0wgbGlzdCwgd2l0aCBhIHZhbGlkIGhlYWRlciBidXQgbm8gY29udGVudHMsIHdoaWNoIGNhdXNlcwotc3RyYW5nZSBhbmQgbXlzdGVyaW91cyBiZWhhdmlvciBsYXRlciBpZiB3ZSBhY3R1YWxseSBjcmVhdGUgc3VjaCBhbiBlbnRyeS4KLVNvIGZpbHRlciB0aGF0IG91dCwgYWxzbyBzYW5pdHktY2hlY2sgYSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdzLgotCi1TaWduZWQtb2ZmLWJ5OiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cudHh0IGIvQ2hhbmdlTG9nLnR4dAotaW5kZXggYWUyYTZlOS4uYTJkMzBlOSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZy50eHQKLSsrKyBiL0NoYW5nZUxvZy50eHQKLUBAIC0xLDMgKzEsNiBAQAotKzIwMTctMDItMjQ6Ci0rCSogKHNlZWJzKSBpbXBvcnQgcG9zaXhfYWNsX2RlZmF1bHQgZml4IGZyb20gQW50b24gR2VyYXNpbW92Ci0rCSAgPGFudG9uQGFkdmFuY2VkdGVsZW1hdGljLmNvbT4KLSAyMDE3LTAyLTAxOgotICAgICogKHNlZWJzKSBoYW5kbGUgeGF0dHIgZGVsZXRpb24gc2xpZ2h0bHkgbW9yZSBjYXJlZnVsbHkuCi0gICAgKiAoc2VlYnMpIHRhZyB0aGlzIGFzIDEuOC4yCi1kaWZmIC0tZ2l0IGEvcG9ydHMvbGludXgveGF0dHIvcHNldWRvX3dyYXBwZXJzLmMgYi9wb3J0cy9saW51eC94YXR0ci9wc2V1ZG9fd3JhcHBlcnMuYwotaW5kZXggNDZiYzA1My4uZDY5ZDUzZSAxMDA2NDQKLS0tLSBhL3BvcnRzL2xpbnV4L3hhdHRyL3BzZXVkb193cmFwcGVycy5jCi0rKysgYi9wb3J0cy9saW51eC94YXR0ci9wc2V1ZG9fd3JhcHBlcnMuYwotQEAgLTYyLDkgKzYyLDkgQEAgc3RhdGljIGludAotIHBvc2l4X3Blcm1pc3Npb25zKGNvbnN0IGFjbF9oZWFkZXIgKmhlYWRlciwgaW50IGVudHJpZXMsIGludCAqZXh0cmEsIGludCAqbW9kZSkgewotIAlpbnQgYWNsX3NlZW4gPSAwOwotIAlpZiAobGUzMihoZWFkZXItPnZlcnNpb24pICE9IDIpIHsKLS0JCXBzZXVkb19kaWFnKCJGYXRhbDogQUNMIHN1cHBvcnQgbm8gYXZhaWxhYmxlIGZvciBoZWFkZXIgdmVyc2lvbiAlZC5cbiIsCi0rCQlwc2V1ZG9fZGlhZygiRmF0YWw6IEFDTCBzdXBwb3J0IG5vdCBhdmFpbGFibGUgZm9yIGhlYWRlciB2ZXJzaW9uICVkLlxuIiwKLSAJCQlsZTMyKGhlYWRlci0+dmVyc2lvbikpOwotLQkJcmV0dXJuIDE7Ci0rCQlyZXR1cm4gLTE7Ci0gCX0KLSAJKm1vZGUgPSAwOwotIAkqZXh0cmEgPSAwOwotQEAgLTE0MCwxMiArMTQwLDM4IEBAIHN0YXRpYyBpbnQgc2hhcmVkX3NldHhhdHRyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pCi0gCXBzZXVkb19kZWJ1ZyhQREJHRl9YQVRUUiwgInNldHhhdHRyKCVzIFtmZCAlZF0sICVzID0+ICclLipzJylcbiIsCi0gCQlwYXRoID8gcGF0aCA6ICI8bm8gcGF0aD4iLCBmZCwgbmFtZSwgKGludCkgc2l6ZSwgKGNoYXIgKikgdmFsdWUpOwotIAotKwkvKiBGaWx0ZXIgb3V0IGVycm9uZW91cyBzaXplcyBmb3IgUE9TSVggQUNMCi0rCSAqICBzZWUgcG9zaXhfYWNsX3hhdHRyX2NvdW50IGluIGluY2x1ZGUvbGludXgvcG9zaXhfYWNsX3hhdHRyLmggb2YgTGludXggc291cmNlIGNvZGUgKi8KLSsJLyogSSBkb24ndCB0aGluayB0aGVyZSdzIGFueSBwb3NpeF9hY2xfKiB2YWx1ZXMgdGhhdCBhcmVuJ3QgaW4gdGhpcyBmb3JtYXQgKi8KLSsJaWYgKCFzdHJuY21wKG5hbWUsICJzeXN0ZW0ucG9zaXhfYWNsXyIsIDE3KSkgewotKwkJLy8gQUNMIGlzIGNvcnJ1cHQsIGlzc3VlIGFuIGVycm9yCi0rCQlpZihzaXplIDwgc2l6ZW9mKGFjbF9oZWFkZXIpIHx8IChzaXplIC0gc2l6ZW9mKGFjbF9oZWFkZXIpKSAlIHNpemVvZihhY2xfZW50cnkpICE9IDApIHsKLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICJpbnZhbGlkIGRhdGEgc2l6ZSBmb3IgJXM6ICVkXG4iLAotKwkJCQluYW1lLCAoaW50KSBzaXplKTsKLSsJCQllcnJubyA9IEVJTlZBTDsKLSsJCQlyZXR1cm4gLTE7Ci0rCQl9Ci0rCi0rCQkvLyBBQ0wgaXMgZW1wdHksIGRvIG5vdGhpbmcKLSsJCWlmKChzaXplIC0gc2l6ZW9mKGFjbF9oZWFkZXIpKSAvIHNpemVvZihhY2xfZW50cnkpID09IDApIHsKLSsJCQkvKiBvbiBzb21lIHN5c3RlbXMsICJjcCAtYSIgd2lsbCBhdHRlbXB0IHRvIGNsb25lIHRoZQotKwkJCSAqIHBvc2l4X2FjbF9kZWZhdWx0IGVudHJ5IGZvciBhIGRpcmVjdG9yeSAod2hpY2ggd291bGQgc3BlY2lmeQotKwkJCSAqIGRlZmF1bHQgQUNMcyBmb3IgbmV3IGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5KSwgYnV0IGlmIHRoZQotKwkJCSAqIG9yaWdpbmFsIHdhcyBlbXB0eSwgd2UgZ2V0IGEgaGVhZGVyIGJ1dCBubyBlbnRyaWVzLiBXaXRoCi0rCQkJICogcmVhbCB4YXR0ciwgdGhhdCBlbmRzIHVwIGJlaW5nIHNpbGVudGx5IGRpc2NhcmRlZCwgYXBwYXJlbnRseSwKLSsJCQkgKiBzbyB3ZSBkaXNjYXJkIGl0IHRvby4KLSsJCQkgKi8KLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICIwLWxlbmd0aCBBQ0wgZW50cnkgJXMuXG4iLCBuYW1lKTsKLSsJCQlyZXR1cm4gMDsKLSsJCX0KLSsJfQotIAkvKiB0aGlzIG1heSBiZSBhIHBsYWluIGNobW9kICovCi0gCWlmICghc3RyY21wKG5hbWUsICJzeXN0ZW0ucG9zaXhfYWNsX2FjY2VzcyIpKSB7Ci0gCQlpbnQgZXh0cmE7Ci0gCQlpbnQgbW9kZTsKLSAJCWludCBlbnRyaWVzID0gKHNpemUgLSBzaXplb2YoYWNsX2hlYWRlcikpIC8gc2l6ZW9mKGFjbF9lbnRyeSk7Ci0tCQlpZiAoIXBvc2l4X3Blcm1pc3Npb25zKHZhbHVlLCBlbnRyaWVzLCAmZXh0cmEsICZtb2RlKSkgewotKwkJaW50IHJlcyA9IHBvc2l4X3Blcm1pc3Npb25zKHZhbHVlLCBlbnRyaWVzLCAmZXh0cmEsICZtb2RlKTsKLSsJCWlmIChyZXMgPT0gMCkgewotIAkJCXBzZXVkb19kZWJ1ZyhQREJHRl9YQVRUUiwgInBvc2l4X2FjbF9hY2Nlc3MgdHJhbnNsYXRlZCB0byBtb2RlICUwNG8uIFJlbWFpbmluZyBhdHRyaWJ1dGUocyk6ICVkLlxuIiwKLSAJCQkJbW9kZSwgZXh0cmEpOwotIAkJCWJ1Zi5zdF9tb2RlID0gbW9kZTsKLUBAIC0xNjQsOCArMTkwLDEyIEBAIHN0YXRpYyBpbnQgc2hhcmVkX3NldHhhdHRyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pCi0gCQkJaWYgKCFleHRyYSkgewotIAkJCQlyZXR1cm4gMDsKLSAJCQl9Ci0rCQl9IGVsc2UgaWYgKHJlcyA9PSAtMSkgewotKwkJCWVycm5vID0gRU9QTk9UU1VQUDsKLSsJCQlyZXR1cm4gLTE7Ci0gCQl9Ci0gCX0KLSsKLSAJaWYgKCFzdHJjbXAobmFtZSwgInVzZXIucHNldWRvX2RhdGEiKSkgewotIAkJcHNldWRvX2RlYnVnKFBEQkdGX1hBVFRSIHwgUERCR0ZfWEFUVFJEQiwgInVzZXIucHNldWRvX2RhdGEgeGF0dHJpYnV0ZSBkb2VzIG5vdCBnZXQgdG8gZ28gaW4gZGF0YWJhc2UuXG4iKTsKLSAJCXJldHVybiAtMTsKLS0tIAotY2dpdCB2MC4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFzdG9wcmVwbHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNGMyZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFzdG9wcmVwbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1FbnN1cmUgRkFTVE9QIG1lc3NhZ2VzIGdldCBhbiBBQ0sgcmVwbHkgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBiZSBzdXJlIHRoZSBzZXJ2ZXIKLXJlY2lldmVkIHRoZW0uIFRoaXMgbWVhbnMgaWYgY29ubmVjdGlvbnMgYXJlIHRlcm1pbmF0ZWQsIGRhdGEgaXNuJ3QgbG9zdC4KLQotUlAgMjAxNy85LzIyCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLUluZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX2NsaWVudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX2NsaWVudC5jCi0rKysgcHNldWRvLTEuOC4yL3BzZXVkb19jbGllbnQuYwotQEAgLTEzMzEsMjEgKzEzMzEsMTkgQEAgcHNldWRvX2NsaWVudF9yZXF1ZXN0KHBzZXVkb19tc2dfdCAqbXNnLAotIAkJICogaW5kaWNhdGluZyBhIHN1Y2Nlc3NmdWwgc2VuZC4KLSAJCSAqLwotIAkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJzZW50IVxuIik7Ci0tCQlpZiAobXNnLT50eXBlICE9IFBTRVVET19NU0dfRkFTVE9QKSB7Ci0tCQkJcmVzcG9uc2UgPSBwc2V1ZG9fbXNnX3JlY2VpdmUoY29ubmVjdF9mZCk7Ci0tCQkJaWYgKCFyZXNwb25zZSkgewotLQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZXhwZWN0ZWQgcmVzcG9uc2UgZGlkIG5vdCBvY2N1cjsgcmV0cnlpbmdcbiIpOwotKwkJcmVzcG9uc2UgPSBwc2V1ZG9fbXNnX3JlY2VpdmUoY29ubmVjdF9mZCk7Ci0rCQlpZiAoIXJlc3BvbnNlKSB7Ci0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImV4cGVjdGVkIHJlc3BvbnNlIGRpZCBub3Qgb2NjdXI7IHJldHJ5aW5nXG4iKTsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHJlc3BvbnNlLT50eXBlICE9IFBTRVVET19NU0dfQUNLKSB7Ci0rCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJnb3Qgbm9uLWFjayByZXNwb25zZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotKwkJCQlyZXR1cm4gMDsKLSsJCQl9IGVsc2UgaWYgKG1zZy0+dHlwZSAhPSBQU0VVRE9fTVNHX0ZBU1RPUCkgewotKwkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgImdvdCByZXNwb25zZSB0eXBlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7Ci0rCQkJCXJldHVybiByZXNwb25zZTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAocmVzcG9uc2UtPnR5cGUgIT0gUFNFVURPX01TR19BQ0spIHsKLS0JCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJnb3Qgbm9uLWFjayByZXNwb25zZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotLQkJCQkJcmV0dXJuIDA7Ci0tCQkJCX0gZWxzZSB7Ci0tCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgImdvdCByZXNwb25zZSB0eXBlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7Ci0tCQkJCQlyZXR1cm4gcmVzcG9uc2U7Ci0tCQkJCX0KLSsJCQkJcmV0dXJuIDA7Ci0gCQkJfQotLQkJfSBlbHNlIHsKLS0JCQlyZXR1cm4gMDsKLSAJCX0KLSAJfQotIAlwc2V1ZG9fZGlhZygicHNldWRvOiBzZXJ2ZXIgY29ubmVjdGlvbiBwZXJzaXN0ZW50bHkgZmFpbGVkLCBhYm9ydGluZy5cbiIpOwotSW5kZXg6IHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwc2V1ZG8tMS44LjIub3JpZy9wc2V1ZG9fc2VydmVyLmMKLSsrKyBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCi1AQCAtNDYzLDYgKzQ2MywxMSBAQCBjbG9zZV9jbGllbnQoaW50IGNsaWVudCkgewotIAkJCS0taGlnaGVzdF9jbGllbnQ7Ci0gfQotIAotK3N0YXRpYyBwc2V1ZG9fbXNnX3Qgc2VydmVyX2Zhc3RvcF9yZXBseSA9IHsgCi0rICAgICAgICAudHlwZSA9IFBTRVVET19NU0dfQUNLLAotKyAgICAgICAgLm9wID0gT1BfTk9ORSwKLSt9OwotKwotIC8qIEFjdHVhbGx5IHByb2Nlc3MgYSByZXF1ZXN0LgotICAqLwotIHN0YXRpYyBpbnQKLUBAIC01MTUsOCArNTIwLDE0IEBAIHNlcnZlX2NsaWVudChpbnQgaSkgewotIAkJICogcHNldWRvX3NlcnZlcl9yZXNwb25zZS4KLSAJCSAqLwotIAkJaWYgKGluLT50eXBlICE9IFBTRVVET19NU0dfU0hVVERPV04pIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW4tPnR5cGUgPT0gUFNFVURPX01TR19GQVNUT1ApCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluLT50eXBlID09IFBTRVVET19NU0dfRkFTVE9QKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3Jlc3BvbnNlID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZvciBmYXN0b3BzIHdlIHJlcGx5IG5vdyB0byBzYXkgd2UgZ290IHRoZSBkYXRhICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJjID0gcHNldWRvX21zZ19zZW5kKGNsaWVudHNbaV0uZmQsICZzZXJ2ZXJfZmFzdG9wX3JlcGx5LCAwLCBOVUxMKSkgIT0gMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgImZhaWxlZCB0byBzZW5kIGZhc3RvcCBhY2sgdG8gY2xpZW50ICVkIFslZF06ICVkICglcylcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIChpbnQpIGNsaWVudHNbaV0ucGlkLCByYywgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCQkJLyogbW9zdCBtZXNzYWdlcyBkb24ndCBuZWVkIHRoZXNlLCBidXQgeGF0dHIgbWF5ICovCi0gCQkJcmVzcG9uc2VfcGF0aCA9IDA7Ci0gCQkJcmVzcG9uc2VfcGF0aGxlbiA9IC0xOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoCmluZGV4IGIwODVhNDUuLmJkYTdlNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGIwYjI1ZmJjMDQxYTE0OGQxZGUwOWY1YTY1MDNjZDk1OTczZWM3N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFR1ZSwgMjUgQXByIDIwMTcgMTU6MjU6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHBzZXVkbzogSGFuZGxlIHRvbyBtYW55IGZpbGVzIGRlYWRsb2NrCisKIEN1cnJlbnRseSBpZiB3ZSBtYXggb3V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlcywgcHNldWRvIGNhbiBkZWFkbG9jaywgdW5hYmxlIHRvCiBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zIHlldCB1bmFibGUgdG8gbW92ZSBmb3J3YXJkIGFuZCB1bmJsb2NrIHRoZSBvdGhlciBwcm9jZXNzZXMKIHdhaXRpbmcgZWl0aGVyLgpAQCAtMTEsMTkgKzE2LDIzIEBACiAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtQZXRlciBpcyBhd2FyZSBvZiB0aGUgaXNzdWVdCiAKLUluZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX3NlcnZlci5jCi0rKysgcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYwotQEAgLTU4MSw2ICs1ODEsNyBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgewotIAlpbnQgcmM7Ci0gCWludCBmZDsKLSAJaW50IGxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKy0tLQorIHBzZXVkb19zZXJ2ZXIuYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcHNldWRvX3NlcnZlci5jIGIvcHNldWRvX3NlcnZlci5jCitpbmRleCBkYWMzMjU4Li4xNWEzZThmIDEwMDY0NAorLS0tIGEvcHNldWRvX3NlcnZlci5jCisrKysgYi9wc2V1ZG9fc2VydmVyLmMKK0BAIC04MDIsNiArODAyLDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJc3RydWN0IHNpZ2FjdGlvbiBlYXRfdXNyMiA9IHsKKyAJCS5zYV9oYW5kbGVyID0gc2V0X2RvX2xpc3RfY2xpZW50cworIAl9OwogKwlpbnQgaGl0bWF4ZmlsZXM7CiAgCiAgCWNsaWVudHMgPSBtYWxsb2MoMTYgKiBzaXplb2YoKmNsaWVudHMpKTsKICAKLUBAIC01OTcsNiArNTk4LDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKK0BAIC04MjAsNiArODIxLDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKICAJYWN0aXZlX2NsaWVudHMgPSAxOwogIAltYXhfY2xpZW50cyA9IDE2OwogIAloaWdoZXN0X2NsaWVudCA9IDA7CkBAIC0zMSw5ICs0MCw5IEBACiAgCiAgCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBzdGFydGVkLlxuIik7CiAgCWlmIChsaXN0ZW5fZmQgPCAwKSB7Ci1AQCAtNjYzLDEwICs2NjUsMTUgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKLSAJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyAtPSAxMDAwMDAwOwotIAkJCQkJCSsrbWVzc2FnZV90aW1lLnR2X3NlYzsKK0BAIC04NzgsMTAgKzg4MCwxNSBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAkJCQkJfSBlbHNlIHsKKyAJCQkJCQlzZXJ2ZV9jbGllbnQoaSk7CiAgCQkJCQl9CiArCQkJCX0gZWxzZSBpZiAoaGl0bWF4ZmlsZXMpIHsKICsJCQkJCS8qIE9ubHkgY2xvc2Ugb25lIHBlciBsb29wIGl0ZXJhdGlvbiBpbiB0aGUgaW50ZXJlc3RzIG9mIGNhdXRpb24gKi8KQEAgLTQ3LDEzICs1NiwxNiBAQAogIAkJCWlmICghZGllX2ZvcmNlZnVsbHkgJiYgCiAgCQkJICAgIChGRF9JU1NFVChjbGllbnRzWzBdLmZkLCAmZXZlbnRzKSB8fAogIAkJCSAgICAgRkRfSVNTRVQoY2xpZW50c1swXS5mZCwgJnJlYWRzKSkpIHsKLUBAIC02ODgsNiArNjk4LDkgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWVfcGVhY2VmdWxseSA9IDA7CitAQCAtOTAzLDYgKzkxMCw5IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCQkJCQkgKi8KKyAJCQkJCXBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOworIAkJCQkJZGllX3BlYWNlZnVsbHkgPSAwOwogKwkJCQl9IGVsc2UgaWYgKGVycm5vID09IEVNRklMRSkgewogKwkJCQkJaGl0bWF4ZmlsZXMgPSAxOwogKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIkhpdCBtYXggb3BlbiBmaWxlcywgZHJvcHBpbmcgYSBjbGllbnQuXG4iKTsKICAJCQkJfQogIAkJCX0KICAJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3AgY29tcGxldGUgWyVkIGNsaWVudHMgbGVmdF1cbiIsIGFjdGl2ZV9jbGllbnRzKTsKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCmluZGV4IDE4Y2U5ZjkuLmNkYzJhNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwpAQCAtMjYsNyArMjYsNyBAQAogTk8zMkxJQlMgPz89ICIxIgogTk8zMkxJQlNfY2xhc3MtbmF0aXZlc2RrID0gIjEiCiAKLVBTRVVET19FWFRSQV9PUFRTID89ICItLWVuYWJsZS1mb3JjZS1hc3luYyAtLXdpdGhvdXQtcGFzc3dkLWZhbGxiYWNrIgorUFNFVURPX0VYVFJBX09QVFMgPz0gIi0tZW5hYmxlLWZvcmNlLWFzeW5jIC0td2l0aG91dC1wYXNzd2QtZmFsbGJhY2sgLS1lbmFibGUtZXBvbGwgLS1lbmFibGUteGF0dHIiCiAKICMgQ29tcGlsZSBmb3IgdGhlIGxvY2FsIG1hY2hpbmUgYXJjaC4uLgogZG9fY29tcGlsZSAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZWY1NzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBwc2V1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3BzZXVkby8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QcnVuZS1QSUUtZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stcGFzc3dkIFwKLSAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLWdyb3VwIFwKLSAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2VmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXN0b3ByZXBseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Q0MWU3MjE4OGZiZWExZjY5NmMzOTljMWE0MzU2NzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2ViNDU2YmQ0Nzc3MGEzN2NhMjA3ODRhOTFkNzE1YzVhNzYwMWUwN2UyNmFiMTFiMGM3N2U5MjAzZWQzZDE5NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCmluZGV4IDQyYzdiMmUuLjkxMDNkNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgpAQCAtMSwxNSArMSwxNCBAQAogcmVxdWlyZSBwc2V1ZG8uaW5jCiAKLVNSQ1JFViA9ICIwMjE2ODMwNWIwYTE5Zjk4MWZmZTg1N2YzNmViMjU2YmE4ODEwYjc3IgotUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCi0KLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wc2V1ZG8gXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUHJ1bmUtUElFLWZsYWdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLXBhc3N3ZCBcCiAgICAgICAgICAgIGZpbGU6Ly9mYWxsYmFjay1ncm91cCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rvb21hbnlmaWxlcy5wYXRjaCBcCisgICAgICAgICAgICIKIAorU1JDUkVWID0gImZkZGJlODU0YzlkYjA1OGQ1YTA1ODMwZDNiY2RkNDIzM2Q5NWVlMmUiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorUFYgPSAiMS45LjArZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllNTg1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDQxNzBiOThlMGQ1ODY0ZWY0ZGIxYzU3MDRhNmU5NDI4YzNiZTlmYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBJcnluYSBTaGNoZXJiaW5hIDxpc2hjaGVyYkByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAyNCBBdWcgMjAxNyAxODowMTo0MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBCVUc6IGZpeCBpbmZpbml0ZSBsb29wIHdoZW4gY3JlYXRpbmcgbnAucGFkIG9uIGFuIGVtcHR5IGFycmF5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzk1OTkvY29tbWl0cy82ZjllYTBhYmJkMzA1ZDUzZjkwMTdkZWJhYjNhM2E1OTFmZTBlMjQ5XQotQ1ZFOiBDVkUtMjAxNy0xMjg1MgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIG51bXB5L2xpYi9hcnJheXBhZC5weSAgICAgICAgICAgIHwgMyArKysKLSBudW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSB8IDQgKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9udW1weS9saWIvYXJyYXlwYWQucHkgYi9udW1weS9saWIvYXJyYXlwYWQucHkKLWluZGV4IDJkYWQ5OWMuLjI5NGE2ODkgMTAwNjQ0Ci0tLS0gYS9udW1weS9saWIvYXJyYXlwYWQucHkKLSsrKyBiL251bXB5L2xpYi9hcnJheXBhZC5weQotQEAgLTE0MDYsNiArMTQwNiw5IEBAIGRlZiBwYWQoYXJyYXksIHBhZF93aWR0aCwgbW9kZSwgKiprd2FyZ3MpOgotICAgICAgICAgICAgIG5ld21hdCA9IF9hcHBlbmRfbWluKG5ld21hdCwgcGFkX2FmdGVyLCBjaHVua19hZnRlciwgYXhpcykKLSAKLSAgICAgZWxpZiBtb2RlID09ICdyZWZsZWN0JzoKLSsgICAgICAgIGlmIG5hcnJheS5zaXplID09IDA6Ci0rICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgYXJlbid0IGFueSBlbGVtZW50cyB0byByZWZsZWN0IGluIGBhcnJheWAiKQotKwotICAgICAgICAgZm9yIGF4aXMsIChwYWRfYmVmb3JlLCBwYWRfYWZ0ZXIpIGluIGVudW1lcmF0ZShwYWRfd2lkdGgpOgotICAgICAgICAgICAgICMgUmVjdXJzaXZlIHBhZGRpbmcgYWxvbmcgYW55IGF4aXMgd2hlcmUgYHBhZF9hbXRgIGlzIHRvbyBsYXJnZQotICAgICAgICAgICAgICMgZm9yIGluZGV4aW5nIHRyaWNrcy4gV2UgY2FuIG9ubHkgc2FmZWx5IHBhZCB0aGUgb3JpZ2luYWwgYXhpcwotZGlmZiAtLWdpdCBhL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKLWluZGV4IDA1NmFhNDUuLjBmNzFkMzIgMTAwNjQ0Ci0tLS0gYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weQotKysrIGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKLUBAIC0xMDE0LDYgKzEwMTQsMTAgQEAgY2xhc3MgVmFsdWVFcnJvcjEoVGVzdENhc2UpOgotICAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIGFyciwgKCgtMiwgMyksICgzLCAyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQotIAotKyAgICBkZWYgdGVzdF9jaGVja19lbXB0eV9hcnJheShzZWxmKToKLSsgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBbXSwgNCwgbW9kZT0ncmVmbGVjdCcpCi0rICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgbnAubmRhcnJheSgwKSwgNCwgbW9kZT0ncmVmbGVjdCcpCi0rCi0gCi0gY2xhc3MgVmFsdWVFcnJvcjIoVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9jaGVja19uZWdhdGl2ZV9wYWRfYW1vdW50KHNlbGYpOgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKaW5kZXggZmZkNmNlZC4uNTE2Y2NkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaApAQCAtMSwyMyArMSwyNCBAQAotRnJvbSBjYzJjZTZkOGI2YTNlNmUyYzg4NzQ4OTZjMTA4OTcwMzRhODBjZDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjOGM2NjQ5YjI5YTA4ZjgyZTFkNjc2MWE2ZDYyY2U1ZjYzMjMxM2M1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDEwIERlYyAyMDE1IDEzOjIwOjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNlYXJjaCAvdXNyIGFuZCBzbyBvbiBmb3IgbGlicmFyaWVzIGJ5IGRlZmF1bHQgdG8gYXZvaWQKLSBob3N0IGNvbnRhbWluYXRpb24uCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBEb24ndCBzZWFyY2ggL3VzciBhbmQgc28gb24gZm9yIGxpYnJhcmllcyBieSBkZWZhdWx0IHRvCisgYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKEFzIHRoZSBjb2RlIHN0YW5kcywgdGhpcyBpcyBhIGhhY2spCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIG51bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSB8IDUwICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogCi1JbmRleDogbnVtcHktMS4xMy4xL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG51bXB5LTEuMTMuMS5vcmlnL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotKysrIG51bXB5LTEuMTMuMS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLUBAIC0yMTEsNTEgKzIxMSwxMyBAQCBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBbXQotICAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbXQorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQoraW5kZXggYmVhMTIwYy4uNTQ0ZTA1NiAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CitAQCAtMjYyLDUxICsyNjIsMTMgQEAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICAgYWRkX3N5c3RlbV9yb290KG9zLnBhdGguam9pbihjb25kYV9kaXIsICdMaWJyYXJ5JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgCiAgZWxzZToKIC0gICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL3Vzci9sb2NhbC9saWInLCAnL29wdC9saWInLCAnL3Vzci9saWInLAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvb3B0L2xvY2FsL2xpYicsICcvc3cvbGliJ10sIHBsYXRmb3JtX2JpdHMpCkBAIC0yOSwxMCArMzAsNyBAQAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL29wdC9sb2NhbC9pbmNsdWRlJywgJy9zdy9pbmNsdWRlJywKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvaW5jbHVkZS9zdWl0ZXNwYXJzZSddCiAtICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL3Vzci9sb2NhbC9zcmMnLCAnL29wdC9zcmMnLCAnL3N3L3NyYyddCi0rICAgIGRlZmF1bHRfbGliX2RpcnMgPSBsaWJwYXRocyhbJy9kZWFkaXIvbGliJ10sIHBsYXRmb3JtX2JpdHMpCi0rICAgIGRlZmF1bHRfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KLSsgICAgZGVmYXVsdF9zcmNfZGlycyA9IFsnLicsICcvZGVhZGRpci9zcmMnXQotIAorLQogLSAgICBkZWZhdWx0X3gxMV9saWJfZGlycyA9IGxpYnBhdGhzKFsnL3Vzci9YMTFSNi9saWInLCAnL3Vzci9YMTEvbGliJywKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbGliJ10sIHBsYXRmb3JtX2JpdHMpCiAtICAgIGRlZmF1bHRfeDExX2luY2x1ZGVfZGlycyA9IFsnL3Vzci9YMTFSNi9pbmNsdWRlJywgJy91c3IvWDExL2luY2x1ZGUnLApAQCAtNjcsOCArNjUsMTUgQEAKIC0gICAgZmluYWxseToKIC0gICAgICAgIGlmIHRtcCBpcyBub3QgTm9uZToKIC0gICAgICAgICAgICB0bXAuY2xvc2UoKQorKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQorKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCisrICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KKysKICsgICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy9kZWFkZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogKyAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQogIAogIGlmIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnbGliJykgbm90IGluIGRlZmF1bHRfbGliX2RpcnM6CiAgICAgIGRlZmF1bHRfbGliX2RpcnMuaW5zZXJ0KDAsIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnbGliJykpCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1YzRmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDMwZmIxYmY5MjQ0YmIwNzg5YzAyZWM3Yzk4YTkyM2FjYzcyMDAyMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAxOTo1NToyMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBucHlfY3B1OiBBZGQgcmlzY3Ygc3VwcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3B1bGwvMTA3NjFdCisKKyBudW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmggYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCitpbmRleCA4NDY1M2VhMTguLjllODhkYjg3MyAxMDA2NDQKKy0tLSBhL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmgKKysrKyBiL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmgKK0BAIC03OCw2ICs3OCw4IEBACisgICAgICNkZWZpbmUgTlBZX0NQVV9BQVJDSDY0CisgI2VsaWYgZGVmaW5lZChfX21jNjgwMDBfXykKKyAgICAgI2RlZmluZSBOUFlfQ1BVX002OEsKKysjZWxpZiBkZWZpbmVkKF9fcmlzY3YpCisrICAgICNkZWZpbmUgTlBZX0NQVV9SSVNDVgorICNlbGlmIGRlZmluZWQoX19hcmNfXykgJiYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKKyAgICAgI2RlZmluZSBOUFlfQ1BVX0FSQ0VMCisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSAmJiBkZWZpbmVkKF9fQklHX0VORElBTl9fKQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI4YTcxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYzU2MGFiZmY3MWY5OGEzOWE3NDAxZjA4YzJjMTNkYWQ5YWU3ZjE1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjUgRmViIDIwMTYgMDE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGJ1aWxkIHBhdGggaW4gY29tbWVudHMKLQotSXQgaGFzIGJ1aWxkIHBhdGggaW4gY29tbWVudHMsIHNvIHJlbW92ZSBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvcGVuZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIG51bXB5L2Rpc3R1dGlscy9taXNjX3V0aWwucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5IGIvbnVtcHkvZGlzdHV0aWxzL21pc2NfdXRpbC5weQotaW5kZXggMzQ1ZTYwZi4uZGFmYjA2OCAxMDA2NDQKLS0tLSBhL251bXB5L2Rpc3R1dGlscy9taXNjX3V0aWwucHkKLSsrKyBiL251bXB5L2Rpc3R1dGlscy9taXNjX3V0aWwucHkKLUBAIC0yMjU0LDcgKzIyNTQsNyBAQCBkZWYgZ2VuZXJhdGVfY29uZmlnX3B5KHRhcmdldCk6Ci0gICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBta3BhdGgKLSAgICAgbWtwYXRoKG9zLnBhdGguZGlybmFtZSh0YXJnZXQpKQotICAgICBmID0gb3Blbih0YXJnZXQsICd3JykKLS0gICAgZi53cml0ZSgnIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5ICVzXG4nICUgKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpKQotKyAgICBmLndyaXRlKCcjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgJXNcbicgJSAob3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKS5yZXBsYWNlKG9zLnBhdGguYWJzcGF0aCgnLi4vJyksJycpKSkKLSAgICAgZi53cml0ZSgnIyBJdCBjb250YWlucyBzeXN0ZW1faW5mbyByZXN1bHRzIGF0IHRoZSB0aW1lIG9mIGJ1aWxkaW5nIHRoaXMgcGFja2FnZS5cbicpCi0gICAgIGYud3JpdGUoJ19fYWxsX18gPSBbImdldF9pbmZvIiwic2hvdyJdXG5cbicpCi0gICAgIGZvciBrLCBpIGluIHN5c3RlbV9pbmZvLnNhdmVkX3Jlc3VsdHMuaXRlbXMoKToKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmlzY3Y2NC9fbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Jpc2N2NjQvX251bXB5Y29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5ZGViMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Jpc2N2NjQvX251bXB5Y29uZmlnLmgKQEAgLTAsMCArMSwzMiBAQAorI2RlZmluZSBOUFlfSEFWRV9FTkRJQU5fSCAxCisjZGVmaW5lIE5QWV9TSVpFT0ZfU0hPUlQgU0laRU9GX1NIT1JUCisjZGVmaW5lIE5QWV9TSVpFT0ZfSU5UIFNJWkVPRl9JTlQKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HIFNJWkVPRl9MT05HCisjZGVmaW5lIE5QWV9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRkxPQVQgOAorI2RlZmluZSBOUFlfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9ET1VCTEUgMTYKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HRE9VQkxFIDE2CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9MT05HRE9VQkxFIDMyCisjZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgOAorI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX09GRl9UIDgKKyNkZWZpbmUgTlBZX05PX1NNUCAwCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNOQU4KKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0lORgorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTRklOSVRFCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfU0lHTkJJVAorI2RlZmluZSBOUFlfVVNFX0M5OV9DT01QTEVYIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9ET1VCTEUgMQorI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0ZMT0FUIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9MT05HX0RPVUJMRSAxCisjZGVmaW5lIE5QWV9FTkFCTEVfU0VQQVJBVEVfQ09NUElMQVRJT04gMQorI2RlZmluZSBOUFlfVVNFX0M5OV9GT1JNQVRTIDEKKyNkZWZpbmUgTlBZX1ZJU0lCSUxJVFlfSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgTlBZX0FCSV9WRVJTSU9OIDB4MDEwMDAwMDkKKyNkZWZpbmUgTlBZX0FQSV9WRVJTSU9OIDB4MDAwMDAwMEEKKworI2lmbmRlZiBfX1NURENfRk9STUFUX01BQ1JPUworI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Jpc2N2NjQvY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMGI4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L2NvbmZpZy5oCkBAIC0wLDAgKzEsMTM5IEBACisjZGVmaW5lIEhBVkVfRU5ESUFOX0ggMQorI2RlZmluZSBTSVpFT0ZfUFlfSU5UUFRSX1QgOAorI2RlZmluZSBTSVpFT0ZfUFlfTE9OR19MT05HIDgKKyNkZWZpbmUgTUFUSExJQiBtCisjZGVmaW5lIEhBVkVfU0lOIDEKKyNkZWZpbmUgSEFWRV9DT1MgMQorI2RlZmluZSBIQVZFX1RBTiAxCisjZGVmaW5lIEhBVkVfU0lOSCAxCisjZGVmaW5lIEhBVkVfQ09TSCAxCisjZGVmaW5lIEhBVkVfVEFOSCAxCisjZGVmaW5lIEhBVkVfRkFCUyAxCisjZGVmaW5lIEhBVkVfRkxPT1IgMQorI2RlZmluZSBIQVZFX0NFSUwgMQorI2RlZmluZSBIQVZFX1NRUlQgMQorI2RlZmluZSBIQVZFX0xPRzEwIDEKKyNkZWZpbmUgSEFWRV9MT0cgMQorI2RlZmluZSBIQVZFX0VYUCAxCisjZGVmaW5lIEhBVkVfQVNJTiAxCisjZGVmaW5lIEhBVkVfQUNPUyAxCisjZGVmaW5lIEhBVkVfQVRBTiAxCisjZGVmaW5lIEhBVkVfRk1PRCAxCisjZGVmaW5lIEhBVkVfTU9ERiAxCisjZGVmaW5lIEhBVkVfRlJFWFAgMQorI2RlZmluZSBIQVZFX0xERVhQIDEKKyNkZWZpbmUgSEFWRV9SSU5UIDEKKyNkZWZpbmUgSEFWRV9UUlVOQyAxCisjZGVmaW5lIEhBVkVfRVhQMiAxCisjZGVmaW5lIEhBVkVfTE9HMiAxCisjZGVmaW5lIEhBVkVfQVRBTjIgMQorI2RlZmluZSBIQVZFX1BPVyAxCisjZGVmaW5lIEhBVkVfTkVYVEFGVEVSIDEKKyNkZWZpbmUgSEFWRV9TSU5GIDEKKyNkZWZpbmUgSEFWRV9DT1NGIDEKKyNkZWZpbmUgSEFWRV9UQU5GIDEKKyNkZWZpbmUgSEFWRV9TSU5IRiAxCisjZGVmaW5lIEhBVkVfQ09TSEYgMQorI2RlZmluZSBIQVZFX1RBTkhGIDEKKyNkZWZpbmUgSEFWRV9GQUJTRiAxCisjZGVmaW5lIEhBVkVfRkxPT1JGIDEKKyNkZWZpbmUgSEFWRV9DRUlMRiAxCisjZGVmaW5lIEhBVkVfUklOVEYgMQorI2RlZmluZSBIQVZFX1RSVU5DRiAxCisjZGVmaW5lIEhBVkVfU1FSVEYgMQorI2RlZmluZSBIQVZFX0xPRzEwRiAxCisjZGVmaW5lIEhBVkVfTE9HRiAxCisjZGVmaW5lIEhBVkVfTE9HMVBGIDEKKyNkZWZpbmUgSEFWRV9FWFBGIDEKKyNkZWZpbmUgSEFWRV9FWFBNMUYgMQorI2RlZmluZSBIQVZFX0FTSU5GIDEKKyNkZWZpbmUgSEFWRV9BQ09TRiAxCisjZGVmaW5lIEhBVkVfQVRBTkYgMQorI2RlZmluZSBIQVZFX0FTSU5IRiAxCisjZGVmaW5lIEhBVkVfQUNPU0hGIDEKKyNkZWZpbmUgSEFWRV9BVEFOSEYgMQorI2RlZmluZSBIQVZFX0hZUE9URiAxCisjZGVmaW5lIEhBVkVfQVRBTjJGIDEKKyNkZWZpbmUgSEFWRV9QT1dGIDEKKyNkZWZpbmUgSEFWRV9GTU9ERiAxCisjZGVmaW5lIEhBVkVfTU9ERkYgMQorI2RlZmluZSBIQVZFX0ZSRVhQRiAxCisjZGVmaW5lIEhBVkVfTERFWFBGIDEKKyNkZWZpbmUgSEFWRV9FWFAyRiAxCisjZGVmaW5lIEhBVkVfTE9HMkYgMQorI2RlZmluZSBIQVZFX0NPUFlTSUdORiAxCisjZGVmaW5lIEhBVkVfTkVYVEFGVEVSRiAxCisjZGVmaW5lIEhBVkVfU0lOTCAxCisjZGVmaW5lIEhBVkVfQ09TTCAxCisjZGVmaW5lIEhBVkVfVEFOTCAxCisjZGVmaW5lIEhBVkVfU0lOSEwgMQorI2RlZmluZSBIQVZFX0NPU0hMIDEKKyNkZWZpbmUgSEFWRV9UQU5ITCAxCisjZGVmaW5lIEhBVkVfRkFCU0wgMQorI2RlZmluZSBIQVZFX0ZMT09STCAxCisjZGVmaW5lIEhBVkVfQ0VJTEwgMQorI2RlZmluZSBIQVZFX1JJTlRMIDEKKyNkZWZpbmUgSEFWRV9UUlVOQ0wgMQorI2RlZmluZSBIQVZFX1NRUlRMIDEKKyNkZWZpbmUgSEFWRV9MT0cxMEwgMQorI2RlZmluZSBIQVZFX0xPR0wgMQorI2RlZmluZSBIQVZFX0xPRzFQTCAxCisjZGVmaW5lIEhBVkVfRVhQTCAxCisjZGVmaW5lIEhBVkVfRVhQTTFMIDEKKyNkZWZpbmUgSEFWRV9BU0lOTCAxCisjZGVmaW5lIEhBVkVfQUNPU0wgMQorI2RlZmluZSBIQVZFX0FUQU5MIDEKKyNkZWZpbmUgSEFWRV9BU0lOSEwgMQorI2RlZmluZSBIQVZFX0FDT1NITCAxCisjZGVmaW5lIEhBVkVfQVRBTkhMIDEKKyNkZWZpbmUgSEFWRV9IWVBPVEwgMQorI2RlZmluZSBIQVZFX0FUQU4yTCAxCisjZGVmaW5lIEhBVkVfUE9XTCAxCisjZGVmaW5lIEhBVkVfRk1PREwgMQorI2RlZmluZSBIQVZFX01PREZMIDEKKyNkZWZpbmUgSEFWRV9GUkVYUEwgMQorI2RlZmluZSBIQVZFX0xERVhQTCAxCisjZGVmaW5lIEhBVkVfRVhQMkwgMQorI2RlZmluZSBIQVZFX0xPRzJMIDEKKyNkZWZpbmUgSEFWRV9DT1BZU0lHTkwgMQorI2RlZmluZSBIQVZFX05FWFRBRlRFUkwgMQorI2RlZmluZSBIQVZFX0RFQ0xfU0lHTkJJVAorI2RlZmluZSBIQVZFX0NPTVBMRVhfSCAxCisjZGVmaW5lIEhBVkVfQ1JFQUwgMQorI2RlZmluZSBIQVZFX0NJTUFHIDEKKyNkZWZpbmUgSEFWRV9DQUJTIDEKKyNkZWZpbmUgSEFWRV9DQVJHIDEKKyNkZWZpbmUgSEFWRV9DRVhQIDEKKyNkZWZpbmUgSEFWRV9DU1FSVCAxCisjZGVmaW5lIEhBVkVfQ0xPRyAxCisjZGVmaW5lIEhBVkVfQ0NPUyAxCisjZGVmaW5lIEhBVkVfQ1NJTiAxCisjZGVmaW5lIEhBVkVfQ1BPVyAxCisjZGVmaW5lIEhBVkVfQ1JFQUxGIDEKKyNkZWZpbmUgSEFWRV9DSU1BR0YgMQorI2RlZmluZSBIQVZFX0NBQlNGIDEKKyNkZWZpbmUgSEFWRV9DQVJHRiAxCisjZGVmaW5lIEhBVkVfQ0VYUEYgMQorI2RlZmluZSBIQVZFX0NTUVJURiAxCisjZGVmaW5lIEhBVkVfQ0xPR0YgMQorI2RlZmluZSBIQVZFX0NDT1NGIDEKKyNkZWZpbmUgSEFWRV9DU0lORiAxCisjZGVmaW5lIEhBVkVfQ1BPV0YgMQorI2RlZmluZSBIQVZFX0NSRUFMTCAxCisjZGVmaW5lIEhBVkVfQ0lNQUdMIDEKKyNkZWZpbmUgSEFWRV9DQUJTTCAxCisjZGVmaW5lIEhBVkVfQ0FSR0wgMQorI2RlZmluZSBIQVZFX0NFWFBMIDEKKyNkZWZpbmUgSEFWRV9DU1FSVEwgMQorI2RlZmluZSBIQVZFX0NMT0dMIDEKKyNkZWZpbmUgSEFWRV9DQ09TTCAxCisjZGVmaW5lIEhBVkVfQ1NJTkwgMQorI2RlZmluZSBIQVZFX0NQT1dMIDEKKyNkZWZpbmUgSEFWRV9MRE9VQkxFX0lFRUVfUVVBRF9MRSAxCisjaWZuZGVmIF9fY3BsdXNwbHVzCisvKiAjdW5kZWYgaW5saW5lICovCisjZW5kaWYKKworI2lmbmRlZiBfTlBZX05QWV9DT05GSUdfSF8KKyNlcnJvciBjb25maWcuaCBzaG91bGQgbmV2ZXIgYmUgaW5jbHVkZWQgZGlyZWN0bHksIGluY2x1ZGUgbnB5X2NvbmZpZy5oIGluc3RlYWQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg0ZjIxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgUFNGICYgQXBhY2hlLTIuMCAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mYzUzYjMzMzA0MTcxZDEzMjEyOGViZTgyZWE0YTY0NSIKKworU1JDTkFNRSA9ICJudW1weSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICAke0NPTkZJR0ZJTEVTVVJJfSAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTM5ODc4ZmFmYjExODI4OTgzYWVlYzU4M2RkYTRhMDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRiY2RhMTk0ZjQ5ZTBjZjA2NjNmYTgxMzFjYjlkN2EzYjg3NmQxNGRlYTAwNDdkM2M1ZmRmYWYyMGFkYmI0MCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitDT05GSUdGSUxFU1VSSSA/PSAiIgorCitDT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYtNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYyA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGM2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9yaXNjdjY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorCitTID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCisKKyMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCisjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCisgICAgdHJ1ZQorICAgIGNwICR7V09SS0RJUn0vKmNvbmZpZy5oICR7U30vYnVpbGQvJChscyAke1N9L2J1aWxkIHwgZ3JlcCBzcmMpL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS8KK30KKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9udW1weS9jb3JlL2xpYi8qLmEiCisKKyMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbm9zZSBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbW1hcCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1weWRvYyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2U4ZjRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTAwMmIwOWNkNjU0ZmNhYTJkY2M4NzUzNWFjZDlhOTYiCi0KLVNSQ05BTUUgPSAibnVtcHkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ0NTllNGEyNGY1MDM1ZjcyMGRkYTNjNTc3MTZhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGUwMjBlYzA2ZjFlOWNlMTExNWE1MDE2MWEzOGJmOGQ0YzI1MjUzNzk5MDBmOWNiNDc4Y2M2MTNhMWU3Y2Q5MyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi0jIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQotIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi0jIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXBpY2tsZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2hlbGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5vc2UgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRvY3Rlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW1pc2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW1tYXAgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHlkb2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWVtYWlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY3R5cGVzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi10aHJlYWRpbmcgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuMi5iYgpAQCAtMCwwICsxLDYgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tbnVtcHkuaW5jCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTg3NGI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgotCi1TUkNOQU1FID0gIm51bXB5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCi0gICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDQ1OWU0YTI0ZjUwMzVmNzIwZGRhM2M1NzcxNmE5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTAyMGVjMDZmMWU5Y2UxMTE1YTUwMTYxYTM4YmY4ZDRjMjUyNTM3OTkwMGY5Y2I0NzhjYzYxM2ExZTdjZDkzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3JlbGVhc2VzIgotCi1DT05GSUdGSUxFU1VSSSA/PSAiIgotCi1DT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYtNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYyA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGM2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9udW1weS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi0jIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQotIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCi0gICAgdHJ1ZQotICAgIGNwICR7V09SS0RJUn0vKmNvbmZpZy5oICR7U30vYnVpbGQvJChscyAke1N9L2J1aWxkIHwgZ3JlcCBzcmMpL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS8KLX0KLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9udW1weS9jb3JlL2xpYi8qLmEiCi0KLSMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBwcmludCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBpY2tsZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbm9zZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRvY3Rlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW1pc2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGtndXRpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWVtYWlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY3R5cGVzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGV4dHV0aWxzIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTVlNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1udW1weS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTIuNy1tYW5pZmVzdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZDQ4MzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTIuNy1tYW5pZmVzdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi8uLi8uLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weScgVmVyc2lvbiAyMDExMDIyMi4yIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUFJPVklERVMrPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2ICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgIgotCi1QQUNLQUdFUz0iJHtQTn0tZGJnICR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXVkaW8gJHtQTn0tYnNkZGIgJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcGlsZXIgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29udGV4dGxpYiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1mY250bCAke1BOfS1nZGJtICR7UE59LWhvdHNob3QgJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcGxpc3RsaWIgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVzb3VyY2UgJHtQTn0tcm9ib3RwYXJzZXIgJHtQTn0tc2hlbGwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXN0cyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgJHtQTn0temxpYiAke1BOfS1tb2R1bGVzIgotCi1TVU1NQVJZXyR7UE59LTJ0bzM9IlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCi1SREVQRU5EU18ke1BOfS0ydG8zPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tMnRvMz0iJHtiaW5kaXJ9LzJ0bzMgJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWIydG8zICIKLQotU1VNTUFSWV8ke1BOfS1hcmdwYXJzZT0iUHl0aG9uIGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzZXIiCi1SREVQRU5EU18ke1BOfS1hcmdwYXJzZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzIgotRklMRVNfJHtQTn0tYXJncGFyc2U9IiR7bGliZGlyfS9weXRob24yLjcvYXJncGFyc2UuKiAiCi0KLVNVTU1BUllfJHtQTn0tYXVkaW89IlB5dGhvbiBBdWRpbyBIYW5kbGluZyIKLVJERVBFTkRTXyR7UE59LWF1ZGlvPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYXVkaW89IiR7bGliZGlyfS9weXRob24yLjcvd2F2ZS4qICR7bGliZGlyfS9weXRob24yLjcvY2h1bmsuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NuZGhkci4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hdWRpb29wLnNvICR7bGliZGlyfS9weXRob24yLjcvYXVkaW9kZXYuKiAke2xpYmRpcn0vcHl0aG9uMi43L3N1bmF1ZGlvLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdS4qICR7bGliZGlyfS9weXRob24yLjcvdG9haWZmLiogIgotCi1TVU1NQVJZXyR7UE59LWJzZGRiPSJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBCZXJrZWxleSBEYXRhYmFzZSIKLVJERVBFTkRTXyR7UE59LWJzZGRiPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYnNkZGI9IiR7bGliZGlyfS9weXRob24yLjcvYnNkZGIgJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYnNkZGIuc28gIgotCi1TVU1NQVJZXyR7UE59LWNvZGVjcz0iUHl0aG9uIGNvZGVjcywgZW5jb2RpbmdzICYgaTE4biBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29kZWNzPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS1jb2RlY3M9IiR7bGliZGlyfS9weXRob24yLjcvY29kZWNzLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MgJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXR0ZXh0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2NhbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19sb2NhbGUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLnNvICR7bGliZGlyfS9weXRob24yLjcvc3RyaW5ncHJlcC4qICR7bGliZGlyfS9weXRob24yLjcveGRybGliLiogIgotCi1TVU1NQVJZXyR7UE59LWNvbXBpbGU9IlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcGlsZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNvbXBpbGU9IiR7bGliZGlyfS9weXRob24yLjcvcHlfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24yLjcvY29tcGlsZWFsbC4qICIKLQotU1VNTUFSWV8ke1BOfS1jb21waWxlcj0iUHl0aG9uIGNvbXBpbGVyIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jb21waWxlcj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNvbXBpbGVyPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVyICIKLQotU1VNTUFSWV8ke1BOfS1jb21wcmVzc2lvbj0iUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvbXByZXNzaW9uPSIke1BOfS1jb3JlICR7UE59LXpsaWIiCi1GSUxFU18ke1BOfS1jb21wcmVzc2lvbj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iejIuc28gIgotCi1TVU1NQVJZXyR7UE59LWNvbnRleHRsaWI9IlB5dGhvbiB1dGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50Y29udGV4dHMuIgotUkRFUEVORFNfJHtQTn0tY29udGV4dGxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNvbnRleHRsaWI9IiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbnRleHRsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0tY29yZT0iUHl0aG9uIGludGVycHJldGVyIGFuZCBjb3JlIG1vZHVsZXMiCi1SREVQRU5EU18ke1BOfS1jb3JlPSIke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tY29yZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9fX2Z1dHVyZV9fLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fYWJjb2xsLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9hYmMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2FzdC4qICR7bGliZGlyfS9weXRob24yLjcvY29weS4qICR7bGliZGlyfS9weXRob24yLjcvY29weV9yZWcuKiAke2xpYmRpcn0vcHl0aG9uMi43L0NvbmZpZ1BhcnNlci4qICR7bGliZGlyfS9weXRob24yLjcvZ2VuZXJpY3BhdGguKiAke2xpYmRpcn0vcHl0aG9uMi43L2dldG9wdC4qICR7bGliZGlyfS9weXRob24yLjcvbGluZWNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9uZXcuKiAke2xpYmRpcn0vcHl0aG9uMi43L29zLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3NpeHBhdGguKiAke2xpYmRpcn0vcHl0aG9uMi43L3N0cnVjdC4qICR7bGliZGlyfS9weXRob24yLjcvd2FybmluZ3MuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3N0YXQuKiAke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJEaWN0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyTGlzdC4qICR7bGliZGlyfS9weXRob24yLjcvVXNlclN0cmluZy4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYmluYXNjaWkuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3RydWN0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvdGltZS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy90eXBlcy4qICR7bGliZGlyfS9weXRob24yLjcvcGxhdGZvcm0uKiAke2JpbmRpcn0vcHl0aG9uKiAke2xpYmRpcn0vcHl0aG9uMi43L193ZWFrcmVmc2V0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeXNjb25maWcuKiAke2xpYmRpcn0vcHl0aG9uMi43L19zeXNjb25maWdkYXRhLiogJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnKi5oICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkgIgotCi1TVU1NQVJZXyR7UE59LWNyeXB0PSJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3J5cHQ9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jcnlwdD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9oYXNobGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9tZDUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NoYS4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY3J5cHQuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGFzaGxpYi5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zaGEyNTYuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc2hhNTEyLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jdHlwZXM9IlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jdHlwZXM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jdHlwZXM9IiR7bGliZGlyfS9weXRob24yLjcvY3R5cGVzICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlcy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3Vyc2VzPSJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jdXJzZXM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jdXJzZXM9IiR7bGliZGlyfS9weXRob24yLjcvY3Vyc2VzICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N1cnNlcy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuc28gIgotCi1TVU1NQVJZXyR7UE59LWRhdGV0aW1lPSJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWRhdGV0aW1lPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIKLUZJTEVTXyR7UE59LWRhdGV0aW1lPSIke2xpYmRpcn0vcHl0aG9uMi43L19zdHJwdGltZS4qICR7bGliZGlyfS9weXRob24yLjcvY2FsZW5kYXIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2RhdGV0aW1lLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kYj0iUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWRiPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZGI9IiR7bGliZGlyfS9weXRob24yLjcvYW55ZGJtLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1iZGJtLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy93aGljaGRiLiogIgotCi1TVU1NQVJZXyR7UE59LWRlYnVnZ2VyPSJQeXRob24gZGVidWdnZXIiCi1SREVQRU5EU18ke1BOfS1kZWJ1Z2dlcj0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQiCi1GSUxFU18ke1BOfS1kZWJ1Z2dlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9iZGIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BkYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kZXY9IlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgotUkRFUEVORFNfJHtQTn0tZGV2PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZGV2PSIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7YmFzZV9saWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLm8gJHtkYXRhZGlyfS9hY2xvY2FsICR7ZGF0YWRpcn0vcGtnY29uZmlnICR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL01ha2VmaWxlICIKLQotU1VNTUFSWV8ke1BOfS1kaWZmbGliPSJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiCi1SREVQRU5EU18ke1BOfS1kaWZmbGliPSIke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tZGlmZmxpYj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaWZmbGliLiogIgotCi1TVU1NQVJZXyR7UE59LWRpc3R1dGlscz0iUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiCi1SREVQRU5EU18ke1BOfS1kaXN0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0tZW1haWwiCi1GSUxFU18ke1BOfS1kaXN0dXRpbHM9IiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnICR7bGliZGlyfS9weXRob24yLjcvZGlzdHV0aWxzICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCi1SREVQRU5EU18ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSIke1BOfS1kaXN0dXRpbHMiCi1GSUxFU18ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9saWIqLmEgIgotCi1TVU1NQVJZXyR7UE59LWRvY3Rlc3Q9IlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKLVJERVBFTkRTXyR7UE59LWRvY3Rlc3Q9IiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1yZSAke1BOfS11bml0dGVzdCAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliIgotRklMRVNfJHtQTn0tZG9jdGVzdD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9kb2N0ZXN0LiogIgotCi1TVU1NQVJZXyR7UE59LWVtYWlsPSJQeXRob24gZW1haWwgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWVtYWlsPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IgotRklMRVNfJHtQTn0tZW1haWw9IiR7bGliZGlyfS9weXRob24yLjcvaW1hcGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvZW1haWwgIgotCi1TVU1NQVJZXyR7UE59LWZjbnRsPSJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1mY250bD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWZjbnRsPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2ZjbnRsLnNvICIKLQotU1VNTUFSWV8ke1BOfS1nZGJtPSJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1nZGJtPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZ2RibT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9nZGJtLnNvICIKLQotU1VNTUFSWV8ke1BOfS1ob3RzaG90PSJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIKLVJERVBFTkRTXyR7UE59LWhvdHNob3Q9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1ob3RzaG90PSIke2xpYmRpcn0vcHl0aG9uMi43L2hvdHNob3QgJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faG90c2hvdC5zbyAiCi0KLVNVTU1BUllfJHtQTn0taHRtbD0iUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0taHRtbD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWh0bWw9IiR7bGliZGlyfS9weXRob24yLjcvZm9ybWF0dGVyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9odG1sZW50aXR5ZGVmcy4qICR7bGliZGlyfS9weXRob24yLjcvaHRtbGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvbWFya3VwYmFzZS4qICR7bGliZGlyfS9weXRob24yLjcvc2dtbGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvSFRNTFBhcnNlci4qICIKLQotU1VNTUFSWV8ke1BOfS1pZGxlPSJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKLVJERVBFTkRTXyR7UE59LWlkbGU9IiR7UE59LWNvcmUgJHtQTn0tdGtpbnRlciIKLUZJTEVTXyR7UE59LWlkbGU9IiR7YmluZGlyfS9pZGxlICR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYiAiCi0KLVNVTU1BUllfJHtQTn0taW1hZ2U9IlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCi1SREVQRU5EU18ke1BOfS1pbWFnZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWltYWdlPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvbG9yc3lzLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbWdoZHIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2ltYWdlb3Auc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZ2JpbWcuc28gIgotCi1TVU1NQVJZXyR7UE59LWltcG9ydGxpYj0iUHl0aG9uIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0taW1wb3J0bGliPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0taW1wb3J0bGliPSIke2xpYmRpcn0vcHl0aG9uMi43L2ltcG9ydGxpYiAiCi0KLVNVTU1BUllfJHtQTn0taW89IlB5dGhvbiBsb3ctbGV2ZWwgSS9PIgotUkRFUEVORFNfJHtQTn0taW89IiR7UE59LWNvcmUgJHtQTn0tbWF0aCAke1BOfS10ZXh0dXRpbHMgJHtQTn0tbmV0Y2xpZW50ICR7UE59LWNvbnRleHRsaWIiCi1GSUxFU18ke1BOfS1pbz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc29ja2V0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2lvLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NzbC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3NlbGVjdC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Rlcm1pb3Muc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jU3RyaW5nSU8uc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9waXBlcy4qICR7bGliZGlyfS9weXRob24yLjcvc29ja2V0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zc2wuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RlbXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9TdHJpbmdJTy4qICR7bGliZGlyfS9weXRob24yLjcvaW8uKiAke2xpYmRpcn0vcHl0aG9uMi43L19weWlvLiogIgotCi1TVU1NQVJZXyR7UE59LWpzb249IlB5dGhvbiBKU09OIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1qc29uPSIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tcmUgJHtQTn0tY29kZWNzIgotRklMRVNfJHtQTn0tanNvbj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9qc29uICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2pzb24uc28gIgotCi1TVU1NQVJZXyR7UE59LWxhbmc9IlB5dGhvbiBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWxhbmc9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1sYW5nPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19iaXNlY3Quc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29sbGVjdGlvbnMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGVhcHEuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fd2Vha3JlZi5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hcnJheS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2l0ZXJ0b29scy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29wZXJhdG9yLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcGFyc2VyLnNvICR7bGliZGlyfS9weXRob24yLjcvYXRleGl0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9iaXNlY3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvZGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVvcC4qICR7bGliZGlyfS9weXRob24yLjcvY29sbGVjdGlvbnMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Rpcy4qICR7bGliZGlyfS9weXRob24yLjcvZnVuY3Rvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9oZWFwcS4qICR7bGliZGlyfS9weXRob24yLjcvaW5zcGVjdC4qICR7bGliZGlyfS9weXRob24yLjcva2V5d29yZC4qICR7bGliZGlyfS9weXRob24yLjcvb3Bjb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeW1ib2wuKiAke2xpYmRpcn0vcHl0aG9uMi43L3JlcHIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3Rva2VuLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbml6ZS4qICR7bGliZGlyfS9weXRob24yLjcvdHJhY2ViYWNrLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy93ZWFrcmVmLiogIgotCi1TVU1NQVJZXyR7UE59LWxvZ2dpbmc9IlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1sb2dnaW5nPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXN0cmluZ29sZCIKLUZJTEVTXyR7UE59LWxvZ2dpbmc9IiR7bGliZGlyfS9weXRob24yLjcvbG9nZ2luZyAiCi0KLVNVTU1BUllfJHtQTn0tbWFpbGJveD0iUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYWlsYm94PSIke1BOfS1jb3JlICR7UE59LW1pbWUiCi1GSUxFU18ke1BOfS1tYWlsYm94PSIke2xpYmRpcn0vcHl0aG9uMi43L21haWxib3guKiAiCi0KLVNVTU1BUllfJHtQTn0tbWF0aD0iUHl0aG9uIG1hdGggc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1hdGg9IiR7UE59LWNvcmUgJHtQTn0tY3J5cHQiCi1GSUxFU18ke1BOfS1tYXRoPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NtYXRoLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbWF0aC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19yYW5kb20uc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9yYW5kb20uKiAke2xpYmRpcn0vcHl0aG9uMi43L3NldHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tbWltZT0iUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKLVJERVBFTkRTXyR7UE59LW1pbWU9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1taW1lPSIke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0b29scy4qICR7bGliZGlyfS9weXRob24yLjcvdXUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3F1b3ByaS4qICR7bGliZGlyfS9weXRob24yLjcvcmZjODIyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9NaW1lV3JpdGVyLiogIgotCi1TVU1NQVJZXyR7UE59LW1tYXA9IlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1tYXA9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1tbWFwPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21tYXAuc28gIgotCi1TVU1NQVJZXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbXVsdGlwcm9jZXNzaW5nPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIKLUZJTEVTXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLnNvICR7bGliZGlyfS9weXRob24yLjcvbXVsdGlwcm9jZXNzaW5nICIKLQotU1VNTUFSWV8ke1BOfS1uZXRjbGllbnQ9IlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIgotUkRFUEVORFNfJHtQTn0tbmV0Y2xpZW50PSIke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWRhdGV0aW1lICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1taW1lIgotRklMRVNfJHtQTn0tbmV0Y2xpZW50PSIke2xpYmRpcn0vcHl0aG9uMi43LypDb29raWUqLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9iYXNlNjQuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Nvb2tpZWxpYi4qICR7bGliZGlyfS9weXRob24yLjcvZnRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9nb3BoZXJsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2htYWMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2h0dHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0eXBlcy4qICR7bGliZGlyfS9weXRob24yLjcvbm50cGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvcG9wbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZWxuZXRsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvdXJsbGliMi4qICR7bGliZGlyfS9weXRob24yLjcvdXJscGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMi43L3V1aWQuKiAke2xpYmRpcn0vcHl0aG9uMi43L3JmYzgyMi4qICR7bGliZGlyfS9weXRob24yLjcvbWltZXRvb2xzLiogIgotCi1TVU1NQVJZXyR7UE59LW5ldHNlcnZlcj0iUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiCi1SREVQRU5EU18ke1BOfS1uZXRzZXJ2ZXI9IiR7UE59LWNvcmUgJHtQTn0tbmV0Y2xpZW50ICR7UE59LXNoZWxsICR7UE59LXRocmVhZGluZyIKLUZJTEVTXyR7UE59LW5ldHNlcnZlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jZ2kuKiAke2xpYmRpcn0vcHl0aG9uMi43LypIVFRQU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Tb2NrZXRTZXJ2ZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tbnVtYmVycz0iUHl0aG9uIG51bWJlciBBUElzIgotUkRFUEVORFNfJHtQTn0tbnVtYmVycz0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tbnVtYmVycz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9kZWNpbWFsLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9mcmFjdGlvbnMuKiAke2xpYmRpcn0vcHl0aG9uMi43L251bWJlcnMuKiAiCi0KLVNVTU1BUllfJHtQTn0tcGlja2xlPSJQeXRob24gc2VyaWFsaXNhdGlvbi9wZXJzaXN0ZW5jZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcGlja2xlPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS1pbyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXBpY2tsZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NoZWx2ZS4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1BpY2tsZS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3BpY2tsZXRvb2xzLiogIgotCi1TVU1NQVJZXyR7UE59LXBrZ3V0aWw9IlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wa2d1dGlsPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tcGtndXRpbD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wa2d1dGlsLiogIgotCi1TVU1NQVJZXyR7UE59LXBsaXN0bGliPSJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgotUkRFUEVORFNfJHtQTn0tcGxpc3RsaWI9IiR7UE59LWNvcmUgJHtQTn0tZGF0ZXRpbWUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1wbGlzdGxpYj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wbGlzdGxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1wcHJpbnQ9IlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBwcmludD0iJHtQTn0tY29yZSAke1BOfS1pbyIKLUZJTEVTXyR7UE59LXBwcmludD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcHJpbnQuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHJvZmlsZT0iUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcHJvZmlsZT0iJHtQTn0tY29yZSAke1BOfS10ZXh0dXRpbHMiCi1GSUxFU18ke1BOfS1wcm9maWxlPSIke2xpYmRpcn0vcHl0aG9uMi43L3Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BzdGF0cy4qICR7bGliZGlyfS9weXRob24yLjcvY1Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19sc3Byb2Yuc28gIgotCi1TVU1NQVJZXyR7UE59LXB5ZG9jPSJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcHlkb2M9IiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1weWRvYz0iJHtiaW5kaXJ9L3B5ZG9jICR7bGliZGlyfS9weXRob24yLjcvcHlkb2MuKiAke2xpYmRpcn0vcHl0aG9uMi43L3B5ZG9jX2RhdGEgIgotCi1TVU1NQVJZXyR7UE59LXJlPSJQeXRob24gUmVndWxhciBFeHByZXNzaW9uIEFQSXMiCi1SREVQRU5EU18ke1BOfS1yZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlPSIke2xpYmRpcn0vcHl0aG9uMi43L3JlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb21waWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfY29uc3RhbnRzKiAke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9wYXJzZS4qICIKLQotU1VNTUFSWV8ke1BOfS1yZWFkbGluZT0iUHl0aG9uIHJlYWRsaW5lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1yZWFkbGluZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlYWRsaW5lPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3JlYWRsaW5lLnNvICR7bGliZGlyfS9weXRob24yLjcvcmxjb21wbGV0ZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tcmVzb3VyY2U9IlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKLVJERVBFTkRTXyR7UE59LXJlc291cmNlPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tcmVzb3VyY2U9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmVzb3VyY2Uuc28gIgotCi1TVU1NQVJZXyR7UE59LXJvYm90cGFyc2VyPSJQeXRob24gcm9ib3RzLnR4dCBwYXJzZXIiCi1SREVQRU5EU18ke1BOfS1yb2JvdHBhcnNlcj0iJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQiCi1GSUxFU18ke1BOfS1yb2JvdHBhcnNlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9yb2JvdHBhcnNlci4qICIKLQotU1VNTUFSWV8ke1BOfS1zaGVsbD0iUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKLVJERVBFTkRTXyR7UE59LXNoZWxsPSIke1BOfS1jb3JlICR7UE59LXJlIgotRklMRVNfJHtQTn0tc2hlbGw9IiR7bGliZGlyfS9weXRob24yLjcvY21kLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21tYW5kcy4qICR7bGliZGlyfS9weXRob24yLjcvZGlyY2FjaGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2ZubWF0Y2guKiAke2xpYmRpcn0vcHl0aG9uMi43L2dsb2IuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BvcGVuMi4qICR7bGliZGlyfS9weXRob24yLjcvc2hsZXguKiAke2xpYmRpcn0vcHl0aG9uMi43L3NodXRpbC4qICIKLQotU1VNTUFSWV8ke1BOfS1zbXRwZD0iUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCi1SREVQRU5EU18ke1BOfS1zbXRwZD0iJHtQTn0tY29yZSAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tZW1haWwgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LXNtdHBkPSIke2JpbmRpcn0vc210cGQuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBkLiogIgotCi1TVU1NQVJZXyR7UE59LXNxbGl0ZTM9IlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zcWxpdGUzPSIke1BOfS1jb3JlICR7UE59LWRhdGV0aW1lICR7UE59LWxhbmcgJHtQTn0tY3J5cHQgJHtQTn0taW8gJHtQTn0tdGhyZWFkaW5nICR7UE59LXpsaWIiCi1GSUxFU18ke1BOfS1zcWxpdGUzPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zcWxpdGUzLnNvICR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMy9kYmFwaTIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvX19pbml0X18uKiAke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvZHVtcC4qICIKLQotU1VNTUFSWV8ke1BOfS1zcWxpdGUzLXRlc3RzPSJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IHRlc3RzIgotUkRFUEVORFNfJHtQTn0tc3FsaXRlMy10ZXN0cz0iJHtQTn0tY29yZSAke1BOfS1zcWxpdGUzIgotRklMRVNfJHtQTn0tc3FsaXRlMy10ZXN0cz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzL3Rlc3QgIgotCi1TVU1NQVJZXyR7UE59LXN0cmluZ29sZD0iUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIKLVJERVBFTkRTXyR7UE59LXN0cmluZ29sZD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXN0cmluZ29sZD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zdHJvcC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZy4qICR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nb2xkLiogIgotCi1TVU1NQVJZXyR7UE59LXN1YnByb2Nlc3M9IlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zdWJwcm9jZXNzPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LWZjbnRsICR7UE59LXBpY2tsZSIKLUZJTEVTXyR7UE59LXN1YnByb2Nlc3M9IiR7bGliZGlyfS9weXRob24yLjcvc3VicHJvY2Vzcy4qICIKLQotU1VNTUFSWV8ke1BOfS1zeXNsb2c9IlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tc3lzbG9nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tc3lzbG9nPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N5c2xvZy5zbyAiCi0KLVNVTU1BUllfJHtQTn0tdGVybWluYWw9IlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tdGVybWluYWw9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS10ZXJtaW5hbD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wdHkuKiAke2xpYmRpcn0vcHl0aG9uMi43L3R0eS4qICIKLQotU1VNTUFSWV8ke1BOfS10ZXN0cz0iUHl0aG9uIHRlc3RzIgotUkRFUEVORFNfJHtQTn0tdGVzdHM9IiR7UE59LWNvcmUgJHtQTn0tbW9kdWxlcyIKLUZJTEVTXyR7UE59LXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMi43L3Rlc3QgIgotCi1TVU1NQVJZXyR7UE59LXRleHR1dGlscz0iUHl0aG9uIG9wdGlvbiBwYXJzaW5nLCB0ZXh0IHdyYXBwaW5nIGFuZCBDU1Ygc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRleHR1dGlscz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiCi1GSUxFU18ke1BOfS10ZXh0dXRpbHM9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Nzdi5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2Nzdi4qICR7bGliZGlyfS9weXRob24yLjcvb3B0cGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RleHR3cmFwLiogIgotCi1TVU1NQVJZXyR7UE59LXRocmVhZGluZz0iUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tdGhyZWFkaW5nPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS10aHJlYWRpbmc9IiR7bGliZGlyfS9weXRob24yLjcvX3RocmVhZGluZ19sb2NhbC4qICR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L211dGV4LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L1F1ZXVlLiogIgotCi1TVU1NQVJZXyR7UE59LXRraW50ZXI9IlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCi1SREVQRU5EU18ke1BOfS10a2ludGVyPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tdGtpbnRlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fdGtpbnRlci5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi10ayAiCi0KLVNVTU1BUllfJHtQTn0tdW5pdHRlc3Q9IlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgotUkRFUEVORFNfJHtQTn0tdW5pdHRlc3Q9IiR7UE59LWNvcmUgJHtQTn0tc3RyaW5nb2xkICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tZGlmZmxpYiAke1BOfS1wcHJpbnQgJHtQTn0tc2hlbGwiCi1GSUxFU18ke1BOfS11bml0dGVzdD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy91bml0dGVzdC8gIgotCi1TVU1NQVJZXyR7UE59LXVuaXhhZG1pbj0iUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXVuaXhhZG1pbj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXVuaXhhZG1pbj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9uaXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9ncnAuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9wd2Quc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRwYXNzLiogIgotCi1TVU1NQVJZXyR7UE59LXhtbD0iUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0teG1sPSIke1BOfS1jb3JlICR7UE59LXJlIgotRklMRVNfJHtQTn0teG1sPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3B5ZXhwYXQuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWwgJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWxsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0teG1scnBjPSJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0teG1scnBjPSIke1BOfS1jb3JlICR7UE59LXhtbCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbGFuZyIKLUZJTEVTXyR7UE59LXhtbHJwYz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L1NpbXBsZVhNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24yLjcvRG9jWE1MUlBDU2VydmVyLiogIgotCi1TVU1NQVJZXyR7UE59LXpsaWI9IlB5dGhvbiB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS16bGliPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0temxpYj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC96bGliLnNvICIKLQotU1VNTUFSWV8ke1BOfS1tb2R1bGVzPSJBbGwgUHl0aG9uIG1vZHVsZXMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgICIKLUFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjYwZTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjgzICswLDAgQEAKLQotIyBXQVJOSU5HOiBUaGlzIGZpbGUgaXMgQVVUTyBHRU5FUkFURUQ6IE1hbnVhbCBlZGl0cyB3aWxsIGJlIGxvc3QgbmV4dCB0aW1lIEkgcmVnZW5lcmF0ZSB0aGUgZmlsZS4KLSMgR2VuZXJhdG9yOiAnc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHknIFZlcnNpb24gMjAxNDAxMzEgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLQotIAotCi1QUk9WSURFUys9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAiCi0KLVBBQ0tBR0VTPSIke1BOfS1kYmcgJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kZXYgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2ICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWVudW0gJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNlbGVjdG9ycyAke1BOfS1zaGVsbCAke1BOfS1zaWduYWwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXN0cyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdHlwaW5nICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LW1vZHVsZXMiCi0KLVNVTU1BUllfJHtQTn0tMnRvMz0iUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIKLVJERVBFTkRTXyR7UE59LTJ0bzM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS0ydG8zPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYjJ0bzMgJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWIydG8zL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1hcmdwYXJzZT0iUHl0aG9uIGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzZXIiCi1SREVQRU5EU18ke1BOfS1hcmdwYXJzZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzIgotRklMRVNfJHtQTn0tYXJncGFyc2U9IiR7bGliZGlyfS9weXRob24zLjUvYXJncGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FyZ3BhcnNlLiogIgotCi1TVU1NQVJZXyR7UE59LWFzeW5jaW89IlB5dGhvbiBBc3luY2hyb25vdXMgSS9PLCBldmVudCBsb29wLCBjb3JvdXRpbmVzIGFuZCB0YXNrcyIKLVJERVBFTkRTXyR7UE59LWFzeW5jaW89IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1hc3luY2lvPSIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jaW8gJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1hdWRpbz0iUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIgotUkRFUEVORFNfJHtQTn0tYXVkaW89IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1hdWRpbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXZlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXZlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jaHVuay4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2h1bmsuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NuZGhkci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc25kaGRyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vb3NzYXVkaW9kZXYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2F1ZGlvb3AuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2F1ZGlvZGV2LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hdWRpb2Rldi4qICR7bGliZGlyfS9weXRob24zLjUvc3VuYXVkaW8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1ZGlvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdW5hdS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3VuYXUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RvYWlmZi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdG9haWZmLiogIgotCi1TVU1NQVJZXyR7UE59LWNvZGVjcz0iUHl0aG9uIGNvZGVjcywgZW5jb2RpbmdzICYgaTE4biBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29kZWNzPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS1jb2RlY3M9IiR7bGliZGlyfS9weXRob24zLjUvY29kZWNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlY3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncyAke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2dldHRleHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHRleHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xvY2FsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbG9jYWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbG9jYWxlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fbG9jYWxlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY29kZWNzKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jb2RlY3MqL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fbXVsdGlieXRlY29kZWMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy91bmljb2RlZGF0YS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvc3RyaW5ncHJlcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5ncHJlcC4qICR7bGliZGlyfS9weXRob24zLjUveGRybGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy94ZHJsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0tY29tcGlsZT0iUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jb21waWxlPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY29tcGlsZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9weV9jb21waWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9weV9jb21waWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb21waWxlYWxsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb21waWxlYWxsLiogIgotCi1TVU1NQVJZXyR7UE59LWNvbXByZXNzaW9uPSJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcHJlc3Npb249IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWltcG9ydGxpYiAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2hlbGwiCi1GSUxFU18ke1BOfS1jb21wcmVzc2lvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2J6Mi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29tcHJlc3Npb24ucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24ucHkgIgotCi1TVU1NQVJZXyR7UE59LWNvcmU9IlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tY29yZT0iJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1yZXBybGliICR7UE59LWNvZGVjcyAke1BOfS1pbyAke1BOfS1tYXRoIgotRklMRVNfJHtQTn0tY29yZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX2Z1dHVyZV9fLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fYWJjb2xsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fYWJjb2xsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9hYmMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvYXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvcHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvcHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvcHlyZWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvcHlyZWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZ3BhcnNlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29uZmlncGFyc2VyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZW5lcmljcGF0aC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKiAke2xpYmRpcn0vcHl0aG9uMy41L2dldG9wdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0b3B0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saW5lY2FjaGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9uZXcuKiAke2xpYmRpcn0vcHl0aG9uMy41L29zLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcy4qICR7bGliZGlyfS9weXRob24zLjUvcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKiAke2xpYmRpcn0vcHl0aG9uMy41L3N0cnVjdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RydWN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXJuaW5ncy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2FybmluZ3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NpdGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpdGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N0YXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0YXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJEaWN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL1VzZXJMaXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyU3RyaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Vc2VyU3RyaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iaW5hc2NpaS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vYmluYXNjaWkuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zdHJ1Y3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3RpbWUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3RpbWUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3R5cGVzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvcGxhdGZvcm0uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fd2Vha3JlZnNldC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3dlYWtyZWZzZXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N5c2NvbmZpZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3lzY29uZmlnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc3lzY29uZmlnZGF0YS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3N5c2NvbmZpZ2RhdGEuKiAke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcqLmggJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMgJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zaXRlYnVpbHRpbnMuKiAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5ICIKLQotU1VNTUFSWV8ke1BOfS1jcnlwdD0iUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNyeXB0PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3J5cHQ9IiR7bGliZGlyfS9weXRob24zLjUvaGFzaGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGFzaGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvbWQ1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9tZDUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NoYS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2hhLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jcnlwdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vY3J5cHQuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oYXNobGliLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9faGFzaGxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTI1Ni4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3NoYTI1Ni4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3NoYTUxMi4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jdHlwZXM9IlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jdHlwZXM9IiR7UE59LWNvcmUgJHtQTn0tc3VicHJvY2VzcyIKLUZJTEVTXyR7UE59LWN0eXBlcz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdHlwZXMgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdHlwZXMvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3R5cGVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY3R5cGVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19jdHlwZXNfdGVzdC4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jdXJzZXM9IlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWN1cnNlcz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWN1cnNlcz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdXJzZXMgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdXJzZXMvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY3Vyc2VzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY3Vyc2VzX3BhbmVsLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWRhdGV0aW1lPSJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWRhdGV0aW1lPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIKLUZJTEVTXyR7UE59LWRhdGV0aW1lPSIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3N0cnB0aW1lLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2FsZW5kYXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2RhdGV0aW1lLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kYXRldGltZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RhdGV0aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fZGF0ZXRpbWUuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZGI9IlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRiPSIke2xpYmRpcn0vcHl0aG9uMy41L2FueWRibS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYW55ZGJtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1iZGJtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1iZGJtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS93aGljaGRiLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93aGljaGRiLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYm0gJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYm0vX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGJtLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fZGJtLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWRlYnVnZ2VyPSJQeXRob24gZGVidWdnZXIiCi1SREVQRU5EU18ke1BOfS1kZWJ1Z2dlcj0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQgJHtQTn0taW1wb3J0bGliICR7UE59LXBrZ3V0aWwiCi1GSUxFU18ke1BOfS1kZWJ1Z2dlcj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9iZGIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2JkYi4qICR7bGliZGlyfS9weXRob24zLjUvcGRiLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wZGIuKiAiCi0KLVNVTU1BUllfJHtQTn0tZGV2PSJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKLVJERVBFTkRTXyR7UE59LWRldj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRldj0iJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2Jhc2VfbGliZGlyfS8qLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCAke2RhdGFkaXJ9L3BrZ2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1kaWZmbGliPSJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiCi1SREVQRU5EU18ke1BOfS1kaWZmbGliPSIke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tZGlmZmxpYj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaWZmbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaWZmbGliLiogIgotCi1TVU1NQVJZXyR7UE59LWRpc3R1dGlscz0iUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiCi1SREVQRU5EU18ke1BOfS1kaXN0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0tZW1haWwiCi1GSUxFU18ke1BOfS1kaXN0dXRpbHM9IiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvZGlzdHV0aWxzICR7bGliZGlyfS9weXRob24zLjUvZGlzdHV0aWxzL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCi1SREVQRU5EU18ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSIke1BOfS1kaXN0dXRpbHMiCi1GSUxFU18ke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2PSIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZy9saWIqLmEgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvX19weWNhY2hlX18vbGliKi5hICIKLQotU1VNTUFSWV8ke1BOfS1kb2N0ZXN0PSJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCi1SREVQRU5EU18ke1BOfS1kb2N0ZXN0PSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tdW5pdHRlc3QgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiIKLUZJTEVTXyR7UE59LWRvY3Rlc3Q9IiR7bGliZGlyfS9weXRob24zLjUvZG9jdGVzdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZG9jdGVzdC4qICIKLQotU1VNTUFSWV8ke1BOfS1lbWFpbD0iUHl0aG9uIGVtYWlsIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1lbWFpbD0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1taW1lICR7UE59LWF1ZGlvICR7UE59LWltYWdlICR7UE59LW5ldGNsaWVudCIKLUZJTEVTXyR7UE59LWVtYWlsPSIke2xpYmRpcn0vcHl0aG9uMy41L2ltYXBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltYXBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsICR7bGliZGlyfS9weXRob24zLjUvZW1haWwvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LWVudW09IlB5dGhvbiBzdXBwb3J0IGZvciBlbnVtZXJhdGlvbnMiCi1SREVQRU5EU18ke1BOfS1lbnVtPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZW51bT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9lbnVtLiogIgotCi1TVU1NQVJZXyR7UE59LWZjbnRsPSJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1mY250bD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWZjbnRsPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9mY250bC4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1nZGJtPSJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1nZGJtPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZ2RibT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZ2RibS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2dkYm0uKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0taHRtbD0iUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0taHRtbD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWh0bWw9IiR7bGliZGlyfS9weXRob24zLjUvZm9ybWF0dGVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mb3JtYXR0ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0bWxlbnRpdHlkZWZzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9odG1sZW50aXR5ZGVmcy4qICR7bGliZGlyfS9weXRob24zLjUvaHRtbCAke2xpYmRpcn0vcHl0aG9uMy41L2h0bWwvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9odG1sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9tYXJrdXBiYXNlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9tYXJrdXBiYXNlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zZ21sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZ21sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9IVE1MUGFyc2VyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9IVE1MUGFyc2VyLiogIgotCi1TVU1NQVJZXyR7UE59LWlkbGU9IlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IgotUkRFUEVORFNfJHtQTn0taWRsZT0iJHtQTn0tY29yZSAke1BOfS10a2ludGVyIgotRklMRVNfJHtQTn0taWRsZT0iJHtiaW5kaXJ9L2lkbGUgJHtsaWJkaXJ9L3B5dGhvbjMuNS9pZGxlbGliICR7bGliZGlyfS9weXRob24zLjUvaWRsZWxpYi9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0taW1hZ2U9IlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCi1SREVQRU5EU18ke1BOfS1pbWFnZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWltYWdlPSIke2xpYmRpcn0vcHl0aG9uMy41L2NvbG9yc3lzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24zLjUvaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWdoZHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ltYWdlb3AuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2ltYWdlb3AuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3JnYmltZy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vcmdiaW1nLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWltcG9ydGxpYj0iUHl0aG9uIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0taW1wb3J0bGliPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS1pbXBvcnRsaWI9IiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliICR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvaW1wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbXAuKiAiCi0KLVNVTU1BUllfJHtQTn0taW89IlB5dGhvbiBsb3ctbGV2ZWwgSS9PIgotUkRFUEVORFNfJHtQTn0taW89IiR7UE59LWNvcmUgJHtQTn0tbWF0aCIKLUZJTEVTXyR7UE59LWlvPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zb2NrZXQuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zb2NrZXQuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19pby4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2lvLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3NsLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc3NsLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zZWxlY3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3NlbGVjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdGVybWlvcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGVybWlvcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY1N0cmluZ0lPLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9jU3RyaW5nSU8uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2lwYWRkcmVzcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaXBhZGRyZXNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9waXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zc2wuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NzbC4qICR7bGliZGlyfS9weXRob24zLjUvdGVtcGZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9TdHJpbmdJTy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vU3RyaW5nSU8uKiAke2xpYmRpcn0vcHl0aG9uMy41L2lvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pby4qICR7bGliZGlyfS9weXRob24zLjUvX3B5aW8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19weWlvLiogIgotCi1TVU1NQVJZXyR7UE59LWpzb249IlB5dGhvbiBKU09OIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1qc29uPSIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1qc29uPSIke2xpYmRpcn0vcHl0aG9uMy41L2pzb24gJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2pzb24uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19qc29uLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWxhbmc9IlB5dGhvbiBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWxhbmc9IiR7UE59LWNvcmUgJHtQTn0taW1wb3J0bGliIgotRklMRVNfJHtQTn0tbGFuZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYmlzZWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fYmlzZWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY29sbGVjdGlvbnMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19jb2xsZWN0aW9ucy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hlYXBxLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9faGVhcHEuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL193ZWFrcmVmLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fd2Vha3JlZi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Z1bmN0b29scy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2Z1bmN0b29scy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYXJyYXkuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2FycmF5Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9pdGVydG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2l0ZXJ0b29scy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvb3BlcmF0b3IuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL29wZXJhdG9yLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9wYXJzZXIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3BhcnNlci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvYXRleGl0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hdGV4aXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Jpc2VjdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmlzZWN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2Rlb3AuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVvcC4qICR7bGliZGlyfS9weXRob24zLjUvY29sbGVjdGlvbnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbGxlY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29sbGVjdGlvbnNfYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb250ZXh0bGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb250ZXh0bGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Rpcy4qICR7bGliZGlyfS9weXRob24zLjUvZnVuY3Rvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2hlYXBxLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9oZWFwcS4qICR7bGliZGlyfS9weXRob24zLjUvaW5zcGVjdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW5zcGVjdC4qICR7bGliZGlyfS9weXRob24zLjUva2V5d29yZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18va2V5d29yZC4qICR7bGliZGlyfS9weXRob24zLjUvb3Bjb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGNvZGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qICR7bGliZGlyfS9weXRob24zLjUvc3ltYm9sLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeW1ib2wuKiAke2xpYmRpcn0vcHl0aG9uMy41L3JlcHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JlcHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90b2tlbi4qICR7bGliZGlyfS9weXRob24zLjUvdG9rZW5pemUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuaXplLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90cmFjZWJhY2suKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RyYWNlYmFjay4qICR7bGliZGlyfS9weXRob24zLjUvd2Vha3JlZi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2Vha3JlZi4qICIKLQotU1VNTUFSWV8ke1BOfS1sb2dnaW5nPSJQeXRob24gbG9nZ2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbG9nZ2luZz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXBpY2tsZSAke1BOfS1zdHJpbmdvbGQiCi1GSUxFU18ke1BOfS1sb2dnaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L2xvZ2dpbmcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2dnaW5nL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1tYWlsYm94PSJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1haWxib3g9IiR7UE59LWNvcmUgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LW1haWxib3g9IiR7bGliZGlyfS9weXRob24zLjUvbWFpbGJveC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFpbGJveC4qICIKLQotU1VNTUFSWV8ke1BOfS1tYXRoPSJQeXRob24gbWF0aCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbWF0aD0iJHtQTn0tY29yZSAke1BOfS1jcnlwdCIKLUZJTEVTXyR7UE59LW1hdGg9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY21hdGguKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2NtYXRoLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tYXRoLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9tYXRoLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcmFuZG9tLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fcmFuZG9tLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9yYW5kb20uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JhbmRvbS4qICR7bGliZGlyfS9weXRob24zLjUvc2V0cy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2V0cy4qICIKLQotU1VNTUFSWV8ke1BOfS1taW1lPSJQeXRob24gTUlNRSBoYW5kbGluZyBBUElzIgotUkRFUEVORFNfJHtQTn0tbWltZT0iJHtQTn0tY29yZSAke1BOfS1pbyIKLUZJTEVTXyR7UE59LW1pbWU9IiR7bGliZGlyfS9weXRob24zLjUvbWltZXRvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L3V1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dS4qICR7bGliZGlyfS9weXRob24zLjUvcXVvcHJpLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9xdW9wcmkuKiAke2xpYmRpcn0vcHl0aG9uMy41L3JmYzgyMi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmZjODIyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9NaW1lV3JpdGVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9NaW1lV3JpdGVyLiogIgotCi1TVU1NQVJZXyR7UE59LW1tYXA9IlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1tYXA9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1tbWFwPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL21tYXAuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL21tYXAuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tbXVsdGlwcm9jZXNzaW5nPSJQeXRob24gbXVsdGlwcm9jZXNzaW5nIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tdWx0aXByb2Nlc3Npbmc9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1waWNrbGUgJHtQTn0tdGhyZWFkaW5nICR7UE59LWN0eXBlcyAke1BOfS1tbWFwIgotRklMRVNfJHtQTn0tbXVsdGlwcm9jZXNzaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19tdWx0aXByb2Nlc3NpbmcuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L211bHRpcHJvY2Vzc2luZyAke2xpYmRpcn0vcHl0aG9uMy41L211bHRpcHJvY2Vzc2luZy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tbmV0Y2xpZW50PSJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKLVJERVBFTkRTXyR7UE59LW5ldGNsaWVudD0iJHtQTn0tYXJncGFyc2UgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1kYXRldGltZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWltZSAke1BOfS1odG1sIgotRklMRVNfJHtQTn0tbmV0Y2xpZW50PSIke2xpYmRpcn0vcHl0aG9uMy41LypDb29raWUqLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy8qQ29va2llKi4qICR7bGliZGlyfS9weXRob24zLjUvYmFzZTY0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iYXNlNjQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Nvb2tpZWxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29va2llbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mdHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Z0cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZ29waGVybGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nb3BoZXJsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2htYWMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2htYWMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAqICR7bGliZGlyfS9weXRob24zLjUvaHR0cCovX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9odHRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9taW1ldHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21pbWV0eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvbm50cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbm50cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvcG9wbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NtdHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RlbG5ldGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGVsbmV0bGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS91cmxsaWIgJHtsaWJkaXJ9L3B5dGhvbjMuNS91cmxsaWIvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS91dWlkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dWlkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JmYzgyMi4qICR7bGliZGlyfS9weXRob24zLjUvbWltZXRvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldG9vbHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tbmV0c2VydmVyPSJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgc2VydmVycyIKLVJERVBFTkRTXyR7UE59LW5ldHNlcnZlcj0iJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQgJHtQTn0tc2hlbGwgJHtQTn0tdGhyZWFkaW5nIgotRklMRVNfJHtQTn0tbmV0c2VydmVyPSIke2xpYmRpcn0vcHl0aG9uMy41L2NnaS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2dpLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zb2NrZXRzZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldHNlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvKkhUVFBTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fLypIVFRQU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Tb2NrZXRTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL1NvY2tldFNlcnZlci4qICIKLQotU1VNTUFSWV8ke1BOfS1udW1iZXJzPSJQeXRob24gbnVtYmVyIEFQSXMiCi1SREVQRU5EU18ke1BOfS1udW1iZXJzPSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1udW1iZXJzPSIke2xpYmRpcn0vcHl0aG9uMy41L2RlY2ltYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RlY2ltYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2ZyYWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnJhY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9udW1iZXJzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9udW1iZXJzLiogIgotCi1TVU1NQVJZXyR7UE59LXBpY2tsZT0iUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBpY2tsZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1waWNrbGU9IiR7bGliZGlyfS9weXRob24zLjUvX2NvbXBhdF9waWNrbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb21wYXRfcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZS4qICR7bGliZGlyfS9weXRob24zLjUvc2hlbHZlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGVsdmUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NQaWNrbGUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2NQaWNrbGUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3BpY2tsZXRvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGV0b29scy4qICIKLQotU1VNTUFSWV8ke1BOfS1wa2d1dGlsPSJQeXRob24gcGFja2FnZSBleHRlbnNpb24gdXRpbGl0eSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcGtndXRpbD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXBrZ3V0aWw9IiR7bGliZGlyfS9weXRob24zLjUvcGtndXRpbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGtndXRpbC4qICIKLQotU1VNTUFSWV8ke1BOfS1wcHJpbnQ9IlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBwcmludD0iJHtQTn0tY29yZSAke1BOfS1pbyIKLUZJTEVTXyR7UE59LXBwcmludD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9wcHJpbnQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BwcmludC4qICIKLQotU1VNTUFSWV8ke1BOfS1wcm9maWxlPSJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wcm9maWxlPSIke1BOfS1jb3JlICR7UE59LXRleHR1dGlscyIKLUZJTEVTXyR7UE59LXByb2ZpbGU9IiR7bGliZGlyfS9weXRob24zLjUvcHJvZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHJvZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvcHN0YXRzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wc3RhdHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NQcm9maWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jUHJvZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2xzcHJvZi4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1weWRvYz0iUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXB5ZG9jPSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0tc3RyaW5nb2xkICR7UE59LXJlIgotRklMRVNfJHtQTn0tcHlkb2M9IiR7YmluZGlyfS9weWRvYyAke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9weWRvYy4qICR7bGliZGlyfS9weXRob24zLjUvcHlkb2NfZGF0YSAke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LXJlPSJQeXRob24gUmVndWxhciBFeHByZXNzaW9uIEFQSXMiCi1SREVQRU5EU18ke1BOfS1yZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlPSIke2xpYmRpcn0vcHl0aG9uMy41L3JlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZS4qICR7bGliZGlyfS9weXRob24zLjUvc3JlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9jb21waWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvc3JlX2NvbnN0YW50cyogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29uc3RhbnRzKi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9wYXJzZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX3BhcnNlLiogIgotCi1TVU1NQVJZXyR7UE59LXJlYWRsaW5lPSJQeXRob24gcmVhZGxpbmUgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXJlYWRsaW5lPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tcmVhZGxpbmU9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3JlYWRsaW5lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9ybGNvbXBsZXRlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmxjb21wbGV0ZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tcmVwcmxpYj0iUHl0aG9uIGFsdGVybmF0ZSByZXByKCkgaW1wbGVtZW50YXRpb24iCi1SREVQRU5EU18ke1BOfS1yZXBybGliPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tcmVwcmxpYj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXBybGliLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmVwcmxpYi5weSAiCi0KLVNVTU1BUllfJHtQTn0tcmVzb3VyY2U9IlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKLVJERVBFTkRTXyR7UE59LXJlc291cmNlPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tcmVzb3VyY2U9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3Jlc291cmNlLiouc28gIgotCi1TVU1NQVJZXyR7UE59LXNlbGVjdG9ycz0iUHl0aG9uIEhpZ2gtbGV2ZWwgSS9PIG11bHRpcGxleGluZyIKLVJERVBFTkRTXyR7UE59LXNlbGVjdG9ycz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXNlbGVjdG9ycz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9zZWxlY3RvcnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qICIKLQotU1VNTUFSWV8ke1BOfS1zaGVsbD0iUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKLVJERVBFTkRTXyR7UE59LXNoZWxsPSIke1BOfS1jb3JlICR7UE59LXJlICR7UE59LWNvbXByZXNzaW9uIgotRklMRVNfJHtQTn0tc2hlbGw9IiR7bGliZGlyfS9weXRob24zLjUvY21kLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jbWQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvbW1hbmRzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb21tYW5kcy4qICR7bGliZGlyfS9weXRob24zLjUvZGlyY2FjaGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RpcmNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mbm1hdGNoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mbm1hdGNoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nbG9iLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nbG9iLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9wb3BlbjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BvcGVuMi4qICR7bGliZGlyfS9weXRob24zLjUvc2hsZXguKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NobGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaHV0aWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NodXRpbC4qICIKLQotU1VNTUFSWV8ke1BOfS1zaWduYWw9IlB5dGhvbiBzZXQgaGFuZGxlcnMgZm9yIGFzeW5jaHJvbm91cyBldmVudHMgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXNpZ25hbD0iJHtQTn0tY29yZSAke1BOfS1lbnVtIgotRklMRVNfJHtQTn0tc2lnbmFsPSIke2xpYmRpcn0vcHl0aG9uMy41L3NpZ25hbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2lnbmFsLiogIgotCi1TVU1NQVJZXyR7UE59LXNtdHBkPSJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIKLVJERVBFTkRTXyR7UE59LXNtdHBkPSIke1BOfS1jb3JlICR7UE59LW5ldHNlcnZlciAke1BOfS1lbWFpbCAke1BOfS1taW1lIgotRklMRVNfJHtQTn0tc210cGQ9IiR7YmluZGlyfS9zbXRwZC4qICR7bGliZGlyfS9weXRob24zLjUvc210cGQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NtdHBkLiogIgotCi1TVU1NQVJZXyR7UE59LXNxbGl0ZTM9IlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zcWxpdGUzPSIke1BOfS1jb3JlICR7UE59LWRhdGV0aW1lICR7UE59LWxhbmcgJHtQTn0tY3J5cHQgJHtQTn0taW8gJHtQTn0tdGhyZWFkaW5nIgotRklMRVNfJHtQTn0tc3FsaXRlMz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3FsaXRlMy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3NxbGl0ZTMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZGJhcGkyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2RiYXBpMi4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX2luaXRfXy4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9fX2luaXRfXy4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9kdW1wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2R1bXAuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3FsaXRlMy10ZXN0cz0iUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7UE59LWNvcmUgJHtQTn0tc3FsaXRlMyIKLUZJTEVTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0ICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0L19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1zdHJpbmdvbGQ9IlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iCi1SREVQRU5EU18ke1BOfS1zdHJpbmdvbGQ9IiR7UE59LWNvcmUgJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1zdHJpbmdvbGQ9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc3Ryb3AuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3N0cm9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cmluZy4qICR7bGliZGlyfS9weXRob24zLjUvc3RyaW5nb2xkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmdvbGQuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3VicHJvY2Vzcz0iUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXN1YnByb2Nlc3M9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tZmNudGwgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1zaWduYWwgJHtQTn0tc2VsZWN0b3JzIgotRklMRVNfJHtQTn0tc3VicHJvY2Vzcz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdWJwcm9jZXNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdWJwcm9jZXNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fcG9zaXhzdWJwcm9jZXNzLiouc28gIgotCi1TVU1NQVJZXyR7UE59LXN5c2xvZz0iUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1zeXNsb2c9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1zeXNsb2c9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc3lzbG9nLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9zeXNsb2cuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tdGVybWluYWw9IlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tdGVybWluYWw9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS10ZXJtaW5hbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9wdHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B0eS4qICR7bGliZGlyfS9weXRob24zLjUvdHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90dHkuKiAiCi0KLVNVTU1BUllfJHtQTn0tdGVzdHM9IlB5dGhvbiB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXRlc3RzPSIke1BOfS1jb3JlICR7UE59LWNvbXByZXNzaW9uIgotRklMRVNfJHtQTn0tdGVzdHM9IiR7bGliZGlyfS9weXRob24zLjUvdGVzdCAke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LXRleHR1dGlscz0iUHl0aG9uIG9wdGlvbiBwYXJzaW5nLCB0ZXh0IHdyYXBwaW5nIGFuZCBDU1Ygc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRleHR1dGlscz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiCi1GSUxFU18ke1BOfS10ZXh0dXRpbHM9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Nzdi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2Nzdi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvY3N2LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jc3YuKiAke2xpYmRpcn0vcHl0aG9uMy41L29wdHBhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qICR7bGliZGlyfS9weXRob24zLjUvdGV4dHdyYXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RleHR3cmFwLiogIgotCi1TVU1NQVJZXyR7UE59LXRocmVhZGluZz0iUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tdGhyZWFkaW5nPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS10aHJlYWRpbmc9IiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3RocmVhZGluZ19sb2NhbC4qICR7bGliZGlyfS9weXRob24zLjUvZHVtbXlfdGhyZWFkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2R1bW15X3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtbXlfdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdXRleC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbXV0ZXguKiAke2xpYmRpcn0vcHl0aG9uMy41L3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9xdWV1ZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVldWUuKiAiCi0KLVNVTU1BUllfJHtQTn0tdGtpbnRlcj0iUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKLVJERVBFTkRTXyR7UE59LXRraW50ZXI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS10a2ludGVyPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL190a2ludGVyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fdGtpbnRlci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLXRrICR7bGliZGlyfS9weXRob24zLjUvbGliLXRrL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvdGtpbnRlciAke2xpYmRpcn0vcHl0aG9uMy41L3RraW50ZXIvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LXR5cGluZz0iUHl0aG9uIHR5cGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tdHlwaW5nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tdHlwaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGluZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHlwaW5nLiogIgotCi1TVU1NQVJZXyR7UE59LXVuaXR0ZXN0PSJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIKLVJERVBFTkRTXyR7UE59LXVuaXR0ZXN0PSIke1BOfS1jb3JlICR7UE59LXN0cmluZ29sZCAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LWRpZmZsaWIgJHtQTn0tcHByaW50ICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tdW5pdHRlc3Q9IiR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvICR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LXVuaXhhZG1pbj0iUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXVuaXhhZG1pbj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXVuaXhhZG1pbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9uaXMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL25pcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZ3JwLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9ncnAuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3B3ZC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vcHdkLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRwYXNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZXRwYXNzLiogIgotCi1TVU1NQVJZXyR7UE59LXhtbD0iUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0teG1sPSIke1BOfS1jb3JlICR7UE59LXJlIgotRklMRVNfJHtQTn0teG1sPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2VsZW1lbnR0cmVlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9weWV4cGF0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9weWV4cGF0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWwgJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWwvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3htbGxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS14bWxycGM9IlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS14bWxycGM9IiR7UE59LWNvcmUgJHtQTn0teG1sICR7UE59LW5ldHNlcnZlciAke1BOfS1sYW5nICR7UE59LXB5ZG9jIgotRklMRVNfJHtQTn0teG1scnBjPSIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18veG1scnBjbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL1NpbXBsZVhNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvRG9jWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Eb2NYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYyAke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWVudW0gJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNlbGVjdG9ycyAke1BOfS1zaGVsbCAke1BOfS1zaWduYWwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdHlwaW5nICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICAiCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy5pbmMKaW5kZXggMmM1Y2I0ZC4uNjY2NGFiMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmMuaW5jCkBAIC00LDEyICs0LDExIEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9hL2FzeW5jL2FzeW5jLSR7UFZ9LnRhci5neiIKK2luaGVyaXQgcHlwaQorCiBTUkNfVVJJW21kNXN1bV0gPSAiOWIwNmI1OTk3ZGUyMTU0ZjNiYzAyNzNmODBiY2VmNmIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWM2ODk0ZDg3NmU0NTg3OGZhYWU0OTNiMGNmNjFkMGUyOGVjNDE3MzM0NDQ4YWMwYTZlYTIyMjlkODM0MzA1MSIKIAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXN5bmMvIgotCi1TID0gIiR7V09SS0RJUn0vYXN5bmMtJHtQVn0iCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXRocmVhZGluZyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCmluZGV4IDc3NzYwOGMuLjhkMzc2OTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCkBAIC04LDE0ICs4LDI1IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThiOGQyNmMzN2MxZDVhMDRmOWIwMTg2ZWRiZWJjMTgzIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvRy9HaXRQeXRob24vR2l0UHl0aG9uLSR7UFZ9LnRhci5neiIKK1BZUElfUEFDS0FHRSA9ICJHaXRQeXRob24iCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZjk0MjEyYjE5ZDI3MGE2MjViNjdiNGM4NGFjOWE0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YzAwY2JkMjU2ZTJiMWQwMzkzODFkNGY3ZDcxZmNiN2VlNWNjMTk2Y2ExMGMxMDFmZjcxOTFiZDgyYWI1ZDljIgoraW5oZXJpdCBweXBpCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0dpdFB5dGhvbi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvR2l0UHl0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YTk0ZWUxYjkyM2ZiNzcyYTJhMGM2NjQ5NDMwYTE3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDYxYmMyNWRlYWRiNTM1YjA0NzY4NGQwNmYzNjU0YzAwMWQ5NDE1ZTE5NzFlNTFjOWMyMGY1YjUxMDA3NmU5IgogCi1TID0gIiR7V09SS0RJUn0vR2l0UHl0aG9uLSR7UFZ9IgorREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tZ2l0ZGIiCiAKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWdpdGRiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyAgICAgICAgICAgICAgICAgICBnaXQgXAorIgogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwppbmRleCAwODE5M2ZiLi4yZDUyOTJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKQEAgLTQsMTMgKzQsMjEgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTllNWVjYjEzMzM5YTkzNmVlZGY4MzI4MmVhZjQ1MjgiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9nL2dpdGRiL2dpdGRiLSR7UFZ9LnRhci5neiIKK2luaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiNDRlNDM2NmI4YmRmZDMwNmIwNzVjM2E1MmM5NmFlMWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNlYmJjMjdiZTAzNWEyZTg3NGVkOTA0ZGY1MTZlMzVmNGEyOWE3NzhhNzY0Mzg1ZGUwOWRlOWUwZjEzOTY1OCIKK1BZUElfUEFDS0FHRSA9ICJnaXRkYjIiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2dpdGRiLyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTIxN2ViOTRlYmQzNmZjZWM2MmI5MjlkMWY3MmIwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjBlMjlkNDUzM2U1ZTI1YmI1MGI3Njc4YmJjMTg3YzhmNmJjZmYxMzQ0YjRmMjkzYjJiYTU1Yzg1Nzk1ZjA5IgogCi1TID0gIiR7V09SS0RJUn0vZ2l0ZGItJHtQVn0iCitERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1hc3luYyAke1BZVEhPTl9QTn0tc2V0dXB0b29scy1uYXRpdmUgJHtQWVRIT05fUE59LXNtbWFwIgogCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFzeW5jIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbW1hcCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc21tYXAgXAorIgogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKaW5kZXggMWM4M2FmNi4uZTI2NWJkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYwpAQCAtNCwxMyArNCwxOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYmIyMWZhMmQyZjdhNTM0Yzg4NGI5OTA0MzBhNjg2MyIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL00vTWFrby9NYWtvLSR7UFZ9LnRhci5neiIKK1BZUElfUEFDS0FHRSA9ICJNYWtvIgorCitpbmhlcml0IHB5cGkKIAogU1JDX1VSSVttZDVzdW1dID0gIjU4MzZjYzk5N2IxYjc3M2VmMzg5YmY2NjI5YzMwZTY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlMDJmZGU1N2JkNGFiYjVlYzQwMDE4MWU0YzMxNGY1NmFjM2U0OWJhNGZiOGIwZDUwYmJhMThjYjI3ZDI1YWUiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL21ha28vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL01ha28vKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgorUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWh0bWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKIAotUyA9ICIke1dPUktESVJ9L01ha28tJHtQVn0iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgogCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNWFhZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTEwMjIyLjIgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLQotIAotCi1SUFJPVklERVMgKz0gInB5dGhvbi1tb2R1bGVzLW5hdGl2ZSBweXRob24tMnRvMy1uYXRpdmUgcHl0aG9uLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24tYXVkaW8tbmF0aXZlIHB5dGhvbi1ic2RkYi1uYXRpdmUgcHl0aG9uLWNvZGVjcy1uYXRpdmUgcHl0aG9uLWNvbXBpbGUtbmF0aXZlIHB5dGhvbi1jb21waWxlci1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tY29udGV4dGxpYi1uYXRpdmUgcHl0aG9uLWNvcmUtbmF0aXZlIHB5dGhvbi1jcnlwdC1uYXRpdmUgcHl0aG9uLWN0eXBlcy1uYXRpdmUgcHl0aG9uLWN1cnNlcy1uYXRpdmUgcHl0aG9uLWRhdGV0aW1lLW5hdGl2ZSBweXRob24tZGItbmF0aXZlIHB5dGhvbi1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uLWRldi1uYXRpdmUgcHl0aG9uLWRpZmZsaWItbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24tZG9jdGVzdC1uYXRpdmUgcHl0aG9uLWVtYWlsLW5hdGl2ZSBweXRob24tZmNudGwtbmF0aXZlIHB5dGhvbi1nZGJtLW5hdGl2ZSBweXRob24taG90c2hvdC1uYXRpdmUgcHl0aG9uLWh0bWwtbmF0aXZlIHB5dGhvbi1pZGxlLW5hdGl2ZSBweXRob24taW1hZ2UtbmF0aXZlIHB5dGhvbi1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbi1pby1uYXRpdmUgcHl0aG9uLWpzb24tbmF0aXZlIHB5dGhvbi1sYW5nLW5hdGl2ZSBweXRob24tbG9nZ2luZy1uYXRpdmUgcHl0aG9uLW1haWxib3gtbmF0aXZlIHB5dGhvbi1tYXRoLW5hdGl2ZSBweXRob24tbWltZS1uYXRpdmUgcHl0aG9uLW1tYXAtbmF0aXZlIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbi1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbi1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbi1udW1iZXJzLW5hdGl2ZSBweXRob24tcGlja2xlLW5hdGl2ZSBweXRob24tcGtndXRpbC1uYXRpdmUgcHl0aG9uLXBsaXN0bGliLW5hdGl2ZSBweXRob24tcHByaW50LW5hdGl2ZSBweXRob24tcHJvZmlsZS1uYXRpdmUgcHl0aG9uLXB5ZG9jLW5hdGl2ZSBweXRob24tcmUtbmF0aXZlIHB5dGhvbi1yZWFkbGluZS1uYXRpdmUgcHl0aG9uLXJlc291cmNlLW5hdGl2ZSBweXRob24tcm9ib3RwYXJzZXItbmF0aXZlIHB5dGhvbi1zaGVsbC1uYXRpdmUgcHl0aG9uLXNtdHBkLW5hdGl2ZSBweXRob24tc3FsaXRlMy1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbi1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbi1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24tc3lzbG9nLW5hdGl2ZSBweXRob24tdGVybWluYWwtbmF0aXZlIHB5dGhvbi10ZXN0cy1uYXRpdmUgcHl0aG9uLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uLXRraW50ZXItbmF0aXZlIHB5dGhvbi11bml0dGVzdC1uYXRpdmUgcHl0aG9uLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uLXhtbC1uYXRpdmUgcHl0aG9uLXhtbHJwYy1uYXRpdmUgcHl0aG9uLXpsaWItbmF0aXZlIgotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmNzMyZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0KLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUlBST1ZJREVTICs9ICJweXRob24zLW1vZHVsZXMtbmF0aXZlIHB5dGhvbjMtMnRvMy1uYXRpdmUgcHl0aG9uMy1hcmdwYXJzZS1uYXRpdmUgcHl0aG9uMy1hc3luY2lvLW5hdGl2ZSBweXRob24zLWF1ZGlvLW5hdGl2ZSBweXRob24zLWNvZGVjcy1uYXRpdmUgcHl0aG9uMy1jb21waWxlLW5hdGl2ZSBweXRob24zLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24zLWNvcmUtbmF0aXZlIHB5dGhvbjMtY3J5cHQtbmF0aXZlIHB5dGhvbjMtY3R5cGVzLW5hdGl2ZSBweXRob24zLWN1cnNlcy1uYXRpdmUgcHl0aG9uMy1kYXRldGltZS1uYXRpdmUgcHl0aG9uMy1kYi1uYXRpdmUgcHl0aG9uMy1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uMy1kZXYtbmF0aXZlIHB5dGhvbjMtZGlmZmxpYi1uYXRpdmUgcHl0aG9uMy1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLXN0YXRpY2Rldi1uYXRpdmUgcHl0aG9uMy1kb2N0ZXN0LW5hdGl2ZSBweXRob24zLWVtYWlsLW5hdGl2ZSBweXRob24zLWVudW0tbmF0aXZlIHB5dGhvbjMtZmNudGwtbmF0aXZlIHB5dGhvbjMtZ2RibS1uYXRpdmUgcHl0aG9uMy1odG1sLW5hdGl2ZSBweXRob24zLWlkbGUtbmF0aXZlIHB5dGhvbjMtaW1hZ2UtbmF0aXZlIHB5dGhvbjMtaW1wb3J0bGliLW5hdGl2ZSBweXRob24zLWlvLW5hdGl2ZSBweXRob24zLWpzb24tbmF0aXZlIHB5dGhvbjMtbGFuZy1uYXRpdmUgcHl0aG9uMy1sb2dnaW5nLW5hdGl2ZSBweXRob24zLW1haWxib3gtbmF0aXZlIHB5dGhvbjMtbWF0aC1uYXRpdmUgcHl0aG9uMy1taW1lLW5hdGl2ZSBweXRob24zLW1tYXAtbmF0aXZlIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nLW5hdGl2ZSBweXRob24zLW5ldGNsaWVudC1uYXRpdmUgcHl0aG9uMy1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbjMtbnVtYmVycy1uYXRpdmUgcHl0aG9uMy1waWNrbGUtbmF0aXZlIHB5dGhvbjMtcGtndXRpbC1uYXRpdmUgcHl0aG9uMy1wcHJpbnQtbmF0aXZlIHB5dGhvbjMtcHJvZmlsZS1uYXRpdmUgcHl0aG9uMy1weWRvYy1uYXRpdmUgcHl0aG9uMy1yZS1uYXRpdmUgcHl0aG9uMy1yZWFkbGluZS1uYXRpdmUgcHl0aG9uMy1yZXBybGliLW5hdGl2ZSBweXRob24zLXJlc291cmNlLW5hdGl2ZSBweXRob24zLXNlbGVjdG9ycy1uYXRpdmUgcHl0aG9uMy1zaGVsbC1uYXRpdmUgcHl0aG9uMy1zaWduYWwtbmF0aXZlIHB5dGhvbjMtc210cGQtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy1uYXRpdmUgcHl0aG9uMy1zcWxpdGUzLXRlc3RzLW5hdGl2ZSBweXRob24zLXN0cmluZ29sZC1uYXRpdmUgcHl0aG9uMy1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24zLXN5c2xvZy1uYXRpdmUgcHl0aG9uMy10ZXJtaW5hbC1uYXRpdmUgcHl0aG9uMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy10ZXh0dXRpbHMtbmF0aXZlIHB5dGhvbjMtdGhyZWFkaW5nLW5hdGl2ZSBweXRob24zLXRraW50ZXItbmF0aXZlIHB5dGhvbjMtdHlwaW5nLW5hdGl2ZSBweXRob24zLXVuaXR0ZXN0LW5hdGl2ZSBweXRob24zLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uMy14bWwtbmF0aXZlIHB5dGhvbjMteG1scnBjLW5hdGl2ZSIKLQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCmluZGV4IGFkNDYwODUuLmFmMGYxNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAKIFNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAKLUluZGV4OiBQeXRob24tMi43LjEzL0luY2x1ZGUvcHl0aG9ucnVuLmgKK0luZGV4OiBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAotKysrIFB5dGhvbi0yLjcuMTMvSW5jbHVkZS9weXRob25ydW4uaAorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKysgUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiBAQCAtMTA4LDYgKzEwOCw3IEBAIFB5QVBJX0ZVTkMoY2hhciAqKSBQeV9HZXRQYXRoKHZvaWQpOwogIC8qIEluIHRoZWlyIG93biBmaWxlcyAqLwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOwpAQCAtMjQsMTAgKzI0LDEwIEBACiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CiBAQCAtMjIsNiArMjIsOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQogIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCiAgCkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICdoZWFkZXJzJzogJyRiYXNlL2luY2x1ZGUvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvJGRpc3RfbmFtZScsCiAgICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9iaW4nLAogICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3B5ZG9jLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvcHlkb2MucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKIEBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKQEAgLTU5LDEwICs1OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pKToKICAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgogIAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3NpdGUucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvc2l0ZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKIEBAIC0yODgsMTMgKzI4OCwxOSBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6CiAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKQEAgLTg2LDEwICs4NiwxMCBAQAogICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAgCiAgZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocyk6Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X2RsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3RfZGwucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQogQEAgLTQsMTAgKzQsMTEgQEAKICBpbXBvcnQgdW5pdHRlc3QKICBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlCkBAIC0xMDQsMTAgKzEwNCwxMCBAQAogICAgICAoJy91c3IvYmluL2N5Z3dpbjEuZGxsJywgJ2dldHBpZCcpLAogICAgICAoJy91c3IvbGliL2xpYmMuZHlsaWInLCAnZ2V0cGlkJyksCiAgICAgIF0KLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90cmFjZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3RyYWNlLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90cmFjZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5CiBAQCAtNzU0LDEwICs3NTQsMTAgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKICAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQogIApAQCAtMTIxLDExICsxMjEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQogICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQogICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKLUluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTMvTWFrZWZpbGUucHJlLmluCi1AQCAtOTIsNiArOTIsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCitAQCAtOTEsNiArOTEsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtMTMzLDcgKzEzMyw3IEBACiAgCiAgIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiAgTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTExMSw3ICsxMTIsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTExMCw3ICsxMTEsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTE0Miw3ICsxNDIsNyBAQAogIAogICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKICBCSU5MSUJERVNUPQkkKExJQkRJUikvcHl0aG9uJChWRVJTSU9OKQotQEAgLTY2OCw2ICs2NjksNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CitAQCAtNjQ0LDYgKzY0NSw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC0xNTAsOCArMTUwLDggQEAKICAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogIAogIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi1AQCAtNzA4LDcgKzcxMCw3IEBAICQoQVNUX0MpOiAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCi0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQorQEAgLTY5Miw3ICs2OTQsNyBAQCByZWdlbi1hc3Q6CisgUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCiAgCiAgUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwogLQkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0xNTksMTAgKzE1OSwxMCBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9Nb2R1bGVzL2dldHBhdGguYwotKysrIFB5dGhvbi0yLjcuMTMvTW9kdWxlcy9nZXRwYXRoLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKKysrKyBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCiBAQCAtMTAwLDYgKzEwMCwxMyBAQAogICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKQEAgLTE4NiwxMCArMTg2LDEwIEBACiAgCiAgc3RhdGljIHZvaWQKICByZWR1Y2UoY2hhciAqZGlyKQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKK0luZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy4xMy9QeXRob24vZ2V0cGxhdGZvcm0uYworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKIEBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQogIHsKICAJcmV0dXJuIFBMQVRGT1JNOwpAQCAtMjA0LDEwICsyMDQsMTAgQEAKICt7CiArCXJldHVybiBMSUI7CiArfQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCi0rKysgUHl0aG9uLTIuNy4xMy9QeXRob24vc3lzbW9kdWxlLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCisrKysgUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKIEBAIC0xNDM3LDYgKzE0MzcsOCBAQCBfUHlTeXNfSW5pdCh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLApAQCAtMjE3LDExICsyMTcsMTEgQEAKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSkpOwogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwcmVmaXgiLAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvY29uZmlndXJlLmFjCitJbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xMy9jb25maWd1cmUuYWMKLUBAIC03NTksNiArNzU5LDExIEBAIFN1bk9TKikKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKK0BAIC03NTgsNiArNzU4LDExIEBAIFN1bk9TKikKICAgICAgOzsKICBlc2FjCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWRmMTUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotcmVxdWlyZSBweXRob24uaW5jCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGV4cGF0LW5hdGl2ZSIKLVBSID0gIiR7SU5DX1BSfS4xIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGVidWcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25vaG9zdGxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2J1aWxkZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiIKLQotaW5oZXJpdCBuYXRpdmUKLQotcmVxdWlyZSBweXRob24tbmF0aXZlLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGgtc3lzdGVtLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0iCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotJwotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJFBZVEhTQ1JJUFQKLQlkb25lCi0KLQkjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQotCSMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotCSMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQotCSMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KLQlsbiAtcyBweXRob24tbmF0aXZlL3B5dGhvbiAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbgotCi0JIyBXZSBkb24ndCB3YW50IG1vZHVsZXMgaW4gfi8ubG9jYWwgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlCi0JIyBpbnN0YWxsZWQgaW4gdGhlIG5hdGl2ZSBzeXNyb290LCBzbyBkaXNhYmxlIHVzZXIgc2l0ZSBzdXBwb3J0LgotCXNlZCAtaSAtZSAncyxeXChFTkFCTEVfVVNFUl9TSVRFID0gXCkuKixcMUZhbHNlLCcgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0OTFmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE0LmJiCkBAIC0wLDAgKzEsODUgQEAKK3JlcXVpcmUgcHl0aG9uLmluYworRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUgZXhwYXQtbmF0aXZlIGdkYm0tbmF0aXZlIGRiLW5hdGl2ZSIKK1BSID0gIiR7SU5DX1BSfS4xIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGVidWcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL25vaG9zdGxpYnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2J1aWxkZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiIKKworaW5oZXJpdCBuYXRpdmUKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aC1zeXN0ZW0tZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisnCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorfQorCisjIFJlZ2VuZXJhdGUgYWxsIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZXMKKyMgVGhpcyBlbnN1cmVzIHRoYXQgcGdlbiBhbmQgZnJpZW5kcyBnZXQgY3JlYXRlZCBkdXJpbmcgdGhlIGNvbXBpbGUgcGhhc2UKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlIHJlZ2VuLWFsbAorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob258JyAkUFlUSFNDUklQVAorCWRvbmUKKworCSMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCisJIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisJIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCisJIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgorCWxuIC1zIHB5dGhvbi1uYXRpdmUvcHl0aG9uICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uCisKKwkjIFdlIGRvbid0IHdhbnQgbW9kdWxlcyBpbiB+Ly5sb2NhbCBiZWluZyB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UKKwkjIGluc3RhbGxlZCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QsIHNvIGRpc2FibGUgdXNlciBzaXRlIHN1cHBvcnQuCisJc2VkIC1pIC1lICdzLF5cKEVOQUJMRV9VU0VSX1NJVEUgPSBcKS4qLFwxRmFsc2UsJyAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZS5weQorfQorCitweXRob24oKXsKKworICAgICMgUmVhZCBKU09OIG1hbmlmZXN0CisgICAgaW1wb3J0IGpzb24KKyAgICBweXRob25kaXIgPSBkLmdldFZhcignVEhJU0RJUicsVHJ1ZSkKKyAgICB3aXRoIG9wZW4ocHl0aG9uZGlyKycvcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKKworICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCisKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbi1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uLWZvby1uYXRpdmUKKyAgICBwbiA9ICdweXRob24nCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6CisgICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NlYzY4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlLmluYwpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkV4dGVuZHMgUHl0aG9uIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIiCitIT01FUEFHRSA9ICJodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3Mvbm9zZS8iCitERVNDUklQVElPTiA9ICJub3NlIGV4dGVuZHMgdGhlIHRlc3QgbG9hZGluZyBhbmQgcnVubmluZyBmZWF0dXJlcyBvZiB1bml0dGVzdCwgXAorbWFraW5nIGl0IGVhc2llciB0byB3cml0ZSwgZmluZCBhbmQgcnVuIHRlc3RzLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xncGwudHh0O21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgppbmRleCA5YjM1MDljLi42ZDY5ZDJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgpAQCAtMSwyNSArMSwyIEBACi1TVU1NQVJZID0gIkV4dGVuZHMgUHl0aG9uIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vcmVhZHRoZWRvY3Mub3JnL2RvY3Mvbm9zZS8iCi1ERVNDUklQVElPTiA9ICJub3NlIGV4dGVuZHMgdGhlIHRlc3QgbG9hZGluZyBhbmQgcnVubmluZyBmZWF0dXJlcyBvZiB1bml0dGVzdCwgXAotbWFraW5nIGl0IGVhc2llciB0byB3cml0ZSwgZmluZCBhbmQgcnVuIHRlc3RzLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xncGwudHh0O21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vbm9zZS9ub3NlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL25vc2UvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25vc2UvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgotCi1TID0gIiR7V09SS0RJUn0vbm9zZS0ke1BWfSIKLQogaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uLXVuaXR0ZXN0IFwKLSAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCityZXF1aXJlIHB5dGhvbi1ub3NlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zLW5hdGl2ZV8yLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29ucy1uYXRpdmVfMy4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29ucy1uYXRpdmVfMi41LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29ucy1uYXRpdmVfMy4wLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29uc18yLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29uc18yLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y0Mzg1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlNvZnR3YXJlIENvbnN0cnVjdGlvbiB0b29sIChtYWtlL2F1dG90b29scyByZXBsYWNlbWVudCkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNhODg1ZGZmNmQxNGU0Y2Q4NzZkOTAwOGEwOWE0MmRlIgotU1JDTkFNRSA9ICJzY29ucyIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNlYWM4MWU1ZTgyMDYzMDRhOWI0NjgzYzU3NjY1YWE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4ZGU4NWZjMDJlZDFhNjg3YjFmMmFjNzkxZWFhMGMxNzA3YjQzODJhMjA0ZjE3ZDc4MmI1YjExMWI5ZmRmMDciCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1NDb25zLyIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi1mY250bCBcCi0gIHB5dGhvbi1pbyBcCi0gIHB5dGhvbi1qc29uIFwKLSAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMy4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMy4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUwODRiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29uc18zLjAuMS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlNvZnR3YXJlIENvbnN0cnVjdGlvbiB0b29sIChtYWtlL2F1dG90b29scyByZXBsYWNlbWVudCkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTQ2ZGRmNjYwMDRlNWJlNTU2NjM2N2NiNTI1YTY2ZmM2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjZhMjkyZTI1MWIzNGI4MmMyMDNiNTZjZmEzOTY4YjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ0NzVlMzhkMzljMTk2ODNiYzg4MDU0NTI0ZGYwMThmZTY5NDlkNzBmYmQ0YzY5ZTI5OGQzOWEwMjY5ZjE3MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zY29ucy5vcmcvcGFnZXMvZG93bmxvYWQuaHRtbCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbi1mY250bCBcCisgIHB5dGhvbi1pbyBcCisgIHB5dGhvbi1qc29uIFwKKyAgcHl0aG9uLXN1YnByb2Nlc3MgXAorICBweXRob24tc2hlbGwgXAorICBweXRob24tcHByaW50IFwKKyAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCmluZGV4IGNhNTIxYTkuLjc0NzA2YmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKQEAgLTUsMTcgKzUsNDQgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT05YTMzODk3ZjFiY2ExMTYwZDdhYWQzODM1MTUyZTE1OCIKIAotU1JDTkFNRSA9ICJzZXR1cHRvb2xzIgorUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS56aXAiCitpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gImI5ZTZjMDQ5NjE3YmFjMGY5ZTkwOGE0MWFiNGEyOWFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZmU1ZDQzMmQ5MjJkZjU5NWU5MTg1NzdjNTE0NThkNjNmMjQ1MTE1ZDE0MWIzMDlhYzMyZWNmY2EzMjlkZjUiCitTUkNfVVJJW21kNXN1bV0gPSAiMzc5NjQyYTRmMTcyMTQwNzFmZGMxODk0MjU1ZDhkMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTRkYzU2NjI0N2YzNTAwOWVkNDJjMGY0NDIyZjJiNGYwYTAzMmZhYjEzNzJjODMwOGI4NjRjOGYyNmQ5MzM4OCIKIAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2V0dXB0b29scyIKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlICs9ICIke1BZVEhPTl9QTn0tbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgKz0gIm5hdGl2ZXNkay0ke1BZVEhPTl9QTn0iCiAKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1zY3JpcHQtZGlyPSR7YmluZGlyfSIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKKyAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisiCitSREVQRU5EU18ke1BOfSA9ICJcCisgICR7UFlUSE9OX1BOfS1jb21waWxlIFwKKyAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAke1BZVEhPTl9QTn0taHRtbCBcCisgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgJHtQWVRIT05fUE59LXBsaXN0bGliIFwKKyAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorICAke1BZVEhPTl9QTn0teG1sIFwKKyIKIAogZG9faW5zdGFsbF9wcmVwZW5kKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiB9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVmYWNjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYwotCi1QUk9WSURFUyA9ICJweXRob24tZGlzdHJpYnV0ZSIKLQotREVQRU5EUyArPSAicHl0aG9uIgotREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gInB5dGhvbi1uYXRpdmUiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi1zdHJpbmdvbGQgXAotICBweXRob24tZW1haWwgXAotICBweXRob24tc2hlbGwgXAotICBweXRob24tZGlzdHV0aWxzIFwKLSAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uLXBrZ3V0aWwgXAotICBweXRob24tcGxpc3RsaWIgXAotICBweXRob24tbnVtYmVycyBcCi0gIHB5dGhvbi1odG1sIFwKLSAgcHl0aG9uLW5ldHNlcnZlciBcCi0gIHB5dGhvbi1jdHlwZXMgXAotICBweXRob24tc3VicHJvY2VzcyBcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gIHB5dGhvbi1jb21waWxlIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjk0NDA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzkuMC4wLmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKKworUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCisKK2luaGVyaXQgc2V0dXB0b29scworCitSUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCitSUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCitSQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwppbmRleCBiZDEyZmE5Li5jNzc0OTg0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwpAQCAtMiwxNSArMiwxMyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZmMDBkNGE1MDcxM2ZhODU5ODU4ZGQ5YWJhYTM1YjIxIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzVjZWM1YmYwNGRkMDgyMGQwYTE4NTMzZWE3Yzc3NGEiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zL3NpeC9zaXgtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjM0ZWVkNTA3NTQ4MTE3YjJhYjUyM2FiMTRiMmY4YjU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwNWY4ZDY4NjE2ZjgyNDhlMjRiZjBlOTM3MmVmMDRkM2NjMTAxMDRmMTk4MGY1NGQ1N2IyY2U3M2E1YWQ1NmEiCitTUkNfVVJJW21kNXN1bV0gPSAiZDEyNzg5ZjliYWY3ZTlmYjI1MjRjMGM2NGYxNzczZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzBlOGE3N2JlZWQ0NTYyZTdmMTRmZTIzYTc4NmI1NGY2Mjk2ZTM0MzQ0YzIzYmM0MmYwN2IxNTAxOGZmOThlOSIKIAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9zaXgvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgoraW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1pbyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TID0gIiR7V09SS0RJUn0vc2l4LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcC5pbmMKaW5kZXggZDY3ZTZiNS4uNTVhYTUxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXAuaW5jCkBAIC03LDEzICs3LDEyIEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zL3NtbWFwL3NtbWFwLSR7UFZ9LnRhci5neiIKK2luaGVyaXQgcHlwaQorCiBTUkNfVVJJW21kNXN1bV0gPSAiZDc5MzJkNWFjZTIwNmJmNGFlMTUxOThjZjM2ZmI2YWIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUyYjYyYjQ5N2JkNWYwYWZlYmMwMDJlZGE0ZDkwZGY5ZDIwOWMzMGVmMjU3ZTg2NzNjOTBhNmI1YzExOWQ2MiIKIAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc21tYXAvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3NtbWFwLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKLQotUyA9ICIke1dPUktESVJ9L3NtbWFwLSR7UFZ9IgotCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvZGVjcyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1tYXAgXAorIgogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwppbmRleCBiNDBmNTUxLi45NzliNjAxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKQEAgLTUsMTIgKzUsMTIgQEAKICMgYnVtcCB0aGlzIG9uIGV2ZXJ5IGNoYW5nZSBpbiBjb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKIElOQ19QUiA9ICJyMSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmI2MDI1ODEzMGU0ZWQxMGQzMTAxNTE3ZWI1YjkzODUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzQxZTUxZGU5MWQ0ZWVlYTU5MzBiOWMzYzdmYTY5ZCIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNiNDM1MzQxNTNiYjJhMDM2M2YwOGJhZThiOWQ5OTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzVkNTQzOTg2ODgyZjc4MjYxZjk3Nzg3ZmQzZTA2Mjc0YmZhNmRmMjlmYWM5YjRhOTRmNzM5MzBmZjk4ZjczMSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZjZkYjQxYWQ5MWQ5ZWIwYTZmMGM3NjliODYxM2M1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWZmYjI2ZTA5ZTc4NjUwZTQyNDkyOWIyYjQ1N2I5YzkxMmFjMjE2NTc2ZTZiZDllN2QyMDRlZDAzMjk2YTY2IgogCiAjIHB5dGhvbiByZWNpcGUgaXMgYWN0dWFsbHkgcHl0aG9uIDIueAogIyBhbHNvLCBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaAppbmRleCAzNjZjZTNlLi5lNzk1YTc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCkBAIC05LDYgKzksOSBAQAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45CiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIAorUmViYXNlZCBmb3IgcHl0aG9uLTIuNy4xNAorU2lnbmVkLW9mZi1ieTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KKwogSW5kZXg6IFB5dGhvbi0yLjcuMTMvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gUHl0aG9uLTIuNy4xMy5vcmlnL01ha2VmaWxlLnByZS5pbgpAQCAtMzAsMTQgKzMzLDE0IEBACiAgCiAgIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KICAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCi1AQCAtNjgxLDcgKzY4Miw3IEBAIE1vZHVsZXMvcHdkbW9kdWxlLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3AKLSAKLSAkKEdSQU1NQVJfSCk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU4pCitAQCAtNjYzLDcgKzY2Myw3IEBACisgCSMgUmVnZW5lcmF0ZSBJbmNsdWRlL2dyYW1pbml0LmggYW5kIFB5dGhvbi9ncmFtaW5pdC5jCisgCSMgZnJvbSBHcmFtbWFyL0dyYW1tYXIgdXNpbmcgcGdlbgogIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0tCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0rCSQoSE9TVFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotICQoR1JBTU1BUl9DKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSCkKLSAJdG91Y2ggJChHUkFNTUFSX0MpCistCSQoUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCisrCSQoSE9TVFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAorIAkJJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCBcCisgCQkkKHNyY2RpcikvUHl0aG9uL2dyYW1pbml0LmMKICAKIEBAIC0xMTIxLDI3ICsxMTIyLDI3IEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUEwKICAJCQkkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHMgOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vRG9uLXQtdXNlLWdldGVudHJvcHktb24tTGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vRG9uLXQtdXNlLWdldGVudHJvcHktb24tTGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZTUzNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE9iZXJyaXR0ZXIgPG9iaUBvcGVuZHJlYW1ib3gub3JnPgotCi1Gcm9tIDkwNWQxYjMwYWM3Y2IwZTMxYzU3Y2VjMDUzMzgyNWM4ZjE3MGI5NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgotRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjEwOjQxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gTGludXgKLQotSXNzdWUgIzI5MTg4OiBTdXBwb3J0IGdsaWJjIDIuMjQgb24gTGludXg6IGRvbid0IHVzZSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gYnV0Ci1yZWFkIGZyb20gL2Rldi91cmFuZG9tIHRvIGdldCByYW5kb20gYnl0ZXMsIGZvciBleGFtcGxlIGluIG9zLnVyYW5kb20oKS4gIE9uCi1MaW51eCwgZ2V0ZW50cm9weSgpIGlzIGltcGxlbWVudGVkIHdoaWNoIGdldHJhbmRvbSgpIGlzIGJsb2NraW5nIG1vZGUsIHdoZXJlYXMKLW9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyNjg3NDg2NzU2NzIxZTM5MTY0ZmE5ZjU5N2U0NjhjMzVkNDk1MjI3KQotLS0tCi0gUHl0aG9uL3JhbmRvbS5jIHwgMTEgKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCi1pbmRleCBiNGJjMWYzLi5mM2Y1ZDE0IDEwMDY0NAotLS0tIGEvUHl0aG9uL3JhbmRvbS5jCi0rKysgYi9QeXRob24vcmFuZG9tLmMKLUBAIC05NCw4ICs5NCwxNSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gfQotIAotIC8qIElzc3VlICMyNTAwMzogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLS0gKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLwotLSNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pCi0rICAgU29sYXJpcyAxMS4zKSwgaXQgaXMgYmxvY2tpbmcgd2hlcmVhcyBvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4KLSsKLSsgICBJc3N1ZSAjMjkxODg6IERvbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gTGludXggc2luY2UgdGhlIGdsaWJjIDIuMjQKLSsgICBpbXBsZW1lbnRzIGl0IHdpdGggdGhlIGdldHJhbmRvbSgpIHN5c2NhbGwgd2hpY2ggY2FuIGZhaWwgd2l0aCBFTk9TWVMsCi0rICAgYW5kIHRoaXMgZXJyb3IgaXMgbm90IHN1cHBvcnRlZCBpbiBweV9nZXRlbnRyb3B5KCkgYW5kIGdldHJhbmRvbSgpIGlzIGNhbGxlZAotKyAgIHdpdGggZmxhZ3M9MCB3aGljaCBibG9ja3MgdW50aWwgc3lzdGVtIHVyYW5kb20gaXMgaW5pdGlhbGl6ZWQsIHdoaWNoIGlzIG5vdAotKyAgIHRoZSBkZXNpcmVkIGJlaGF2aW91ciB0byBzZWVkIHRoZSBQeXRob24gaGFzaCBzZWNyZXQgbm9yIGZvciBvcy51cmFuZG9tKCk6Ci0rICAgc2VlIHRoZSBQRVAgNTI0IHdoaWNoIHdhcyBvbmx5IGltcGxlbWVudGVkIGluIFB5dGhvbiAzLjYuICovCi0rI2VsaWYgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikgJiYgIWRlZmluZWQobGludXgpCi0gI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLSAKLSAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAppbmRleCBhOTdmZjZiLi4zMjk3MzQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaApAQCAtMTMsMTEgKzEzLDExIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogUHl0aG9uLTIuNy4xMS9jb25maWd1cmUuYWMKK0luZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTEub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjExL2NvbmZpZ3VyZS5hYwotQEAgLTMzLDcgKzMzLDcgQEAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKK0BAIC0zNiw3ICszNiw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKICAJZmkKICAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmluZGV4IDMzNDczMjEuLjI4NzA5NWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApAQCAtNywxMyArNywxNiBAQAogQWxzbyBzaW1wbHkgZGlzYWJsZSB0aGUgdGsgbW9kdWxlIHNpbmNlIGl0cyBub3QgaW4gREVQRU5EUy4KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9zZXR1cC5weQkyMDEyLTA0LTA1IDIzOjE4OjM4LjUwMDEzNjY0NyArMDMwMAotKysrIFB5dGhvbi0yLjcuMi9zZXR1cC5weQkyMDEyLTA0LTA1IDIzOjE5OjM1Ljg4ODEzNDk2OSArMDMwMAotQEAgLTE2MzQsOCArMTYzNCwxMCBAQAorLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9zZXR1cC5weQorKysrIFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKK0BAIC0xNzgzLDEwICsxNzgzLDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKKyAKICAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLSAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCisrICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQogIAogLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgogLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCkBAIC0yMiwxOCArMjUsNSBAQAogKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKICsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKICAKLSAgICAgICAgIHJldHVybiBtaXNzaW5nCi0gCi1kaWZmIC0tZ2l0IFB5dGhvbi0zLjUuMS5vcmlnL3NldHVwLnB5IFB5dGhvbi0zLjUuMS9zZXR1cC5weQotaW5kZXggYjQ2MzNiOS4uZDc1ODhjMCAxMDA2NDQKLS0tLSBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0zLjUuMS9zZXR1cC5weQotQEAgLTE1MzYsNyArMTUzNiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKLSAKLSAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLS0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSAKLSAgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0gICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCisgIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYworICMjICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2gKaW5kZXggMzM3ZTBlMy4uOGJhNTgyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCkBAIC01LDEyICs1LDEyIEBACiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9zZXR1cC5weQkyMDEyLTA0LTA1IDIyOjI5OjE4LjA0OTE5NjYwOCArMDMwMAotKysrIFB5dGhvbi0yLjcuMi9zZXR1cC5weQkyMDEyLTA0LTA1IDIyOjI5OjU3LjUwNTE5NTQ1MyArMDMwMAotQEAgLTE1MjIsOCArMTUyMiw5IEBACi0gICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKy0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMi43LjEzL3NldHVwLnB5CitAQCAtMTY3MSw4ICsxNjcxLDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgICAjIFN1bk9TIHNwZWNpZmljIG1vZHVsZXMKICAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdzdW5hdWRpb2RldicsIFsnc3VuYXVkaW9kZXYuYyddKSApCiAtICAgICAgICBlbHNlOgpAQCAtMTksNSArMTksNSBAQAogKyAgICAgICAgI2Vsc2U6CiArICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdzdW5hdWRpb2RldicpCiAgCi0gICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgIyBfc2Nwcm94eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzQ1MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKQEAgLTAsMCArMSwyNzcgQEAKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCBhcyBhIGJpdGJha2UgdGFzayB0byBjcmVhdGUgYSBuZXcgcHl0aG9uIG1hbmlmZXN0CisjICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CisjCisjIE91ciBnb2FsIGlzIHRvIGtlZXAgcHl0aG9uLWNvcmUgYXMgc21hbGwgYXMgcG9zaWJsZSBhbmQgYWRkIG90aGVyIHB5dGhvbgorIyBwYWNrYWdlcyBvbmx5IHdoZW4gdGhlIHVzZXIgbmVlZHMgdGhlbSwgaGVuY2Ugd2h5IHdlIHNwbGl0IHVwc3RyZWFtIHB5dGhvbgorIyBpbnRvIHNldmVyYWwgcGFja2FnZXMuCisjCisjIEluIGEgdmVyeSBzaW1wbGlzdGljIHdheSB3aGF0IHRoaXMgZG9lcyBpczogCisjIExhdW5jaCBweXRob24gYW5kIHNlZSBzcGVjaWZpY2FsbHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgaXQgdG8gcnVuIGF0IGEgbWluaW11bQorIworIyBHbyB0aHJvdWdoIHRoZSBweXRob24tbWFuaWZlc3QgZmlsZSBhbmQgbGF1bmNoIGEgc2VwYXJhdGUgdGFzayBmb3IgZXZlcnkgc2luZ2xlCisjIG9uZSBvZiB0aGUgZmlsZXMgb24gZWFjaCBwYWNrYWdlLCB0aGlzIHRhc2sgd2lsbCBjaGVjayB3aGF0IHdhcyByZXF1aXJlZCBmb3IgdGhhdAorIyBzcGVjaWZpYyBtb2R1bGUgdG8gcnVuLCB0aGVzZSBtb2R1bGVzIHdpbGwgYmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KKyMgVGhlIG91dHB1dCBvZiBzdWNoIHRhc2sgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZQorIyBmb3VuZCBmb3IgdGhhdCBmaWxlLgorIworIyBTdWNoIG91dHB1dCB3aWxsIGJlIHBhcnNlZCBieSB0aGlzIHNjcmlwdCwgd2Ugd2lsbCBsb29rIGZvciBlYWNoIGRlcGVuZGVuY3kgb24gdGhlCisjIG1hbmlmZXN0IGFuZCBpZiB3ZSBmaW5kIHRoYXQgYW5vdGhlciBwYWNrYWdlIGFscmVhZHkgaW5jbHVkZXMgaXQsIHRoZW4gd2Ugd2lsbCBhZGQKKyMgdGhhdCBwYWNrYWdlIGFzIGFuIFJERVBFTkRTIHRvIHRoZSBwYWNrYWdlIHdlIGFyZSBjdXJyZW50bHkgY2hlY2tpbmc7IGluIGNhc2Ugd2UgZG9udAorIyBmaW5kIHRoZSBjdXJyZW50IGRlcGVuZGVuY3kgb24gYW55IG90aGVyIHBhY2thZ2Ugd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgcGFja2FnZQorIyBhcyBwYXJ0IG9mIEZJTEVTLgorIworIworIyBUaGlzIHdheSB3ZSB3aWxsIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdCBkdXJpbmcKKyMgdGhpcyBwcm9jZXNzLCBvbnQgdGhpcyBuZXcgbWFuaWZlc3QgZWFjaCBwYWNrYWdlIHdpbGwgY29udGFpbiBzcGVjaWZpY2FsbHkgb25seQorIyB3aGF0IGl0IG5lZWRzIHRvIHJ1bi4KKyMKKyMgVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aGljaCB3ZSB0cnkgdG8gZGVhbCB3aXRoLCBzdWNoIGFzIHJlcGVhdGVkIGZpbGVzIG9uIGRpZmZlcmVudAorIyBwYWNrYWdlcywgcGFja2FnZXMgdGhhdCBpbmNsdWRlIGZvbGRlcnMsIHdpbGRjYXJkcywgYW5kIHNwZWNpYWwgcGFja2FnZXMuCisjIEl0cyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHl0aG9uIGZpbGVzLCBhbmQgc2hhcmVkCisjIGxpYnJhcmllcy4gU3RhdGljIGxpYnJhcmllcywgaGVhZGVyIGZpbGVzIGFuZCBiaW5hcmllcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggbWFudWFsbHkuCisjCisjIEF1dGhvcjogQWxlamFuZHJvIEVuZWRpbm8gSGVybmFuZGV6IFNhbWFuaWVnbyAiYWVoczI5IiA8YWVoczI5QGdtYWlsLmNvbT4KKworCitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IGpzb24KK2ltcG9ydCBvcworCisjIEhhY2sgdG8gZ2V0IG5hdGl2ZSBweXRob24gc2VhcmNoIHBhdGggKGZvciBmb2xkZXJzKSwgbm90IGZvbmQgb2YgaXQgYnV0IGl0IHdvcmtzIGZvciBub3cKK3Bpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCitmb3IgcCBpbiBzeXMucGF0aDoKKyAgaWYgcGl2b3QgaW4gcDoKKyAgICBuYXRpdmVsaWJmb2xkZXI9cFs6cC5maW5kKHBpdm90KStsZW4ocGl2b3QpXQorCisjIEVtcHR5IGRpY3QgdG8gaG9sZCB0aGUgd2hvbGUgbWFuaWZlc3QKK25ld19tYW5pZmVzdCA9IHt9CisKKyMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzLCBmb2xkZXJzIGFuZCB3aWxkY2FyZHMKK2FsbGZpbGVzPVtdCityZXBlYXRlZD1bXQord2lsZGNhcmRzPVtdCisKK2hhc2ZvbGRlcnM9W10KK2FsbGZvbGRlcnM9W10KKworZGVmIGlzRm9sZGVyKHZhbHVlKToKKyAgaWYgb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWInKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWI2NCcpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjMyJykpOgorICAgIHJldHVybiBUcnVlCisgIGVsc2U6CisgICAgcmV0dXJuIEZhbHNlCisKKyMgUmVhZCBleGlzdGluZyBKU09OIG1hbmlmZXN0Cit3aXRoIG9wZW4oJ3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0OgorICBvbGRfbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0KQorCisKKyMgRmlyc3QgcGFzcyB0byBnZXQgY29yZS1wYWNrYWdlIGZ1bmN0aW9uYWxpdHksIGJlY2F1c2Ugd2UgYmFzZSBldmVyeXRoaW5nIG9uIHRoZSBmYWN0IHRoYXQgY29yZSBpcyBhY3R1YWxseSB3b3JraW5nCisjIE5vdCBleGFjdGx5IHRoZSBzYW1lIHNvIGl0IHNob3VsZCBub3QgYmUgYSBmdW5jdGlvbgorcHJpbnQgKCJHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgY29yZSBwYWNrYWdlOiIpCisKKyMgU3BlY2lhbCBjYWxsIHRvIGNoZWNrIGZvciBjb3JlIHBhY2thZ2UKK291dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczIucHknLCAncHl0aG9uLWNvcmUtcGFja2FnZSddKQorZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6CisgICAgIyBXZSBhcHBlbmQgaXQgc28gaXQgZG9lc250IGh1cnQgd2hhdCB3ZSBjdXJyZW50bHkgaGF2ZToKKyAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKKyAgaWYgaXNGb2xkZXIodmFsdWUpOgorICAgICMgUGFzcyBpdCBkaXJlY3RseQorICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgYXNzdW1lIGl0IHdhcyBhZGRlZCBjb3JyZWN0bHkgKG1hbnVhbGx5KQorICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCisgIGlmIHZhbHVlID09ICcnOgorICAgIGNvbnRpbnVlCisgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworCisgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQorICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJyVzJyAlIHZhbHVlXSkKKyAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6CisgICAgIyBXZSBhcHBlbmQgaXQgc28gaXQgZG9lc250IGh1cnQgd2hhdCB3ZSBjdXJyZW50bHkgaGF2ZToKKyAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisjIFdlIGNoZWNrIHdoaWNoIHBhY2thZ2VzIGluY2x1ZGUgZm9sZGVycworZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKKyAgICAgICAgaWYgaXNGb2xkZXIodmFsdWUpOgorICAgICAgICAgICAgcHJpbnQgKCclcyBpcyBhIGZvbGRlcicgJSB2YWx1ZSkKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gaGFzZm9sZGVyczoKKyAgICAgICAgICAgICAgICBoYXNmb2xkZXJzLmFwcGVuZChrZXkpCisgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gYWxsZm9sZGVyczoKKyAgICAgICAgICAgICAgICBhbGxmb2xkZXJzLmFwcGVuZCh2YWx1ZSkKKworZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgIyBVc2UgYW4gZW1wdHkgZGljdCBhcyBkYXRhIHN0cnVjdHVyZSB0byBob2xkIGRhdGEgZm9yIGVhY2ggcGFja2FnZSBhbmQgZmlsbCBpdCB1cAorICAgIG5ld19tYW5pZmVzdFtrZXldPXt9CisgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ109W10KKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXT1bXQorICAgICMgQWxsIHBhY2thZ2VzIHNob3VsZCBkZXBlbmQgb24gY29yZQorICAgIGlmIGtleSAhPSAnY29yZSc6CisgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoJ2NvcmUnKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J109b2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQorCisgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCisgICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCisgICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIGtleSkKKyAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ2RldiddCisgICAgaWYga2V5IGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4ga2V5OgorICAgICAgICBwcmludCgnUGFzc2luZyAlcyBwYWNrYWdlIGRpcmVjdGx5JyAlIGtleSkKKyAgICAgICAgbmV3X21hbmlmZXN0W2tleV09b2xkX21hbmlmZXN0W2tleV0KKyAgICAgICAgY29udGludWUKKworICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcworICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5CisgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKKyAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKKyAgICAgICAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aCh2YWx1ZSkpKVswXQorCisgICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICAgICAgICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJyVzJyAlIHZhbHVlXSkKKworICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworICAgICAgICAjcHJpbnQgKG91dHB1dCkKKyAgICAgICAgIyBPdXRwdXQgd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyAgICAgICAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6CisKKyAgICAgICAgICAgICMgV2FybmluZzogVGhpcyBmaXJzdCBwYXJ0IGlzIHVnbHkKKyAgICAgICAgICAgICMgT25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3YXMgZm91bmQsIGNvdWxkIGJlIGluc2lkZSBvZiBvbmUgb2YgdGhlIGZvbGRlcnMgaW5jbHVkZWQgYnkgYW5vdGhlciBwYWNrYWdlCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBoYXBwZW5zIHNvIHdlIGNhbiBhZGQgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgZm9sZGVyIGFzIGFuIFJERVBFTkRTCisgICAgICAgICAgICAjIGUuZy4gRm9sZGVyIGVuY29kaW5ncyBjb250YWluZWQgaW4gY29kZWNzCisgICAgICAgICAgICAjIFRoaXMgd291bGQgYmUgc29sdmVkIGlmIG5vIHBhY2thZ2VzIGluY2x1ZGVkIGFueSBmb2xkZXJzCisKKyAgICAgICAgICAgICMgVGhpcyBjYW4gYmUgZG9uZSBpbiB0d28gd2F5czoKKyAgICAgICAgICAgICMgMSAtIFdlIGFzc3VtZSB0aGF0IGlmIHdlIHRha2Ugb3V0IHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoIHdlIHdvdWxkIGdldAorICAgICAgICAgICAgIyAgIHRoZSBmb2xkZXIgc3RyaW5nLCB0aGVuIHdlIHdvdWxkIGNoZWNrIGlmIGZvbGRlciBzdHJpbmcgaXMgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycworICAgICAgICAgICAgIyAgIFRoaXMgd291bGQgbm90IHdvcmsgaWYgYSBwYWNrYWdlIGNvbnRhaW5zIGEgZm9sZGVyIHdoaWNoIGNvbnRhaW5zIGFub3RoZXIgZm9sZGVyCisgICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKKyAgICAgICAgICAgICMgICBmb2xkZXJfc3RyaW5nIHdvdWxkIG5vdCBtYXRjaCBhbnkgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgMiAtIFdlIGRvIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kLCBjaGVja2luZyBpZiB0aGUgZm9sZGVyIGlzIGNvbnRhaW5lZCBpbiB0aGUgcGF0aAorICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCisgICAgICAgICAgICAjICAgaXMgZm9sZGVyX3N0cmluZyBpbnNpZGUgcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWU/LCAKKyAgICAgICAgICAgICMgICBZZXMsIGl0IHdvcmtzLCBidXQgd2Ugd2FzdGUgYSBjb3VwbGUgb2YgbWlsbGlzZWNvbmRzLgorCisgICAgICAgICAgICBpbkZvbGRlcnM9RmFsc2UKKyAgICAgICAgICAgIGZvciBmb2xkZXIgaW4gYWxsZm9sZGVyczoKKyAgICAgICAgICAgICAgICBpZiBmb2xkZXIgaW4gaXRlbToKKyAgICAgICAgICAgICAgICAgICAgaW5Gb2xkZXJzID0gVHJ1ZSAjIERpZCB3ZSBmaW5kIGEgZm9sZGVyPworICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IEZhbHNlICMgU2Vjb25kIGZsYWcgdG8gYnJlYWsgaW5uZXIgZm9yCisgICAgICAgICAgICAgICAgICAgICMgTG9vcCBvbmx5IHRocm91Z2ggcGFja2FnZXMgd2hpY2ggY29udGFpbiBmb2xkZXJzCisgICAgICAgICAgICAgICAgICAgIGZvciBrZXlmb2xkZXIgaW4gaGFzZm9sZGVyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZXJGb3VuZCA9PSBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCJDaGVja2luZyBmb2xkZXIgJXMgb24gcGFja2FnZSAlcyIgJSAoaXRlbSxrZXlmb2xkZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlX2ZvbGRlciBpbiBvbGRfbWFuaWZlc3Rba2V5Zm9sZGVyXVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm91bmQgaW4gJXMnICUgKGZvbGRlciwga2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5Zm9sZGVyIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXSBhbmQga2V5Zm9sZGVyICE9IGtleToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoa2V5Zm9sZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KKyAgICAgICAgICAgIGlmIGluRm9sZGVyczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBpdCBvbiB0aGUgZGljdGlvbmFyeSBzaW5jZSBpdCBjb3VsZCBkZXBlbmQgb24gYSAocHJldmlvdXNseSBjaGVja2VkKSBtb2R1bGUKKyAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgICMgSGFuZGxlIGNvcmUgYXMgYSBzcGVjaWFsIHBhY2thZ2UsIHdlIGFscmVhZHkgZGlkIGl0IHNvIHdlIHBhc3MgaXQgdG8gTkVXIGRhdGEgc3RydWN0dXJlIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgaWYga2V5PT0nY29yZSc6CisgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIEZJTEVTJyAlIChpdGVtLCBrZXkpKQorICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgZWxzZToKKworICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoaXMgZGVwZW5kZW5jeSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBvbiBhbm90aGVyIHBhY2thZ2UsIHNvIHdlIGFkZCBpdAorICAgICAgICAgICAgICAgICAgICAjIGFzIGFuIFJERVBFTkRTLCBvciBpZiBpdHMgbm90LCBpdCBtZWFucyBpdCBzaG91bGQgYmUgY29udGFpbmVkIG9uIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICMgcGFja2FnZSwgc28gd2Ugc2hvdWxkIGFkZCBpdCB0byBGSUxFUworICAgICAgICAgICAgICAgICAgICBmb3IgbmV3a2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgJXMgIiAlIGl0ZW0gKyAiIGluICVzIiAlIG5ld2tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gaW4gb2xkX21hbmlmZXN0W25ld2tleV1bJ2ZpbGVzJ106ICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2VyZSBuZXN0aW5nLCB3ZSBuZWVkIHRvIGNoZWNrIGl0cyBub3QgdGhlIHNhbWUga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld2tleSE9a2V5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2tleSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBpdCB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzJyAlIChuZXdrZXksIGtleSwgaXRlbSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQobmV3a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCisgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworcHJpbnQgKCdUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSByZXBlYXRlZCAoY29udGFpbmVkIGluIG1vcmUgdGhhbiBvbmUgcGFja2FnZSksIHBsZWFzZSBjaGVjayB3aGljaCBwYWNrYWdlIHNob3VsZCBnZXQgaXQ6JykKK3ByaW50IChyZXBlYXRlZCkKK3ByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gd2lsZGNhcmRzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKK3ByaW50KHdpbGRjYXJkcykKK3ByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gZm9sZGVycywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludChoYXNmb2xkZXJzKQorCisjIFNvcnQgaXQganVzdCBzbyBpdCBsb29rcyBuaWNlIAorZm9yIGtleSBpbiBuZXdfbWFuaWZlc3Q6CisgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uc29ydCgpCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uc29ydCgpCisKKyMgQ3JlYXRlIHRoZSBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdAord2l0aCBvcGVuKCdweXRob24yLW1hbmlmZXN0Lmpzb24ubmV3JywndycpIGFzIG91dGZpbGU6CisgICAganNvbi5kdW1wKG5ld19tYW5pZmVzdCxvdXRmaWxlLHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCwgc2VwYXJhdG9ycz0oJywnLCAnOiAnKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2gKaW5kZXggNjY5MTEyZC4uNjBkNzgyYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2gKQEAgLTQsMTggKzQsMTkgQEAKIFNpZ25lZC1vZmYtYnk6IFR1ZG9yIEZsb3JlYSA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KLWRpZmYgLXJ1TiBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotLS0tIGEvTWFrZWZpbGUucHJlLmluCTIwMTMtMDYtMjcgMTA6NDQ6MTEuMDMzODQwNTMyICswMjAwCi0rKysgYi9NYWtlZmlsZS5wcmUuaW4JMjAxMy0wNi0yNyAxMDo0NDozOS41NzI2MzUyNzMgKzAyMDAKLUBAIC03MDksMTQgKzcwOSwxOSBAQAotICMgZ2VuZXJhdGVkIGJ5dGVjb2RlLiAgVGhpcyBpcyBzb21ldGltZXMgYSB2ZXJ5IHNoeSBidWcgbmVlZGluZyBhIGxvdCBvZgotICMgc2FtcGxlIGRhdGEuCitJbmRleDogUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTWFrZWZpbGUucHJlLmluCisrKysgUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KK0BAIC04NDYsMTQgKzg0NiwxOSBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBNb2R1bGVzL3B5dGhvCisgCisgLlBIT05ZOiB0ZXN0IHRlc3RhbGwgdGVzdHVuaXZlcnNhbCBidWlsZGJvdHRlc3QgcHl0aG9uaW5mbwogIAogLVRFU1RPUFRTPQktbCAkKEVYVFJBVEVTVE9QVFMpCiArVEVTVE9QVFM9CS1sIC12ICQoRVhUUkFURVNUT1BUUykKICBURVNUUFJPRz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CiAtVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLVdkIC0zIC1FIC10dCAkKFRFU1RQWVRIT05PUFRTKQotLXRlc3Q6CQlhbGwgcGxhdGZvcm0KKy10ZXN0OgkJQERFRl9NQUtFX1JVTEVAIHBsYXRmb3JtCiAtCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKICtURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChCVUlMRFBZVEhPTikgLVdkIC0zIC1FIC10dCAkKFRFU1RQWVRIT05PUFRTKQogK3Rlc3Q6CQlidWlsZC10ZXN0CkBAIC0yNiw4ICsyNyw4IEBACiAgCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQogIAkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQogIAotK2J1aWxkLXRlc3Q6CWFsbCBwbGF0Zm9ybQorK2J1aWxkLXRlc3Q6CUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogKwotIHRlc3RhbGw6CWFsbCBwbGF0Zm9ybQorIHRlc3RhbGw6CUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCiAgCQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9MaWIvY29tcGlsZWFsbC5weQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZ2V0X21vZHVsZV9kZXBzMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2U3YzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkKQEAgLTAsMCArMSwxMTIgQEAKKyMgVGhpcyBzY3JpcHQgaXMgbGF1bmNoZWQgb24gc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBweXRob24gbW9kdWxlCisjIEl0IGNoZWNrcyBmb3IgZGVwZW5kZW5jaWVzIGZvciB0aGF0IHNwZWNpZmljIG1vZHVsZSBhbmQgcHJpbnRzIAorIyB0aGVtIG91dCwgdGhlIG91dHB1dCBvZiB0aGlzIGV4ZWN1dGlvbiB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcworIyBmb3IgYSBzcGVjaWZpYyBtb2R1bGUsIHdoaWNoIHdpbGwgYmUgcGFyc2VkIGFuIGRlYWx0IG9uIGNyZWF0ZV9tYW5pZmVzdC5weQorIworIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+CisKKworIyBXZSBjYW4gZ2V0IGEgbG9nIHBlciBtb2R1bGUsIGZvciBhbGwgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUgZm91bmQsIGJ1dCBpdHMgbWVzc3kuCitkZWJ1Zz1GYWxzZQorCitpbXBvcnQgc3lzCisKKyMgV2UgY2FuIGdldCBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgd2hpY2ggYXJlIGN1cnJlbnRseSByZXF1aXJlZCB0byBydW4gcHl0aG9uCisjIHNvIHdlIHJ1biBweXRob24tY29yZSBhbmQgZ2V0IGl0cyBtb2R1bGVzLCB3ZSB0aGVuIGltcG9ydCB3aGF0IHdlIG5lZWQKKyMgYW5kIGNoZWNrIHdoYXQgbW9kdWxlcyBhcmUgY3VycmVudGx5IHJ1bm5pbmcsIGlmIHdlIHN1YnN0cmFjdCB0aGVtIGZyb20gdGhlCisjIG1vZHVsZXMgd2UgaGFkIGluaXRpYWxseSwgd2UgZ2V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBtb2R1bGUgd2UgaW1wb3J0ZWQuCisKKyMgV2UgdXNlIGltcG9ydGxpYiB0byBhY2hpZXZlIHRoaXMsIHNvIHdlIGFsc28gbmVlZCB0byBrbm93IHdoYXQgbW9kdWxlcyBpbXBvcnRsaWIgbmVlZHMKK2ltcG9ydCBpbXBvcnRsaWIKKworY29yZV9kZXBzPXNldChzeXMubW9kdWxlcykKKworZGVmIGZpeF9wYXRoKGRlcF9wYXRoKToKKyAgICBpbXBvcnQgb3MKKyAgICAjIFdlIERPTlQgd2FudCB0aGUgcGF0aCBvbiBvdXIgSE9TVCBzeXN0ZW0KKyAgICBwaXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJworICAgIGRlcF9wYXRoPWRlcF9wYXRoW2RlcF9wYXRoLmZpbmQocGl2b3QpK2xlbihwaXZvdCk6XQorCisgICAgaWYgJy91c3IvYmluJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2JpbicnJHtiaW5kaXJ9JykKKworICAgICMgSGFuZGxlIG11bHRpbGliLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/CisgICAgaWYgJy91c3IvbGliMzInIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliMzInLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2xpYjY0JyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjY0JywnJHtsaWJkaXJ9JykKKyAgICBpZiAnL3Vzci9saWInIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliJywnJHtsaWJkaXJ9JykKKyAgICBpZiAnL3Vzci9pbmNsdWRlJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2luY2x1ZGUnLCcke2luY2x1ZGVkaXJ9JykKKyAgICBpZiAnX19pbml0X18uJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSAgb3MucGF0aC5zcGxpdChkZXBfcGF0aClbMF0KKworICAgICMgSWYgYSAqLnB5YyBmaWxlIHdhcyBpbXBvcnRlZCwgd2UgcmVwbGFjZSBpdCB3aXRoICoucHkgKHNpbmNlIHdlIGRlYWwgd2l0aCBQWUNzIG9uIGNyZWF0ZV9tYW5pZmVzdCkKKyAgICBpZiAnLnB5YycgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnLnB5YycsJy5weScpCisKKyAgICByZXR1cm4gZGVwX3BhdGgKKworIyBNb2R1bGUgdG8gaW1wb3J0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQKK2N1cnJlbnRfbW9kdWxlID0gIHN0cihzeXMuYXJndlsxXSkucnN0cmlwKCkKK2lmKGRlYnVnPT1UcnVlKToKKwlsb2cgPSBvcGVuKCdsb2dfJXMnICUgY3VycmVudF9tb2R1bGUsJ3cnKQorICAgICAgICBsb2cud3JpdGUoJ01vZHVsZSAlcyBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6XG4nICUgY3VycmVudF9tb2R1bGUpCit0cnk6CisgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJyVzJyAlIGN1cnJlbnRfbW9kdWxlKQorZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgd2FzIG5vdCBmb3VuZCcpCisgICAgcGFzcworCisKKyMgR2V0IGN1cnJlbnQgbW9kdWxlIGRlcGVuZGVuY2llcywgZGlmIHdpbGwgY29udGFpbiBhIGxpc3Qgb2Ygc3BlY2lmaWMgZGVwcyBmb3IgdGhpcyBtb2R1bGUKK21vZHVsZV9kZXBzPXNldChzeXMubW9kdWxlcykKKworIyBXZSBoYW5kbGUgdGhlIGNvcmUgcGFja2FnZSAoMXN0IHBhc3Mgb24gY3JlYXRlX21hbmlmZXN0LnB5KSBhcyBhIHNwZWNpYWwgY2FzZQoraWYgY3VycmVudF9tb2R1bGUgPT0gJ3B5dGhvbi1jb3JlLXBhY2thZ2UnOgorICAgIGRpZiA9IGNvcmVfZGVwcworZWxzZToKKyAgICBkaWYgPSBtb2R1bGVfZGVwcy1jb3JlX2RlcHMKKworCisjIENoZWNrIHdoZXJlIGVhY2ggZGVwZW5kZW5jeSBjYW1lIGZyb20KK2ZvciBpdGVtIGluIGRpZjoKKyAgICBkZXBfcGF0aD0nJworICAgIHRyeToKKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZSgnQ2FsbGluZzogc3lzLm1vZHVsZXNbJyArICclcycgJSBpdGVtICsgJ10uX19maWxlX19cbicpCisgICAgICAgIGRlcF9wYXRoID0gc3lzLm1vZHVsZXNbJyVzJyAlIGl0ZW1dLl9fZmlsZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6CisgICAgICAgICMgRGVhbHMgd2l0aCB0aHJlYWQgKGJ1aWx0aW4gbW9kdWxlKSBub3QgaGF2aW5nIF9fZmlsZV9fIGF0dHJpYnV0ZQorCWlmIGRlYnVnPT1UcnVlOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0gKyAnICcpCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKQorCSAgICBsb2cud3JpdGUoJ1xuJykKKyAgICAgICAgICAgIHBhc3MKKyAgICBleGNlcHQgTmFtZUVycm9yIGFzIGU6CisgICAgICAgICMgRGVhbHMgd2l0aCBOYW1lRXJyb3I6IG5hbWUgJ2RlcF9wYXRoJyBpcyBub3QgZGVmaW5lZAorICAgICAgICAjIGJlY2F1c2UgbW9kdWxlIGlzIG5vdCBmb3VuZCAod2Fzbid0IGNvbXBpbGVkPyksIGUuZy4gYmRkc20KKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtKycgJykgCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcGFzcworCisgICAgIyBTaXRlLWN1c3RvbWl6ZSBpcyBhIHNwZWNpYWwgY2FzZSBzaW5jZSB3ZSAoT3BlbkVtYmVkZGVkKSBwdXQgaXQgdGhlcmUgbWFudWFsbHkKKyAgICBpZiAnc2l0ZWN1c3RvbWl6ZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gJyR7bGliZGlyfS9weXRob24yLjcvc2l0ZWN1c3RvbWl6ZS5weScKKyAgICAgICAgIyBQcmludHMgb3V0IHJlc3VsdCwgd2hpY2ggaXMgd2hhdCB3aWxsIGJlIHVzZWQgYnkgY3JlYXRlX21hbmlmZXN0CisgICAgICAgIHByaW50IChkZXBfcGF0aCkKKyAgICAgICAgY29udGludWUKKworICAgIGRlcF9wYXRoID0gZml4X3BhdGgoZGVwX3BhdGgpCisKKyAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICBsb2cud3JpdGUoZGVwX3BhdGgrJ1xuJykKKworICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgIHByaW50IChkZXBfcGF0aCkKKworaWYgZGVidWc9PVRydWU6CisgICAgbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAppbmRleCBmNTU2OGQyLi4xMTE2ZGQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCkBAIC0xLDExICsxLDExIEBACiBSZWJhc2VkIGZvciBweXRob24tMi43LjkKIFNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogUHl0aG9uLTIuNy4xMy9jb25maWd1cmUuYWMKK0luZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjEzL2NvbmZpZ3VyZS5hYwotQEAgLTc1OSw2ICs3NTksMTAgQEAgU3VuT1MqKQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYworQEAgLTc1OCw2ICs3NTgsMTAgQEAgU3VuT1MqKQogICAgICA7OwogIGVzYWMKICAKQEAgLTE2LDEwICsxNiwxMCBAQAogIAogIEFDX1NVQlNUKExJQlJBUlkpCiAgQUNfTVNHX0NIRUNLSU5HKExJQlJBUlkpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9JbmNsdWRlL3B5dGhvbnJ1bi5oCitJbmRleDogUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMi43LjEzL0luY2x1ZGUvcHl0aG9ucnVuLmgKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKICAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKQEAgLTI4LDEwICsyOCwxMCBAQAogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIApAQCAtNDEsMTkgKzQxLDIxIEBACiAgaWYgc3lzLnZlcnNpb24gPCAiMi4yIjoKICAgICAgV0lORE9XU19TQ0hFTUUgPSB7CiAgICAgICAgICAncHVyZWxpYic6ICckYmFzZScsCi1AQCAtNDIsNyArNDQsNyBAQCBlbHNlOgorQEAgLTQxLDggKzQzLDggQEAgZWxzZToKKyAKICBJTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgICd1bml4X3ByZWZpeCc6IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKIC0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiBAQCAtMTE5LDggKzExOSwxMSBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuCiAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKICAKQEAgLTY4LDEwICs3MCwxMCBAQAogICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgogICAgICAgICAgICAgIHJldHVybiBsaWJweXRob24KICAgICAgICAgIGVsc2U6Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvcHlkb2MucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvcHlkb2MucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9weWRvYy5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvcHlkb2MucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQogQEAgLTM3NSw3ICszNzUsNyBAQCBjbGFzcyBEb2M6CiAgICAgIGRvY21vZHVsZSA9IGRvY2NsYXNzID0gZG9jcm91dGluZSA9IGRvY290aGVyID0gZG9jcHJvcGVydHkgPSBkb2NkYXRhID0gZmFpbAogIApAQCAtODEsMTAgKzgzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIrc3lzLnZlcnNpb25bMDozXSkpOgogICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb2NhdGlvbiBvZiBtb2R1bGUgZG9jcyBvciBOb25lIiIiCiAgCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvc2l0ZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3NpdGUucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9zaXRlLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zaXRlLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQogQEAgLTI4OCwxMyArMjg4LDE4IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQpAQCAtMTA3LDEwICsxMDksMTAgQEAKICAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3N5c2NvbmZpZy5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvc3lzY29uZmlnLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zeXNjb25maWcucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9zeXNjb25maWcucHkKIEBAIC03LDEwICs3LDEwIEBAIGZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAogIAogIF9JTlNUQUxMX1NDSEVNRVMgPSB7CkBAIC0xMzksMTAgKzE0MSwxMCBAQAogICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCiAgICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3RfZGwucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9kbC5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5CiBAQCAtNCwxMCArNCwxMSBAQAogIGltcG9ydCB1bml0dGVzdAogIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKQEAgLTE1NywxMSArMTU5LDExIEBACiAgICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCiAgICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKICAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X3NpdGUucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X3NpdGUucHkKLUBAIC0yMzUsMTIgKzIzNSwxNiBAQCBjbGFzcyBIZWxwZXJGdW5jdGlvbnNUZXN0cyh1bml0dGVzdC5UZXN0CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CitAQCAtMjUyLDEyICsyNTIsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAogICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgICMgT1MgWCwgTGludXgsIEZyZWVCU0QsIGV0YwpAQCAtMTgxLDEwICsxODMsMTAgQEAKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgIyBvdGhlciBwbGF0Zm9ybXMKICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90cmFjZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3RyYWNlLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90cmFjZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5CiBAQCAtNzU0LDEwICs3NTQsMTAgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKICAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQogIApAQCAtMTk4LDExICsyMDAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQogICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQogICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKLUluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTMvTWFrZWZpbGUucHJlLmluCi1AQCAtOTIsNiArOTIsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCitAQCAtOTEsNiArOTEsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtMjEwLDcgKzIxMiw3IEBACiAgCiAgIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiAgTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTExMSw3ICsxMTIsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTExMCw3ICsxMTEsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTIxOSw3ICsyMjEsNyBAQAogIAogICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKICBCSU5MSUJERVNUPQkkKExJQkRJUikvcHl0aG9uJChWRVJTSU9OKQotQEAgLTY2OSw2ICs2NzAsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CitAQCAtNjQ1LDYgKzY0Niw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC0yMjcsOCArMjI5LDggQEAKICAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogIAogIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi1AQCAtNzA5LDcgKzcxMSw3IEBAICQoQVNUX0MpOiAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCi0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQorQEAgLTY5Myw3ICs2OTUsNyBAQCByZWdlbi1hc3Q6CisgUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCiAgCiAgUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwogLQkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0yMzYsMTAgKzIzOCwxMCBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9Nb2R1bGVzL2dldHBhdGguYwotKysrIFB5dGhvbi0yLjcuMTMvTW9kdWxlcy9nZXRwYXRoLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKKysrKyBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCiBAQCAtMTAwLDYgKzEwMCwxMyBAQAogICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKQEAgLTI2MywxMCArMjY1LDEwIEBACiAgCiAgc3RhdGljIHZvaWQKICByZWR1Y2UoY2hhciAqZGlyKQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKK0luZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy4xMy9QeXRob24vZ2V0cGxhdGZvcm0uYworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKIEBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQogIHsKICAJcmV0dXJuIFBMQVRGT1JNOwpAQCAtMjgxLDEwICsyODMsMTAgQEAKICt7CiArCXJldHVybiBMSUI7CiArfQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCi0rKysgUHl0aG9uLTIuNy4xMy9QeXRob24vc3lzbW9kdWxlLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCisrKysgUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKIEBAIC0xNDM3LDYgKzE0MzcsOCBAQCBfUHlTeXNfSW5pdCh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaAppbmRleCA5NTFjYjQ2Li5hYmFiNDFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaApAQCAtOCwxMiArOCwxMiBAQAogCiAtLS0gUHl0aG9uLTIuNy4zLm9yaWcvTWFrZWZpbGUucHJlLmluCiArKysgUHl0aG9uLTIuNy4zL01ha2VmaWxlLnByZS5pbgotQEAgLTEwMDgsNyArMTAwOCw3IEBAIExJQlBMPQkJJChMSUJQKS9jb25maWcKK0BAIC0xMTg3LDcgKzExODcsNyBAQAogIExJQlBDPQkJJChMSUJESVIpL3BrZ2NvbmZpZwotCi0gbGliYWluc3RhbGw6CWFsbCBweXRob24tY29uZmlnCisgCisgbGliYWluc3RhbGw6CUBERUZfTUFLRV9SVUxFQCBweXRob24tY29uZmlnCiAtCUBmb3IgaSBpbiAkKExJQkRJUikgJChMSUJQKSAkKExJQlBMKSAkKExJQlBDKTsgXAogKwlAZm9yIGkgaW4gJChMSUJESVIpICQoTElCUCkgJChMSUJQTCkgJChMSUJQQykgJChCSU5ESVIpOyBcCi0JZG8gXAotCQlpZiB0ZXN0ICEgLWQgJChERVNURElSKSQkaTsgdGhlbiBcCi0JCQllY2hvICJDcmVhdGluZyBkaXJlY3RvcnkgJCRpIjsgXAorIAlkbyBcCisgCQlpZiB0ZXN0ICEgLWQgJChERVNURElSKSQkaTsgdGhlbiBcCisgCQkJZWNobyAiQ3JlYXRpbmcgZGlyZWN0b3J5ICQkaSI7IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyM2U1MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsMTA0NyBAQAoreworICAgICIydG8zIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9LzJ0bzMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliMnRvMyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCisgICAgfSwKKyAgICAiYXJncGFyc2UiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FyZ3BhcnNlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIgorICAgIH0sCisgICAgImF1ZGlvIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hdWRpb2Rldi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jaHVuay5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hdWRpb29wLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NuZGhkci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdWRpby5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2FpZmYucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2F2ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBdWRpbyBIYW5kbGluZyIKKyAgICB9LAorICAgICJic2RkYiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYnNkZGIiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQmVya2VsZXkgRGF0YWJhc2UiCisgICAgfSwKKyAgICAiY29kZWNzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXR0ZXh0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfY24uc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19oay5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2lzbzIwMjIuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19qcC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2tyLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfdHcuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmdwcmVwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3hkcmxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29kZWMiCisgICAgfSwKKyAgICAiY29tcGlsZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tcGlsZWFsbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weV9jb21waWxlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29tcGlsZXIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVyIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21waWxlciBzdXBwb3J0IgorICAgIH0sCisgICAgImNvbXByZXNzaW9uIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nemlwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2J6Mi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90YXJmaWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3ppcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJjb250ZXh0bGliIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb250ZXh0bGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnRjb250ZXh0cy4iCisgICAgfSwKKyAgICAiY29yZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qIiwKKyAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbjIuNy9weWNvbmZpZyouaCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db25maWdQYXJzZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlckRpY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlckxpc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlclN0cmluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fX2Z1dHVyZV9fLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19hYmNvbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3N5c2NvbmZpZ2RhdGEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3dlYWtyZWZzZXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hdGV4aXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29kZWNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbGxlY3Rpb25zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29weV9yZWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncy91dGZfOC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZW5lcmljcGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRvcHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaGVhcHEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1wb3J0bGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2tleXdvcmQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19oZWFwcS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbG9jYWxlLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zdHJ1Y3Quc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYmluYXNjaWkuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvaXRlcnRvb2xzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29wZXJhdG9yLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3JlYWRsaW5lLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N0cm9wLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3RpbWUuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQveHJlYWRsaW5lcy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saW5lY2FjaGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbmV3LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsYXRmb3JtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Bvc2l4cGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ybGNvbXBsZXRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbXBpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbnN0YW50cy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfcGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RydWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N5c2NvbmZpZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90cmFjZWJhY2sucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2FybmluZ3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2Vha3JlZi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogW10sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgorICAgIH0sCisgICAgImNyeXB0IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9oYXNobGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19oYXNobGliLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NyeXB0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21kNS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGEucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgImN0eXBlcyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3R5cGVzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXMuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0LnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdXJzZXMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N1cnNlcyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGF0ZXRpbWUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19zdHJwdGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jYWxlbmRhci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYXRldGltZS5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FueWRibS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kYmhhc2gucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtYmRibS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYm0uc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2hpY2hkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImJzZGRiIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJnZGJtIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRlYnVnZ2VyIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iZGIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGRiLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZWJ1Z2dlciIKKyAgICB9LAorICAgICJkZXYiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLmEiLAorICAgICAgICAgICAgIiR7YmFzZV9saWJkaXJ9LyoubyIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwKKyAgICAgICAgICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubGEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcGtnY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9NYWtlZmlsZSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgorICAgIH0sCisgICAgImRpZmZsaWIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RpZmZsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiCisgICAgfSwKKyAgICAiZGlzdHV0aWxzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWciLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlzdHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiCisgICAgfSwKKyAgICAiZGlzdHV0aWxzLXN0YXRpY2RldiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgorICAgIH0sCisgICAgImRvY3Rlc3QiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RvY3Rlc3QucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidW5pdHRlc3QiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKKyAgICB9LAorICAgICJlbWFpbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW1haWwiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1hcGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJzdWJwcm9jZXNzIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IgorICAgIH0sCisgICAgImZjbnRsIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9mY250bC5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIKKyAgICB9LAorICAgICJnZGJtIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9nZGJtLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImhvdHNob3QiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hvdHNob3QiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hvdHNob3Quc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIKKyAgICB9LAorICAgICJodG1sIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9IVE1MUGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Zvcm1hdHRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odG1sZW50aXR5ZGVmcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odG1sbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21hcmt1cGJhc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2dtbGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJpZGxlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L2lkbGUiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IgorICAgIH0sCisgICAgImltYWdlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xvcnN5cy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbWdoZHIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIgorICAgIH0sCisgICAgImlvIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TdHJpbmdJTy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fcHlpby5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pby5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faW8uc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NvY2tldC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3NsLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NTdHJpbmdJTy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zZWxlY3Quc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvdGVybWlvcy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waXBlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zb2NrZXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3NsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RlbXBmaWxlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iCisgICAgfSwKKyAgICAianNvbiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvanNvbiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fanNvbi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiCisgICAgfSwKKyAgICAibGFuZyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29kZW9wLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdW5jdG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW5zcGVjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYmlzZWN0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXJyYXkuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcGFyc2VyLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wY29kZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZXByLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N5bWJvbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbml6ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJsb2dnaW5nIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2dnaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInRocmVhZGluZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJtYWlsYm94IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYWlsYm94LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIKKyAgICB9LAorICAgICJtYXRoIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fcmFuZG9tLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NtYXRoLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21hdGguc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmFuZG9tLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NldHMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1hdGggc3VwcG9ydCIKKyAgICB9LAorICAgICJtaW1lIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9NaW1lV3JpdGVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcXVvcHJpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JmYzgyMi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91dS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gTUlNRSBoYW5kbGluZyBBUElzIgorICAgIH0sCisgICAgIm1tYXAiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21tYXAuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibW9kdWxlcyI6IHsKKyAgICAgICAgImZpbGVzIjogW10sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICIydG8zIiwKKyAgICAgICAgICAgICJhcmdwYXJzZSIsCisgICAgICAgICAgICAiYXVkaW8iLAorICAgICAgICAgICAgImJzZGRiIiwKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbXBpbGUiLAorICAgICAgICAgICAgImNvbXBpbGVyIiwKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImN0eXBlcyIsCisgICAgICAgICAgICAiY3Vyc2VzIiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZGIiLAorICAgICAgICAgICAgImRlYnVnZ2VyIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJkaXN0dXRpbHMiLAorICAgICAgICAgICAgImRvY3Rlc3QiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiZ2RibSIsCisgICAgICAgICAgICAiaG90c2hvdCIsCisgICAgICAgICAgICAiaHRtbCIsCisgICAgICAgICAgICAiaWRsZSIsCisgICAgICAgICAgICAiaW1hZ2UiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJqc29uIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJtYWlsYm94IiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJtbWFwIiwKKyAgICAgICAgICAgICJtdWx0aXByb2Nlc3NpbmciLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAibmV0c2VydmVyIiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInBrZ3V0aWwiLAorICAgICAgICAgICAgInBsaXN0bGliIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInByb2ZpbGUiLAorICAgICAgICAgICAgInB5ZG9jIiwKKyAgICAgICAgICAgICJyZSIsCisgICAgICAgICAgICAicmVzb3VyY2UiLAorICAgICAgICAgICAgInJvYm90cGFyc2VyIiwKKyAgICAgICAgICAgICJydW5weSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInNtdHBkIiwKKyAgICAgICAgICAgICJzcWxpdGUzIiwKKyAgICAgICAgICAgICJzcWxpdGUzIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInN1YnByb2Nlc3MiLAorICAgICAgICAgICAgInN5c2xvZyIsCisgICAgICAgICAgICAidGVybWluYWwiLAorICAgICAgICAgICAgInRleHR1dGlscyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIiwKKyAgICAgICAgICAgICJ0a2ludGVyIiwKKyAgICAgICAgICAgICJ1bml0dGVzdCIsCisgICAgICAgICAgICAidW5peGFkbWluIiwKKyAgICAgICAgICAgICJ4bWwiLAorICAgICAgICAgICAgInhtbHJwYyIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiQWxsIFB5dGhvbiBtb2R1bGVzIgorICAgIH0sCisgICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpcHJvY2Vzc2luZy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdWx0aXByb2Nlc3NpbmciCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAic3VicHJvY2VzcyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbXVsdGlwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAibmV0Y2xpZW50IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db29raWUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX0xXUENvb2tpZUphci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fTW96aWxsYUNvb2tpZUphci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iYXNlNjQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29va2llbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Z0cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9obWFjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0dHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbm50cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3BsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc210cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZWxuZXRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXJsbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYjIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXJscGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXVpZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImN0eXBlcyIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAic3VicHJvY2VzcyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIgorICAgIH0sCisgICAgIm5ldHNlcnZlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQmFzZUhUVFBTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ0dJSFRUUFNlcnZlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVIVFRQU2VydmVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1NvY2tldFNlcnZlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jZ2kucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidGV4dHV0aWxzIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiCisgICAgfSwKKyAgICAibnVtYmVycyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGVjaW1hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mcmFjdGlvbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbnVtYmVycy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAidGhyZWFkaW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbnVtYmVyIEFQSXMiCisgICAgfSwKKyAgICAicGlja2xlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jUGlja2xlLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BpY2tsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGV0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGVsdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJwa2d1dGlsIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wa2d1dGlsLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIKKyAgICB9LAorICAgICJwbGlzdGxpYiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGxpc3RsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiCisgICAgfSwKKyAgICAicHByaW50IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcHJpbnQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IgorICAgIH0sCisgICAgInByb2ZpbGUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NQcm9maWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19sc3Byb2Yuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wc3RhdHMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBwZXJmb3JtYW5jZSBwcm9maWxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJweWRvYyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvY19kYXRhIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IgorICAgIH0sCisgICAgInJlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gUmVndWxhciBFeHByZXNzaW9uIEFQSXMiCisgICAgfSwKKyAgICAicmVzb3VyY2UiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Jlc291cmNlLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJlc291cmNlIGNvbnRyb2wgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInJvYm90cGFyc2VyIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yb2JvdHBhcnNlci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJvYm90cy50eHQgcGFyc2VyIgorICAgIH0sCisgICAgInJ1bnB5IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ydW5weS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiCisgICAgfSwKKyAgICAic2hlbGwiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NtZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21tYW5kcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXJjYWNoZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mbm1hdGNoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dsb2IucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wZW4yLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NobGV4LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NodXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAidW5peGFkbWluIiwKKyAgICAgICAgICAgICJ6bGliIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IgorICAgIH0sCisgICAgInNtdHBkIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3NtdHBkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzeW5jaGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzeW5jb3JlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIKKyAgICB9LAorICAgICJzcWxpdGUzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAic3FsaXRlMy10ZXN0cyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMy90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAidGVzdHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCisgICAgfSwKKyAgICAic3RyaW5nb2xkIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmdvbGQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgorICAgIH0sCisgICAgInN1YnByb2Nlc3MiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N1YnByb2Nlc3MucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInBpY2tsZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIKKyAgICB9LAorICAgICJzeXNsb2ciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N5c2xvZy5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInRlcm1pbmFsIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wdHkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHR5LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInRlc3RzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3RzIgorICAgIH0sCisgICAgInRleHR1dGlscyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3N2LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jc3Yuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvb3B0cGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGV4dHdyYXAucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gb3B0aW9uIHBhcnNpbiIKKyAgICB9LAorICAgICJ0aHJlYWRpbmciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1F1ZXVlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L190aHJlYWRpbmdfbG9jYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZGluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdXRleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90aHJlYWRpbmcucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAidGtpbnRlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLXRrIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKKyAgICB9LAorICAgICJ1bml0dGVzdCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdW5pdHRlc3QiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJzaGVsbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCisgICAgfSwKKyAgICAidW5peGFkbWluIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRwYXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2dycC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9uaXMuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWwiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9weWV4cGF0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3htbCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWxycGMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0RvY1hNTFJQQ1NlcnZlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVYTUxSUENTZXJ2ZXIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJuZXRzZXJ2ZXIiLAorICAgICAgICAgICAgInBrZ3V0aWwiLAorICAgICAgICAgICAgInB5ZG9jIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAieG1sIiwKKyAgICAgICAgICAgICJ6bGliIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgorICAgIH0sCisgICAgInpsaWIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3psaWIuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gemxpYiBjb21wcmVzc2lvbiBzdXBwb3J0IgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkKaW5kZXggMjczOTAxOC4uNGM4YjVlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkKQEAgLTI3LDE5ICsyNywxMSBAQAogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICBwYXNzCiAKLWRlZiBfX2VuYWJsZURlZmF1bHRFbmNvZGluZygpOgotICAgIGltcG9ydCBzeXMKLSAgICB0cnk6Ci0gICAgICAgIHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoICJ1dGY4IiApCi0gICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICBwYXNzCi0KIGltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgcmxjb21wbGV0ZXIsIHJlYWRsaW5lCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgcGFzcwogZWxzZToKLSAgICBfX2VuYWJsZURlZmF1bHRFbmNvZGluZygpCiAgICAgX19yZWdpc3RlckV4aXRIYW5kbGVyKCkKICAgICBfX2VuYWJsZVJlYWRsaW5lU3VwcG9ydCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jXzAuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYgppbmRleCA1NGEzMGY1Li4wZGE1ZmRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jXzAuNi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmNfMC42LjIuYmIKQEAgLTEsNiArMSwyIEBACi1yZXF1aXJlIHB5dGhvbi1hc3luYy5pbmMKLQogaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy1sYW5nIgotCityZXF1aXJlIHB5dGhvbi1hc3luYy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU1YTAxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGI4MzA0N2NlOWU5NDhiNjdjMGZhY2M1ZjIzMzQ3NmEiCi1ERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczNzJhNTg4YzgzYTcyMzJiNGUwODE1OWJmZDQ4ZmU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyZjFkNjg3MWY3NGZiYTIzNjUyZTUxZDEwODczZTU0ZjcxYWRhYjA1MjU4MzNjMTliYWQ5ZTk5YjFiMmY5Y2MiCi1TID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2NzXSA9ICItLWVuYWJsZS1odG1sLWRvY3MsLS1kaXNhYmxlLWh0bWwtZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbYXBpLWRvY3NdID0gIi0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1hcGktZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBweXRob24zLWVweWRvYy1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTljYmFlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCitERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKKyIKKworUlNSQ19VUklbbWQ1c3VtXSA9ICIxY2UxZGRmMjU4MjA2MGY4Zjk3MTY1MmVhNTRjYzE3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMmYyOWMxNzE3MmNkYjljYjYxYzY4YjFmMWE3MWRmZTczNTE1MDZmYzgzMDg2OTAyOWM0NzQ0OWJkMDRmYWViIgorUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjMmEwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZ2l0LmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtZ2l0ZGIiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZ2l0ZGIgcHl0aG9uMy1sYW5nIHB5dGhvbjMtaW8gcHl0aG9uMy1zaGVsbCBweXRob24zLW1hdGggcHl0aG9uMy1yZSBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy11bml4YWRtaW4gcHl0aG9uMy1lbnVtIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1hcmdwYXJzZSBnaXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMzIwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWdpdC5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMC42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGQ5ZDQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMC42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdGRiLmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtYXN5bmMgcHl0aG9uMy1zbW1hcCIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNtbWFwIHB5dGhvbjMtYXN5bmMgcHl0aG9uMy1tbWFwIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1jcnlwdCBweXRob24zLWNvbXByZXNzaW9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxNTgzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbmlwYXJzZV8wLjQuYmIKaW5kZXggZjUxY2U2NC4uNGViYTllYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbmlwYXJzZV8wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbmlwYXJzZV8wLjQuYmIKQEAgLTQsMTcgKzQsMTQgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtUFNGO21kNT0xYzc4YTViYjM1ODRiMzUzNDk2ZDVmNmYzNGVkYjRiMiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT01MmYyODA2NWFmMTFkNjkzODI2OTNiNDViNWE4ZWI1NCIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL2kvaW5pcGFyc2UvaW5pcGFyc2UtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXB5dGhvbi0zLWNvbXBhdGliaWxpdHkucGF0Y2ggIgorU1JDX1VSSSA9ICJmaWxlOi8vMDAwMS1BZGQtcHl0aG9uLTMtY29tcGF0aWJpbGl0eS5wYXRjaCAiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ZTU3M2U5ZTk3MzNkOTc2MjM4ODFjZTliYmU1ZWNhNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmMxZWUxMmQyY2ZiMjUwNjEwOTA3MmQ2YzIxZTQwYjZjNzVhM2ZlOTBhOWM5MjQzMjdkODBiYzBkOTljMDU0IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvaW5pcGFyc2UvIgogCi1pbmhlcml0IGRpc3R1dGlsczMKK2luaGVyaXQgcHlwaSBkaXN0dXRpbHMzCiAKIFJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1zaXgiCiBERVBFTkRTICs9ICJweXRob24zLXNpeCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TID0gIiR7V09SS0RJUn0vaW5pcGFyc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIKaW5kZXggMmI1MGZmZC4uMjJjZWVlYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNy5iYgpAQCAtMSwxMSArMSwyIEBACi1yZXF1aXJlIHB5dGhvbi1tYWtvLmluYwotCiBpbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtaHRtbCBcCi0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCityZXF1aXJlIHB5dGhvbi1tYWtvLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNkOWM4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLWZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi1maWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi1maWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0ke0RJU1RST19TUkNfVVJJfSBcCi1maWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLWZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCi1maWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU3ZDFmOGJmYmFiZjRmMjUwMDI3M2ZiMDcwNmU2ZjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlZmUyYWQ2NTc1ODU1NDIzYWI2MzBmNWI1MWE4ZWY2ZTU1NTZmNzc0NTg0YzA2YmVhYjQ5MjZmOTMwZGRiYjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ODBlZDk5YWE2MGQzNTBjNjVhNjU5MTQ0OTQyMDdlIgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIgotCi1pbmhlcml0IG5hdGl2ZQotCi1yZXF1aXJlIHB5dGhvbi1uYXRpdmUtJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyB1bmluYXRpdmUgbWF5IGJlIHVzZWQgb24gcHJlIGdsaWJjIDIuMjUgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGdldGVudHJvcHkKLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIGFjX2N2X2Z1bmNfZ2V0ZW50cm9weT1ubyIKLQotRVhUUkFfT0VNQUtFID0gJ1wKLSAgTElCQz0iIiBcCi0gIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCi0gIExJQj0ke2Jhc2VsaWJ9IFwKLSAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0nCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLQlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBUZXN0cyBhcmUgbGFyZ2UgYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QKLQlybSAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVzdCAtcmYKLX0KLQotUlBST1ZJREVTICs9ICJweXRob24zLW1pc2MtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDk4MDI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIKQEAgLTAsMCArMSwxMTIgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitQUiA9ICIke0lOQ19QUn0uMCIKK1BZVEhPTl9NQUpNSU4gPSAiMy41IgorRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKK2ZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCitmaWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCitmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCitmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKK2ZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAorZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKK2ZpbGU6Ly9yZWdlbi1hbGwucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjM3NjNlZGY5ODI0ZDVkM2ExNWY1ZjY0NjA4M2I2ZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYzZDJjM2IwNDAyZDYxOTFiOTA3MzFlMGY3MzVjNjQ4MzBlNzUyMjM0OGFlYjdlZDM4MmE4MzE2NWQ0NTAwOSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUgZ2RibS1uYXRpdmUiCisKK2luaGVyaXQgbmF0aXZlCisKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIgorCitFWFRSQV9PRU1BS0UgPSAnXAorICBMSUJDPSIiIFwKKyAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKKyAgTElCPSR7YmFzZWxpYn0gXAorICBBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKycKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorCXNlZCAtaSAtZSAncywjZGVmaW5lIEhBVkVfR0VUUkFORE9NIDEsL1wqICN1bmRlZiBIQVZFX0dFVFJBTkRPTSBcKi8sJyAke0J9L3B5Y29uZmlnLmgKK30KKworIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCisjIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCisjCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBBc3N1bWluZyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDgwIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiBNYWtlZmlsZS4KKyAgICBvZV9ydW5tYWtlIHJlZ2VuLWFsbAorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59CisJaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KKworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisJZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbworCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAorCWRvbmUKKworICAgICAgICAjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQorICAgICAgICAjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKKyAgICAgICAgIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCisgICAgICAgICMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KKyAgICAgICAgbG4gLXMgcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbjMKK30KKworcHl0aG9uKCl7CisKKyAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAorICAgIGltcG9ydCBqc29uCisgICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInLFRydWUpCisgICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQorCisgICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKKworICAgICMgSGFyZGNvZGVkIHNpbmNlIGl0IGNhbnQgYmUgcHl0aG9uMy1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uMy1mb28tbmF0aXZlCisgICAgcG4gPSAncHl0aG9uMycKKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKKyAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICBkLnNldFZhcignUlBST1ZJREVTJywgJyAnLmpvaW4ocnByb3ZpZGVzKSkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgppbmRleCAxZTJmZjc0Li44YmMxZjQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCkBAIC0xLDI4ICsxLDYgQEAKLVNVTU1BUlkgPSAiRXh0ZW5kcyBQeXRob24gdW5pdHRlc3QgdG8gbWFrZSB0ZXN0aW5nIGVhc2llciIKLURFU0NSSVBUSU9OID0gIm5vc2UgZXh0ZW5kcyB0aGUgdGVzdCBsb2FkaW5nIGFuZCBydW5uaW5nIGZlYXR1cmVzIG9mIHVuaXR0ZXN0LCBcCi1tYWtpbmcgaXQgZWFzaWVyIHRvIHdyaXRlLCBmaW5kIGFuZCBydW4gdGVzdHMuIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGdwbC50eHQ7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvbi9ub3NlL25vc2UtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGQzYWQwZmYwN2I2MTM3M2QyY2VmYzg5YzVkMGIyMGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjFiZmZlZjljYmM4MjYyOGY2ZTdkN2I0MGQ3ZTI1NWFlZmFhMWFkYjZhMWIxZDI2YzY5YThiNzllNjIwOGE5OCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbm9zZS8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbm9zZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9ub3NlLSR7UFZ9IgotCiBpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1ub3NlLmluYwogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBtdiAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0cyAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0czMKIH0KLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKLSAgcHl0aG9uMy11bml0dGVzdCBcCi0gICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI5MDdhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCi1zSE9NRVBBR0Vzc3MgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTI1ZmJhNDUxMDk1NjVmODdkZTIwYmFlODViYzM5NDUyIgotCi1TUkNOQU1FID0gInBpcCIKLURFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM1ZjAxZGEzMzAwOTcxOTQ5N2YwMWE0YmE2OWQ2M2M5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ZjI0M2UxYTdiNDYxZjY1NGMyNmE3MjVmYTM3MzIxMWJiN2ZmMTdhOTMwMDA1OGIyMDVjNjE2NThjYTk0MGQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci19Ci0KLSMgVXNlIHNldHVwdG9vbHMgc2l0ZS5weSBpbnN0ZWFkLCBhdm9pZCBzaGFyZWQgc3RhdGUgaXNzdWUKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaXRlLnB5Ci0gICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L19fcHljYWNoZV9fL3NpdGUuY3B5dGhvbi0qLnB5YwotCi0gICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAotICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAotCi0gICAgIyBJbnN0YWxsZWQgZWdncyBuZWVkIHRvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgaW50ZXJwcmV0ZXIgdmlhIGEgcHRoIGZpbGUKLSAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke1NSQ05BTUV9LSR7UFZ9LnB0aAotCi0gICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24zCi0gICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0gJHtEfSR7YmluZGlyfS9waXAzKmA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0gICAgZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY29tcGlsZSBcCi0gIHB5dGhvbjMtaW8gXAotICBweXRob24zLWVudW0gXAotICBweXRob24zLWh0bWwgXAotICBweXRob24zLWpzb24gXAotICBweXRob24zLW5ldHNlcnZlciBcCi0gIHB5dGhvbjMtc2V0dXB0b29scyBcCi0gIHB5dGhvbjMtdW5peGFkbWluIFwKLSAgcHl0aG9uMy14bWxycGMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZmQ2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMi5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTI1ZmJhNDUxMDk1NjVmODdkZTIwYmFlODViYzM5NDUyIgorCitERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZmRkZDY4MDQyMjMyNmI5ZDFmYmY1NjExMmNmMzQxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODExMGEyMjRlOWQzMGU1ZDc2NTkyYTBiMjEzMGVmMTBlN2U2N2E2NDI2ZTg2MTdiYjkxOGZmZmJmZTkxZmU1IgorCitpbmhlcml0IHB5cGkgZGlzdHV0aWxzMworCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Cit9CisKKyMgVXNlIHNldHVwdG9vbHMgc2l0ZS5weSBpbnN0ZWFkLCBhdm9pZCBzaGFyZWQgc3RhdGUgaXNzdWUKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaXRlLnB5CisgICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L19fcHljYWNoZV9fL3NpdGUuY3B5dGhvbi0qLnB5YworCisgICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAorICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAorCisgICAgIyBJbnN0YWxsZWQgZWdncyBuZWVkIHRvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgaW50ZXJwcmV0ZXIgdmlhIGEgcHRoIGZpbGUKKyAgICBlY2hvICIuLyR7UFlQSV9QQUNLQUdFfS0ke1BWfS1weSR7UFlUSE9OX0JBU0VWRVJTSU9OfS5lZ2ciID4gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyR7UFlQSV9QQUNLQUdFfS0ke1BWfS5wdGgKKworICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9ICR7RH0ke2JpbmRpcn0vcGlwMypgOyBkbworICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAorICAgIGRvbmUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24zLWNvbXBpbGUgXAorICBweXRob24zLWlvIFwKKyAgcHl0aG9uMy1odG1sIFwKKyAgcHl0aG9uMy1qc29uIFwKKyAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAorICBweXRob24zLXNldHVwdG9vbHMgXAorICBweXRob24zLXVuaXhhZG1pbiBcCisgIHB5dGhvbjMteG1scnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNThiYTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fpcm8gY2FudmFzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcHljYWlybyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJweXRob24tZGV2ZWwiCi1MSUNFTlNFID0gIkxHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotIyBjYWlybyA+PSAxLjguOAotREVQRU5EUyA9ICJjYWlybyIKLVBSID0gInIyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9yZWxlYXNlcy9weWNhaXJvLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNmZkM2YyZjFlNmE3MmUwZGIwODY4YzQ5ODU2NjljNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YWE0MDc4ZTdlYjViZTU4M2FlYWJiZThkODcxNzI3OTc3MTdmOTVlOGM0MzM4ZjBkNGExN2I2ODNhNzI1M2JlIgotCi1TID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzIHBrZ2NvbmZpZwotCi1DRkxBR1MgKz0gIi1mUElDIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9fY29uZmlndXJlKCkgewotCVBZVEhPTj0ke1BZVEhPTn0gLi93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7RH0ke3ByZWZpeH0gLS1saWJkaXI9JHtEfSR7bGliZGlyfQotfQotCi1kb19jb21waWxlKCkgewotCS4vd2FmIGJ1aWxkICR7UEFSQUxMRUxfTUFLRX0KLX0KLQotZG9faW5zdGFsbCgpIHsKLQkuL3dhZiBpbnN0YWxsCi0Jc2VkIFwKLQkJLWUgJ3M6QHByZWZpeEA6JHtwcmVmaXh9OicgXAotCQktZSAnczpAVkVSU0lPTkA6JHtQVn06JyBcCi0JCS1lICdzOkBpbmNsdWRlZGlyQDoke2luY2x1ZGVkaXJ9OicgXAotCQlweTNjYWlyby5wYy5pbiA+IHB5M2NhaXJvLnBjCi0JaW5zdGFsbCAtbSAwNjQ0IHB5M2NhaXJvLnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE1LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzZTFlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE1LjYuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBDYWlybyBjYW52YXMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9weWNhaXJvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gInB5dGhvbi1kZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBNUEx2MS4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjJlMDcxYWI3Mjk3ODQzMWIyOTRhMGQ2OTYzMjc0MjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1MR1BMLTIuMTttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1NUEwtMS4xO21kNT1iZmUxZjc1ZDYwNjkxMmE0MTExYzkwNzQzZDZjNzMyNSIKKworIyBjYWlybyA+PSAxLjE0CitERVBFTkRTID0gImNhaXJvIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vcHljYWlyby0ke1BWfS50YXIuZ3oiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Z29iamVjdC9weWNhaXJvL3JlbGVhc2VzLyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNmZjIxMGMzNGU3YjA1MjU5MGUxNWZkMGZiMTQ3NzY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFkMTUwZWE2Mzc4NjA4MzZiNjY3MDVlMDUxM2I4ZTU5NDk0NTM4ZjBiODA0OTdhZDM0NjIwNTEzNjg3NTUwMTYiCisKK1MgPSAiJHtXT1JLRElSfS9weWNhaXJvLSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzIHBrZ2NvbmZpZworCitDRkxBR1MgKz0gIi1mUElDIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9weWNhaXJvLworICAgIGluc3RhbGwgLW0gMDY0NCAke0R9JHtkYXRhZGlyfS9pbmNsdWRlL3B5Y2Fpcm8vcHkzY2Fpcm8uaCAke0R9JHtpbmNsdWRlZGlyfS9weWNhaXJvLworfQorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaW5jbHVkZS9weWNhaXJvL3B5M2NhaXJvLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWVkYjU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAyMDYzNjA3NDRjZWRmZjIwZWFlM2M4ZmNmZGU5OTM4ZmRhZTk5NTkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMTo0NzoyMSArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IERvbid0IHVzZSBnbm9tZS1jb21tb24gbWFjcm9zCi0KLXJlbW92ZSBHTk9NRV9DT01QSUxFX1dBUk5JTkdTKCkgY2FsbDogaXQncyBmcm9tIGdub21lLWNvbW1vbiB3aGljaAotaXMgZGVwcmVjYXRlZC4KLQotVGhpcyBwYXRjaCBjYW4gYmUgcmVtb3ZlZCB3aGVuIHVwZ3JhZGluZyB0byAzLjI1LjE6IGF0IHRoYXQgcG9pbnQKLXB5Z29iamVjdCBuZWVkcyBhdXRvY29uZi1hcmNoaXZlIGluc3RlYWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQWxyZWFkeSBoYW5kbGVkIHVwc3RyZWFtXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWYxNWIzYy4uNWNiMTcwZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjIxLDggKzIyMSw2IEBAIEFDX0FSR19XSVRIKGNvbW1vbiwKLSAgICAgd2l0aF9jb21tb249eWVzKQotIEFNX0NPTkRJVElPTkFMKFdJVEhfQ09NTU9OLCB0ZXN0ICIkd2l0aF9jb21tb24iID0gInllcyIpCi0gCi0tIyBjb21waWxlciB3YXJuaW5ncywgZXJyb3JzLCByZXF1aXJlZCBjZmxhZ3MsIGFuZCBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKLS1HTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSwgWy1Xbm8tZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdub21lIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCkKLSBtNF9pZmRlZihbR05PTUVfQ09ERV9DT1ZFUkFHRV0sCi0gICAgICAgICAgW0FDX01TR19SRVNVTFQoeWVzKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOTFmN2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA1ZTUzNTBkNzMwZjg1OTU3YTQyYzZkODQ2ZDM0N2QwODBlN2RkOTk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIzIE9jdCAyMDE1IDEyOjQwOjM0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIHN5c3Jvb3QgcGF0aCB0byBHSV9EQVRBRElSOyBkb24ndCBzZXQKLSBpbnRyb3NwZWN0aW9uIHNjYW5uZXIgYW5kIGNvbXBpbGVyIHBhdGhzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDggKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjMGNmYmQuLmNmY2IzYmYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5NCw3ICsxOTQsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHSSwKLSAgICAgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSBpbnRyb3NwZWN0aW9uX3JlcXVpcmVkX3ZlcnNpb24KLSApCi0gCi0tR0lfREFUQURJUj0kKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lkYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApCi0rR0lfREFUQURJUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUiQoJFBLR19DT05GSUcgLS12YXJpYWJsZT1naWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkKLSBBQ19TVUJTVChHSV9EQVRBRElSKQotIAotIGlmIHRlc3QgIiRlbmFibGVfY2Fpcm8iICE9IG5vOyB0aGVuCi1AQCAtMjE5LDEyICsyMTksNiBAQCBBQ19BUkdfV0lUSChjb21tb24sCi0gICAgIHdpdGhfY29tbW9uPXllcykKLSBBTV9DT05ESVRJT05BTChXSVRIX0NPTU1PTiwgdGVzdCAiJHdpdGhfY29tbW9uIiA9ICJ5ZXMiKQotIAotLUlOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS1JTlRST1NQRUNUSU9OX0NPTVBJTEVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0KLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKLS0KLSAjIGNvbXBpbGVyIHdhcm5pbmdzLCBlcnJvcnMsIHJlcXVpcmVkIGNmbGFncywgYW5kIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydAotIEdOT01FX0NPTVBJTEVfV0FSTklOR1MoW21heGltdW1dKQotIEFDX01TR19DSEVDS0lORyhmb3IgR25vbWUgY29kZSBjb3ZlcmFnZSBzdXBwb3J0KQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTBhZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCi0KLVNSQ05BTUU9InB5Z29iamVjdCIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OWE4NDMzMTFkMGYwMzg1ZGZmMzc2ZTExYTJkODNkMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjI4YTk1YWEwOTA5ZTEzZmIwODIzMGIxYjk4ZmM0OGFkZWYxMGIyMjA5MzJmNzZkNjJmNjgyMWIzZmRiZmZkIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCBbICdkaXJlY3RmYicsICd3YXlsYW5kJywgJ3gxMScgXSwgJ2NhaXJvJywgJycsIGQpfSIKLQotIyBweXRob24zLXB5Y2Fpcm8gaXMgY2hlY2tlZCBvbiBjb25maWd1cmF0aW9uIC0+IERFUEVORFMKLSMgd2UgZG9uJ3QgbGluayBhZ2FpbnN0IHB5dGhvbjMtcHljYWlybyAtPiBSREVQRU5EUwotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIHB5dGhvbjMtcHljYWlybywgcHl0aG9uMy1weWNhaXJvIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zZXR1cHRvb2xzIHB5dGhvbjMtaW1wb3J0bGliIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzI4NmY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZGlzdHV0aWxzMy1iYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyArPSAicHl0aG9uMyBnbGliLTIuMCIKKworU1JDTkFNRT0icHlnb2JqZWN0IgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MTJlOWUyODYzZDExN2Q4MTBlNzg2NzJmN2JjM2FkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjMxMmI0YTUwMTU1NzFmYTBhNGYyZDIwMTAwNWRhNDZiNzFjMjUxZWEyNjI1YmM5NTcwMmQwNzFjNGZmODk1IgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCisKKyMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCisjIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdiY2E5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotREVQRU5EUyArPSAicHl0aG9uMyIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstcHl0aG9uMyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKLX0KLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICBweXRob24zLWNvbXByZXNzaW9uIFwKLSIKLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jdHlwZXMgXAotICBweXRob24zLWRpc3R1dGlscyBcCi0gIHB5dGhvbjMtZW1haWwgXAotICBweXRob24zLWltcG9ydGxpYiBcCi0gIHB5dGhvbjMtbnVtYmVycyBcCi0gIHB5dGhvbjMtY29tcHJlc3Npb24gXAotICBweXRob24zLXNoZWxsIFwKLSAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgcHl0aG9uMy10ZXh0dXRpbHMgXAotICBweXRob24zLXBrZ3V0aWwgXAotICBweXRob24zLXRocmVhZGluZyBcCi0gIHB5dGhvbjMtbWlzYyBcCi0gIHB5dGhvbjMtdW5pdHRlc3QgXAotICBweXRob24zLXhtbCBcCi0iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzkuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGMxZWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG12ICR7RH0ke2JpbmRpcn0vZWFzeV9pbnN0YWxsICR7RH0ke2JpbmRpcn0vZWFzeTNfaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGE0N2I3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2l4LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1pbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Nzk1MzEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc2l4LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKaW5kZXggOWY4YTI2ZC4uZTg3YjhkZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYgpAQCAtMSw1ICsxLDIgQEAKLXJlcXVpcmUgcHl0aG9uLXNtbWFwLmluYwotCiBpbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvZGVjcyBweXRob24zLW1tYXAgcHl0aG9uMy1sYW5nIgorcmVxdWlyZSBweXRob24tc21tYXAuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAppbmRleCAxMThkNzVkLi43Y2Q3ZTNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYyNGMwMjlhYmNjNzNjNzI0MDIwY2NlYTlhMmI0YjViNWMwMGYyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjZGUzZWExNzA5OTlhOWVmNzM0ZThhZjRkN2MyNWJlNWJhODE2OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0CkBAIC04LDYwICs4LDYzIEBACiAKIC1LaGVtCiAKK1JlYmFzZWQgb24gMy41LjQKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CiAtLS0KICBNYWtlZmlsZS5wcmUuaW4gfCAxNCArKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLWluZGV4IGE4OGI3ZDUuLjdjYjhiYjMgMTAwNjQ0CitpbmRleCAxNDRjMWY4NjI5Li5mMjUyYWMyNDE3IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUucHJlLmluCiArKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yMjEsNiArMjIxLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACi0gCitAQCAtMjIzLDYgKzIyMyw3IEBAIExJQk9CSlM9CUBMSUJPQkpTQAorCiAgUFlUSE9OPQkJcHl0aG9uJChFWEUpCiAgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiArSE9TVFBZVEhPTj0gICAgJChCVUlMRFBZVEhPTikKLSAKLSBQWVRIT05fRk9SX0dFTj1AUFlUSE9OX0ZPUl9HRU5ACisKKyBQWVRIT05fRk9SX1JFR0VOPUBQWVRIT05fRk9SX1JFR0VOQAogIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjgwLDYgKzI4MSw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACitAQCAtMjc3LDYgKzI3OCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIFBhcnNlcgogIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCisKICBQU1JDUz0JCVwKICAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTUxMCw3ICs1MTIsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKLSAKK0BAIC00NzgsNyArNDgwLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CisKICBydW5fcHJvZmlsZV90YXNrOgogIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAogLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQogKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQotIAorCiAgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CiAgCSQoTExWTV9QUk9GX01FUkdFUikKLUBAIC03ODcsNyArNzg5LDcgQEAgJChJT19PQkpTKTogJChJT19IKQotIAotICQoR1JBTU1BUl9IKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKK0BAIC03NzIsNyArNzc0LDcgQEAgcmVnZW4tZ3JhbW1hcjogJChQR0VOKQorIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYworIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KICAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotKwkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSAkKEdSQU1NQVJfQyk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0gpCi0gCXRvdWNoICQoR1JBTU1BUl9DKQotIAotQEAgLTk3Niw3ICs5NzgsNyBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKKy0JJChQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKysJJChIT1NUUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCisgCQkkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oIFwKKyAJCSQoc3JjZGlyKS9QeXRob24vZ3JhbWluaXQuYworCitAQCAtOTc4LDcgKzk4MCw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKKwogIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiAtVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKICtURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CiAgVEVTVFRJTUVPVVQ9CTM2MDAKLSAKLUBAIC0xNDY4LDcgKzE0NzAsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKKworQEAgLTE0NzAsNyArMTQ3Miw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQogIAkJZmk7IFwKICAJZG9uZQogIAkkKExOKSAtZnNuIGluY2x1ZGUvcHl0aG9uJChMRFZFUlNJT04pICQoREVTVERJUikkKHByZWZpeCkvSGVhZGVycwpAQCAtNzAsMjQgKzczLDI0IEBACiAgCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50CiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKLUBAIC0xNTM0LDcgKzE1MzYsNyBAQCBjb25maWcuc3RhdHVzOgkkKHNyY2RpcikvY29uZmlndXJlCi0gCitAQCAtMTU0Myw3ICsxNTQ1LDcgQEAgUHl0aG9uL2R0b2EubzogUHl0aG9uL2R0b2EuYworCiAgIyBSdW4gcmVpbmRlbnQgb24gdGhlIGxpYnJhcnkKICByZWluZGVudDoKIC0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCiArCSQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotIAorCiAgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAogICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cwotQEAgLTE2NzQsNyArMTY3Niw3IEBAIGZ1bm55OgotIAorQEAgLTE2NzgsNyArMTY4MCw3IEBAIGZ1bm55OgorCiAgIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi0gcGF0Y2hjaGVjazogYWxsCisgcGF0Y2hjaGVjazogQERFRl9NQUtFX1JVTEVACiAtCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSsJJChSVU5TSEFSRUQpIC4vJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0gCisrCSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKKwogICMgRGVwZW5kZW5jaWVzCi0gCi0tLSAKKworLS0KIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCmluZGV4IDc4OTkyOWIuLmY5OTcxYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCkBAIC04LDkgKzgsMTEgQEAKICBNYWtlZmlsZS5wcmUuaW4gfCAgICA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTMwNiw4ICsxMzA2LDggQEAgdG91Y2g6CitJbmRleDogUHl0aG9uLTMuNS4zL01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuMy9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNTc0LDggKzE1NzQsOCBAQCB0b3VjaDoKICAjIFNhbml0YXRpb24gdGFyZ2V0cyAtLSBjbGVhbiBsZWF2ZXMgbGlicmFyaWVzLCBleGVjdXRhYmxlcyBhbmQgdGFncwogICMgZmlsZXMsIHdoaWNoIGNsb2JiZXIgcmVtb3ZlcyBhcyB3ZWxsCiAgcHljcmVtb3ZhbDoKQEAgLTIxLDcgKzIzLDcgQEAKICAKICBybXRlc3R0dXJkczoKICAJLXJtIC1mICpCQUQgKkdPT0QgKlNLSVBQRUQKLUBAIC0xMzIxLDkgKzEzMjEsOSBAQCBkb2NjbGVhbjoKK0BAIC0xNTg5LDkgKzE1ODksOSBAQCBkb2NjbGVhbjoKICAJLXJtIC1yZiBEb2MvdG9vbHMvc3BoaW54IERvYy90b29scy9weWdtZW50cyBEb2MvdG9vbHMvZG9jdXRpbHMKICAKICBjbGVhbjogcHljcmVtb3ZhbApAQCAtMzIsNSArMzQsNSBAQAogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc28uWzAtOV0qLlswLTldKicgLWV4ZWMgcm0gLWYge30gJzsnCiAgCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5oJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQotIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCi0gCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHlbY29dJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjE3YzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gNjJkY2YzNDk4N2I2ODBlOTU4NzNlYjk0N2IzZjRkODAyMTk5YzY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89QzU9ODF1a2Fzej0yMExhbmdhPz0gPGx1a2FzekBsYW5nYS5wbD4KLURhdGU6IEZyaSwgMTAgRmViIDIwMTcgMDA6MTQ6NTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMyOTUxOTogd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycAotIGZpbmFsaXphdGlvbgotCi1jb21taXQgOWNkN2UxNzY0MGE0OTYzNWQxYzFmOGMyOTg5NTc4YThmYzJjMWRlNgotZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMdWthc3ogTGFuZ2EgPGx1a2FzekBsYW5nYS5wbD4KLS0tLQotIExpYi93ZWFrcmVmLnB5IHwgNCArKy0tCi0gTWlzYy9ORVdTICAgICAgfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTGliL3dlYWtyZWYucHkgYi9MaWIvd2Vha3JlZi5weQotaW5kZXggYWFlYmQwYy4uNzg3ZTMzYSAxMDA2NDQKLS0tLSBhL0xpYi93ZWFrcmVmLnB5Ci0rKysgYi9MaWIvd2Vha3JlZi5weQotQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgIHNlbGYsICphcmdzID0gYXJncwotICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGF0IG1vc3QgMSBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4oYXJncykpCi0tICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSk6Ci0rICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSwgX2F0b21pY19yZW1vdmFsPV9yZW1vdmVfZGVhZF93ZWFrcmVmKToKLSAgICAgICAgICAgICBzZWxmID0gc2VsZnJlZigpCi0gICAgICAgICAgICAgaWYgc2VsZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgotQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICMgQXRvbWljIHJlbW92YWwgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoaXMgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSB0aGUgR0MKLS0gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVfZGVhZF93ZWFrcmVmKGQsIHdyLmtleSkKLSsgICAgICAgICAgICAgICAgICAgIF9hdG9taWNfcmVtb3ZhbChkLCB3ci5rZXkpCi0gICAgICAgICBzZWxmLl9yZW1vdmUgPSByZW1vdmUKLSAgICAgICAgICMgQSBsaXN0IG9mIGtleXMgdG8gYmUgcmVtb3ZlZAotICAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscyA9IFtdCi1kaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCi1pbmRleCA0MWNmZGJhLi42ZDg5ZjUyIDEwMDY0NAotLS0tIGEvTWlzYy9ORVdTCi0rKysgYi9NaXNjL05FV1MKLUBAIC01NzE5LDYgKzU3MTksOSBAQCBDb3JlIGFuZCBCdWlsdGlucwotIExpYnJhcnkKLSAtLS0tLS0tCi0gCi0rLSBJc3N1ZSAjMjk1MTk6IEZpeCB3ZWFrcmVmIHNwZXdpbmcgZXhjZXB0aW9ucyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24KLSsgIHdoZW4gdXNlZCB3aXRoIGEgcmFyZSBjb21iaW5hdGlvbiBvZiBtdWx0aXByb2Nlc3NpbmcgYW5kIGN1c3RvbSBjb2RlY3MuCi0rCi0gLSBJc3N1ZSAjMjAxNTQ6IERlYWRsb2NrIGluIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5KCkuCi0gCi0gLSBJc3N1ZSAjMTYxMTM6IFJlbW92ZSBzaGEzIG1vZHVsZSBhZ2Fpbi4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAppbmRleCAzMzQ3MzIxLi5hM2NjNDhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApAQCAtNywxMyArNywxNiBAQAogQWxzbyBzaW1wbHkgZGlzYWJsZSB0aGUgdGsgbW9kdWxlIHNpbmNlIGl0cyBub3QgaW4gREVQRU5EUy4KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQorSW5kZXg6IFB5dGhvbi0zLjUuMy9zZXR1cC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTg6MzguNTAwMTM2NjQ3ICswMzAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTk6MzUuODg4MTM0OTY5ICswMzAwCi1AQCAtMTYzNCw4ICsxNjM0LDEwIEBACistLS0gUHl0aG9uLTMuNS4zLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjMvc2V0dXAucHkKK0BAIC0xNTU4LDEwICsxNTU4LDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKKyAKICAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLSAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCisrICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQogIAogLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgogLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCkBAIC0yMiwxOCArMjUsNSBAQAogKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKICsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKICAKLSAgICAgICAgIHJldHVybiBtaXNzaW5nCi0gCi1kaWZmIC0tZ2l0IFB5dGhvbi0zLjUuMS5vcmlnL3NldHVwLnB5IFB5dGhvbi0zLjUuMS9zZXR1cC5weQotaW5kZXggYjQ2MzNiOS4uZDc1ODhjMCAxMDA2NDQKLS0tLSBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0zLjUuMS9zZXR1cC5weQotQEAgLTE1MzYsNyArMTUzNiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKLSAKLSAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLS0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSAKLSAgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0gICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCisgIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYworICMjICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTQ0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKQEAgLTAsMCArMSwzNTQgQEAKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCBhcyBhIGJpdGJha2UgdGFzayB0byBjcmVhdGUgYSBuZXcgcHl0aG9uIG1hbmlmZXN0CisjICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CisjCisjIE91ciBnb2FsIGlzIHRvIGtlZXAgcHl0aG9uLWNvcmUgYXMgc21hbGwgYXMgcG9zaWJsZSBhbmQgYWRkIG90aGVyIHB5dGhvbgorIyBwYWNrYWdlcyBvbmx5IHdoZW4gdGhlIHVzZXIgbmVlZHMgdGhlbSwgaGVuY2Ugd2h5IHdlIHNwbGl0IHVwc3RyZWFtIHB5dGhvbgorIyBpbnRvIHNldmVyYWwgcGFja2FnZXMuCisjCisjIEluIGEgdmVyeSBzaW1wbGlzdGljIHdheSB3aGF0IHRoaXMgZG9lcyBpczogCisjIExhdW5jaCBweXRob24gYW5kIHNlZSBzcGVjaWZpY2FsbHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgaXQgdG8gcnVuIGF0IGEgbWluaW11bQorIworIyBHbyB0aHJvdWdoIHRoZSBweXRob24tbWFuaWZlc3QgZmlsZSBhbmQgbGF1bmNoIGEgc2VwYXJhdGUgdGFzayBmb3IgZXZlcnkgc2luZ2xlCisjIG9uZSBvZiB0aGUgZmlsZXMgb24gZWFjaCBwYWNrYWdlLCB0aGlzIHRhc2sgd2lsbCBjaGVjayB3aGF0IHdhcyByZXF1aXJlZCBmb3IgdGhhdAorIyBzcGVjaWZpYyBtb2R1bGUgdG8gcnVuLCB0aGVzZSBtb2R1bGVzIHdpbGwgYmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KKyMgVGhlIG91dHB1dCBvZiBzdWNoIHRhc2sgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZQorIyBmb3VuZCBmb3IgdGhhdCBmaWxlLgorIworIyBTdWNoIG91dHB1dCB3aWxsIGJlIHBhcnNlZCBieSB0aGlzIHNjcmlwdCwgd2Ugd2lsbCBsb29rIGZvciBlYWNoIGRlcGVuZGVuY3kgb24gdGhlCisjIG1hbmlmZXN0IGFuZCBpZiB3ZSBmaW5kIHRoYXQgYW5vdGhlciBwYWNrYWdlIGFscmVhZHkgaW5jbHVkZXMgaXQsIHRoZW4gd2Ugd2lsbCBhZGQKKyMgdGhhdCBwYWNrYWdlIGFzIGFuIFJERVBFTkRTIHRvIHRoZSBwYWNrYWdlIHdlIGFyZSBjdXJyZW50bHkgY2hlY2tpbmc7IGluIGNhc2Ugd2UgZG9udAorIyBmaW5kIHRoZSBjdXJyZW50IGRlcGVuZGVuY3kgb24gYW55IG90aGVyIHBhY2thZ2Ugd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgcGFja2FnZQorIyBhcyBwYXJ0IG9mIEZJTEVTLgorIworIworIyBUaGlzIHdheSB3ZSB3aWxsIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdCBkdXJpbmcKKyMgdGhpcyBwcm9jZXNzLCBvbnQgdGhpcyBuZXcgbWFuaWZlc3QgZWFjaCBwYWNrYWdlIHdpbGwgY29udGFpbiBzcGVjaWZpY2FsbHkgb25seQorIyB3aGF0IGl0IG5lZWRzIHRvIHJ1bi4KKyMKKyMgVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aGljaCB3ZSB0cnkgdG8gZGVhbCB3aXRoLCBzdWNoIGFzIHJlcGVhdGVkIGZpbGVzIG9uIGRpZmZlcmVudAorIyBwYWNrYWdlcywgcGFja2FnZXMgdGhhdCBpbmNsdWRlIGZvbGRlcnMsIHdpbGRjYXJkcywgYW5kIHNwZWNpYWwgcGFja2FnZXMuCisjIEl0cyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHl0aG9uIGZpbGVzLCBhbmQgc2hhcmVkCisjIGxpYnJhcmllcy4gU3RhdGljIGxpYnJhcmllcywgaGVhZGVyIGZpbGVzIGFuZCBiaW5hcmllcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggbWFudWFsbHkuCisjCisjIFRoaXMgc2NyaXB0IGRpZmZlcnMgZnJvbSBpdHMgcHl0aG9uMiB2ZXJzaW9uIG1vc3RseSBvbiBob3cgc2hhcmVkIGxpYnJhcmllcyBhcmUgaGFuZGxlZAorIyBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgcHl0aG9uMyBoYXMgYW4gZXh0cmEgZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIGNhY2hlZCBmaWxlcyBmb3IKKyMgZWFjaCBwYWNrYWdlLgorIyBUaGEgbWV0aG9kIHRvIGhhbmRsZSBjYWNoZWQgZmlsZXMgZG9lcyBub3Qgd29yayB3aGVuIGEgbW9kdWxlIGluY2x1ZGVzIGEgZm9sZGVyIHdoaWNoCisjIGl0c2VsZiBjb250YWlucyB0aGUgcHljYWNoZSBmb2xkZXIsIGdsYWRseSB0aGlzIGlzIGFsbW9zdCBuZXZlciB0aGUgY2FzZS4KKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKKyMgSGFjayB0byBnZXQgbmF0aXZlIHB5dGhvbiBzZWFyY2ggcGF0aCAoZm9yIGZvbGRlcnMpLCBub3QgZm9uZCBvZiBpdCBidXQgaXQgd29ya3MgZm9yIG5vdworcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKK2ZvciBwIGluIHN5cy5wYXRoOgorICBpZiBwaXZvdCBpbiBwOgorICAgIG5hdGl2ZWxpYmZvbGRlcj1wWzpwLmZpbmQocGl2b3QpK2xlbihwaXZvdCldCisKKyMgRW1wdHkgZGljdCB0byBob2xkIHRoZSB3aG9sZSBtYW5pZmVzdAorbmV3X21hbmlmZXN0ID0ge30KKworIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMsIGZvbGRlcnMgYW5kIHdpbGRjYXJkcworYWxsZmlsZXM9W10KK3JlcGVhdGVkPVtdCit3aWxkY2FyZHM9W10KKworaGFzZm9sZGVycz1bXQorYWxsZm9sZGVycz1bXQorCitkZWYgaXNGb2xkZXIodmFsdWUpOgorICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGlzQ2FjaGVkKGl0ZW0pOgorICBpZiAnX19weWNhY2hlX18nIGluIGl0ZW06CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworIyBSZWFkIGV4aXN0aW5nIEpTT04gbWFuaWZlc3QKK3dpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3Q6CisgIG9sZF9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3QpCisKKworIyBGaXJzdCBwYXNzIHRvIGdldCBjb3JlLXBhY2thZ2UgZnVuY3Rpb25hbGl0eSwgYmVjYXVzZSB3ZSBiYXNlIGV2ZXJ5dGhpbmcgb24gdGhlIGZhY3QgdGhhdCBjb3JlIGlzIGFjdHVhbGx5IHdvcmtpbmcKKyMgTm90IGV4YWN0bHkgdGhlIHNhbWUgc28gaXQgc2hvdWxkIG5vdCBiZSBhIGZ1bmN0aW9uCitwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBwYWNrYWdlOiBjb3JlJykKKworIyBTcGVjaWFsIGNhbGwgdG8gY2hlY2sgZm9yIGNvcmUgcGFja2FnZQorb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICdweXRob24tY29yZS1wYWNrYWdlJ10pLmRlY29kZSgndXRmOCcpCitmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCitmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgIyBQYXNzIGl0IGRpcmVjdGx5CisgICAgaWYgaXNDYWNoZWQodmFsdWUpOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddOgorICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZCh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgYXNzdW1lIGl0IHdhcyBhZGRlZCBjb3JyZWN0bHkgKG1hbnVhbGx5KQorICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCisgIGlmIHZhbHVlID09ICcnOgorICAgIGNvbnRpbnVlCisgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSB2YWx1ZV0pLmRlY29kZSgndXRmOCcpCisgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHZhbHVlKQorICBwcmludCAob3V0cHV0KQorICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisKKyMgV2UgY2hlY2sgd2hpY2ggcGFja2FnZXMgaW5jbHVkZSBmb2xkZXJzCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgICAgICAgICBwcmludCAoJyVzIGlzIGEgZm9sZGVyJyAlIHZhbHVlKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgIGhhc2ZvbGRlcnMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGFsbGZvbGRlcnMuYXBwZW5kKHZhbHVlKQorCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICAjIFVzZSBhbiBlbXB0eSBkaWN0IGFzIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgZGF0YSBmb3IgZWFjaCBwYWNrYWdlIGFuZCBmaWxsIGl0IHVwCisgICAgbmV3X21hbmlmZXN0W2tleV09e30KKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXT1bXQorICAgIAorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCisgICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCisgICAgaWYga2V5ICE9ICdjb3JlJzoKKyAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCisgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109W10KKyAgICBlbHNlOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddPW9sZF9tYW5pZmVzdFtrZXldWydjYWNoZWQnXQorICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J109b2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQorCisgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCisgICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCisgICAgcHJpbnQoJ1xuJykKKyAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCisgICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKKyAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ2RldiddCisgICAgaWYga2V5IGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4ga2V5OgorICAgICAgICBwcmludCgnUGFzc2luZyAlcyBwYWNrYWdlIGRpcmVjdGx5JyAlIGtleSkKKyAgICAgICAgbmV3X21hbmlmZXN0W2tleV09b2xkX21hbmlmZXN0W2tleV0KKyAgICAgICAgY29udGludWUKKworICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcworICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5CisgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKKyAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBjb21lcyBmcm9tIGFub3RoZXIgKGUuZy4gc3FsaXRlMy5kdW1wKQorICAgICAgICBwYXRoLHZhbHVlID0gb3MucGF0aC5zcGxpdCh2YWx1ZSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKKyAgICAgICAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUodmFsdWUpKVswXQorCisgICAgICAgICMgSWYgdGhpcyBjb25kaXRpb24gaXMgbWV0LCBpdCBtZWFucyB3ZSBuZWVkIHRvIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgbW9kdWxlCisgICAgICAgICMgb3IgaXRzIHRoZSBmb2xkZXIgaXRzZWxmIChlLmcuIHVuaXR0ZXN0KQorICAgICAgICBpZiBwYXRoID09IGtleToKKyAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aCArICcuJyArIHZhbHVlCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aAorCisgICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICAgICAgICBwcmludCAoJ1xuR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczMucHknLCAnJXMnICUgdmFsdWVdKS5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworICAgICAgICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQgKG91dHB1dCkKKyAgICAgICAgIyBPdXRwdXQgd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKworICAgICAgICByZXBvcnRGSUxFUyA9IFtdCisgICAgICAgIHJlcG9ydFJERVBTID0gW10KKworICAgICAgICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKworICAgICAgICAgICAgIyBXYXJuaW5nOiBUaGlzIGZpcnN0IHBhcnQgaXMgdWdseQorICAgICAgICAgICAgIyBPbmUgb2YgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdhcyBmb3VuZCwgY291bGQgYmUgaW5zaWRlIG9mIG9uZSBvZiB0aGUgZm9sZGVycyBpbmNsdWRlZCBieSBhbm90aGVyIHBhY2thZ2UKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGlzIGhhcHBlbnMgc28gd2UgY2FuIGFkZCB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBmb2xkZXIgYXMgYW4gcmRlcGVuZGVuY3kKKyAgICAgICAgICAgICMgZS5nLiBGb2xkZXIgZW5jb2RpbmdzIGNvbnRhaW5lZCBpbiBjb2RlY3MKKyAgICAgICAgICAgICMgVGhpcyB3b3VsZCBiZSBzb2x2ZWQgaWYgbm8gcGFja2FnZXMgaW5jbHVkZWQgYW55IGZvbGRlcnMKKworICAgICAgICAgICAgIyBUaGlzIGNhbiBiZSBkb25lIGluIHR3byB3YXlzOgorICAgICAgICAgICAgIyAxIC0gV2UgYXNzdW1lIHRoYXQgaWYgd2UgdGFrZSBvdXQgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGggd2Ugd291bGQgZ2V0CisgICAgICAgICAgICAjICAgdGhlIGZvbGRlciBzdHJpbmcsIHRoZW4gd2Ugd291bGQgY2hlY2sgaWYgZm9sZGVyIHN0cmluZyBpcyBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjICAgVGhpcyB3b3VsZCBub3Qgd29yayBpZiBhIHBhY2thZ2UgY29udGFpbnMgYSBmb2xkZXIgd2hpY2ggY29udGFpbnMgYW5vdGhlciBmb2xkZXIKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGZvbGRlcl9zdHJpbmcgd291bGQgbm90IG1hdGNoIGFueSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycworICAgICAgICAgICAgIworICAgICAgICAgICAgIyAyIC0gV2UgZG8gaXQgdGhlIG90aGVyIHdheSBhcm91bmQsIGNoZWNraW5nIGlmIHRoZSBmb2xkZXIgaXMgY29udGFpbmVkIGluIHRoZSBwYXRoCisgICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKKyAgICAgICAgICAgICMgICBpcyBmb2xkZXJfc3RyaW5nIGluc2lkZSBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZT8sIAorICAgICAgICAgICAgIyAgIFllcywgaXQgd29ya3MsIGJ1dCB3ZSB3YXN0ZSBhIGNvdXBsZSBvZiBtaWxsaXNlY29uZHMuCisKKyAgICAgICAgICAgIGluRm9sZGVycz1GYWxzZQorICAgICAgICAgICAgZm9yIGZvbGRlciBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGlmIGZvbGRlciBpbiBpdGVtOgorICAgICAgICAgICAgICAgICAgICBpbkZvbGRlcnMgPSBUcnVlICMgRGlkIHdlIGZpbmQgYSBmb2xkZXI/CisgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gRmFsc2UgIyBTZWNvbmQgZmxhZyB0byBicmVhayBpbm5lciBmb3IKKyAgICAgICAgICAgICAgICAgICAgIyBMb29wIG9ubHkgdGhyb3VnaCBwYWNrYWdlcyB3aGljaCBjb250YWluIGZvbGRlcnMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGtleWZvbGRlciBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlckZvdW5kID09IEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoJ0NoZWNraW5nIGZvbGRlciAlcyBvbiBwYWNrYWdlICVzJyAlIChpdGVtLGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydmaWxlcyddIG9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm9sZGVyIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KKyAgICAgICAgICAgIGlmIGluRm9sZGVyczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisKKyAgICAgICAgICAgICMgV2UgbWlnaHQgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSBkaWN0aW9uYXJ5IHNpbmNlIGl0IGNvdWxkIGRlcGVuZCBvbiBhIChwcmV2aW91c2x5IGNoZWNrZWQpIG1vZHVsZQorICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gYW5kIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgorICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChpdGVtKToKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgZWxzZToKKworCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhpcyBkZXBlbmRlbmN5IGlzIGFscmVhZHkgY29udGFpbmVkIG9uIGFub3RoZXIgcGFja2FnZSwgc28gd2UgYWRkIGl0CisgICAgICAgICAgICAgICAgICAgICMgYXMgYW4gUkRFUEVORFMsIG9yIGlmIGl0cyBub3QsIGl0IG1lYW5zIGl0IHNob3VsZCBiZSBjb250YWluZWQgb24gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLCBzbyB3ZSBzaG91bGQgYWRkIGl0IHRvIEZJTEVTCisgICAgICAgICAgICAgICAgICAgIGZvciBuZXdrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCdDaGVja2luZyAlcyAnICUgaXRlbSArICcgaW4gJXMnICUgbmV3a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBpbiBvbGRfbWFuaWZlc3RbbmV3a2V5XVsnZmlsZXMnXSBvciBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydjYWNoZWQnXTogICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3a2V5IT1rZXkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGl0IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFJERVBTLmFwcGVuZCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzXG4nICUgKG5ld2tleSwga2V5LCBpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICMgQSBtb2R1bGUgc2hvdWxkbid0IGNvbnRhaW4gaXRzZWxmICgke2xpYmRpcn0vcHl0aG9uMy9zcWxpdGUzIHNob3VsZG50IGJlIG9uIHNxbGl0ZTMgZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShpdGVtKSAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRGSUxFUy5hcHBlbmQoKCdBZGRpbmcgJXMgdG8gJXMgRklMRVNcbicgJSAoaXRlbSwga2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNDYWNoZWQoaXRlbSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICBwcmludCgnXG4nKQorICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykKKyAgICAgICAgcHJpbnQoJ1N1bW1hcnkgZm9yIG1vZHVsZSAlcycgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQoJ0ZJTEVTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydEZJTEVTKSkKKyAgICAgICAgcHJpbnQoJ1JERVBFTkRTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydFJERVBTKSkKKyAgICAgICAgcHJpbnQoJyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpCisKK3ByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCitwcmludCAocmVwZWF0ZWQpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCh3aWxkY2FyZHMpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoaGFzZm9sZGVycykKKworIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZXIKK2ZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5zb3J0KCkKKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKKworIyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0Cit3aXRoIG9wZW4oJ3B5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcnLCd3JykgYXMgb3V0ZmlsZToKKyAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsc29ydF9rZXlzPVRydWUsIGluZGVudD00KQorICAgIG91dGZpbGUud3JpdGUoJ1xuJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDEyYmFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9nZXRfbW9kdWxlX2RlcHMzLnB5CkBAIC0wLDAgKzEsMTQ2IEBACisjIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQorIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKKyMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisjIFdlIGNhbiBnZXQgYSBsb2cgcGVyIG1vZHVsZSwgZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZSBmb3VuZCwgYnV0IGl0cyBtZXNzeS4KK2RlYnVnPUZhbHNlCisKK2ltcG9ydCBzeXMKKworIyBXZSBjYW4gZ2V0IGEgbGlzdCBvZiB0aGUgbW9kdWxlcyB3aGljaCBhcmUgY3VycmVudGx5IHJlcXVpcmVkIHRvIHJ1biBweXRob24KKyMgc28gd2UgcnVuIHB5dGhvbi1jb3JlIGFuZCBnZXQgaXRzIG1vZHVsZXMsIHdlIHRoZW4gaW1wb3J0IHdoYXQgd2UgbmVlZAorIyBhbmQgY2hlY2sgd2hhdCBtb2R1bGVzIGFyZSBjdXJyZW50bHkgcnVubmluZywgaWYgd2Ugc3Vic3RyYWN0IHRoZW0gZnJvbSB0aGUKKyMgbW9kdWxlcyB3ZSBoYWQgaW5pdGlhbGx5LCB3ZSBnZXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIG1vZHVsZSB3ZSBpbXBvcnRlZC4KKworIyBXZSB1c2UgaW1wb3J0bGliIHRvIGFjaGlldmUgdGhpcywgc28gd2UgYWxzbyBuZWVkIHRvIGtub3cgd2hhdCBtb2R1bGVzIGltcG9ydGxpYiBuZWVkcworaW1wb3J0IGltcG9ydGxpYgorCitjb3JlX2RlcHM9c2V0KHN5cy5tb2R1bGVzKQorCitkZWYgZml4X3BhdGgoZGVwX3BhdGgpOgorICAgIGltcG9ydCBvcworICAgICMgV2UgRE9OVCB3YW50IHRoZSBwYXRoIG9uIG91ciBIT1NUIHN5c3RlbQorICAgIHBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCisgICAgZGVwX3BhdGg9ZGVwX3BhdGhbZGVwX3BhdGguZmluZChwaXZvdCkrbGVuKHBpdm90KTpdCisKKyAgICBpZiAnL3Vzci9iaW4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvYmluJycke2JpbmRpcn0nKQorCisgICAgIyBIYW5kbGUgbXVsdGlsaWIsIGlzIHRoZXJlIGEgYmV0dGVyIHdheT8KKyAgICBpZiAnL3Vzci9saWIzMicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWIzMicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliNjQnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliNjQnLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2xpYicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWInLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2luY2x1ZGUnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvaW5jbHVkZScsJyR7aW5jbHVkZWRpcn0nKQorICAgIGlmICdfX2luaXRfXy4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9ICBvcy5wYXRoLnNwbGl0KGRlcF9wYXRoKVswXQorICAgIHJldHVybiBkZXBfcGF0aAorCisKKyMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50CitjdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCitpZihkZWJ1Zz09VHJ1ZSk6CisgICAgbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKKyAgICBsb2cud3JpdGUoJ01vZHVsZSAlcyBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6XG4nICUgY3VycmVudF9tb2R1bGUpCit0cnk6IAorICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQorICAgIHBhc3MKKworCisjIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCittb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKKyMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKK2lmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKKyAgICBkaWYgPSBjb3JlX2RlcHMKK2Vsc2U6CisgICAgIyBXZSBrbm93IHRoaXMgaXMgbm90IHRoZSBjb3JlIHBhY2thZ2UsIHNvIHRoZXJlIG11c3QgYmUgYSBkaWZmZXJlbmNlLgorICAgIGRpZiA9IG1vZHVsZV9kZXBzLWNvcmVfZGVwcworCisKKyMgQ2hlY2sgd2hlcmUgZWFjaCBkZXBlbmRlbmN5IGNhbWUgZnJvbQorZm9yIGl0ZW0gaW4gZGlmOgorICAgIGRlcF9wYXRoPScnCisgICAgdHJ5OgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKCdDYWxsaW5nOiBzeXMubW9kdWxlc1snICsgJyVzJyAlIGl0ZW0gKyAnXS5fX2ZpbGVfX1xuJykKKyAgICAgICAgZGVwX3BhdGggPSBzeXMubW9kdWxlc1snJXMnICUgaXRlbV0uX19maWxlX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19maWxlX18gYXR0cmlidXRlCisgICAgICAgIGlmIGRlYnVnPT1UcnVlOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0gKyAnICcpCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKQorICAgICAgICAgICAgbG9nLndyaXRlKCdcbicpCisgICAgICAgIHBhc3MKKyAgICBleGNlcHQgTmFtZUVycm9yIGFzIGU6CisgICAgICAgICMgRGVhbHMgd2l0aCBOYW1lRXJyb3I6IG5hbWUgJ2RlcF9wYXRoJyBpcyBub3QgZGVmaW5lZAorICAgICAgICAjIGJlY2F1c2UgbW9kdWxlIGlzIG5vdCBmb3VuZCAod2Fzbid0IGNvbXBpbGVkPyksIGUuZy4gYmRkc20KKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtKycgJykgCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcGFzcworCisgICAgIyBTaXRlLWN1c3RvbWl6ZSBpcyBhIHNwZWNpYWwgY2FzZSBzaW5jZSB3ZSAoT3BlbkVtYmVkZGVkKSBwdXQgaXQgdGhlcmUgbWFudWFsbHkKKyAgICBpZiAnc2l0ZWN1c3RvbWl6ZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gJyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHknCisgICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQorCisgICAgaW1wb3J0IHN5c2NvbmZpZworICAgIHNvYWJpPXN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU09BQkknKQorICAgICMgQ2hlY2sgaWYgaXRzIGEgc2hhcmVkIGxpYnJhcnkgYW5kIGRlY29uc3RydWN0IGl0CisgICAgaWYgc29hYmkgaW4gZGVwX3BhdGg6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ1NoYXJlZCBsaWJyYXJ5IGZvdW5kIGluICVzJyAlIGRlcF9wYXRoKQorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2Uoc29hYmksJyonKQorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICBsb2cud3JpdGUoZGVwX3BhdGgrJ1xuJykKKyAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKKyAgICBwcmludCAoZGVwX3BhdGgpCisKKworICAgIGltcG9ydCBpbXAKKyAgICBjcHl0aG9uX3RhZyA9IGltcC5nZXRfdGFnKCkgCisgICAgY2FjaGVkPScnCisgICAgIyBUaGVyZXMgbm8gbmFpdmUgd2F5IHRvIGZpbmQgKi5weWMgZmlsZXMgb24gcHl0aG9uMworICAgIHRyeToKKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZSgnQ2FsbGluZzogc3lzLm1vZHVsZXNbJyArICclcycgJSBpdGVtICsgJ10uX19jYWNoZWRfX1xuJykKKyAgICAgICAgY2FjaGVkID0gc3lzLm1vZHVsZXNbJyVzJyAlIGl0ZW1dLl9fY2FjaGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19jYWNoZWRfXyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgZGVidWc9PVRydWU6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSArICcgJykKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpCisgICAgICAgICAgICBsb2cud3JpdGUoJ1xuJykKKyAgICAgICAgcGFzcworICAgIGV4Y2VwdCBOYW1lRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIE5hbWVFcnJvcjogbmFtZSAnY2FjaGVkJyBpcyBub3QgZGVmaW5lZAorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0rJyAnKSAKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBwYXNzCisgICAgaWYgY2FjaGVkIGlzIG5vdCBOb25lOgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGNhY2hlZCkKKyAgICAgICAgY2FjaGVkID0gZml4X3BhdGgoY2FjaGVkKQorICAgICAgICBjYWNoZWQgPSBjYWNoZWQucmVwbGFjZShjcHl0aG9uX3RhZywnKicpCisgICAgICAgIHByaW50IChjYWNoZWQpCisKK2lmIGRlYnVnPT1UcnVlOgorICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2gKaW5kZXggMDhjNDQwMy4uY2MzNWRjMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tMy4zLW11bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaApAQCAtMjUsMTAgKzI1LDEwIEBACiAgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrLS0tLS0KICAxMiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA5YzJlODEzLi4yZjc5Y2I2IDEwMDY0NAotLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAotKysrIGIvSW5jbHVkZS9weXRob25ydW4uaAorSW5kZXg6IFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiBAQCAtMjMsNiArMjMsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgfSBQeUNvbXBpbGVyRmxhZ3M7CiAgI2VuZGlmCkBAIC0zOSwxMCArMzksMTAgQEAKICAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgUHlBUElfRlVOQyhpbnQpIFB5UnVuX1NpbXBsZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9BbnlGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1pbmRleCA2N2RiMDA3Li5iNDZiNDViIDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBQeXRob24tMy41LjQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKIEBAIC0xOSw2ICsxOSw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKICBIQVNfVVNFUl9TSVRFID0gVHJ1ZQpAQCAtNTIsMjAgKzUyLDIyIEBACiAgV0lORE9XU19TQ0hFTUUgPSB7CiAgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAotQEAgLTMwLDcgKzMyLDcgQEAgV0lORE9XU19TQ0hFTUUgPSB7CitAQCAtMjksOCArMzEsOCBAQCBXSU5ET1dTX1NDSEVNRSA9IHsKKyAKICBJTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgICd1bml4X3ByZWZpeCc6IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKIC0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0JGFiaWZsYWdzLyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLWRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKLWluZGV4IDNjYTA4YzkuLjY1Mjg3MzAgMTAwNzU1Ci0tLS0gYS9MaWIvcHlkb2MucHkKLSsrKyBiL0xpYi9weWRvYy5weQotQEAgLTM4NCw3ICszODQsNyBAQCBjbGFzcyBEb2M6CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9weWRvYy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvcHlkb2MucHkKK0BAIC0zODksNyArMzg5LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKICAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCkBAIC03NCwxMCArNzYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSk6CiAgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLWRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5Ci1pbmRleCAzZjc4ZWY1Li41MTE5MzFlIDEwMDY0NAotLS0tIGEvTGliL3NpdGUucHkKLSsrKyBiL0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9zaXRlLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3NpdGUucHkKKysrKyBQeXRob24tMy41LjQvTGliL3NpdGUucHkKIEBAIC0zMDMsMTIgKzMwMywxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIApAQCAtOTMsMjAgKzk1LDIxIEBACiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgIyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyAqb25seSogd2UgYWRkIHRoZSBzdGFuZGFyZCBBcHBsZQogICAgICAgICAgICAgICMgbG9jYXRpb25zLgotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA5YzM0YmUwLi4zZDExODFhIDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5CiBAQCAtMjAsMTAgKzIwLDEwIEBAIF9fYWxsX18gPSBbCiAgCiAgX0lOU1RBTExfU0NIRU1FUyA9IHsKICAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgJ2luY2x1ZGUnOgogICAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCkBAIC0xMTcsMTAgKzEyMCwxMSBAQAogICAgICAncG9zaXhfaG9tZSc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbicsCi0gICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCi0tICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCisrICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9uJywKICsgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogICAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCkBAIC0xMzEsMTggKzEzNSwxOSBAQAogICAgICAncG9zaXhfdXNlcic6IHsKIC0gICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCistICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICsgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKICAgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAotZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQotaW5kZXggZjEwODI2Ni4uN2ZkODNmMiAxMDA3NTUKLS0tLSBhL0xpYi90cmFjZS5weQotKysrIGIvTGliL3RyYWNlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi90cmFjZS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi90cmFjZS5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvdHJhY2UucHkKIEBAIC03NDksMTAgKzc0OSwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgogICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAgCkBAIC0xNTYsMTEgKzE2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCiAgICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggMTA5ZjQwMi4uNjFhNDFlMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTA2LDYgKzEwNiw4IEBAIFBZX0NPUkVfQ0ZMQUdTPQkkKFBZX0NGTEFHUykgJChQWV9DRkxBR1NfTk9ESVNUKSAkKFBZX0NQUEZMQUdTKSAkKENGTEFHU0ZPUlNIQVJFCitJbmRleDogUHl0aG9uLTMuNS40L01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuNC9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xMDksNiArMTA5LDggQEAgQ0ZMQUdTX0FMSUFTSU5HPUBDRkxBR1NfQUxJQVNJTkdACiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtMTY5LDcgKzE3NCw3IEBACiAgCiAgIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiAgTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTEyNSw3ICsxMjcsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTEyOCw3ICsxMzAsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTE3OCw3ICsxODMsNyBAQAogIEFCSUZMQUdTPQlAQUJJRkxBR1NACiAgCiAgIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotQEAgLTc1NSw2ICs3NTcsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCitAQCAtNzMxLDYgKzczMyw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC0xODYsOCArMTkxLDggQEAKICAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogIAogIFByb2dyYW1zL3B5dGhvbi5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKLUBAIC04MzUsNyArODM4LDcgQEAgJChPUENPREVfSCk6ICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0hfU0NSSVBUKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC04MTMsNyArODE2LDcgQEAgcmVnZW4tb3Bjb2RlOgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0xOTUsMTAgKzIwMCwxMCBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKLWluZGV4IDE4ZGViNjAuLmEwMWMzZjggMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL2dldHBhdGguYwotKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMy41LjQvTW9kdWxlcy9nZXRwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9Nb2R1bGVzL2dldHBhdGguYworKysrIFB5dGhvbi0zLjUuNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwNSw2ICsxMDUsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0yMzAsMTAgKzIzNSwxMCBAQAogIAogICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi1kaWZmIC0tZ2l0IGEvUHl0aG9uL2dldHBsYXRmb3JtLmMgYi9QeXRob24vZ2V0cGxhdGZvcm0uYwotaW5kZXggNjg5OTE0MC4uNjZhNDljNiAxMDA2NDQKLS0tLSBhL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgYi9QeXRob24vZ2V0cGxhdGZvcm0uYworSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vZ2V0cGxhdGZvcm0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCisrKysgUHl0aG9uLTMuNS40L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMjMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTI1OCwxMSArMjYzLDExIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLWRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKLWluZGV4IDhkN2UwNWEuLmQ5ZGVlMGYgMTAwNjQ0Ci0tLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE3OTAsNiArMTc5MCwxMCBAQCBfUHlTeXNfSW5pdCh2b2lkKQorSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vc3lzbW9kdWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKKysrKyBQeXRob24tMy41LjQvUHl0aG9uL3N5c21vZHVsZS5jCitAQCAtMTgyNyw2ICsxODI3LDEwIEBAIF9QeVN5c19Jbml0KHZvaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKQEAgLTI3MywxMSArMjc4LDExIEBACiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0dldFByb2dyYW1GdWxsUGF0aCgpLCAtMSkpOwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzA3MzI0ZC4uZThkNTlhMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODgzLDYgKzg4Myw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKK0luZGV4OiBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTMuNS40L2NvbmZpZ3VyZS5hYworQEAgLTg4NSw2ICs4ODUsNDEgQEAgUExBVERJUj1wbGF0LSRNQUNIREVQCiAgQUNfU1VCU1QoUExBVERJUikKICBBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQogIApAQCAtMzE5LDExICszMjQsMTEgQEAKICAKICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtV2wsLS1uby1hcy1uZWVkZWRdKQogIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNmQyNmRlYi4uN2IxNDIxNSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ5NSw3ICs0OTUsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitJbmRleDogUHl0aG9uLTMuNS40L3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjQvc2V0dXAucHkKK0BAIC00OTQsNyArNDk0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAgIyAxMDUyMC4KICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CkBAIC0zMzIsNyArMzM3LDcgQEAKICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQogICAgICAgICAgIyBvbmx5IGNoYW5nZSB0aGlzIGZvciBjcm9zcyBidWlsZHMgZm9yIDMuMywgaXNzdWVzIG9uIE1hZ2VpYQogICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotQEAgLTU1Myw4ICs1NTMsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNTUyLDggKzU1Miw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKICAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgogICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKICAgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwpAQCAtMzQyLDcgKzM0Nyw3IEBACiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICBpbmNfZGlycyA9IHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzICsgWycvdXNyL2luY2x1ZGUnXQogICAgICAgICAgZWxzZToKLUBAIC03NDYsMTEgKzc0NSwxMSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNzQ1LDExICs3NDQsMTEgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6CiAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQogICAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCkBAIC0zNTYsNiArMzYxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1yZWFkbGluZV9leHRyYV9saW5rX2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykgKQogICAgICAgICAgZWxzZToKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsMTE0OSBAQAoreworICAgICIydG8zIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vMnRvMy0qIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYjJ0bzMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgIH0sCisgICAgImFzeW5jaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN5bmNpbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25jdXJyZW50IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmN1cnJlbnQvZnV0dXJlcyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIgorICAgIH0sCisgICAgImF1ZGlvIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2h1bmsuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc25kaGRyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NodW5rLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NuZGhkci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdW5hdS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIgorICAgIH0sCisgICAgImNvZGVjcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3hkcmxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveGRybGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgIH0sCisgICAgImNvbXBpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb21waWxlYWxsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B5X2NvbXBpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29tcHJlc3Npb24iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbHptYS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wcmVzc2lvbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iejIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYnoyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC96bGliLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3ppcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IgorICAgIH0sCisgICAgImNvcmUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb2xsZWN0aW9uc19hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3NpdGVidWlsdGlucy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fd2Vha3JlZnNldC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXJncGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVjcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29uZmlncGFyc2VyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbnRleHRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29weS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nzdi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0b3B0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHRleHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18va2V5d29yZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmVwcmxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2lnbmFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbnN0YW50cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfcGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmdwcmVwLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdWJwcm9jZXNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5bWJvbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeXNjb25maWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGV4dHdyYXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGhyZWFkaW5nLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuaXplLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RyYWNlYmFjay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXJuaW5ncy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93ZWFrcmVmLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2FsaWFzZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2xhdGluXzEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL3V0Zl84LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9tYWNoaW5lcnkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL3V0aWwuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKlshLWNvbmZpZ10iLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZyouaCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckRpY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX2Z1dHVyZV9fLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2Jvb3Rsb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fbWFya3VwYmFzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc2l0ZWJ1aWx0aW5zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hcmdwYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZWNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVvcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlncGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbnRleHRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29weS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9sYXRpbl8xLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy91dGZfOC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZW5lcmljcGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0dGV4dC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL21hY2hpbmVyeS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvdXRpbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lvLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGltZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tYXRoLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zZWxlY3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9uZXcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3Bjb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wdHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXBybGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JsY29tcGxldGVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NlbGVjdG9ycy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2l0ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29uc3RhbnRzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9wYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RydWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N1YnByb2Nlc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3ltYm9sLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N5c2NvbmZpZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXh0d3JhcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW5pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICB9LAorICAgICJjcnlwdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NyeXB0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NyeXB0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NyeXB0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgImN0eXBlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdHlwZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdXJzZXMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdXJzZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGF0ZXRpbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3RycHRpbWUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2FsZW5kYXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRiIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RibSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGJtLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRlYnVnZ2VyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmRiLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BkYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmRiLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRlYnVnZ2VyIgorICAgIH0sCisgICAgImRldiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qLWNvbmZpZyIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwKKyAgICAgICAgICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubGEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcGtnY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgorICAgIH0sCisgICAgImRpZmZsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaWZmbGliLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaWZmbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgorICAgIH0sCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXN0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIKKyAgICB9LAorICAgICJkaXN0dXRpbHMtc3RhdGljZGV2IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgorICAgIH0sCisgICAgImRvY3Rlc3QiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kb2N0ZXN0LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidW5pdHRlc3QiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKKyAgICB9LAorICAgICJlbWFpbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltYXBsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IgorICAgIH0sCisgICAgImZjbnRsIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAiZ2RibSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZ2RibS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImh0bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mb3JtYXR0ZXIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Zvcm1hdHRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgImlkbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlKiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pZGxlbGliIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCisgICAgfSwKKyAgICAiaW1hZ2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xvcnN5cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWdoZHIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbG9yc3lzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltZ2hkci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCisgICAgfSwKKyAgICAiaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlpby4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pcGFkZHJlc3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NzbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaXBhZGRyZXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zb2NrZXQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3NsLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdGVybWlvcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpcGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zc2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGVtcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iCisgICAgfSwKKyAgICAianNvbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IgorICAgIH0sCisgICAgImxvZ2dpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJtYWlsYm94IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFpbGJveC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1hdGgiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yYW5kb20uKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19yYW5kb20uKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jbWF0aC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JhbmRvbS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1pbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9xdW9wcmkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCisgICAgfSwKKyAgICAibW1hcCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tbWFwLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibW9kdWxlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgIjJ0bzMiLAorICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImF1ZGlvIiwKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbXBpbGUiLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiY3R5cGVzIiwKKyAgICAgICAgICAgICJjdXJzZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJkYiIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImRpc3R1dGlscyIsCisgICAgICAgICAgICAiZG9jdGVzdCIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpZGxlIiwKKyAgICAgICAgICAgICJpbWFnZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImpzb24iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1haWxib3giLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm1tYXAiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJuZXRzZXJ2ZXIiLAorICAgICAgICAgICAgIm51bWJlcnMiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAicGtndXRpbCIsCisgICAgICAgICAgICAicGxpc3RsaWIiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAicHJvZmlsZSIsCisgICAgICAgICAgICAicHlkb2MiLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJydW5weSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInNtdHBkIiwKKyAgICAgICAgICAgICJzcWxpdGUzIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInN5c2xvZyIsCisgICAgICAgICAgICAidGVybWluYWwiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidGtpbnRlciIsCisgICAgICAgICAgICAidHlwaW5nIiwKKyAgICAgICAgICAgICJ1bml0dGVzdCIsCisgICAgICAgICAgICAidW5peGFkbWluIiwKKyAgICAgICAgICAgICJ4bWwiLAorICAgICAgICAgICAgInhtbHJwYyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiQWxsIFB5dGhvbiBtb2R1bGVzIgorICAgIH0sCisgICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm5ldGNsaWVudCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jhc2U2NC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdHBsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaG1hYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbm50cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc210cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZWxuZXRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXVpZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z0cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9obWFjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHR0cC9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9taW1ldHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbm50cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wb3BsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc210cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZWxuZXRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXJsbGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VybGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dWlkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCisgICAgfSwKKyAgICAibmV0c2VydmVyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2dpLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldHNlcnZlci4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY2dpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldHNlcnZlci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgIH0sCisgICAgIm51bWJlcnMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlkZWNpbWFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RlY2ltYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnJhY3Rpb25zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL251bWJlcnMuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19weWRlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGVjaW1hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mcmFjdGlvbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RlY2ltYWwuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9udW1iZXJzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIgorICAgIH0sCisgICAgInBpY2tsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb21wYXRfcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGV0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGVsdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wYXRfcGlja2xlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19waWNrbGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJwa2d1dGlsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCisgICAgfSwKKyAgICAicGxpc3RsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGlzdGxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGxpc3RsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAieG1sIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgorICAgIH0sCisgICAgInBwcmludCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BwcmludC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IgorICAgIH0sCisgICAgInByb2ZpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jUHJvZmlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BzdGF0cy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY1Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInB5ZG9jIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MqIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiCisgICAgfSwKKyAgICAicmVzb3VyY2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICB9LAorICAgICJydW5weSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3J1bnB5LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ydW5weS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiCisgICAgfSwKKyAgICAic2hlbGwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nbG9iLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY21kLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZubWF0Y2gucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2xvYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaHV0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCisgICAgfSwKKyAgICAic210cGQiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY2hhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY29yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgfSwKKyAgICAic3FsaXRlMyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kYmFwaTIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kdW1wLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3FsaXRlMy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZGJhcGkyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZHVtcC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImRhdGV0aW1lIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgInNxbGl0ZTMtdGVzdHMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAidGVzdHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCisgICAgfSwKKyAgICAic3RyaW5nb2xkIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmcucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgorICAgIH0sCisgICAgInN5c2xvZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zeXNsb2cuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInRlcm1pbmFsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R0eS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3RzIgorICAgIH0sCisgICAgInRocmVhZGluZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19kdW1teV90aHJlYWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3RocmVhZGluZ19sb2NhbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVldWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19kdW1teV90aHJlYWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVldWUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAidGtpbnRlciI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKKyAgICB9LAorICAgICJ0eXBpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBpbmcuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ1bml0dGVzdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvX19weWNhY2hlX18iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgIH0sCisgICAgInVuaXhhZG1pbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHBhc3MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldHBhc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZ3JwLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWxycGMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1scnBjIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYy9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInhtbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmM4YjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNDMyMzhlMWFjMTNlMzI5ODRkMDE1YzkyYTU4NDFmM2RlMWZlMWQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE4IE5vdiAyMDE0IDAwOjA3OjA3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBubyBob3N0IGhlYWRlcnMgbGlicwotCi1XaGVuIHdlIGFyZSBjcm9zcy1jb21waWxpbmcsIHNldHVwLnB5IHNob3VsZCBuZXZlciBsb29rIGluIC91c3IKLW9yIC91c3IvbG9jYWwgdG8gZmluZCBoZWFkZXJzIG9yIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtDcm9zcyBjb21waWxlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggZjAyMGIyOC4uZTgzMzljZCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ0NCwxMCArNDQ0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsIG9zLnBhdGguam9pbignL3Vzci9sb2NhbCcsIHN5cy5saWIpKQotICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0tICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCi0tICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKLS0gICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKLSAKLSAgICAgICAgICMgQWRkIHBhdGhzIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIExERkxBR1MgYW5kCi0tLSAKLTIuMC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKaW5kZXggNzQ0OTBkOS4uYTRmOGJkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKQEAgLTEwLDExICsxMCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTg5YmFmOS4uMjg5MGM5NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjcsNyArNjcsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorSW5kZXg6IFB5dGhvbi0zLjUuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCitAQCAtNzMsNyArNzMsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAgCWZpCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCkBAIC0yMyw2ICsyMywzIEBACiAgICAgIGZpCiAgZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCiAgICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcmVnZW4tYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YjlkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitweXRob24zLW5hdGl2ZTogcnVuIHJlZ2VuLWltcG9ydGxpYiB0YXJnZXQgY29ycmVjdGx5CisKK3JlZ2VuLWltcG9ydGxpYiBkZXBlbmRzIG9uIG90aGVyIHJlZ2VuLSB0YXJnZXRzLCBzbyB3ZSBtdXN0IGJlIHN1cmUgdG8KK3J1biBpdCBhZnRlciAobW9zdCBvZikgdGhlIG90aGVycy4gIEluIHJlYWxpdHksIHdlIGRvIG5vdCBuZWVkIHRvIHJ1biBpdAorYXQgYWxsIHNpbmNlICJtYWtlIiB3aWxsIGludm9rZSBpdCwgaWYgbmVjZXNzYXJ5LiAgV2UgZG8gbm90IHdhbnQgdG8KK3JlbHkgb24gdGhhdCwgdGhvdWdoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKworLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC03MDksNyArNzA5LDggQEAgcmVnZW4taW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFJlZ2VuZXJhdGUgYWxsIGdlbmVyYXRlZCBmaWxlcworIAorLXJlZ2VuLWFsbDogcmVnZW4tb3Bjb2RlIHJlZ2VuLW9wY29kZS10YXJnZXRzIHJlZ2VuLXR5cGVzbG90cyByZWdlbi1ncmFtbWFyIHJlZ2VuLWFzdCByZWdlbi1pbXBvcnRsaWIKKytyZWdlbi1hbGw6IHJlZ2VuLW9wY29kZSByZWdlbi1vcGNvZGUtdGFyZ2V0cyByZWdlbi10eXBlc2xvdHMgcmVnZW4tZ3JhbW1hciByZWdlbi1hc3QKKysJJChNQUtFKSByZWdlbi1pbXBvcnRsaWIKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc2V0dXAucHktZmluZC1saWJyYXJpZXMtaW4tc3RhZ2luZy1kaXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmJkMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1QYXRjaCBzZXR1cC5weSBzbyB0aGF0IHRoZSBkZXRlY3RfbW9kdWxlcygpIGZ1bmN0aW9uIGxvb2tzIGZvciByZXF1aXJlZAotbGlicmFyaWVzIGFuZCBoZWFkZXJzIGluIFNUQUdJTkdfTElCRElSIC8gU1RBR0lOR19JTkNESVIuCi0KLVdpdGhvdXQgdGhpcyBwYXRjaCwgc2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm90IGJ1aWx0LCBldmVuIHRob3VnaAotdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50IGluIHRoZSBjb21waWxlcidzIHNlYXJjaCBwYXRocy4KLVRoZSByZXN1bHQgaXMgdGhlIGZvbGxvd2luZyB3YXJuaW5nLCBhbmQgdWx0aW1hdGVseSBpbmNvbXBsZXRlIHBhY2thZ2VzOgotCi18IFRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOgotfCBfYnoyICAgICAgICAgICAgICAgICAgX2N1cnNlc19wYW5lbCAgICAgICAgIF9kYm0KLXwgX2dkYm0gICAgICAgICAgICAgICAgIF9sem1hICAgICAgICAgICAgICAgICBfc3FsaXRlMwotfCBuaXMgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUgICAgICAgICAgICAgIHpsaWIKLXwgVG8gZmluZCB0aGUgbmVjZXNzYXJ5IGJpdHMsIGxvb2sgaW4gc2V0dXAucHkgaW4gZGV0ZWN0X21vZHVsZXMoKSBmb3IgdGhlIG1vZHVsZSdzIG5hbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERvbWluaWMgU2FjcsOpIDxkb21pbmljLnNhY3JlQGdteC5kZT4KLQotSW5kZXg6IFB5dGhvbi0zLjQuMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjQuMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTMuNC4zL3NldHVwLnB5Ci1AQCAtNTIxLDYgKzUyMSw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbGliX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlyc1s6XQotICAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnNbOl0KLSsgICAgICAgICAgICBsaWJfZGlycy5hcHBlbmQob3MuZW52aXJvbi5nZXQoJ1NUQUdJTkdfTElCRElSJykpCi0rICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKG9zLmVudmlyb24uZ2V0KCdTVEFHSU5HX0lOQ0RJUicpKQotICAgICAgICAgZXh0cyA9IFtdCi0gICAgICAgICBtaXNzaW5nID0gW10KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKaW5kZXggZGUwNzY0My4uYzg5ZDlhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKQEAgLTE3LDEyICsxNywxMiBAQAogIExpYi9zeXNjb25maWcucHkgICAgICAgICAgIHwgICAgNSArKysrLQogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggYTU0NWFiOS4uNzQzMTdkMSAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTU1NCw3ICs1NTQsMTAgQEAgZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6Ci0gICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS4zL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CitAQCAtNDk4LDcgKzQ5OCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKKyAgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ1NPJ10gPSBTTwogIAogICAgICAgICAgIyBBbHdheXMgY29udmVydCBzcmNkaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAogLSAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQpAQCAtMzMsMTEgKzMzLDExIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKLWRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggNzI4N2YxMS4uY2M5Mjk5OCAxMDA2NDQKLS0tLSBhL0xpYi9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9zeXNjb25maWcucHkKLUBAIC01NjIsNyArNTYyLDEwIEBAIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4zLm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5CitAQCAtNTQ0LDcgKzU0NCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAgICAgIF9DT05GSUdfVkFSU1sndXNlcmJhc2UnXSA9IF9nZXR1c2VyYmFzZSgpCiAgCiAgICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCkBAIC00OSw2ICs0OSwzIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI0MGU4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwMyArMCwwIEBACi1Gcm9tIDAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgotRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjE4OjUzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCi0KLUNvcHkgYW5kIHRoZW4gYWRhcHQgUHl0aG9uL3JhbmRvbS5jIGZyb20gZGVmYXVsdCBicmFuY2guIERpZmZlcmVuY2UgYmV0d2VlbiAzLjUKLWFuZCBkZWZhdWx0IGJyYW5jaGVzOgotCi0qIFB5dGhvbiAzLjUgb25seSB1c2VzIGdldHJhbmRvbSgpIGluIG5vbi1ibG9ja2luZyBtb2RlOiBmbGFncz1HUk5EX05PTkJMT0NLCi0qIElmIGdldHJhbmRvbSgpIGZhaWxzIHdpdGggRUFHQUlOOiBweV9nZXRyYW5kb20oKSBpbW1lZGlhdGVseSBmYWlscyBhbmQKLSAgcmVtZW1iZXJzIHRoYXQgZ2V0cmFuZG9tKCkgZG9lc24ndCB3b3JrLgotKiBQeXRob24gMy41IGhhcyBubyBfUHlPU19VUmFuZG9tTm9uYmxvY2soKSBmdW5jdGlvbjogX1B5T1NfVVJhbmRvbSgpCi0gIHdvcmtzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9uIFB5dGhvbiAzLjUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8wMzViYTVkYTNlNTNlNDVjNzEyYjM5ZmUxZjZmYjc0M2U2OTdjMDMyXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KLQotLS0tCi0gUHl0aG9uL3JhbmRvbS5jIHwgNDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKLWluZGV4IGQyMDM5MzkuLjMxZjYxZDAgMTAwNjQ0Ci0tLS0gYS9QeXRob24vcmFuZG9tLmMKLSsrKyBiL1B5dGhvbi9yYW5kb20uYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgIlB5dGhvbi5oIgotICNpZmRlZiBNU19XSU5ET1dTCi0gIyAgaW5jbHVkZSA8d2luZG93cy5oPgotKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0Ci0rICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCi0rIyAgaW5jbHVkZSA8d2luY3J5cHQuaD4KLSAjZWxzZQotICMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0gIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi1AQCAtMzcsMTAgKzQwLDkgQEAgd2luMzJfdXJhbmRvbV9pbml0KGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gZXJyb3I6Ci0tICAgIGlmIChyYWlzZSkKLSsgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLS0gICAgZWxzZQotLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgV2luZG93cyByYW5kb20gQVBJIChDcnlwdG9HZW4pIik7Ci0rICAgIH0KLSAgICAgcmV0dXJuIC0xOwotIH0KLSAKLUBAIC01Myw4ICs1NSw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAKLSAgICAgaWYgKGhDcnlwdFByb3YgPT0gMCkKLSAgICAgewotLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCi0rICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICB3aGlsZSAoc2l6ZSA+IDApCi1AQCAtNjMsMTEgKzY2LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgICAgaWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCAoRFdPUkQpY2h1bmssIGJ1ZmZlcikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLS0gICAgICAgICAgICBpZiAocmFpc2UpCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gICAgICAgICBidWZmZXIgKz0gY2h1bms7Ci1AQCAtNzYsNTggKzc3LDIzIEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIElzc3VlICMyNTAwMzogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLS0gKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLwotLSNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pCi0tI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLS0KLS0vKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgotLQotLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLS0gICBvbiBlcnJvci4gKi8KLS1zdGF0aWMgaW50Ci0tcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQotLXsKLS0gICAgd2hpbGUgKHNpemUgPiAwKSB7Ci0tICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwotLSAgICAgICAgaW50IHJlczsKLS0KLS0gICAgICAgIGlmICghZmF0YWwpIHsKLS0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0tICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0tICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLS0KLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlIHsKLS0gICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgYnVmZmVyICs9IGxlbjsKLS0gICAgICAgIHNpemUgLT0gbGVuOwotLSAgICB9Ci0tICAgIHJldHVybiAwOwotLX0KLS0KLS0jZWxzZQotKyNlbHNlIC8qICFNU19XSU5ET1dTICovCi0gCi0gI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKLSAjZGVmaW5lIFBZX0dFVFJBTkRPTSAxCi0gCi0tLyogQ2FsbCBnZXRyYW5kb20oKQotKy8qIENhbGwgZ2V0cmFuZG9tKCkgdG8gZ2V0IHJhbmRvbSBieXRlczoKLSsKLSAgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLS0gICAtIFJldHVybiAwIGlmIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCi0tICAgICBFUEVSTSkgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20KLS0gICAgIG5vdCBpbml0aWFsaXplZCB5ZXQpIGFuZCByYWlzZT0wLgotKyAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNKSwKLSsgICAgIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlsZWQgd2l0aCBFQUdBSU4gKHN5c3RlbSB1cmFuZG9tIG5vdAotKyAgICAgaW5pdGlhbGl6ZWQgeWV0KS4KLSAgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6Ci0tICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KLS0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCi0rICAgICBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50Ci0rICAgICBlcnJvci4KLSsKLSsgICBnZXRyYW5kb20oKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLSBzdGF0aWMgaW50Ci0gcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotQEAgLTE0MiwxNiArMTA4LDE5IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNjgzOS4gVG8gYXZvaWQgdGhpcywgdXNlIHRoZQotICAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7Ci0rICAgIGNoYXIgKmRlc3Q7Ci0gICAgIGxvbmcgbjsKLSAKLSAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKLSAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi0rICAgIGRlc3QgPSBidWZmZXI7Ci0gICAgIHdoaWxlICgwIDwgc2l6ZSkgewotICNpZmRlZiBzdW4KLSAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKLS0gICAgICAgICAgIHRvIDEwMjQgYnl0ZXMgKi8KLSsgICAgICAgICAgIHRvIDEwMjQgYnl0ZXMuIENhbGwgaXQgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUKLSsgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgMTAyNCk7Ci0gI2Vsc2UKLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgTE9OR19NQVgpOwotQEAgLTE2MSwzNCArMTMwLDM1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICNpZmRlZiBIQVZFX0dFVFJBTkRPTQotICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICB9Ci0gI2Vsc2UKLSAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0tICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0tICAgICAgICAgKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwotKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgotKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KLSAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLS0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKLSsgICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOwotKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgIH0KLSAjZW5kaWYKLSAKLSAgICAgICAgIGlmIChuIDwgMCkgewotLSAgICAgICAgICAgIC8qIEVOT1NZUzogZ2V0cmFuZG9tKCkgc3lzY2FsbCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgKGJ1dAotLSAgICAgICAgICAgICAqIG1heWJlIHN1cHBvcnRlZCBieSB0aGUgaG9zdCB3aGljaCBidWlsdCBQeXRob24pLiBFUEVSTToKLS0gICAgICAgICAgICAgKiBnZXRyYW5kb20oKSBzeXNjYWxsIGJsb2NrZWQgYnkgU0VDQ09NUCBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSsgICAgICAgICAgICAvKiBFTk9TWVM6IHRoZSBzeXNjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KLSsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCi0rICAgICAgICAgICAgICAgb3Igc29tZXRoaW5nIGVsc2UuICovCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewotICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwotICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgotQEAgLTIwMiwxNjkgKzE3MiwyMjUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOwotKyAgICAgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLwotKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLS0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotIAotLSAgICAgICAgYnVmZmVyICs9IG47Ci0rICAgICAgICBkZXN0ICs9IG47Ci0gICAgICAgICBzaXplIC09IG47Ci0gICAgIH0KLSAgICAgcmV0dXJuIDE7Ci0gfQotLSNlbmRpZgotIAotLXN0YXRpYyBzdHJ1Y3QgewotLSAgICBpbnQgZmQ7Ci0tICAgIGRldl90IHN0X2RldjsKLS0gICAgaW5vX3Qgc3RfaW5vOwotLX0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSsjZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkKLSsjZGVmaW5lIFBZX0dFVEVOVFJPUFkgMQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBnZXRlbnRyb3B5KCk6Ci0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSsgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLSsgICAtIFJldHVybiAwIGlmIGdldGVudHJvcHkoKSBzeXNjYWxsIGlzIG5vdCBhdmFpbGFibGUgKGZhaWxlZCB3aXRoIEVOT1NZUyBvcgotKyAgICAgRVBFUk0pLgotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKLSsgICAgIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudAotKyAgICAgZXJyb3IuCi0gCi0tICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi0tc3RhdGljIHZvaWQKLS1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotKyAgIGdldGVudHJvcHkoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLStzdGF0aWMgaW50Ci0rcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIHsKLS0gICAgaW50IGZkOwotLSAgICBQeV9zc2l6ZV90IG47Ci0rICAgIC8qIElzIGdldGVudHJvcHkoKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZgotKyAgICAgICBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLiAqLwotKyAgICBzdGF0aWMgaW50IGdldGVudHJvcHlfd29ya3MgPSAxOwotIAotLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKLS0KLS0jaWZkZWYgUFlfR0VUUkFORE9NCi0tICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7Ci0tICAgICAgICByZXR1cm47Ci0rICAgIGlmICghZ2V0ZW50cm9weV93b3JrcykgewotKyAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLS0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAotLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLS0jZW5kaWYKLSAKLS0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOwotLSAgICB9Ci0rICAgIHdoaWxlIChzaXplID4gMCkgewotKyAgICAgICAgLyogZ2V0ZW50cm9weSgpIGlzIGxpbWl0ZWQgdG8gcmV0dXJuaW5nIHVwIHRvIDI1NiBieXRlcy4gQ2FsbCBpdAotKyAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUgcmVxdWVzdGVkLiAqLwotKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKLSsgICAgICAgIGludCByZXM7Ci0gCi0tICAgIHdoaWxlICgwIDwgc2l6ZSkKLS0gICAgewotLSAgICAgICAgZG8gewotLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0tICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0rICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0rICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0rICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotKyAgICAgICAgfQotIAotLSAgICAgICAgaWYgKG4gPD0gMCkgewotLSAgICAgICAgICAgIC8qIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMCBieXRlcyAqLwotLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwuCi0rICAgICAgICAgICAgICAgRVBFUk06IHRoZSBzeXNjYWxsIGlzIGJsb2NrZWQgYnkgYSBzZWN1cml0eSBwb2xpY3kgKGV4OiBTRUNDT01QKQotKyAgICAgICAgICAgICAgIG9yIHNvbWV0aGluZyBlbHNlLiAqLwotKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKLSsgICAgICAgICAgICAgICAgZ2V0ZW50cm9weV93b3JrcyA9IDA7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0ZW50cm9weSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IG47Ci0rCi0rICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgc2l6ZSAtPSBsZW47Ci0gICAgIH0KLS0gICAgY2xvc2UoZmQpOwotKyAgICByZXR1cm4gMTsKLSB9Ci0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pICovCi0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSAKLS0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStzdGF0aWMgc3RydWN0IHsKLSsgICAgaW50IGZkOwotKyAgICBkZXZfdCBzdF9kZXY7Ci0rICAgIGlub190IHN0X2lubzsKLSt9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07Ci0rCi0rLyogUmVhZCByYW5kb20gYnl0ZXMgZnJvbSB0aGUgL2Rldi91cmFuZG9tIGRldmljZToKLSsKLSsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKLSsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSsKLSsgICBQb3NzaWJsZSBjYXVzZXMgb2YgZXJyb3JzOgotKwotKyAgIC0gb3BlbigpIGZhaWxlZCB3aXRoIEVOT0VOVCwgRU5YSU8sIEVOT0RFViwgRUFDQ0VTOiB0aGUgL2Rldi91cmFuZG9tIGRldmljZQotKyAgICAgd2FzIG5vdCBmb3VuZC4gRm9yIGV4YW1wbGUsIGl0IHdhcyByZW1vdmVkIG1hbnVhbGx5IG9yIG5vdCBleHBvc2VkIGluIGEKLSsgICAgIGNocm9vdCBvciBjb250YWluZXIuCi0rICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IKLSsgICAtIGZzdGF0KCkgZmFpbGVkCi0rICAgLSByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAKLSsKLSsgICByZWFkKCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCi0rCi0rICAgVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZGV2aWNlIGlzIGtlcHQgb3BlbiBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIHVzaW5nCi0rICAgbWFueSBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gcnVuIGluIHBhcmFsbGVsIGZyb20gbXVsdGlwbGUgdGhyZWFkczoKLSsgICBzZWUgdGhlIGlzc3VlICMxODc1Ni4KLSsKLSsgICBzdF9kZXYgYW5kIHN0X2lubyBmaWVsZHMgb2YgdGhlIGZpbGUgZGVzY3JpcHRvciAoZnJvbSBmc3RhdCgpKSBhcmUgY2FjaGVkIHRvCi0rICAgY2hlY2sgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgcmVwbGFjZWQgYnkgYSBkaWZmZXJlbnQgZmlsZSAod2hpY2ggaXMKLSsgICBsaWtlbHkgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uKTogc2VlIHRoZSBpc3N1ZSAjMjEyMDcuCi0rCi0rICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIG9yIHJlcGxhY2VkLCBvcGVuIGEgbmV3IGZpbGUgZGVzY3JpcHRvcgotKyAgIGJ1dCBkb24ndCBjbG9zZSB0aGUgb2xkIGZpbGUgZGVzY3JpcHRvcjogaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZwotKyAgIGltcG9ydGFudCBmb3Igc29tZSB0aGlyZC1wYXJ0eSBjb2RlLiAqLwotIHN0YXRpYyBpbnQKLS1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rZGV2X3VyYW5kb20oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSB7Ci0gICAgIGludCBmZDsKLSAgICAgUHlfc3NpemVfdCBuOwotLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgaW50IHJlczsKLS0jZW5kaWYKLS0KLS0gICAgaWYgKHNpemUgPD0gMCkKLS0gICAgICAgIHJldHVybiAwOwotIAotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7Ci0tICAgIGlmIChyZXMgPCAwKSB7Ci0tICAgICAgICByZXR1cm4gLTE7Ci0tICAgIH0KLS0gICAgaWYgKHJlcyA9PSAxKSB7Ci0tICAgICAgICByZXR1cm4gMDsKLS0gICAgfQotLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0tICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotLSNlbmRpZgotKyAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7Ci0gCi0tICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLS0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLS0gICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCi0tICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0tICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0tICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCi0tICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLS0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLS0gICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKLS0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLS0gICAgZWxzZSB7Ci0tICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgICAgICBpZiAoZmQgPCAwKSB7Ci0tICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotLSAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotLSAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLS0gICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICB9Ci0gICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0tICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0tICAgICAgICAgICAgY2xvc2UoZmQpOwotLSAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSsgICAgICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0rICAgICAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSsgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0rICAgICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewotKyAgICAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSsgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSsgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCi0rICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKLS0gICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSsgICAgICAgICAgICBpZiAoZmQgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKLSsgICAgICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpIHsKLSsgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLSAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSsgICAgICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLSsgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0tICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OwotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgewotKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOwotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0rICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgfQotIAotLSAgICBkbyB7Ci0tICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIGlmIChuID09IC0xKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIC0xOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG4gPT0gMCkgewotLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLS0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIGlmIChuID09IC0xKQotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgaWYgKG4gPT0gMCkgewotKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOwotKyAgICAgICAgICAgIHNpemUgLT0gbjsKLSsgICAgICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotKyAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGJ1ZmZlciArPSBuOwotLSAgICAgICAgc2l6ZSAtPSBuOwotLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0rICAgICAgICB3aGlsZSAoMCA8IHNpemUpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAKLSsgICAgICAgICAgICBpZiAobiA8PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0rICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBidWZmZXIgKz0gbjsKLSsgICAgICAgICAgICBzaXplIC09IG47Ci0rICAgICAgICB9Ci0rICAgICAgICBjbG9zZShmZCk7Ci0rICAgIH0KLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTM3Niw4ICs0MDIsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQotICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwotICAgICB9Ci0gfQotKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotIAotLSNlbmRpZgotIAotIC8qIEZpbGwgYnVmZmVyIHdpdGggcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgYSBsaW5lYXIgY29uZ3J1ZW50Ci0gICAgZ2VuZXJhdG9yIChMQ0cpOgotQEAgLTQwMCwzMSArNDI2LDEwMCBAQCBsY2dfdXJhbmRvbSh1bnNpZ25lZCBpbnQgeDAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgIH0KLSB9Ci0gCi0tLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KLS0gICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCi0tICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgotKy8qIFJlYWQgcmFuZG9tIGJ5dGVzOgotIAotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotLWludAotLV9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rICAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzCi0rICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yCi0rCi0rICAgVXNlZCBzb3VyY2VzIG9mIGVudHJvcHkgb3JkZXJlZCBieSBwcmVmZXJlbmNlLCBwcmVmZXJyZWQgc291cmNlIGZpcnN0OgotKwotKyAgIC0gQ3J5cHRHZW5SYW5kb20oKSBvbiBXaW5kb3dzCi0rICAgLSBnZXRyYW5kb20oKSBmdW5jdGlvbiAoZXg6IExpbnV4IGFuZCBTb2xhcmlzKTogY2FsbCBweV9nZXRyYW5kb20oKQotKyAgIC0gZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIChleDogT3BlbkJTRCk6IGNhbGwgcHlfZ2V0ZW50cm9weSgpCi0rICAgLSAvZGV2L3VyYW5kb20gZGV2aWNlCi0rCi0rICAgUmVhZCBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlIGlmIGdldHJhbmRvbSgpIG9yIGdldGVudHJvcHkoKSBmdW5jdGlvbgotKyAgIGlzIG5vdCBhdmFpbGFibGUgb3IgZG9lcyBub3Qgd29yay4KLSsKLSsgICBQcmVmZXIgZ2V0cmFuZG9tKCkgb3ZlciBnZXRlbnRyb3B5KCkgYmVjYXVzZSBnZXRyYW5kb20oKSBzdXBwb3J0cyBibG9ja2luZwotKyAgIGFuZCBub24tYmxvY2tpbmcgbW9kZSBhbmQgUHl0aG9uIHJlcXVpcmVzIG5vbi1ibG9ja2luZyBSTkcgYXQgc3RhcnR1cCB0bwotKyAgIGluaXRpYWxpemUgaXRzIGhhc2ggc2VjcmV0OiBzZWUgdGhlIFBFUCA1MjQuCi0rCi0rICAgUHJlZmVyIGdldHJhbmRvbSgpIGFuZCBnZXRlbnRyb3B5KCkgb3ZlciByZWFkaW5nIGRpcmVjdGx5IC9kZXYvdXJhbmRvbQotKyAgIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgZmlsZSBkZXNjcmlwdG9ycyBhbmQgc28gYXZvaWQgRU5GSUxFIG9yCi0rICAgRU1GSUxFIGVycm9ycyAodG9vIG1hbnkgb3BlbiBmaWxlcyk6IHNlZSB0aGUgaXNzdWUgIzE4NzU2LgotKwotKyAgIE9ubHkgdXNlIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwuIFRoZXkgYXJlIG1vcmUgc2VjdXJlIGJlY2F1c2UgaXQgaXMKLSsgICBoYXJkZXIgdG8gZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBhIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwgbGFuZCB0aGFuIGEKLSsgICBSTkcgcnVubmluZyBpbiB0aGUgdXNlciBsYW5kLiBUaGUga2VybmVsIGhhcyBhIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlCi0rICAgYW5kIGhhcyBhY2Nlc3MgdG8gaGFyZHdhcmUgUk5HLCB0aGV5IGFyZSB1c2VkIGFzIGVudHJvcHkgc291cmNlcy4KLSsKLSsgICBOb3RlOiB0aGUgT3BlblNTTCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9uIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmVzZWVkCi0rICAgaXRzIFJORyBvbiBmb3JrKCksIHR3byBjaGlsZCBwcm9jZXNzZXMgKHdpdGggdGhlIHNhbWUgcGlkKSBnZW5lcmF0ZSB0aGUgc2FtZQotKyAgIHJhbmRvbSBudW1iZXJzOiBzZWUgaXNzdWUgIzE4NzQ3LiBLZXJuZWwgUk5HcyBkb24ndCBoYXZlIHRoaXMgaXNzdWUsCi0rICAgdGhleSBoYXZlIGFjY2VzcyB0byBnb29kIHF1YWxpdHkgZW50cm9weSBzb3VyY2VzLgotKwotKyAgIElmIHJhaXNlIGlzIHplcm86Ci0rCi0rICAgLSBEb24ndCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IKLSsgICAtIERvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciAoZG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSkgaWYKLSsgICAgIGEgZnVuY3Rpb24gZmFpbHMgd2l0aCBFSU5UUjogcmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkIGZ1bmN0aW9uCi0rICAgLSBEb24ndCByZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBmdW5jdGlvbnMuCi0rKi8KLStzdGF0aWMgaW50Ci0rcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyAgICBpbnQgcmVzOwotKyNlbmRpZgotKwotICAgICBpZiAoc2l6ZSA8IDApIHsKLS0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0tICAgIGlmIChzaXplID09IDApCi0rCi0rICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gCi0gI2lmZGVmIE1TX1dJTkRPV1MKLS0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLS0gICAgcmV0dXJuIHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCAwKTsKLSsgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKLSsjZWxzZQotKwotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyNpZmRlZiBQWV9HRVRSQU5ET00KLSsgICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotICNlbHNlCi0tICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0rICAgIHJlcyA9IHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0rI2VuZGlmCi0rICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgICAgaWYgKHJlcyA9PSAxKSB7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICAvKiBnZXRyYW5kb20oKSBvciBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZTogZmFpbGVkIHdpdGgKLSsgICAgICAgRU5PU1lTLCBFUEVSTSBvciBFQUdBSU4uIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLiAqLwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gZGV2X3VyYW5kb20oYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0gI2VuZGlmCi0gfQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCi0rICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwotKyAgIGV4Y2VwdCBsb25nIGxpdmluZyBwcml2YXRlIGtleXMgZm9yIGFzeW1tZXRyaWMgZW5jcnlwdGlvbi4KLSsKLSsgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStpbnQKLStfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotK3sKLSsgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotK30KLSsKLSB2b2lkCi0gX1B5UmFuZG9tX0luaXQodm9pZCkKLSB7Ci1AQCAtNDYzLDEzICs1NTgsMTQgQEAgX1B5UmFuZG9tX0luaXQodm9pZCkKLSAgICAgICAgIH0KLSAgICAgfQotICAgICBlbHNlIHsKLS0jaWZkZWYgTVNfV0lORE9XUwotLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLS0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0tICAgICAgICAodm9pZClweV9nZXRlbnRyb3B5KHNlY3JldCwgc2VjcmV0X3NpemUsIDEpOwotLSNlbHNlCi0tICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotLSNlbmRpZgotKyAgICAgICAgaW50IHJlczsKLSsKLSsgICAgICAgIC8qIF9QeVJhbmRvbV9Jbml0KCkgaXMgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIFB5dGhvbiBpbml0aWFsaXphdGlvbgotKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4gKi8KLSsgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOwotKyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAgLTQ4MSw4ICs1NzcsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQotICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSAgICAgICAgIGhDcnlwdFByb3YgPSAwOwotICAgICB9Ci0tI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotLSAgICAvKiBub3RoaW5nIHRvIGNsZWFuICovCi0gI2Vsc2UKLSAgICAgZGV2X3VyYW5kb21fY2xvc2UoKTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2RmMTJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLURFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGRiIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi1QWVRIT05fTUFKTUlOID0gIjMuNSIKLVBZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCi1maWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCi1maWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU3ZDFmOGJmYmFiZjRmMjUwMDI3M2ZiMDcwNmU2ZjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlZmUyYWQ2NTc1ODU1NDIzYWI2MzBmNWI1MWE4ZWY2ZTU1NTZmNzc0NTg0YzA2YmVhYjQ5MjZmOTMwZGRiYjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ODBlZDk5YWE2MGQzNTBjNjVhNjU5MTQ0OTQyMDdlIgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyAke1BOfS1hcmdwYXJzZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5M2I4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKQEAgLTAsMCArMSwzMjMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKKworUFIgPSAiJHtJTkNfUFJ9LjAiCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK1BZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjM3NjNlZGY5ODI0ZDVkM2ExNWY1ZjY0NjA4M2I2ZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYzZDJjM2IwNDAyZDYxOTFiOTA3MzFlMGY3MzVjNjQ4MzBlNzUyMjM0OGFlYjdlZDM4MmE4MzE2NWQ0NTAwOSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKK2V4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKKworIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisJYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5IFwKKwkJJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKKworCSMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorCWNkICR7UEtHRH0KKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScpIgorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Jywgb3B0aW1pemU9MSkiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0yKSIKKwljZCAtCit9CisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCisKK0ZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKK0ZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCisKKyMgcGFja2FnZSBsaWJweXRob24zCitQQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKK0ZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKK0ZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKKworIyBjYXRjaCBtYW5wYWdlCitQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgorRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1tb2R1bGVzIgorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCisgICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyaworICAgICMgdGhhdCBkZXBlbmRlbmN5LgorICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQorCisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2U9IHBuICsgJy0nICsga2V5CisKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwcmVwZW5kLCBvdGhlcndpc2UgcHl0aG9uLW1pc2MgZ2V0cyBldmVyeXRoaW5nCisgICAgICAgICAgICAjIHNvIHdlIHVzZSBhIG5ldyB2YXJpYWJsZQorICAgICAgICAgICAgbmV3cGFja2FnZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgICAgICAjICJCdWlsZCIgcHl0aG9uJ3MgbWFuaWZlc3QgRklMRVMsIFJERVBFTkRTIGFuZCBTVU1NQVJZCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgCSMgQWRkIGNhY2hlZCBmaWxlcworICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKyAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKKworICAgICMgV2UgbmVlZCB0byBlbnN1cmUgc3RhdGljZGV2IHBhY2thZ2VzIG1hdGNoIGZvciBmaWxlcyBmaXJzdCBzbyB3ZSBzb3J0IGluIHJldmVyc2UKKyAgICBuZXdwYWNrYWdlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCisgICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQorfQorCisjIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKK1NSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IGZpbGU6Ly9weXRob24zLW1hbmlmZXN0Lmpzb24iCisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkKKyAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU0YzAyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgotUFIgPSAiJHtJTkNfUFJ9IgotCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSArPSAiXAotICBmaWxlOi8vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggXAotICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgZmlsZTovLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggXAotICAke0RJU1RST19TUkNfVVJJfSBcCi0gIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICBmaWxlOi8vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggXAotICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgZmlsZTovL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBcCi0gIGZpbGU6Ly9zZXR1cHR3ZWFrcy5wYXRjaCBcCi0gIGZpbGU6Ly9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIFwKLSAgZmlsZTovL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIFwKLSAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi0gIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgZmlsZTovL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2ggXAotICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAotICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gIGZpbGU6Ly9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaCBcCi0gIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotICAgICAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgyCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCi0gICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5Ci0gICAgICAgIGNkIC0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyNeTERGTEFHUz0uKiNMREZMQUdTPSR7TERGTEFHU30gLUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0jZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0JIyBBZnRlciBzd2l6emxpbmcgdGhlIG1ha2VmaWxlLCB3ZSBuZWVkIHRvIHJ1biB0aGUgYnVpbGQgYWdhaW4uCi0JIyBpbnN0YWxsIGNhbiByYWNlIHdpdGggdGhlIGJ1aWxkIHNvIHdlIGhhdmUgdG8gcnVuIHRoaXMgZmlyc3QsIHRoZW4gaW5zdGFsbAotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCi0KLSAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci0gICAgcHl0aG9uIC1tIHB5X2NvbXBpbGUgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotfQotCi1yZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgotUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uLW1vZHVsZXMiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMgotUEFDS0FHRVMgPSsgImxpYiR7QlBOfTIiCi1GSUxFU19saWIke0JQTn0yID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi0KLSMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMiCi0jaW5oZXJpdCBwdGVzdCBhZnRlciAicmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMiIHNvIFBBQ0tBR0VTIGRvZXNuJ3QgZ2V0IG92ZXJ3cml0dGVuCi1pbmhlcml0IHB0ZXN0Ci0KLSMgVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgaW5oZXJpdCBwdGVzdCBmb3IgdGhlIG92ZXJyaWRlIHRvIHRha2UgZWZmZWN0Ci1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgczpMSUJESVIvcHl0aG9uL3B0ZXN0OiR7UFRFU1RfUEFUSH06ZyBcCi0JIC1lIHM6TElCRElSOiR7bGliZGlyfTpnIFwKLQkgLWkgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci0KLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotCXNlZCAtaSBcCi0JCS1lICdzOi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JICAgIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkke0R9LyR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEwOTkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKQEAgLTAsMCArMSwyODEgQEAKK3JlcXVpcmUgcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIiCisKK1BSID0gIiR7SU5DX1BSfSIKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgKz0gIlwKKyAgZmlsZTovLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIFwKKyAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIFwKKyAgJHtESVNUUk9fU1JDX1VSSX0gXAorICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAorICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgZmlsZTovL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIFwKKyAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCisgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggXAorICBmaWxlOi8vc2V0dXB0d2Vha3MucGF0Y2ggXAorICBmaWxlOi8vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBcCisgIGZpbGU6Ly9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBcCisgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICBmaWxlOi8vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoIFwKKyAgZmlsZTovL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaCBcCisgIGZpbGU6Ly9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoIFwKKyAgZmlsZTovL3J1bi1wdGVzdCBcCisgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKKyAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKKyAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLCxkYiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKyAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisgICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAorICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQorICAgICAgICBjZCAtCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgorCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisJCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAorCisgICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgorICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgorICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKKwkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKK30KKworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCisKKyMgcGFja2FnZSBsaWJweXRob24yCitQQUNLQUdFUyA9KyAibGliJHtCUE59MiIKK0ZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKKworIyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKKyNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KK2luaGVyaXQgcHRlc3QKKworIyBUaGlzIG11c3QgY29tZSBhZnRlciBpbmhlcml0IHB0ZXN0IGZvciB0aGUgb3ZlcnJpZGUgdG8gdGFrZSBlZmZlY3QKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorCXNlZCAtZSBzOkxJQkRJUi9weXRob24vcHRlc3Q6JHtQVEVTVF9QQVRIfTpnIFwKKwkgLWUgczpMSUJESVI6JHtsaWJkaXJ9OmcgXAorCSAtaSAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKworCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1pIFwKKwkJLWUgJ3M6LS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkgICAgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgTmFzdHkgYnV0IGlmIGJkYiBpc24ndCBlbmFibGVkIHRoZSBwYWNrYWdlIHdvbid0IGJlIGdlbmVyYXRlZAorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19yZW1vdmUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgJycsICcke1BOfS1ic2RkYicsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tbW9kdWxlcyIKKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCisKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJy5weScpOgorICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUgKyAnYycpCisKKyAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBzdGF0aWNkZXYgcGFja2FnZXMgbWF0Y2ggZm9yIGZpbGVzIGZpcnN0IHNvIHdlIHNvcnQgaW4gcmV2ZXJzZQorICAgIG5ld3BhY2thZ2VzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKKyAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCit9CisKKyMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDIucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczIucHkgZmlsZTovL3B5dGhvbjItbWFuaWZlc3QuanNvbiIKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbiBjcmVhdGVfbWFuaWZlc3QyLnB5CisgICAgY3AgcHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob246ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L25hdGl2ZXNkay1xZW11LWhlbHBlcl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgppbmRleCA5NDNjYTVmLi5jZGMyZjUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiUWVtdSBoZWxwZXIgc2NyaXB0cyIKIExJQ0VOU0UgPSAiR1BMdjIiCi1SREVQRU5EU18ke1BOfSA9ICJuYXRpdmVzZGstcWVtdSBuYXRpdmVzZGstcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIFwKK1JERVBFTkRTXyR7UE59ID0gIm5hdGl2ZXNkay1xZW11IFwKKyAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIG5hdGl2ZXNkay1weXRob24zLWxvZ2dpbmcgXAogICAgICAgICAgICAgICAgICIKIAogUFIgPSAicjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMmExZDE0Yi4uZGM3M2RmOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjgsNyArMjgsNyBAQAogICAgIC0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCiAgICAgIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPSR7VVNSQklOUEFUSH0vcHl0aG9uMi43IgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPXB5dGhvbjIuNyIKIAogRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExEPScke0xEfScgQVI9JyR7QVJ9JyBPQkpDT1BZPScke09CSkNPUFl9JyBMREZMQUdTPScke0xERkxBR1N9JyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZGM2ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3MCArMCwwIEBACi1Gcm9tIDg3MzdlZWYxOGYzOWVkMDg3ZmQ5MTFkMGEwODg2ZTgxNzRkMDQ2OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIENVU0UgVFBNCi0KLVJhdGhlciB0aGFuIGludGVncmF0aW5nIFRQTSBmdW5jdGlvbmFsaXR5IGludG8gUUVNVSBkaXJlY3RseQotdXNpbmcgdGhlIFRQTSBlbXVsYXRpb24gb2YgbGlidHBtcywgd2Ugbm93IGludGVncmF0ZSBhbiBleHRlcm5hbAotZW11bGF0ZWQgVFBNIGRldmljZS4gVGhpcyBkZXZpY2UgaXMgZXhwZWN0ZWQgdG8gaW1wbGVtZW50IGEgTGludXgKLUNVU0UgaW50ZXJmYWNlIChDVVNFID0gY2hhcmFjdGVyIGRldmljZSBpbiB1c2Vyc3BhY2UpLgotCi1RRU1VIHRhbGtzIHRvIHRoZSBDVVNFIFRQTSB1c2luZyBtdWNoIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCi1wYXNzdGhyb3VnaCBkcml2ZXIuIEZvciBleGFtcGxlLCB0aGUgVFBNIGNvbW1hbmRzIGFuZCByZXNwb25zZXMKLWFyZSBzZW50IHRvIHRoZSBDVVNFIFRQTSB1c2luZyB0aGUgcmVhZCgpL3dyaXRlKCkgaW50ZXJmYWNlLgotSG93ZXZlciwgc29tZSBvdXQtb2YtYmFuZCBjb250cm9sIG5lZWRzIHRvIGJlIGRvbmUgdXNpbmcgdGhlIENVU0UKLVRQTSdzIGlvY3Rscy4gVGhlIENVU0UgVFBNIGN1cnJlbnRseSBkZWZpbmVzIGFuZCBpbXBsZW1lbnRzIDE1Ci1kaWZmZXJlbnQgaW9jdGxzIGZvciBjb250cm9sbGluZyBjZXJ0YWluIGxpZmUtY3ljbGUgYXNwZWN0cyBvZgotdGhlIGVtdWxhdGVkIFRQTS4gVGhlIGlvY3RscyBjYW4gYmUgcmVnYXJkZWQgYXMgYSByZXBsYWNlbWVudCBmb3IKLWRpcmVjdCBmdW5jdGlvbiBjYWxscyB0byBhIFRQTSBlbXVsYXRvciBpZiB0aGUgVFBNIHdlcmUgdG8gYmUKLWRpcmVjdGx5IGludGVncmF0ZWQgaW50byBRRU1VLgotCi1PbmUgb2YgdGhlIGlvY3RscyBhbGxvd3MgdG8gZ2V0IGEgYml0bWFzayBvZiBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzLgotRWFjaCByZXR1cm5lZCBiaXQgaW5kaWNhdGVzIHdoaWNoIGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCi1BbiBpbmNsdWRlIGZpbGUgZGVmaW5pbmcgdGhlIHZhcmlvdXMgaW9jdGxzIGlzIGFkZGVkIHRvIFFFTVUuCi0KLVRoZSBDVVNFIFRQTSBhbmQgYXNzb2NpYXRlZCB0b29scyBjYW4gYmUgZm91bmQgaGVyZToKLQotaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmJlcmdlci9zd3RwbQotCi0ocGxlYXNlIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24pCi0KLVRvIHVzZSB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0sIHRoZSBDVVNFIFRQTSBzaG91bGQgYmUgc3RhcnRlZCBhcyBmb2xsb3dzOgotCi0vdXNyL2Jpbi9zd3RwbV9pb2N0bCAtcyAvZGV2L3Z0cG0tdGVzdAotCi0vdXNyL2Jpbi9zd3RwbV9jdXNlIC1uIHZ0cG0tdGVzdAotCi1RRU1VIGNhbiB0aGVuIGJlIHN0YXJ0ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotCi1xZW11LXN5c3RlbS14ODZfNjQgXAotCVsuLi5dIFwKLSAgICAgICAgLXRwbWRldiBjdXNlLXRwbSxpZD10cG0wLGNhbmNlbC1wYXRoPS9kZXYvbnVsbCxwYXRoPS9kZXYvdnRwbS10ZXN0IFwKLSAgICAgICAgLWRldmljZSB0cG0tdGlzLGlkPXRwbTAsdHBtZGV2PXRwbTAgXAotCVsuLi5dCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotQ2M6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1Db25mbGljdHM6Ci0JZG9jcy9xbXAtY29tbWFuZHMudHh0Ci0KLVBhdGNoIGNoZXJyeS1waWNrZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL3FlbXUtdHBtLCBicmFuY2ggdjIuOC4wK3RwbSwKLWNvbW1pdCAyN2Q2Y2Q4NTZkNWExNDA2MTk1NWRmN2E5M2VlNDkwNjk3YTdhMTc0LiBBcHBsaWVkIGNsZWFubHkgZXhjZXB0IGZvcgotZG9jcy9xbXAtY29tbWFuZHMudHh0IHdoaWNoIGRpZCBub3QgZXhpc3QgeWV0IGluIHFlbXUgMi43LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBobXAuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKLSBody90cG0vdHBtX2ludC5oICAgICAgICAgfCAgIDEgKwotIGh3L3RwbS90cG1faW9jdGwuaCAgICAgICB8IDIxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIHwgMjc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gcWFwaS1zY2hlbWEuanNvbiAgICAgICAgIHwgIDE4ICsrKy0KLSBxZW11LW9wdGlvbnMuaHggICAgICAgICAgfCAgMjEgKysrLQotIHRwbS5jICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQotIDcgZmlsZXMgY2hhbmdlZCwgNTI5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBody90cG0vdHBtX2lvY3RsLmgKLQotZGlmZiAtLWdpdCBhL2htcC5jIGIvaG1wLmMKLWluZGV4IGNjMjA1NmU5ZTIuLjI3N2I0NWVmNWEgMTAwNjQ0Ci0tLS0gYS9obXAuYwotKysrIGIvaG1wLmMKLUBAIC04ODMsNiArODgzLDEyIEBAIHZvaWQgaG1wX2luZm9fdHBtKE1vbml0b3IgKm1vbiwgY29uc3QgUURpY3QgKnFkaWN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID8gIixjYW5jZWwtcGF0aD0iIDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBvLT5oYXNfY2FuY2VsX3BhdGggPyB0cG8tPmNhbmNlbF9wYXRoIDogIiIpOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfQ1VTRV9UUE06Ci0rICAgICAgICAgICAgdHBvID0gdGktPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YTsKLSsgICAgICAgICAgICBtb25pdG9yX3ByaW50Zihtb24sICIlcyVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gIixwYXRoPSIgOiAiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gdHBvLT5wYXRoIDogIiIpOwotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfX01BWDoKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2ludC5oIGIvaHcvdHBtL3RwbV9pbnQuaAotaW5kZXggZjJmMjg1YjNjYy4uNmIyYzljOTUzYSAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1faW50LmgKLSsrKyBiL2h3L3RwbS90cG1faW50LmgKLUBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB0cG1fcmVzcF9oZHIgewotICNkZWZpbmUgVFBNX1RBR19SU1BfQVVUSDFfQ09NTUFORCAweGM1Ci0gI2RlZmluZSBUUE1fVEFHX1JTUF9BVVRIMl9DT01NQU5EIDB4YzYKLSAKLSsjZGVmaW5lIFRQTV9TVUNDRVNTICAgICAgICAgICAgICAgMAotICNkZWZpbmUgVFBNX0ZBSUwgICAgICAgICAgICAgICAgICA5Ci0gCi0gI2RlZmluZSBUUE1fT1JEX0NvbnRpbnVlU2VsZlRlc3QgIDB4NTMKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2lvY3RsLmggYi9ody90cG0vdHBtX2lvY3RsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hMzQxZTE1NzQxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9ody90cG0vdHBtX2lvY3RsLmgKLUBAIC0wLDAgKzEsMjE1IEBACi0rLyoKLSsgKiB0cG1faW9jdGwuaAotKyAqCi0rICogKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxNCwgMjAxNS4KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDMtY2xhdXNlIEJTRCBsaWNlbnNlCi0rICovCi0rI2lmbmRlZiBfVFBNX0lPQ1RMX0hfCi0rI2RlZmluZSBfVFBNX0lPQ1RMX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsKLSsvKgotKyAqIEV2ZXJ5IHJlc3BvbnNlIGZyb20gYSBjb21tYW5kIGludm9sdmluZyBhIFRQTSBjb21tYW5kIGV4ZWN1dGlvbiBtdXN0IGhvbGQKLSsgKiB0aGUgcHRtX3JlcyBhcyB0aGUgZmlyc3QgZWxlbWVudC4KLSsgKiBwdG1fcmVzIGNvcnJlc3BvbmRzIHRvIHRoZSBlcnJvciBjb2RlIG9mIGEgY29tbWFuZCBleGVjdXRlZCBieSB0aGUgVFBNLgotKyAqLwotKwotK3R5cGVkZWYgdWludDMyX3QgcHRtX3JlczsKLSsKLSsvKiBQVE1fR0VUX1RQTUVTVEFCTElTSEVEOiBnZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJpdDsgLyogVFBNIGVzdGFibGlzaGVkIGJpdCAqLwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQ6IHJlc2V0IGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9yZXNldF9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQ4X3QgbG9jOyAvKiBsb2NhbGl0eSB0byB1c2UgKi8KLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogUFRNX0lOSVQgKi8KLStzdHJ1Y3QgcHRtX2luaXQgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGluaXRfZmxhZ3M7IC8qIHNlZSBkZWZpbml0aW9ucyBiZWxvdyAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBhYm92ZSBpbml0X2ZsYWdzICovCi0rI2RlZmluZSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSAoMSA8PCAwKQotKyAgICAvKiBkZWxldGUgdm9sYXRpbGUgc3RhdGUgZmlsZSBhZnRlciByZWFkaW5nIGl0ICovCi0rCi0rLyogUFRNX1NFVF9MT0NBTElUWSAqLwotK3N0cnVjdCBwdG1fbG9jIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50OF90IGxvYzsgLyogbG9jYWxpdHkgdG8gc2V0ICovCi0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qIFBUTV9IQVNIX0RBVEE6IGhhc2ggZ2l2ZW4gZGF0YSAqLwotK3N0cnVjdCBwdG1faGRhdGEgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKLSsgICAgICAgICAgICB1aW50OF90IGRhdGFbNDA5Nl07Ci0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qCi0rICogc2l6ZSBvZiB0aGUgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXI7IHg4Nl82NCBjYW4gaGFuZGxlIDhrLAotKyAqIHBwYzY0bGUgb25seSB+N2s7IGtlZXAgdGhlIHJlc3BvbnNlIGJlbG93IGEgNGsgcGFnZSBzaXplCi0rICovCi0rI2RlZmluZSBQVE1fU1RBVEVfQkxPQl9TSVpFICgzICogMTAyNCkKLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIGdldCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0uCi0rICogSWYgdGhlIHNpemUgb2YgdGhlIHN0YXRlIGJsb2IgZXhjZWVkcyB0aGUgUFRNX1NUQVRFX0JMT0JfU0laRSwgbXVsdGlwbGUgcmVhZHMKLSsgKiB3aXRoIHRoaXMgaW9jdGwgYW5kIHdpdGggYWRqdXN0ZWQgb2Zmc2V0IGFyZSBuZWNlc3NhcnkuIEFsbCBieXRlcwotKyAqIG11c3QgYmUgdHJhbnNmZXJyZWQgYW5kIHRoZSB0cmFuc2ZlciBpcyBkb25lIG9uY2UgdGhlIGxhc3QgYnl0ZSBoYXMgYmVlbgotKyAqIHJldHVybmVkLgotKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgcmVhZCgpIGludGVyZmFjZSBmb3IgcmVhZGluZyB0aGUgZGF0YTsgaG93ZXZlciwKLSsgKiB0aGUgZmlyc3QgYnl0ZXMgb2YgdGhlIHN0YXRlIGJsb2Igd2lsbCBiZSBwYXJ0IG9mIHRoZSByZXNwb25zZSB0byB0aGUgaW9jdGwoKTsKLSsgKiBhIHN1YnNlcXVlbnQgcmVhZCgpIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSB0b3RhbCBsZW5ndGggKHRvdGxlbmd0aCkgZXhjZWVkcwotKyAqIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgYnl0ZXMuIHNlZWsoKSBpcyBub3Qgc3VwcG9ydGVkLgotKyAqLwotK3N0cnVjdCBwdG1fZ2V0c3RhdGUgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0RFQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHB1bGwgKi8KLSsgICAgICAgICAgICB1aW50MzJfdCBvZmZzZXQ7ICAgICAgLyogb2Zmc2V0IGZyb20gd2hlcmUgdG8gcmVhZCAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHRvdGxlbmd0aDsgICAvKiB0b3RhbCBsZW5ndGggdGhhdCB3aWxsIGJlIHRyYW5zZmVycmVkICovCi0rICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOyAgICAgIC8qIG51bWJlciBvZiBieXRlcyBpbiBmb2xsb3dpbmcgYnVmZmVyICovCi0rICAgICAgICAgICAgdWludDhfdCAgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogVFBNIHN0YXRlIGJsb2IgdHlwZXMgKi8KLSsjZGVmaW5lIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5UICAxCi0rI2RlZmluZSBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFICAgMgotKyNkZWZpbmUgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUgIDMKLSsKLSsvKiBzdGF0ZV9mbGFncyBhYm92ZSA6ICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgICAgIDEgLyogb24gaW5wdXQ6ICBnZXQgZGVjcnlwdGVkIHN0YXRlICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19FTkNSWVBURUQgICAgIDIgLyogb24gb3V0cHV0OiBzdGF0ZSBpcyBlbmNyeXB0ZWQgKi8KLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIHNldCBzdGF0ZSBibG9icyBpbiB0aGUgVFBNLgotKyAqIElmIHRoZSBzaXplIG9mIHRoZSBzdGF0ZSBibG9iIGV4Y2VlZHMgdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUsIG11bHRpcGxlCi0rICogJ3dyaXRlcycgdXNpbmcgdGhpcyBpb2N0bCBhcmUgbmVjZXNzYXJ5LiBUaGUgbGFzdCBwYWNrZXQgaXMgaW5kaWNhdGVkCi0rICogYnkgdGhlIGxlbmd0aCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUuCi0rICogVGhlIHZlcnkgZmlyc3QgcGFja2V0IG1heSBoYXZlIGEgbGVuZ3RoIGluZGljYXRvciBvZiAnMCcgZW5hYmxpbmcKLSsgKiBhIHdyaXRlKCkgd2l0aCBhbGwgdGhlIGJ5dGVzIGZyb20gYSBidWZmZXIuIElmIHRoZSB3cml0ZSgpIGludGVyZmFjZQotKyAqIGlzIHVzZWQsIGEgZmluYWwgaW9jdGwgd2l0aCBhIG5vbi1mdWxsIGJ1ZmZlciBtdXN0IGJlIG1hZGUgdG8gaW5kaWNhdGUKLSsgKiB0aGF0IGFsbCBkYXRhIHdlcmUgdHJhbnNmZXJyZWQgKGEgd3JpdGUgd2l0aCAwIGJ5dGVzIHdvdWxkIG5vdCB3b3JrKS4KLSsgKi8KLStzdHJ1Y3QgcHRtX3NldHN0YXRlIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50MzJfdCBzdGF0ZV9mbGFnczsgLyogbWF5IGJlIFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHNldCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsgICAgICAvKiBsZW5ndGggb2YgdGhlIGRhdGE7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSAwIG9uIHRoZSBmaXJzdCBwYWNrZXQgdG8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgdXNpbmcgd3JpdGUoKSAqLwotKyAgICAgICAgICAgIHVpbnQ4X3QgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyoKLSsgKiBQVE1fR0VUX0NPTkZJRzogRGF0YSBzdHJ1Y3R1cmUgdG8gZ2V0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgotKyAqIHN1Y2ggYXMgd2hpY2gga2V5cyBhcmUgYXBwbGllZC4KLSsgKi8KLStzdHJ1Y3QgcHRtX2dldGNvbmZpZyB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsjZGVmaW5lIFBUTV9DT05GSUdfRkxBR19GSUxFX0tFWSAgICAgICAgMHgxCi0rI2RlZmluZSBQVE1fQ09ORklHX0ZMQUdfTUlHUkFUSU9OX0tFWSAgIDB4MgotKwotKwotK3R5cGVkZWYgdWludDY0X3QgcHRtX2NhcDsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZXN0IHB0bV9lc3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3Jlc2V0X2VzdCBwdG1fcmVzZXRfZXN0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9sb2MgcHRtX2xvYzsKLSt0eXBlZGVmIHN0cnVjdCBwdG1faGRhdGEgcHRtX2hkYXRhOwotK3R5cGVkZWYgc3RydWN0IHB0bV9pbml0IHB0bV9pbml0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9nZXRzdGF0ZSBwdG1fZ2V0c3RhdGU7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3NldHN0YXRlIHB0bV9zZXRzdGF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZ2V0Y29uZmlnIHB0bV9nZXRjb25maWc7Ci0rCi0rLyogY2FwYWJpbGl0eSBmbGFncyByZXR1cm5lZCBieSBQVE1fR0VUX0NBUEFCSUxJVFkgKi8KLSsjZGVmaW5lIFBUTV9DQVBfSU5JVCAgICAgICAgICAgICAgICgxKQotKyNkZWZpbmUgUFRNX0NBUF9TSFVURE9XTiAgICAgICAgICAgKDE8PDEpCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9UUE1FU1RBQkxJU0hFRCAoMTw8MikKLSsjZGVmaW5lIFBUTV9DQVBfU0VUX0xPQ0FMSVRZICAgICAgICgxPDwzKQotKyNkZWZpbmUgUFRNX0NBUF9IQVNISU5HICAgICAgICAgICAgKDE8PDQpCi0rI2RlZmluZSBQVE1fQ0FQX0NBTkNFTF9UUE1fQ01EICAgICAoMTw8NSkKLSsjZGVmaW5lIFBUTV9DQVBfU1RPUkVfVk9MQVRJTEUgICAgICgxPDw2KQotKyNkZWZpbmUgUFRNX0NBUF9SRVNFVF9UUE1FU1RBQkxJU0hFRCAoMTw8NykKLSsjZGVmaW5lIFBUTV9DQVBfR0VUX1NUQVRFQkxPQiAgICAgICgxPDw4KQotKyNkZWZpbmUgUFRNX0NBUF9TRVRfU1RBVEVCTE9CICAgICAgKDE8PDkpCi0rI2RlZmluZSBQVE1fQ0FQX1NUT1AgICAgICAgICAgICAgICAoMTw8MTApCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9DT05GSUcgICAgICAgICAoMTw8MTEpCi0rCi0rZW51bSB7Ci0rICAgIFBUTV9HRVRfQ0FQQUJJTElUWSAgICAgPSBfSU9SKCdQJywgMCwgcHRtX2NhcCksCi0rICAgIFBUTV9JTklUICAgICAgICAgICAgICAgPSBfSU9XUignUCcsIDEsIHB0bV9pbml0KSwKLSsgICAgUFRNX1NIVVRET1dOICAgICAgICAgICA9IF9JT1IoJ1AnLCAyLCBwdG1fcmVzKSwKLSsgICAgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1IoJ1AnLCAzLCBwdG1fZXN0KSwKLSsgICAgUFRNX1NFVF9MT0NBTElUWSAgICAgICA9IF9JT1dSKCdQJywgNCwgcHRtX2xvYyksCi0rICAgIFBUTV9IQVNIX1NUQVJUICAgICAgICAgPSBfSU9SKCdQJywgNSwgcHRtX3JlcyksCi0rICAgIFBUTV9IQVNIX0RBVEEgICAgICAgICAgPSBfSU9XUignUCcsIDYsIHB0bV9oZGF0YSksCi0rICAgIFBUTV9IQVNIX0VORCAgICAgICAgICAgPSBfSU9SKCdQJywgNywgcHRtX3JlcyksCi0rICAgIFBUTV9DQU5DRUxfVFBNX0NNRCAgICAgPSBfSU9SKCdQJywgOCwgcHRtX3JlcyksCi0rICAgIFBUTV9TVE9SRV9WT0xBVElMRSAgICAgPSBfSU9SKCdQJywgOSwgcHRtX3JlcyksCi0rICAgIFBUTV9SRVNFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1dSKCdQJywgMTAsIHB0bV9yZXNldF9lc3QpLAotKyAgICBQVE1fR0VUX1NUQVRFQkxPQiAgICAgID0gX0lPV1IoJ1AnLCAxMSwgcHRtX2dldHN0YXRlKSwKLSsgICAgUFRNX1NFVF9TVEFURUJMT0IgICAgICA9IF9JT1dSKCdQJywgMTIsIHB0bV9zZXRzdGF0ZSksCi0rICAgIFBUTV9TVE9QICAgICAgICAgICAgICAgPSBfSU9SKCdQJywgMTMsIHB0bV9yZXMpLAotKyAgICBQVE1fR0VUX0NPTkZJRyAgICAgICAgID0gX0lPUignUCcsIDE0LCBwdG1fZ2V0Y29uZmlnKSwKLSt9OwotKwotKyNlbmRpZiAvKiBfVFBNX0lPQ1RMX0ggKi8KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLWluZGV4IGU4OGMwZDIwYmMuLjA1MGYyYmE4NTAgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLSsrKyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaW5jbHVkZSAic3lzZW11L3RwbV9iYWNrZW5kX2ludC5oIgotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0rI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotIAotICNkZWZpbmUgREVCVUdfVFBNIDAKLSAKLUBAIC00NSw2ICs0Niw3IEBACi0gI2RlZmluZSBUWVBFX1RQTV9QQVNTVEhST1VHSCAidHBtLXBhc3N0aHJvdWdoIgotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIKG9iaikgXAotICAgICBPQkpFQ1RfQ0hFQ0soVFBNUGFzc3RocnVTdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1BBU1NUSFJPVUdIKQotKyNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotIAotQEAgLTcxLDEyICs3MywxOCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7Ci0gICAgIGJvb2wgaGFkX3N0YXJ0dXBfZXJyb3I7Ci0gCi0gICAgIFRQTVZlcnNpb24gdHBtX3ZlcnNpb247Ci0rICAgIHB0bV9jYXAgY3VzZV9jYXA7IC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgdWludDhfdCBjdXJfbG9jdHlfbnVtYmVyOyAvKiBsYXN0IHNldCBsb2NhbGl0eSAqLwotIH07Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSBUUE1QYXNzdGhydVN0YXRlOwotIAotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFICIvZGV2L3RwbTAiCi0gCi0rI2RlZmluZSBUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpICh0cG1fcHQtPmN1c2VfY2FwICE9IDApCi0rCi0rI2RlZmluZSBUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTChTLCBjYXApICgoKFMpLT5jdXNlX2NhcCAmIChjYXApKSA9PSAoY2FwKSkKLSsKLSAvKiBmdW5jdGlvbnMgKi8KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2FuY2VsX2NtZChUUE1CYWNrZW5kICp0Yik7Ci1AQCAtMTQ4LDcgKzE1NiwyOCBAQCBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfaXNfc2VsZnRlc3QoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX2xlbikKLSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zZXRfbG9jYWxpdHkoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY3R5X251bWJlcikKLSt7Ci0rICAgIHB0bV9sb2MgbG9jOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciAhPSBsb2N0eV9udW1iZXIpIHsKLSsgICAgICAgICAgICBsb2MudS5yZXEubG9jID0gbG9jdHlfbnVtYmVyOwotKyAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX1NFVF9MT0NBTElUWSwgJmxvYykgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IGNvdWxkIG5vdCBzZXQgbG9jYWxpdHkgb24gIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciA9IGxvY3R5X251bWJlcjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfdW5peF90eF9idWZzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50MzJfdCBpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCwgdWludDMyX3Qgb3V0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2VsZnRlc3RfZG9uZSkKLUBAIC0xNTcsNiArMTg2LDExIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0gICAgIGJvb2wgaXNfc2VsZnRlc3Q7Ci0gICAgIGNvbnN0IHN0cnVjdCB0cG1fcmVzcF9oZHIgKmhkcjsKLSAKLSsgICAgcmV0ID0gdHBtX3Bhc3N0aHJvdWdoX3NldF9sb2NhbGl0eSh0cG1fcHQsIGxvY2FsaXR5X251bWJlcik7Ci0rICAgIGlmIChyZXQgPCAwKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0gICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gZmFsc2U7Ci0gICAgIHRwbV9wdC0+dHBtX2V4ZWN1dGluZyA9IHRydWU7Ci0gICAgICpzZWxmdGVzdF9kb25lID0gZmFsc2U7Ci1AQCAtMjA3LDEwICsyNDEsMTIgQEAgZXJyX2V4aXQ6Ci0gfQotIAotIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHJhbnNmZXIoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUE1Mb2NhbGl0eSAqbG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnNlbGZ0ZXN0X2RvbmUpCi0gewotICAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyh0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+d19idWZmZXIuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT53X29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+cl9idWZmZXIuYnVmZmVyLAotQEAgLTIzMSw2ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICBzd2l0Y2ggKGNtZCkgewotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9QUk9DRVNTX0NNRDoKLSAgICAgICAgIHRwbV9wYXNzdGhyb3VnaF91bml4X3RyYW5zZmVyKHRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocl9wYXJtcy0+dHBtX3N0YXRlLT5sb2N0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmdGVzdF9kb25lKTsKLSAKLUBAIC0yNDcsNiArMjg0LDkzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkKGdwb2ludGVyIGRhdGEsCi0gfQotIAotIC8qCi0rICogR3JhY2VmdWxseSBzaHV0IGRvd24gdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIHB0bV9yZXMgcmVzOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fU0hVVERPV04sICZyZXMpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjbGVhbmx5IHNodXQgZG93biAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLSsvKgotKyAqIFByb2JlIGZvciB0aGUgQ1VTRSBUUE0gYnkgc2VuZGluZyBhbiBpb2N0bCgpIHJlcXVlc3RpbmcgaXRzCi0rICogY2FwYWJpbGl0eSBmbGFncy4KLSsgKi8KLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9DQVBBQklMSVRZLCAmdHBtX3B0LT5jdXNlX2NhcCkgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkVycm9yOiBDVVNFIFRQTSB3YXMgcmVxdWVzdGVkLCBidXQgcHJvYmluZyBmYWlsZWQiKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NoZWNrX2NhcHMoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgaW50IHJjID0gMDsKLSsgICAgcHRtX2NhcCBjYXBzID0gMDsKLSsgICAgY29uc3QgY2hhciAqdHBtID0gTlVMTDsKLSsKLSsgICAgLyogY2hlY2sgZm9yIG1pbi4gcmVxdWlyZWQgY2FwYWJpbGl0aWVzICovCi0rICAgIHN3aXRjaCAodHBtX3B0LT50cG1fdmVyc2lvbikgewotKyAgICBjYXNlIFRQTV9WRVJTSU9OXzFfMjoKLSsgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0lOSVQgfCBQVE1fQ0FQX1NIVVRET1dOIHwgUFRNX0NBUF9HRVRfVFBNRVNUQUJMSVNIRUQgfAotKyAgICAgICAgICAgICAgIFBUTV9DQVBfU0VUX0xPQ0FMSVRZOwotKyAgICAgICAgdHBtID0gIjEuMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl8yXzA6Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9JTklUIHwgUFRNX0NBUF9TSFVURE9XTiB8IFBUTV9DQVBfR0VUX1RQTUVTVEFCTElTSEVEIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NFVF9MT0NBTElUWSB8IFBUTV9DQVBfUkVTRVRfVFBNRVNUQUJMSVNIRUQ7Ci0rICAgICAgICB0cG0gPSAiMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl9VTlNQRUM6Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiAlczogVFBNIHZlcnNpb24gaGFzIG5vdCBiZWVuIHNldCIsCi0rICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogVFBNIGRvZXMgbm90IGltcGxlbWVudCBtaW5pbXVtIHNldCBvZiByZXF1aXJlZCAiCi0rICAgICAgICAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyBmb3IgVFBNICVzICgweCV4KSIsIHRwbSwgKGludCljYXBzKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLSsvKgotKyAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9pbml0IGluaXQgPSB7Ci0rICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAotKyAgICB9OwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IERldGVjdGVkIENVU0UgVFBNIGJ1dCBjb3VsZCBub3QgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZCBJTklUOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgcmMgPSAtMTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotKy8qCi0gICogU3RhcnQgdGhlIFRQTSAodGhyZWFkKS4gSWYgaXQgaGFkIGJlZW4gc3RhcnRlZCBiZWZvcmUsIHRoZW4gdGVybWluYXRlCi0gICogYW5kIHN0YXJ0IGl0IGFnYWluLgotICAqLwotQEAgLTI2MSw2ICszODUsOCBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7Ci0gCi0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTI5MSwxNCArNDE3LDQzIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2luaXQoVFBNQmFja2VuZCAqdGIsIFRQTVN0YXRlICpzLAotIAotIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIpCi0gewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKyAgICBwdG1fZXN0IGVzdDsKLSsKLSsgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSsgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCwgJmVzdCkgPCAwKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogQ291bGQgbm90IGdldCB0aGUgVFBNIGVzdGFibGlzaGVkICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWcgZnJvbSB0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gKGVzdC51LnJlc3AuYml0ICE9IDApOwotKyAgICB9Ci0gICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2N0eSkKLSB7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9yZXNldF9lc3QgcHRtcmVzZXRfZXN0OwotKwotICAgICAvKiBvbmx5IGEgVFBNIDIuMCB3aWxsIHN1cHBvcnQgdGhpcyAqLwotLSAgICByZXR1cm4gMDsKLSsgICAgaWYgKHRwbV9wdC0+dHBtX3ZlcnNpb24gPT0gVFBNX1ZFUlNJT05fMl8wKSB7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIHB0bXJlc2V0X2VzdC51LnJlcS5sb2MgPSB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXI7Ci0rCi0rICAgICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICZwdG1yZXNldF9lc3QpIDwgMCkgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiBDb3VsZCBub3QgcmVzZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIHJjID0gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiByYzsKLSB9Ci0gCi0gc3RhdGljIGJvb2wgdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yKFRQTUJhY2tlbmQgKnRiKQotQEAgLTMyOSw3ICs0ODQsOCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLS0gICAgaW50IG47Ci0rICAgIHB0bV9yZXMgcmVzOwotKyAgICBzdGF0aWMgYm9vbCBlcnJvcl9wcmludGVkOwotIAotICAgICAvKgotICAgICAgKiBBcyBvZiBMaW51eCAzLjcgdGhlIHRwbV90aXMgZHJpdmVyIGRvZXMgbm90IHByb3Blcmx5IGNhbmNlbAotQEAgLTMzOCwxNyArNDk0LDM0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotICAgICAgKiBjb21tYW5kLCBlLmcuLCBhIGNvbW1hbmQgZXhlY3V0ZWQgb24gdGhlIGhvc3QuCi0gICAgICAqLwotICAgICBpZiAodHBtX3B0LT50cG1fZXhlY3V0aW5nKSB7Ci0tICAgICAgICBpZiAodHBtX3B0LT5jYW5jZWxfZmQgPj0gMCkgewotLSAgICAgICAgICAgIG4gPSB3cml0ZSh0cG1fcHQtPmNhbmNlbF9mZCwgIi0iLCAxKTsKLS0gICAgICAgICAgICBpZiAobiAhPSAxKSB7Ci0tICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIGlmIChUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTCh0cG1fcHQsIFBUTV9DQVBfQ0FOQ0VMX1RQTV9DTUQpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0NBTkNFTF9UUE1fQ01ELCAmcmVzKSA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjYW5jZWwgY29tbWFuZCBvbiAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JfcHJpbnRlZCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiVFBNIGVycm9yIGNvZGUgZnJvbSBjb21tYW5kICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxhdGlvbiBvZiBDVVNFIFRQTTogMHgleCIsIHJlcyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcHJpbnRlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2Fubm90IGNhbmNlbCBUUE0gY29tbWFuZCBkdWUgdG8gbWlzc2luZyAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICJUUE0gc3lzZnMgY2FuY2VsIGVudHJ5Iik7Ci0rICAgICAgICAgICAgaWYgKHRwbV9wdC0+Y2FuY2VsX2ZkID49IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKHdyaXRlKHRwbV9wdC0+Y2FuY2VsX2ZkLCAiLSIsIDEpICE9IDEpIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNhbm5vdCBjYW5jZWwgVFBNIGNvbW1hbmQgZHVlIHRvIG1pc3NpbmcgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRQTSBzeXNmcyBjYW5jZWwgZW50cnkiKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci1AQCAtMzc4LDYgKzU1MSwxMSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKLSAgICAgY2hhciAqZGV2OwotICAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotIAotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgLyogbm90IG5lZWRlZCwgYnV0IHNvIHdlIGhhdmUgYSBmZCAqLwotKyAgICAgICAgcmV0dXJuIHFlbXVfb3BlbigiL2Rldi9udWxsIiwgT19XUk9OTFkpOwotKyAgICB9Ci0rCi0gICAgIGlmICh0Yi0+Y2FuY2VsX3BhdGgpIHsKLSAgICAgICAgIGZkID0gcWVtdV9vcGVuKHRiLT5jYW5jZWxfcGF0aCwgT19XUk9OTFkpOwotICAgICAgICAgaWYgKGZkIDwgMCkgewotQEAgLTQxMiwxMiArNTkwLDIyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotICAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSsgICAgYm9vbCBoYXZlX2N1c2UgPSBmYWxzZTsKLSsKLSsgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInR5cGUiKTsKLSsgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYgIXN0cmNtcCgiY3VzZS10cG0iLCB2YWx1ZSkpIHsKLSsgICAgICAgIGhhdmVfY3VzZSA9IHRydWU7Ci0rICAgIH0KLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgImNhbmNlbC1wYXRoIik7Ci0gICAgIHRiLT5jYW5jZWxfcGF0aCA9IGdfc3RyZHVwKHZhbHVlKTsKLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInBhdGgiKTsKLSAgICAgaWYgKCF2YWx1ZSkgewotKyAgICAgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiTWlzc2luZyBwYXRoIHRvIGFjY2VzcyBDVVNFIFRQTSIpOwotKyAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSsgICAgICAgIH0KLSAgICAgICAgIHZhbHVlID0gVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFOwotICAgICB9Ci0gCi1AQCAtNDMyLDE1ICs2MjAsMzYgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSAgICAgfQotIAotKyAgICB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXIgPSB+MDsKLSsKLSsgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLwotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgewotKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICBpZiAodHBtX3V0aWxfdGVzdF90cG1kZXYodHBtX3B0LT50cG1fZmQsICZ0cG1fcHQtPnRwbV92ZXJzaW9uKSkgewotICAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIGlzIG5vdCBhIFRQTSBkZXZpY2UuIiwKLSAgICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9kZXYpOwotICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICB9Ci0gCi0rICAgIGlmIChoYXZlX2N1c2UpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gCi0gIGVycl9jbG9zZV90cG1kZXY6Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bih0cG1fcHQpOwotKwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+dHBtX2ZkKTsKLSAgICAgdHBtX3B0LT50cG1fZmQgPSAtMTsKLSAKLUBAIC00OTEsNiArNzAwLDggQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Rlc3Ryb3koVFBNQmFja2VuZCAqdGIpCi0gCi0gICAgIHRwbV9iYWNrZW5kX3RocmVhZF9lbmQoJnRwbV9wdC0+dGJ0KTsKLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKHRwbV9wdCk7Ci0rCi0gICAgIHFlbXVfY2xvc2UodHBtX3B0LT50cG1fZmQpOwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+Y2FuY2VsX2ZkKTsKLSAKLUBAIC01NjQsMyArNzc1LDQ0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZWdpc3Rlcih2b2lkKQotIH0KLSAKLSB0eXBlX2luaXQodHBtX3Bhc3N0aHJvdWdoX3JlZ2lzdGVyKQotKwotKy8qIENVU0UgVFBNICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0rewotKyAgICByZXR1cm4gIkNVU0UgVFBNIGJhY2tlbmQgZHJpdmVyIjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0rICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSsgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi0rICAgIC5kZXNjICAgICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jcmVhdGVfZGVzYywKLSsgICAgLmNyZWF0ZSAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jcmVhdGUsCi0rICAgIC5kZXN0cm95ICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZGVzdHJveSwKLSsgICAgLmluaXQgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9pbml0LAotKyAgICAuc3RhcnR1cF90cG0gICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3N0YXJ0dXBfdHBtLAotKyAgICAucmVhbGxvY19idWZmZXIgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3JlYWxsb2NfYnVmZmVyLAotKyAgICAucmVzZXQgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0LAotKyAgICAuaGFkX3N0YXJ0dXBfZXJyb3IgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yLAotKyAgICAuZGVsaXZlcl9yZXF1ZXN0ICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2RlbGl2ZXJfcmVxdWVzdCwKLSsgICAgLmNhbmNlbF9jbWQgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kLAotKyAgICAuZ2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fZXN0YWJsaXNoZWRfZmxhZywKLSsgICAgLnJlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnLAotKyAgICAuZ2V0X3RwbV92ZXJzaW9uICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fdmVyc2lvbiwKLSt9OwotKwotK3N0YXRpYyBjb25zdCBUeXBlSW5mbyB0cG1fY3VzZV9pbmZvID0gewotKyAgICAubmFtZSA9IFRZUEVfVFBNX0NVU0UsCi0rICAgIC5wYXJlbnQgPSBUWVBFX1RQTV9CQUNLRU5ELAotKyAgICAuaW5zdGFuY2Vfc2l6ZSA9IHNpemVvZihUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgLmNsYXNzX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdCwKLSsgICAgLmluc3RhbmNlX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0LAotKyAgICAuaW5zdGFuY2VfZmluYWxpemUgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZSwKLSt9OwotKwotK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3JlZ2lzdGVyKHZvaWQpCi0rewotKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmdHBtX2N1c2VfaW5mbyk7Ci0rICAgIHRwbV9yZWdpc3Rlcl9kcml2ZXIoJnRwbV9jdXNlX2RyaXZlcik7Ci0rfQotKwotK3R5cGVfaW5pdCh0cG1fY3VzZV9yZWdpc3RlcikKLWRpZmYgLS1naXQgYS9xYXBpLXNjaGVtYS5qc29uIGIvcWFwaS1zY2hlbWEuanNvbgotaW5kZXggNTY1ODcyM2IzNy4uNTMxMjBkMGY2MyAxMDA2NDQKLS0tLSBhL3FhcGktc2NoZW1hLmpzb24KLSsrKyBiL3FhcGktc2NoZW1hLmpzb24KLUBAIC0zNTIyLDEwICszNTIyLDEyIEBACi0gIyBBbiBlbnVtZXJhdGlvbiBvZiBUUE0gdHlwZXMKLSAjCi0gIyBAcGFzc3Rocm91Z2g6IFRQTSBwYXNzdGhyb3VnaCB0eXBlCi0rIyBAY3VzZS10cG06IENVU0UgVFBNIHR5cGUKLSsjICAgICAgICAgICAgU2luY2U6IDIuNgotICMKLSAjIFNpbmNlOiAxLjUKLSAjIwotLXsgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnIF0gfQotK3sgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnLCAnY3VzZS10cG0nIF0gfQotIAotICMjCi0gIyBAcXVlcnktdHBtLXR5cGVzOgotQEAgLTM1NTQsNiArMzU1NiwxNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY2FuY2VsLXBhdGgnIDogJ3N0cid9IH0KLSAKLSAjIwotKyMgQFRQTUN1c2VPcHRpb25zOgotKyMKLSsjIEluZm9ybWF0aW9uIGFib3V0IHRoZSBDVVNFIFRQTSB0eXBlCi0rIwotKyMgQHBhdGg6IHN0cmluZyBkZXNjcmliaW5nIHRoZSBwYXRoIHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgVFBNIGRldmljZQotKyMKLSsjIFNpbmNlOiAyLjYKLSsjIwotK3sgJ3N0cnVjdCc6ICdUUE1DdXNlT3B0aW9ucycsICdkYXRhJzogeyAncGF0aCcgOiAnc3RyJ319Ci0rCi0rIyMKLSAjIEBUcG1UeXBlT3B0aW9uczoKLSAjCi0gIyBBIHVuaW9uIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBUUE0gYmFja2VuZCB0eXBlcycgY29uZmlndXJhdGlvbiBvcHRpb25zCi1AQCAtMzU2Myw3ICszNTc2LDggQEAKLSAjIFNpbmNlOiAxLjUKLSAjIwotIHsgJ3VuaW9uJzogJ1RwbVR5cGVPcHRpb25zJywKLS0gICAnZGF0YSc6IHsgJ3Bhc3N0aHJvdWdoJyA6ICdUUE1QYXNzdGhyb3VnaE9wdGlvbnMnIH0gfQotKyAgICdkYXRhJzogeyAncGFzc3Rocm91Z2gnIDogJ1RQTVBhc3N0aHJvdWdoT3B0aW9ucycsCi0rICAgICAgICAgICAgICdjdXNlLXRwbScgOiAnVFBNQ3VzZU9wdGlvbnMnIH0gfQotIAotICMjCi0gIyBAVHBtSW5mbzoKLWRpZmYgLS1naXQgYS9xZW11LW9wdGlvbnMuaHggYi9xZW11LW9wdGlvbnMuaHgKLWluZGV4IGE3MWFhZjhlYTguLmUwZjFkOGU2NzYgMTAwNjQ0Ci0tLS0gYS9xZW11LW9wdGlvbnMuaHgKLSsrKyBiL3FlbXUtb3B0aW9ucy5oeAotQEAgLTI3NjMsNyArMjc2MywxMCBAQCBERUYoInRwbWRldiIsIEhBU19BUkcsIFFFTVVfT1BUSU9OX3RwbWRldiwgXAotICAgICAiLXRwbWRldiBwYXNzdGhyb3VnaCxpZD1pZFsscGF0aD1wYXRoXVssY2FuY2VsLXBhdGg9cGF0aF1cbiIKLSAgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlOyBkZWZhdWx0IGlzIC9kZXYvdHBtMFxuIgotICAgICAiICAgICAgICAgICAgICAgIHVzZSBjYW5jZWwtcGF0aCB0byBwcm92aWRlIHBhdGggdG8gVFBNJ3MgY2FuY2VsIHN5c2ZzIGVudHJ5OyBpZlxuIgotLSAgICAiICAgICAgICAgICAgICAgIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIHNlYXJjaGVkIGZvciBpbiAvc3lzL2NsYXNzL21pc2MvdHBtPy9kZXZpY2VcbiIsCi0rICAgICIgICAgICAgICAgICAgICAgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGluIC9zeXMvY2xhc3MvbWlzYy90cG0/L2RldmljZVxuIgotKyAgICAiLXRwbWRldiBjdXNlLXRwbSxpZD1pZCxwYXRoPXBhdGhcbiIKLSsgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlIHRvIHRhbGsgdG8gdGhlXG4iCi0rICAgICIgICAgICAgICAgICAgICAgVFBNIGVtdWxhdG9yIHByb3ZpZGluZyBhIENVU0UgaW50ZXJmYWNlXG4iLAotICAgICBRRU1VX0FSQ0hfQUxMKQotIFNURVhJCi0gCi1AQCAtMjc3Miw4ICsyNzc1LDggQEAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhIFRQTSBkZXZpY2Ugb3B0aW9uIGlzOgotIAotIEBpdGVtIC10cG1kZXYgQHZhcntiYWNrZW5kfSAsaWQ9QHZhcntpZH0gWyxAdmFye29wdGlvbnN9XQotIEBmaW5kZXggLXRwbWRldgotLUJhY2tlbmQgdHlwZSBtdXN0IGJlOgotLUBvcHRpb257cGFzc3Rocm91Z2h9LgotK0JhY2tlbmQgdHlwZSBtdXN0IGJlIGVpdGhlciBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLStAb3B0aW9ue3Bhc3N0aHJvdWdofSwgQG9wdGlvbntjdXNlLXRwbX0uCi0gCi0gVGhlIHNwZWNpZmljIGJhY2tlbmQgdHlwZSB3aWxsIGRldGVybWluZSB0aGUgYXBwbGljYWJsZSBvcHRpb25zLgotIFRoZSBAY29kZXstdHBtZGV2fSBvcHRpb24gY3JlYXRlcyB0aGUgVFBNIGJhY2tlbmQgYW5kIHJlcXVpcmVzIGEKLUBAIC0yODIzLDYgKzI4MjYsMTggQEAgVG8gY3JlYXRlIGEgcGFzc3Rocm91Z2ggVFBNIHVzZSB0aGUgZm9sbG93aW5nIHR3byBvcHRpb25zOgotIE5vdGUgdGhhdCB0aGUgQGNvZGV7LXRwbWRldn0gaWQgaXMgQGNvZGV7dHBtMH0gYW5kIGlzIHJlZmVyZW5jZWQgYnkKLSBAY29kZXt0cG1kZXY9dHBtMH0gaW4gdGhlIGRldmljZSBvcHRpb24uCi0gCi0rQGl0ZW0gLXRwbWRldiBjdXNlLXRwbSwgaWQ9QHZhcntpZH0sIHBhdGg9QHZhcntwYXRofQotKwotKyhMaW51eC1ob3N0IG9ubHkpIEVuYWJsZSBhY2Nlc3MgdG8gYSBUUE0gZW11bGF0b3Igd2l0aCBhIENVU0UgaW50ZXJmYWNlLgotKwotK0BvcHRpb257cGF0aH0gc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBDVVNFIFRQTSBjaGFyYWN0ZXIgZGV2aWNlLgotKwotK1RvIGNyZWF0ZSBhIGJhY2tlbmQgZGV2aWNlIGFjY2Vzc2luZyB0aGUgQ1VTRSBUUE0gZW11bGF0b3IgdXNpbmcgL2Rldi92dHBtCi0rdXNlIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnM6Ci0rQGV4YW1wbGUKLSstdHBtZGV2IGN1c2UtdHBtLGlkPXRwbTAscGF0aD0vZGV2L3Z0cG0gLWRldmljZSB0cG0tdGlzLHRwbWRldj10cG0wCi0rQGVuZCBleGFtcGxlCi0rCi0gQGVuZCB0YWJsZQotIAotIEVURVhJCi1kaWZmIC0tZ2l0IGEvdHBtLmMgYi90cG0uYwotaW5kZXggOWE3YzcxMTRkMy4uNWVjMjM3MzI4NiAxMDA2NDQKLS0tLSBhL3RwbS5jCi0rKysgYi90cG0uYwotQEAgLTI1LDcgKzI1LDcgQEAgc3RhdGljIFFMSVNUX0hFQUQoLCBUUE1CYWNrZW5kKSB0cG1fYmFja2VuZHMgPQotIAotIAotICNkZWZpbmUgVFBNX01BWF9NT0RFTFMgICAgICAxCi0tI2RlZmluZSBUUE1fTUFYX0RSSVZFUlMgICAgIDEKLSsjZGVmaW5lIFRQTV9NQVhfRFJJVkVSUyAgICAgMgotIAotIHN0YXRpYyBUUE1Ecml2ZXJPcHMgY29uc3QgKmJlX2RyaXZlcnNbVFBNX01BWF9EUklWRVJTXSA9IHsKLSAgICAgTlVMTCwKLUBAIC0yNzIsNiArMjcyLDE1IEBAIHN0YXRpYyBUUE1JbmZvICpxbXBfcXVlcnlfdHBtX2luc3QoVFBNQmFja2VuZCAqZHJ2KQotICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID0gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFRQTV9UWVBFX0NVU0VfVFBNOgotKyAgICAgICAgcmVzLT5vcHRpb25zLT50eXBlID0gVFBNX1RZUEVfT1BUSU9OU19LSU5EX0NVU0VfVFBNOwotKyAgICAgICAgdHBvID0gZ19uZXcwKFRQTVBhc3N0aHJvdWdoT3B0aW9ucywgMSk7Ci0rICAgICAgICByZXMtPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YSA9IHRwbzsKLSsgICAgICAgIGlmIChkcnYtPnBhdGgpIHsKLSsgICAgICAgICAgICB0cG8tPnBhdGggPSBnX3N0cmR1cChkcnYtPnBhdGgpOwotKyAgICAgICAgICAgIHRwby0+aGFzX3BhdGggPSB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVFBNX1RZUEVfX01BWDoKLSAgICAgICAgIGJyZWFrOwotICAgICB9Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwY2FlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIGE3NWE1MmQ2MjQxOGRhZmU0NjJiZTRmZTMwNDg1NTAxZDEwMTBiYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MjY6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtL3RyYW5zbGF0ZS1hNjQ6IHRyZWF0IERJU0FTX1VQREFURSBhcyB2YXJpYW50IG9mCisgRElTQVNfRVhJVAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJbiBPRSBwcm9qZWN0IDQuMTUgbGludXgga2VybmVsIGJvb3QgaGFuZyB3YXMgb2JzZXJ2ZWQgdW5kZXIKK3NpbmdsZSBjcHUgYWFyY2g2NCBxZW11LiBLZXJuZWwgY29kZSB3YXMgaW4gYSBsb29wIHdhaXRpbmcgZm9yCit2dGltZXIgYXJyaXZhbCwgc3Bpbm5pbmcgaW4gVEMgZ2VuZXJhdGVkIGJsb2Nrcywgd2hpbGUgaW50ZXJydXB0Cit3YXMgcGVuZGluZyB1bnByb2Nlc3NlZC4gVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdoZW4gcWVtdSB0cmllZCB0bworaGFuZGxlIHZ0aW1lciBpbnRlcnJ1cHQgdGFyZ2V0IGhhZCBpbnRlcnJ1cHRzIGRpc2FibGVkLCBhcworcmVzdWx0IGZsYWcgaW5kaWNhdGluZyBUQ0cgZXhpdCwgY3B1LT5pY291bnRfZGVjci51MTYuaGlnaCwKK3dhcyBjbGVhcmVkIGJ1dCBhcm1fY3B1X2V4ZWNfaW50ZXJydXB0IGZ1bmN0aW9uIGRpZCBub3QgY2FsbAorYXJtX2NwdV9kb19pbnRlcnJ1cHQgdG8gcHJvY2VzcyBpbnRlcnJ1cHQuIExhdGVyIHdoZW4gdGFyZ2V0CityZWVuYWJsZWQgaW50ZXJydXB0cywgaXQgaGFwcGVuZWQgd2l0aG91dCBleGl0IGludG8gbWFpbiBsb29wLCBzbworZm9sbG93aW5nIGNvZGUgdGhhdCB3YWl0ZWQgZm9yIHJlc3VsdCBvZiBpbnRlcnJ1cHQgZXhlY3V0aW9uCitydW4gaW4gaW5maW5pdGUgbG9vcC4KKworVG8gc29sdmUgdGhlIHByb2JsZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBDUFUgc3lzIHN0YXRlCisoaS5lIGVuYWJsZS9kaXNhYmxlIGludGVycnVwdCksIGFuZCBtYXJrZWQgYXMgRElTQVNfVVBEQVRFLAorc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgRElTQVNfRVhJVCB2YXJpYW50LCBhbmQgc2hvdWxkIGJlCitmb3JjZWQgdG8gZXhpdCBiYWNrIHRvIG1haW4gbG9vcCBzbyBxZW11IHdpbGwgaGF2ZSBhIGNoYW5jZQorcHJvY2Vzc2luZyBwZW5kaW5nIENQVSBzdGF0ZSB1cGRhdGVzLCBpbmNsdWRpbmcgcGVuZGluZworaW50ZXJydXB0cy4KKworVGhpcyBjaGFuZ2UgYnJpbmdzIGNvbnNpc3RlbmN5IHdpdGggaG93IERJU0FTX1VQREFURSBpcyB0cmVhdGVkCitpbiBhYXJjaDMyIGNhc2UuCisKK0NDOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CitDQzogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgorQ0M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1N1Z2dlc3RlZC1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitSZXZpZXdlZC1ieTogUmljaGFyZCBIZW5kZXJzb24gPHJpY2hhcmQuaGVuZGVyc29uQGxpbmFyby5vcmc+CitNZXNzYWdlLWlkOiAxNTIxNTI2MzY4LTE5OTYtMS1naXQtc2VuZC1lbWFpbC1rYW1lbnNreUBjaXNjby5jb20KK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKy0tLQorIHRhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworaW5kZXggMzFmZjA0Ny4uMzI3NTEzZSAxMDA2NDQKKy0tLSBhL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCisrKysgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworQEAgLTEzMzc4LDEyICsxMzM3OCwxMiBAQCBzdGF0aWMgdm9pZCBhYXJjaDY0X3RyX3RiX3N0b3AoRGlzYXNDb250ZXh0QmFzZSAqZGNiYXNlLCBDUFVTdGF0ZSAqY3B1KQorICAgICAgICAgY2FzZSBESVNBU19VUERBVEU6CisgICAgICAgICAgICAgZ2VuX2E2NF9zZXRfcGNfaW0oZGMtPnBjKTsKKyAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKy0gICAgICAgIGNhc2UgRElTQVNfSlVNUDoKKy0gICAgICAgICAgICB0Y2dfZ2VuX2xvb2t1cF9hbmRfZ290b19wdHIoKTsKKy0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRElTQVNfRVhJVDoKKyAgICAgICAgICAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7CisgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIERJU0FTX0pVTVA6CisrICAgICAgICAgICAgdGNnX2dlbl9sb29rdXBfYW5kX2dvdG9fcHRyKCk7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIERJU0FTX05PUkVUVVJOOgorICAgICAgICAgY2FzZSBESVNBU19TV0k6CisgICAgICAgICAgICAgYnJlYWs7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4Yzk4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIGI1ZmZkM2FhNGU5YmQ0ZWRiMDljYzg0YzQ2Zjc4ZGE3MjY5N2E5NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIEludHJvZHVjZSBjb25kaXRpb24gdG8gbm90aWZ5IHdhaXRlcnMgb2YgY29tcGxldGVkCi0gY29tbWFuZAotCi1JbnRyb2R1Y2UgYSBsb2NrIGFuZCBhIGNvbmRpdGlvbiB0byBub3RpZnkgYW55b25lIHdhaXRpbmcgZm9yIHRoZSBjb21wbGV0aW9uCi1vZiB0aGUgZXhlY3V0aW9uIG9mIGEgVFBNIGNvbW1hbmQgYnkgdGhlIGJhY2tlbmQgKHRocmVhZCkuIFRoZSBiYWNrZW5kCi11c2VzIHRoZSBjb25kaXRpb24gdG8gc2lnbmFsIGFueW9uZSB3YWl0aW5nIGZvciBjb21tYW5kIGNvbXBsZXRpb24uCi1XZSBuZWVkIHRvIHBsYWNlIHRoZSBjb25kaXRpb24gaW4gdHdvIGxvY2F0aW9uczogb25lIGlzIGludm9rZWQgYnkgdGhlCi1iYWNrZW5kIHRocmVhZCwgdGhlIG90aGVyIGJ5IHRoZSBib3R0b20gaGFsZiB0aHJlYWQuCi1XZSB3aWxsIHVzZSB0aGUgc2lnbmFsbGluZyB0byB3YWl0IGZvciBjb21tYW5kIGNvbXBsZXRpb24gYmVmb3JlIFZNCi1zdXNwZW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNi9tc2cwMDI1Mi5odG1sXQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gaHcvdHBtL3RwbV9pbnQuaCB8ICAzICsrKwotIGh3L3RwbS90cG1fdGlzLmMgfCAxNCArKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9pbnQuaCBiL2h3L3RwbS90cG1faW50LmgKLWluZGV4IDZiMmM5Yzk1M2EuLjcwYmUxYWQ4ZDkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX2ludC5oCi0rKysgYi9ody90cG0vdHBtX2ludC5oCi1AQCAtMzAsNiArMzAsOSBAQCBzdHJ1Y3QgVFBNU3RhdGUgewotICAgICBjaGFyICpiYWNrZW5kOwotICAgICBUUE1CYWNrZW5kICpiZV9kcml2ZXI7Ci0gICAgIFRQTVZlcnNpb24gYmVfdHBtX3ZlcnNpb247Ci0rCi0rICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOwotKyAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7Ci0gfTsKLSAKLSAjZGVmaW5lIFRQTShvYmopIE9CSkVDVF9DSEVDSyhUUE1TdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1RJUykKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYwotaW5kZXggMzgxZTcyNjZlYS4uMTRkOWU4M2VhMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdGlzLmMKLSsrKyBiL2h3L3RwbS90cG1fdGlzLmMKLUBAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKLSAKLSsgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCi0gICAgICAgICAgICAgICAgICAgICBUUE1fVElTX1NUU19WQUxJRCB8IFRQTV9USVNfU1RTX0RBVEFfQVZBSUxBQkxFKTsKLSAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID0gVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOwotQEAgLTM4NCw2ICszODYsMTAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgdHBtX3Rpc19yYWlzZV9pcnEocywgbG9jdHksCi0gICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfSU5UX0RBVEFfQVZBSUxBQkxFIHwgVFBNX1RJU19JTlRfU1RTX1ZBTElEKTsKLSAjZW5kaWYKLSsKLSsgICAgLyogbm90aWZ5IG9mIGNvbXBsZXRlZCBjb21tYW5kICovCi0rICAgIHFlbXVfY29uZF9zaWduYWwoJnMtPmNtZF9jb21wbGV0ZSk7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSB9Ci0gCi0gLyoKLUBAIC00MDMsNiArNDA5LDExIEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAvKiBub3RpZnkgb2YgY29tcGxldGVkIGNvbW1hbmQgKi8KLSsgICAgcWVtdV9jb25kX3NpZ25hbCgmcy0+Y21kX2NvbXBsZXRlKTsKLSsgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotKwotICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOwotIH0KLSAKLUBAIC0xMDcyLDYgKzEwODMsOSBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX2luaXRmbihPYmplY3QgKm9iaikKLSAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X2lvKCZzLT5tbWlvLCBPQkpFQ1QocyksICZ0cG1fdGlzX21lbW9yeV9vcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAidHBtLXRpcy1tbWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfTlVNX0xPQ0FMSVRJRVMgPDwgVFBNX1RJU19MT0NBTElUWV9TSElGVCk7Ci0rCi0rICAgIHFlbXVfbXV0ZXhfaW5pdCgmcy0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZzLT5jbWRfY29tcGxldGUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fdGlzX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU4ZjAxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gNzMyYThlMDQ2OTQ4ZmQ2MmIzMmNkMWRkNzZhNjc5OGViMWNhZjRkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDMvNF0gSW50cm9kdWNlIGNvbmRpdGlvbiBpbiBUUE0gYmFja2VuZCBmb3Igbm90aWZpY2F0aW9uCi0KLVRQTSBiYWNrZW5kcyB3aWxsIHN1c3BlbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgZnJvbnRlbmRzLiBBbHNvCi1oZXJlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB3YWl0IGZvciB0aGUgVFBNIGNvbW1hbmQgdG8gaGF2ZSBiZWVuCi1jb21wbGV0ZWx5IHByb2Nlc3NlZC4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggMDUwZjJiYTg1MC4uNDQ3MzllYmFkMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtNzUsNiArNzUsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBUUE1WZXJzaW9uIHRwbV92ZXJzaW9uOwotICAgICBwdG1fY2FwIGN1c2VfY2FwOyAvKiBjYXBhYmlsaXRpZXMgb2YgdGhlIENVU0UgVFBNICovCi0gICAgIHVpbnQ4X3QgY3VyX2xvY3R5X251bWJlcjsgLyogbGFzdCBzZXQgbG9jYWxpdHkgKi8KLSsKLSsgICAgUWVtdU11dGV4IHN0YXRlX2xvY2s7Ci0rICAgIFFlbXVDb25kIGNtZF9jb21wbGV0ZTsgIC8qIHNpbmduYWxlZCBvbmNlIHRwbV9idXN5IGlzIGZhbHNlICovCi0rICAgIGJvb2wgdHBtX2J1c3k7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMjc0LDYgKzI3OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICAgICAgdGhyX3Bhcm1zLT5yZWN2X2RhdGFfY2FsbGJhY2sodGhyX3Bhcm1zLT50cG1fc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZnRlc3RfZG9uZSk7Ci0rICAgICAgICAvKiByZXN1bHQgZGVsaXZlcmVkICovCi0rICAgICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgICAgICB0cG1fcHQtPnRwbV9idXN5ID0gZmFsc2U7Ci0rICAgICAgICBxZW11X2NvbmRfc2lnbmFsKCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9JTklUOgotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9FTkQ6Ci1AQCAtNDAxLDYgKzQxMCw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZXNldChUUE1CYWNrZW5kICp0YikKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2VuZCgmdHBtX3B0LT50YnQpOwotIAotICAgICB0cG1fcHQtPmhhZF9zdGFydHVwX2Vycm9yID0gZmFsc2U7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaW5pdChUUE1CYWNrZW5kICp0YiwgVFBNU3RhdGUgKnMsCi1AQCAtNDc4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLSsgICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSB0cnVlOwotKyAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2RlbGl2ZXJfcmVxdWVzdCgmdHBtX3B0LT50YnQpOwotIH0KLSAKLUBAIC03NDYsNiArNzYxLDExIEBAIHN0YXRpYyBjb25zdCBUUE1Ecml2ZXJPcHMgdHBtX3Bhc3N0aHJvdWdoX2RyaXZlciA9IHsKLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIHsKLSsgICAgVFBNQmFja2VuZCAqdGIgPSBUUE1fQkFDS0VORChvYmopOwotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZGJhZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi1Gcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUwotCi1FeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAotaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAotdG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCi1ydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KLW1ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCi0KLVRoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCi1hbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgotCi1UaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKLWNhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCi1taWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KLSBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCi0gaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCi0gaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKwotIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzQsNiArMzQsOCBAQAotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCi0rI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERFQlVHX1RQTSAwCi0gCi1AQCAtNDksNiArNTEsNyBAQAotICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKLSAKLSAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7Ci1AQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSAgICAgYm9vbCB0cG1fYnVzeTsKLSsKLSsgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOwotKwotKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7Ci0rICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotIH0KLSAKLSAvKgotQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gLyoKLSAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQotICAqLwotLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCi0gewotICAgICBpbnQgcmMgPSAwOwotLSAgICBwdG1faW5pdCBpbml0ID0gewotLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKLS0gICAgfTsKLSsgICAgcHRtX2luaXQgaW5pdDsKLSsgICAgaWYgKGlzX3Jlc3VtZSkgewotKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7Ci0rICAgIH0KLSAKLSAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKLUBAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOwotIAotLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAotICAgICByZXR1cm4gcmM7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOwotK30KLSsKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLS0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCi0gICAgIHJldHVybiBmZDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBwdG1fY2FwIGNhcHM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7Ci0rICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKLSsgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOwotKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKLSsgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KLS0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOwotIAotICAgICByZXR1cm4gMDsKLSAKLUBAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIAotICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rCi0rICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKLSB7Ci0rICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0gICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCi0rICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgewotKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIH0KLSsgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KLSsgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7Ci0rICAgIC5uYW1lID0gImN1c2UtdHBtIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0gICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKLWluZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5jCi0rKysgYi9ody90cG0vdHBtX3Rpcy5jCi1AQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCi0gICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0gICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7Ci0gCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7Ci0rCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAotQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCi0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKLSsKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOwotIH0KLSAKLSAvKgotQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQotICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOwotIH0KLSAKLSsKLSsvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCi0rCi0rc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsjaWZkZWYgREVCVUdfVElTCi0rICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOwotKyNlbmRpZgotKwotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgotKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKLSsgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7Ci0rICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCi0rICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKLSsgICAgICAgd3JpdHRlbiB0byBkaXNrICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLwotKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0gewotKyAgICAubmFtZSA9ICJsb2MiLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0gewotICAgICAubmFtZSA9ICJ0cG0iLAotLSAgICAudW5taWdyYXRhYmxlID0gMSwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAotKwotKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKLSsKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0gfTsKLSAKLSBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKLWluZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5oCi0rKysgYi9ody90cG0vdHBtX3Rpcy5oCi1AQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgewotICAgICBRRU1VQkggKmJoOwotKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KLSsKLSAgICAgdWludDMyX3Qgb2Zmc2V0OwotICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOwotIAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKLWluZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuYwotKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKLUBAIC0yMiw2ICsyMiwxNyBAQAotICNpbmNsdWRlICJxZW11L29zZGVwLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pbnQuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCi0rCi0rI2RlZmluZSBERUJVR19UUE0gMAotKwotKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCi0rICAgIGlmIChERUJVR19UUE0pIHsgXAotKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCi0rICAgIH0gXAotK30gd2hpbGUgKDApCi0rCi0gCi0gLyoKLSAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKLUBAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCi0gCi0gICAgIHJldHVybiAxOwotIH0KLSsKLStzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCi0rewotKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOwotKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7Ci0rICAgIHRzYi0+c2l6ZSA9IDA7Ci0rfQotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icwotKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgotKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCi0rewotKyAgICBwdG1fZ2V0c3RhdGUgcGdzOwotKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOwotKyAgICBwdG1fcmVzIHJlczsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fcmVhZDsKLSsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOwotKwotKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKLSsgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OwotKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKLSsKLSsgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7Ci0rICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7Ci0rICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOwotKwotKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KLSsgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7Ci0rICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCi0rICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotKwotKyBlcnJfZXhpdDoKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCi0rewotKyAgICBwdG1fc2V0c3RhdGUgcHNzOwotKwotKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKLSsgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCi0rICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fd3JpdGU7Ci0rCi0rICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KLSsgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgewotKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7Ci0rICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOwotKyAgICB9Ci0rCi0rICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAotKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCi0rICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCi1pbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5oCi1AQCAtMjYsNCArMjYsMTEgQEAKLSAKLSBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOwotIAotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1pbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKLSAgICAgdWludDhfdCAgKmJ1ZmZlcjsKLSB9IFRQTVNpemVkQnVmZmVyOwotIAotKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLwotK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKLSsgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7Ci0rCi0rICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7Ci0rCi0rICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOwotK30gVFBNQmxvYkJ1ZmZlcnM7Ci0rCi0gc3RydWN0IFRQTURyaXZlck9wcyB7Ci0gICAgIGVudW0gVHBtVHlwZSB0eXBlOwotICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjcyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMGIxZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDQgKzAsMCBAQAotRnJvbSAzZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE0OjI5OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZnYTogc3RvcCBwYXNzaW5nIHBvaW50ZXJzIHRvIHZnYV9kcmF3X2xpbmUqIGZ1bmN0aW9ucwotCi1JbnN0ZWFkIHBhc3MgYXJvdW5kIHRoZSBhZGRyZXNzIChha2Egb2Zmc2V0IGludG8gdmdhIG1lbW9yeSkuCi1BZGQgdmdhX3JlYWRfKiBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGFwcGx5IHZiZV9zaXplX21hc2sgdG8KLXRoZSBhZGRyZXNzLCB0byBtYWtlIHN1cmUgdGhlIGFkZHJlc3Mgc3RheXMgd2l0aGluIHRoZSB2YWxpZAotcmFuZ2UsIHNpbWlsYXIgdG8gdGhlIGNpcnJ1cyBibGl0dGVyIGZpeGVzIChjb21taXRzIGZmYWY4NTc3NzgKLWFuZCAwMjZhZWZmY2I0KS4KLQotSW1wYWN0OiAgRG9TIGZvciBwcml2aWxlZ2VkIGd1ZXN0IHVzZXJzLiAgcWVtdSBjcmFzaGVzIHdpdGgKLWEgc2VnZmF1bHQsIHdoZW4gaGl0dGluZyB0aGUgZ3VhcmQgcGFnZSBhZnRlciB2Z2EgbWVtb3J5Ci1hbGxvY2F0aW9uLCB3aGlsZSByZWFkaW5nIHZnYSBtZW1vcnkgZm9yIGRpc3BsYXkgdXBkYXRlcy4KLQotRml4ZXM6IENWRS0yMDE3LTEzNjcyCi1DYzogUCBKIFAgPHBwYW5kaXRAcmVkaGF0LmNvbT4KLVJlcG9ydGVkLWJ5OiBEYXZpZCBCdWNoYW5hbiA8ZEB2aWRidWNoYW5hbi5jby51az4KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotTWVzc2FnZS1pZDogMjAxNzA4MjgxMjI5MDYuMTg5OTMtMS1rcmF4ZWxAcmVkaGF0LmNvbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0zZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxXQotCi1DVkU6IENWRS0yMDE3LTEzNjcyCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaCB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGh3L2Rpc3BsYXkvdmdhLmMgICAgICAgICB8ICAgNSArLQotIGh3L2Rpc3BsYXkvdmdhX2ludC5oICAgICB8ICAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmggYi9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLWluZGV4IDk0ZjZkZTIuLjVhNzUyYjMgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAotQEAgLTk1LDIwICs5NSw0NiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19nbHlwaDkodWludDhfdCAqZCwgaW50IGxpbmVzaXplLAotICAgICB9IHdoaWxlICgtLWgpOwotIH0KLSAKLStzdGF0aWMgaW5saW5lIHVpbnQ4X3QgdmdhX3JlYWRfYnl0ZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgcmV0dXJuIHZnYS0+dnJhbV9wdHJbYWRkciAmIHZnYS0+dmJlX3NpemVfbWFza107Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19sZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19iZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdmdhX3JlYWRfZHdvcmRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKLSt7Ci0rICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MzsKLSsgICAgdWludDMyX3QgKnB0ciA9ICh1aW50MzJfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKLSsgICAgcmV0dXJuIGxkbF9sZV9wKHB0cik7Ci0rfQotKwotIC8qCi0gICogNCBjb2xvciBtb2RlCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90IHBsYW5lX21hc2ssICpwYWxldHRlLCBkYXRhLCB2OwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0tICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSsgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOwotKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7Ci0gICAgICAgICB2ID0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMCldOwotICAgICAgICAgdiB8PSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAyKV0gPDwgMjsKLUBAIC0xMjQsNyArMTUwLDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlWyh2ID4+IDApICYgMHhmXTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTM0LDE3ICsxNjAsMTcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogNCBjb2xvciBtb2RlLCBkdXAyIGhvcml6b250YWwKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCAqcGFsZXR0ZSwgZGF0YSwgdjsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotICAgICB3aWR0aCA+Pj0gMzsKLSAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKLSsgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOwotICAgICAgICAgdiA9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDApXTsKLSAgICAgICAgIHYgfD0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMildIDw8IDI7Ci1AQCAtMTYwLDI0ICsxODYsMjQgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICAgICAgICBQVVRfUElYRUwyKGQsIDYsIHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdKTsKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNywgcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl0pOwotICAgICAgICAgZCArPSA2NDsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE2IGNvbG9yIG1vZGUKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTE5MiwyNCArMjE4LDI0IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdOwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl07Ci0gICAgICAgICBkICs9IDMyOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotIC8qCi0gICogMTYgY29sb3IgbW9kZSwgZHVwMiBob3Jpem9udGFsCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTIyNCw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNiwgcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl0pOwotICAgICAgICAgUFVUX1BJWEVMMihkLCA3LCBwYWxldHRlWyh2ID4+IDApICYgMHhmXSk7Ci0gICAgICAgICBkICs9IDY0OwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotQEAgLTIzMywyMSArMjU5LDIxIEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAqCi0gICogWFhYOiBhZGQgcGxhbmVfbWFzayBzdXBwb3J0IChuZXZlciB1c2VkIGluIHN0YW5kYXJkIFZHQSBtb2RlcykKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDAsIHBhbGV0dGVbc1swXV0pOwotLSAgICAgICAgUFVUX1BJWEVMMihkLCAxLCBwYWxldHRlW3NbMV1dKTsKLS0gICAgICAgIFBVVF9QSVhFTDIoZCwgMiwgcGFsZXR0ZVtzWzJdXSk7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDMsIHBhbGV0dGVbc1szXV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAwLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCldKTsKLSsgICAgICAgIFBVVF9QSVhFTDIoZCwgMSwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpXSk7Ci0rICAgICAgICBQVVRfUElYRUwyKGQsIDIsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAzLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyldKTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjU2LDYzICsyODIsNjMgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICoKLSAgKiBYWFg6IGFkZCBwbGFuZV9tYXNrIHN1cHBvcnQgKG5ldmVyIHVzZWQgaW4gc3RhbmRhcmQgVkdBIG1vZGVzKQotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTgoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSBwYWxldHRlW3NbMF1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzFdID0gcGFsZXR0ZVtzWzFdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVsyXSA9IHBhbGV0dGVbc1syXV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbM10gPSBwYWxldHRlW3NbM11dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzRdID0gcGFsZXR0ZVtzWzRdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVs1XSA9IHBhbGV0dGVbc1s1XV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlW3NbNl1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVtzWzddXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbMV0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzJdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVszXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbNF0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNCldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzVdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDUpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA2KV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNyldOwotICAgICAgICAgZCArPSAzMjsKLS0gICAgICAgIHMgKz0gODsKLSsgICAgICAgIGFkZHIgKz0gODsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE1IGJpdCBjb2xvcgotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfbGVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfYmVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfYmUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTMyMCwzOCArMzQ2LDM4IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAxNiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2xlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2JlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2JlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLUBAIC0zNTksMzYgKzM4NSwzNiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogMjQgYml0IGNvbG9yCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMzsKLSsgICAgICAgIGFkZHIgKz0gMzsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzBdOwotLSAgICAgICAgZyA9IHNbMV07Ci0tICAgICAgICBiID0gc1syXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAzOwotKyAgICAgICAgYWRkciArPSAzOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTM5Niw0NCArNDIyLDM2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAzMiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmbmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgotLSAgICBtZW1jcHkoZCwgcywgd2lkdGggKiA0KTsKLS0jZWxzZQotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotLSNlbmRpZgotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmZGVmIEhPU1RfV09SRFNfQklHRU5ESUFOCi0tICAgIG1lbWNweShkLCBzLCB3aWR0aCAqIDQpOwotLSNlbHNlCi0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzFdOwotLSAgICAgICAgZyA9IHNbMl07Ci0tICAgICAgICBiID0gc1szXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0tI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLmMgYi9ody9kaXNwbGF5L3ZnYS5jCi1pbmRleCBhZDdhNDY1Li42ZmM4Yzg3IDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2EuYwotKysrIGIvaHcvZGlzcGxheS92Z2EuYwotQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgdmdhX21lbV93cml0ZWIoVkdBQ29tbW9uU3RhdGUgKnMsIGh3YWRkciBhZGRyLCB1aW50MzJfdCB2YWwpCi0gfQotIAotIHR5cGVkZWYgdm9pZCB2Z2FfZHJhd19saW5lX2Z1bmMoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNyY2FkZHIsIGludCB3aWR0aCk7Ci0gCi0gI2luY2x1ZGUgInZnYS1oZWxwZXJzLmgiCi0gCi1AQCAtMTY2Niw3ICsxNjY2LDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ3JhcGhpYyhWR0FDb21tb25TdGF0ZSAqcywgaW50IGZ1bGxfdXBkYXRlKQotICAgICAgICAgICAgIGlmICh5X3N0YXJ0IDwgMCkKLSAgICAgICAgICAgICAgICAgeV9zdGFydCA9IHk7Ci0gICAgICAgICAgICAgaWYgKCEoaXNfYnVmZmVyX3NoYXJlZChzdXJmYWNlKSkpIHsKLS0gICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBzLT52cmFtX3B0ciArIGFkZHIsIHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBhZGRyLCB3aWR0aCk7Ci0gICAgICAgICAgICAgICAgIGlmIChzLT5jdXJzb3JfZHJhd19saW5lKQotICAgICAgICAgICAgICAgICAgICAgcy0+Y3Vyc29yX2RyYXdfbGluZShzLCBkLCB5KTsKLSAgICAgICAgICAgICB9Ci1AQCAtMjE3MCw2ICsyMTcwLDcgQEAgdm9pZCB2Z2FfY29tbW9uX2luaXQoVkdBQ29tbW9uU3RhdGUgKnMsIE9iamVjdCAqb2JqLCBib29sIGdsb2JhbF92bXN0YXRlKQotICAgICBpZiAoIXMtPnZiZV9zaXplKSB7Ci0gICAgICAgICBzLT52YmVfc2l6ZSA9IHMtPnZyYW1fc2l6ZTsKLSAgICAgfQotKyAgICBzLT52YmVfc2l6ZV9tYXNrID0gcy0+dmJlX3NpemUgLSAxOwotIAotICAgICBzLT5pc192YmVfdm1zdGF0ZSA9IDE7Ci0gICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW1fbm9taWdyYXRlKCZzLT52cmFtLCBvYmosICJ2Z2EudnJhbSIsIHMtPnZyYW1fc2l6ZSwKLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYV9pbnQuaCBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1pbmRleCBkZDZjOTU4Li5hZDM0YTFmIDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2FfaW50LmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1AQCAtOTQsNiArOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBWR0FDb21tb25TdGF0ZSB7Ci0gICAgIHVpbnQzMl90IHZyYW1fc2l6ZTsKLSAgICAgdWludDMyX3QgdnJhbV9zaXplX21iOyAvKiBwcm9wZXJ0eSAqLwotICAgICB1aW50MzJfdCB2YmVfc2l6ZTsKLSsgICAgdWludDMyX3QgdmJlX3NpemVfbWFzazsKLSAgICAgdWludDMyX3QgbGF0Y2g7Ci0gICAgIGJvb2wgaGFzX2NoYWluNF9hbGlhczsKLSAgICAgTWVtb3J5UmVnaW9uIGNoYWluNF9hbGlhczsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwNjk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDozMzowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSB2Z2E6IGZpeCBkaXNwbGF5IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gKHNwbGl0IHNjcmVlbikKLQotdmdhIGRpc3BsYXkgdXBkYXRlIG1pcy1jYWxjdWxhdGVkIHRoZSByZWdpb24gZm9yIHRoZSBkaXJ0eSBiaXRtYXAKLXNuYXBzaG90IGluIGNhc2Ugc3BsaXQgc2NyZWVuIG1vZGUgaXMgdXNlZC4gIFRoaXMgY2FuIHRyaWdnZXIgYW4KLWFzc2VydCBpbiBjcHVfcGh5c2ljYWxfbWVtb3J5X3NuYXBzaG90X2dldF9kaXJ0eSgpLgotCi1JbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuCi0KLUZpeGVzOiBDVkUtMjAxNy0xMzY3MwotRml4ZXM6IGZlYzVlOGM5MmJlY2FkMjIzZGY5ZDk3Mjc3MDUyMmY2NGFhZmRiNzIKLUNjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgotUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1NZXNzYWdlLWlkOiAyMDE3MDgyODEyMzMwNy4xNTM5Mi0xLWtyYXhlbEByZWRoYXQuY29tCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTNdCi0KLUNWRTogQ1ZFLTIwMTctMTM2NzMKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaHcvZGlzcGxheS92Z2EuYyB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKLWluZGV4IDM0MzMxMDIuLmFkN2E0NjUgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS5jCi0rKysgYi9ody9kaXNwbGF5L3ZnYS5jCi1AQCAtMTYyOCw5ICsxNjI4LDE1IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKLSAgICAgeTEgPSAwOwotIAotICAgICBpZiAoIWZ1bGxfdXBkYXRlKSB7Ci0rICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9zdGFydCA9IGFkZHIxOwotKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fZW5kID0gYWRkcjEgKyBsaW5lX29mZnNldCAqIGhlaWdodDsKLSAgICAgICAgIHZnYV9zeW5jX2RpcnR5X2JpdG1hcChzKTsKLS0gICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgYWRkcjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQgKiBoZWlnaHQsCi0rICAgICAgICBpZiAocy0+bGluZV9jb21wYXJlIDwgaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgLyogc3BsaXQgc2NyZWVuIG1vZGUgKi8KLSsgICAgICAgICAgICByZWdpb25fc3RhcnQgPSAwOwotKyAgICAgICAgfQotKyAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCByZWdpb25fc3RhcnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uX2VuZCAtIHJlZ2lvbl9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9NRU1PUllfVkdBKTsKLSAgICAgfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTJmNzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSAxMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMTozNTo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBzbGlycDogZml4IGNsZWFyaW5nIGlmcV9zbyBmcm9tIHBlbmRpbmcgcGFja2V0cwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgaWZfZmFzdHEgYW5kIGlmX2JhdGNocSBjb250YWluIG5vdCBvbmx5IHBhY2tldHMsIGJ1dCBxdWV1ZXMgb2YgcGFja2V0cwotZm9yIHRoZSBzYW1lIHNvY2tldC4gV2hlbiBzb2ZyZWUgZnJlZXMgYSBzb2NrZXQsIGl0IHRodXMgaGFzIHRvIGNsZWFyIGlmcV9zbwotZnJvbSBhbGwgdGhlIHBhY2tldHMgZnJvbSB0aGUgcXVldWVzLCBub3Qgb25seSB0aGUgZmlyc3QuCi0KLVNpZ25lZC1vZmYtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KLVJldmlld2VkLWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8ZjRidWdAYW1zYXQub3JnPgotQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9MTIwMWQzMDg1MTlmMWU5MTU4NjZkNzU4M2Q1MTM2ZDAzY2MxZDM4NF0KLQotQ1ZFOiBDVkUtMjAxNy0xMzcxMQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzbGlycC9zb2NrZXQuYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NsaXJwL3NvY2tldC5jIGIvc2xpcnAvc29ja2V0LmMKLWluZGV4IGVjZWMwMjkuLmNiN2I1YjYgMTAwNjQ0Ci0tLS0gYS9zbGlycC9zb2NrZXQuYwotKysrIGIvc2xpcnAvc29ja2V0LmMKLUBAIC02MCwyOSArNjAsMzYgQEAgc29jcmVhdGUoU2xpcnAgKnNsaXJwKQotIH0KLSAKLSAvKgotKyAqIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNvIGZyb20gdGhlIGdpdmVuIG1lc3NhZ2UgcXVldWUuCi0rICovCi0rc3RhdGljIHZvaWQKLStzb3FmcmVlKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcXVlaGVhZCAqcWgpCi0rewotKyAgICBzdHJ1Y3QgbWJ1ZiAqaWZxOwotKwotKyAgICBmb3IgKGlmcSA9IChzdHJ1Y3QgbWJ1ZiAqKSBxaC0+cWhfbGluazsKLSsgICAgICAgICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmcSAhPSBxaDsKLSsgICAgICAgICAgICAgaWZxID0gaWZxLT5pZnFfbmV4dCkgewotKyAgICAgICAgaWYgKGlmcS0+aWZxX3NvID09IHNvKSB7Ci0rICAgICAgICAgICAgc3RydWN0IG1idWYgKmlmbTsKLSsgICAgICAgICAgICBpZnEtPmlmcV9zbyA9IE5VTEw7Ci0rICAgICAgICAgICAgZm9yIChpZm0gPSBpZnEtPmlmc19uZXh0OyBpZm0gIT0gaWZxOyBpZm0gPSBpZm0tPmlmc19uZXh0KSB7Ci0rICAgICAgICAgICAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSt9Ci0rCi0rLyoKLSAgKiByZW1xdWUgYW5kIGZyZWUgYSBzb2NrZXQsIGNsb2JiZXIgY2FjaGUKLSAgKi8KLSB2b2lkCi0gc29mcmVlKHN0cnVjdCBzb2NrZXQgKnNvKQotIHsKLSAgIFNsaXJwICpzbGlycCA9IHNvLT5zbGlycDsKLS0gIHN0cnVjdCBtYnVmICppZm07Ci0gCi0tICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfZmFzdHEucWhfbGluazsKLS0gICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmbSAhPSAmc2xpcnAtPmlmX2Zhc3RxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotLQotLSAgZm9yIChpZm0gPSAoc3RydWN0IG1idWYgKikgc2xpcnAtPmlmX2JhdGNocS5xaF9saW5rOwotLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfYmF0Y2hxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotKyAgc29xZnJlZShzbywgJnNsaXJwLT5pZl9mYXN0cSk7Ci0rICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2JhdGNocSk7Ci0gCi0gICBpZiAoc28tPnNvX2VtdT09RU1VX1JTSCAmJiBzby0+ZXh0cmEpIHsKLSAJc29mcmVlKHNvLT5leHRyYSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTE0MTY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2OWFkODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGVkNGY4NmU4YjZlZmY4ZTYwMGM2OWFkZWU2OGM3Y2QzNGRkMmNjY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFRodSwgNyBTZXAgMjAxNyAxMjowMjo1NiArMDUzMAotU3ViamVjdDogW1BBVENIXSBtdWx0aWJvb3Q6IHZhbGlkYXRlIG11bHRpYm9vdCBoZWFkZXIgYWRkcmVzcyB2YWx1ZXMKLQotV2hpbGUgbG9hZGluZyBrZXJuZWwgdmlhIG11bHRpYm9vdC12MSBpbWFnZSwgKGZsYWdzICYgMHgwMDAxMDAwMCkKLWluZGljYXRlcyB0aGF0IG11bHRpYm9vdCBoZWFkZXIgY29udGFpbnMgdmFsaWQgYWRkcmVzc2VzIHRvIGxvYWQKLXRoZSBrZXJuZWwgaW1hZ2UuIFRoZXNlIGFkZHJlc3NlcyBhcmUgdXNlZCB0byBjb21wdXRlIGtlcm5lbAotc2l6ZSBhbmQga2VybmVsIHRleHQgb2Zmc2V0IGluIHRoZSBPUyBpbWFnZS4gVmFsaWRhdGUgdGhlc2UKLWFkZHJlc3MgdmFsdWVzIHRvIGF2b2lkIGFuIE9PQiBhY2Nlc3MgaXNzdWUuCi0KLVRoaXMgaXMgQ1ZFLTIwMTctMTQxNjcuCi0KLVJlcG9ydGVkLWJ5OiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotTWVzc2FnZS1JZDogPDIwMTcwOTA3MDYzMjU2Ljc0MTgtMS1wcGFuZGl0QHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1lZDRmODZlOGI2ZWZmOGU2MDBjNjlhZGVlNjhjN2NkMzRkZDJjY2NiXQotCi1DVkU6IENWRS0yMDE3LTE0MTY3Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2kzODYvbXVsdGlib290LmMgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L2kzODYvbXVsdGlib290LmMgYi9ody9pMzg2L211bHRpYm9vdC5jCi1pbmRleCA2MDAxZjRjLi5jN2I3MGM5IDEwMDY0NAotLS0tIGEvaHcvaTM4Ni9tdWx0aWJvb3QuYwotKysrIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYwotQEAgLTIyMSwxNSArMjIxLDM0IEBAIGludCBsb2FkX211bHRpYm9vdChGV0NmZ1N0YXRlICpmd19jZmcsCi0gICAgICAgICB1aW50MzJfdCBtaF9oZWFkZXJfYWRkciA9IGxkbF9wKGhlYWRlcitpKzEyKTsKLSAgICAgICAgIHVpbnQzMl90IG1oX2xvYWRfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyMCk7Ci0gICAgICAgICB1aW50MzJfdCBtaF9ic3NfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyNCk7Ci0rCi0gICAgICAgICBtaF9sb2FkX2FkZHIgPSBsZGxfcChoZWFkZXIraSsxNik7Ci0rICAgICAgICBpZiAobWhfaGVhZGVyX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfbG9hZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICB1aW50MzJfdCBtYl9rZXJuZWxfdGV4dF9vZmZzZXQgPSBpIC0gKG1oX2hlYWRlcl9hZGRyIC0gbWhfbG9hZF9hZGRyKTsKLSAgICAgICAgIHVpbnQzMl90IG1iX2xvYWRfc2l6ZSA9IDA7Ci0gICAgICAgICBtaF9lbnRyeV9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjgpOwotIAotICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIpIHsKLSsgICAgICAgICAgICBpZiAobWhfYnNzX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9ic3NfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0gbWhfYnNzX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotKwotKyAgICAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2VuZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtaF9sb2FkX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoa2VybmVsX2ZpbGVfc2l6ZSA8IG1iX2tlcm5lbF90ZXh0X29mZnNldCkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQga2VybmVsX2ZpbGVfc2l6ZVxuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0ga2VybmVsX2ZpbGVfc2l6ZSAtIG1iX2tlcm5lbF90ZXh0X29mZnNldDsKLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtYl9rZXJuZWxfc2l6ZTsKLSAgICAgICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAppbmRleCA5YmJiYzZmLi5kNmEzNTIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaApAQCAtMjgsMTIgKzI4LDEyIEBACiAgaHcvaW50Yy9hcGljLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCA0NTg4N2Q5OS4uYzVhZTQwODcgMTAwNjQ0Ci0tLS0gYS9ody9pbnRjL2FwaWMuYwotKysrIGIvaHcvaW50Yy9hcGljLmMKLUBAIC01ODcsNyArNTg3LDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCi0gICAgIEFQSUNDb21tb25TdGF0ZSAqcyA9IEFQSUNfQ09NTU9OKGRldik7CitJbmRleDogcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTEuMS5vcmlnL2h3L2ludGMvYXBpYy5jCisrKysgcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKK0BAIC01OTEsNyArNTkxLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZQorICAgICBBUElDQ29tbW9uU3RhdGUgKnMgPSBBUElDKGRldik7CiAgICAgIHVpbnQzMl90IGx2dDA7CiAgCiAtICAgIGlmICghcykKQEAgLTQxLDYgKzQxLDMgQEAKICAgICAgICAgIHJldHVybiAtMTsKICAKICAgICAgbHZ0MCA9IHMtPmx2dFtBUElDX0xWVF9MSU5UMF07Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZiZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMCwwICsxLDI0MiBAQAorRnJvbSAzYmIzMTAwYzIyZWIzMDE0NmE2OTY1NjQ4MGJkZmZlZWY4NjYzNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogVGh1LCAyMSBEZWMgMjAxNyAxMTozNToxNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjaGFyZGV2OiBjb25uZWN0IHNvY2tldCB0byBhIHNwYXduZWQgY29tbWFuZAorCitUaGUgY29tbWFuZCBpcyBzdGFydGVkIGluIGEgc2hlbGwgKHNoIC1jKSB3aXRoIHN0ZGluIGNvbm5lY3QgdG8gUUVNVQordmlhIGEgVW5peCBkb21haW4gc3RyZWFtIHNvY2tldC4gUUVNVSB0aGVuIGV4Y2hhbmdlcyBkYXRhIHZpYSBpdHMgb3duCitlbmQgb2YgdGhlIHNvY2tldCwganVzdCBsaWtlIGl0IG5vcm1hbGx5IGRvZXMuCisKKyItY2hhcmRldiBzb2NrZXQiIHN1cHBvcnRzIHNvbWUgd2F5cyBvZiBjb25uZWN0aW5nIHZpYSBwcm90b2NvbHMgbGlrZQordGVsbmV0LCBidXQgdGhhdCBpcyBvbmx5IGEgc3Vic2V0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IHN1cHBvcnRlZCBieQordG9vbHMgc29jYXQuIFRvIHVzZSBzb2NhdCBpbnN0ZWFkLCBmb3IgZXhhbXBsZSB0byBjb25uZWN0IHZpYSBhIHNvY2tzCitwcm94eSwgdXNlOgorCisgIC1jaGFyZGV2ICdzb2NrZXQsaWQ9c29jYXQsY21kPWV4ZWMgc29jYXQgRkQ6MCBTT0NLUzRBOnNvY2tzLXByb3h5LmxvY2FsZG9tYWluOmV4YW1wbGUuY29tOjk5OTksLHNvY2tzdXNlcj1ub2JvZHknIFwKKyAgLWRldmljZSB1c2Itc2VyaWFsLGNoYXJkZXY9c29jYXQKKworQmV3YXJlIHRoYXQgY29tbWFzIGluIHRoZSBjb21tYW5kIG11c3QgYmUgZXNjYXBlZCBhcyBkb3VibGUgY29tbWFzLgorCitPciBpbnRlcmFjdGl2ZWx5IGluIHRoZSBjb25zb2xlOgorICAgKHFlbXUpIGNoYXJkZXYtYWRkIHNvY2tldCxpZD1jYXQsY21kPWNhdAorICAgKHFlbXUpIGRldmljZV9hZGQgdXNiLXNlcmlhbCxjaGFyZGV2PWNhdAorICAgXmFjCisgICAjIGNhdCA+L2Rldi90dHlVU0IwCisgICBoZWxsbworICAgaGVsbG8KKworQW5vdGhlciB1c2FnZSBpcyBzdGFydGluZyBzd3RwbSBmcm9tIGluc2lkZSBRRU1VLiBzd3RwbSB3aWxsCithdXRvbWF0aWNhbGx5IHNodXQgZG93biBvbmNlIGl0IGxvb3NlcyB0aGUgY29ubmVjdGlvbiB0byB0aGUgcGFyZW50CitRRU1VLCBzbyB0aGVyZSBpcyBubyByaXNrIG9mIGxpbmdlcmluZyBwcm9jZXNzZXM6CisKKyAgLWNoYXJkZXYgJ3NvY2tldCxpZD1jaHJ0cG0wLGNtZD1leGVjIHN3dHBtIHNvY2tldCAtLXRlcm1pbmF0ZSAtLWN0cmwgdHlwZT11bml4aW8sLGNsaWVudGZkPTAgLS10cG1zdGF0ZSBkaXI9Li4uIC0tbG9nIGZpbGU9c3d0cG0ubG9nJyBcCisgIC10cG1kZXYgZW11bGF0b3IsaWQ9dHBtMCxjaGFyZGV2PWNocnRwbTAgXAorICAtZGV2aWNlIHRwbS10aXMsdHBtZGV2PXRwbTAKKworVGhlIHBhdGNoIHdhcyBkaXNjdXNzZWQgdXBzdHJlYW0sIGJ1dCBRRU1VIGRldmVsb3BlcnMgYmVsaWV2ZSB0aGF0IHRoZQorY29kZSBjYWxsaW5nIFFFTVUgc2hvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhZGRpdGlvbmFsCitwcm9jZXNzZXMuIEluIE9FLWNvcmUsIHRoYXQgd291bGQgaW1wbHkgZW5oYW5jaW5nIHJ1bnFlbXUgYW5kCitvZXFhLiBUaGlzIHBhdGNoIGlzIGEgc2ltcGxlciBzb2x1dGlvbi4KKworQmVjYXVzZSBpdCBpcyBub3QgZ29pbmcgdXBzdHJlYW0sIHRoZSBwYXRjaCB3YXMgd3JpdHRlbiBzbyB0aGF0IGl0IGlzCithcyBzaW1wbGUgYXMgcG9zc2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKy0tLQorIGNoYXJkZXYvY2hhci1zb2NrZXQuYyB8IDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGNoYXJkZXYvY2hhci5jICAgICAgICB8ICAzICsrCisgcWFwaS9jaGFyLmpzb24gICAgICAgIHwgIDUgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCitpbmRleCA1M2VkYThlZjAwLi5mNTY2MTA3YzM1IDEwMDY0NAorLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCisrKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKK0BAIC04NTIsNiArODUyLDY4IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRfcmVjb25uZWN0X3RpbWVvdXQoZ3BvaW50ZXIgb3BhcXVlKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorKyNpZm5kZWYgX1dJTjMyCisrc3RhdGljIHZvaWQgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoQ2hhcmRldiAqY2hyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNtZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCisreworKyAgICBpbnQgZmRzWzJdID0geyAtMSwgLTEgfTsKKysgICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYyA9IE5VTEw7CisrICAgIHBpZF90IHBpZCA9IC0xOworKyAgICBjb25zdCBjaGFyICphcmd2W10gPSB7ICIvYmluL3NoIiwgIi1jIiwgY21kLCBOVUxMIH07CisrCisrICAgIC8qCisrICAgICAqIFdlIG5lZWQgYSBVbml4IGRvbWFpbiBzb2NrZXQgZm9yIGNvbW1hbmRzIGxpa2Ugc3d0cG0gYW5kIGEgc2luZ2xlCisrICAgICAqIGNvbm5lY3Rpb24sIHRoZXJlZm9yZSB3ZSBjYW5ub3QgdXNlIHFpb19jaGFubmVsX2NvbW1hbmRfbmV3X3NwYXduKCkKKysgICAgICogd2l0aG91dCBwYXRjaGluZyBpdCBmaXJzdC4gRHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgZWFzaWVyLgorKyAgICAgKi8KKysgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU18U09DS19DTE9FWEVDLCAwLCBmZHMpKSB7CisrICAgICAgICBlcnJvcl9zZXRnX2Vycm5vKGVycnAsIGVycm5vLCAiRXJyb3IgY3JlYXRpbmcgc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTXxTT0NLX0NMT0VYRUMpIik7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrCisrICAgIHBpZCA9IHFlbXVfZm9yayhlcnJwKTsKKysgICAgaWYgKHBpZCA8IDApIHsKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKysKKysgICAgaWYgKCFwaWQpIHsKKysgICAgICAgIC8qIGNoaWxkICovCisrICAgICAgICBkdXAyKGZkc1sxXSwgU1RESU5fRklMRU5PKTsKKysgICAgICAgIGV4ZWN2KGFyZ3ZbMF0sIChjaGFyICogY29uc3QgKilhcmd2KTsKKysgICAgICAgIF9leGl0KDEpOworKyAgICB9CisrCisrICAgIC8qCisrICAgICAqIEhhbmQgb3ZlciBvdXIgZW5kIG9mIHRoZSBzb2NrZXQgcGFpciB0byB0aGUgcWlvIGNoYW5uZWwuCisrICAgICAqCisrICAgICAqIFdlIGRvbid0IHJlYXAgdGhlIGNoaWxkIGJlY2F1c2UgaXQgaXMgZXhwZWN0ZWQgdG8ga2VlcAorKyAgICAgKiBydW5uaW5nLiBXZSBhbHNvIGRvbid0IHN1cHBvcnQgdGhlICJyZWNvbm5lY3QiIG9wdGlvbiBmb3IgdGhlCisrICAgICAqIHNhbWUgcmVhc29uLgorKyAgICAgKi8KKysgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXdfZmQoZmRzWzBdLCBlcnJwKTsKKysgICAgaWYgKCFzaW9jKSB7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrICAgIGZkc1swXSA9IC0xOworKworKyAgICBnX2ZyZWUoY2hyLT5maWxlbmFtZSk7CisrICAgIGNoci0+ZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCk7CisrICAgIHRjcF9jaHJfbmV3X2NsaWVudChjaHIsIHNpb2MpOworKworKyBlcnJvcjoKKysgICAgaWYgKGZkc1swXSA+PSAwKSB7CisrICAgICAgICBjbG9zZShmZHNbMF0pOworKyAgICB9CisrICAgIGlmIChmZHNbMV0gPj0gMCkgeworKyAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgfQorKyAgICBpZiAoc2lvYykgeworKyAgICAgICAgb2JqZWN0X3VucmVmKE9CSkVDVChzaW9jKSk7CisrICAgIH0KKyt9CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJlX29wZW5lZCwKK0BAIC04NTksNiArOTIxLDkgQEAKKyB7CisgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgICAgID0gc29jay0+Y21kOworKyNlbmRpZgorICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CisgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOworICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7CitAQCAtOTI1LDcgKzk5MCwxNCBAQAorICAgICB9IGVsc2UgaWYgKHJlY29ubmVjdCA+IDApIHsKKyAgICAgICAgIHMtPnJlY29ubmVjdF90aW1lID0gcmVjb25uZWN0OworICAgICB9CistCisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKGNtZCkgeworKyAgICAgICAgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoY2hyLCBjbWQsIGVycnApOworKworKyAgICAgICAgLyogZXZlcnl0aGluZyByZWFkeSAob3IgZmFpbGVkIHBlcm1hbmVudGx5KSBiZWZvcmUgd2UgcmV0dXJuICovCisrICAgICAgICAqYmVfb3BlbmVkID0gdHJ1ZTsKKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmIChzLT5yZWNvbm5lY3RfdGltZSkgeworICAgICAgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXcoKTsKKyAgICAgICAgIHRjcF9jaHJfc2V0X2NsaWVudF9pb2NfbmFtZShjaHIsIHNpb2MpOworQEAgLTk4NSwxMCArMTA1NywyNiBAQAorICAgICBjb25zdCBjaGFyICpob3N0ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJob3N0Iik7CisgICAgIGNvbnN0IGNoYXIgKnBvcnQgPSBxZW11X29wdF9nZXQob3B0cywgInBvcnQiKTsKKyAgICAgY29uc3QgY2hhciAqdGxzX2NyZWRzID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtY3JlZHMiKTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgPSBxZW11X29wdF9nZXQob3B0cywgImNtZCIpOworKyNlbmRpZgorICAgICBTb2NrZXRBZGRyZXNzTGVnYWN5ICphZGRyOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrOworIAorICAgICBiYWNrZW5kLT50eXBlID0gQ0hBUkRFVl9CQUNLRU5EX0tJTkRfU09DS0VUOworKyNpZm5kZWYgX1dJTjMyCisrICAgIGlmIChjbWQpIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBIZXJlIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbm8gb3B0aW9ucyBhcmUgc2V0IHdoaWNoIGFyZSBpbmNvbXBhdGlibGUgd2l0aAorKyAgICAgICAgICogc3Bhd25pbmcgYSBjb21tYW5kLCBvdGhlcndpc2UgdW5tb2RpZmllZCBjb2RlIHRoYXQgZG9lc24ndCBrbm93IGFib3V0CisrICAgICAgICAgKiBjb21tYW5kIHNwYXduaW5nIChsaWtlIHNvY2tldF9yZWNvbm5lY3RfdGltZW91dCgpKSBtaWdodCBnZXQgY2FsbGVkLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAocGF0aCB8fCBpc19saXN0ZW4gfHwgaXNfdGVsbmV0IHx8IGlzX3RuMzI3MCB8fCByZWNvbm5lY3QgfHwgaG9zdCB8fCBwb3J0IHx8IHRsc19jcmVkcykgeworKyAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgImNoYXJkZXY6IHNvY2tldDogY21kIGRvZXMgbm90IHN1cHBvcnQgYW55IGFkZGl0aW9uYWwgb3B0aW9ucyIpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmICghcGF0aCkgeworICAgICAgICAgaWYgKCFob3N0KSB7CisgICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY2hhcmRldjogc29ja2V0OiBubyBob3N0IGdpdmVuIik7CitAQCAtMTAyMSwxMyArMTEwOSwyNCBAQAorICAgICBzb2NrLT5oYXNfcmVjb25uZWN0ID0gdHJ1ZTsKKyAgICAgc29jay0+cmVjb25uZWN0ID0gcmVjb25uZWN0OworICAgICBzb2NrLT50bHNfY3JlZHMgPSBnX3N0cmR1cCh0bHNfY3JlZHMpOworKyNpZm5kZWYgX1dJTjMyCisrICAgIHNvY2stPmNtZCA9IGdfc3RyZHVwKGNtZCk7CisrI2VuZGlmCisgCisgICAgIGFkZHIgPSBnX25ldzAoU29ja2V0QWRkcmVzc0xlZ2FjeSwgMSk7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKHBhdGggfHwgY21kKSB7CisrI2Vsc2UKKyAgICAgaWYgKHBhdGgpIHsKKysjZW5kaWYKKyAgICAgICAgIFVuaXhTb2NrZXRBZGRyZXNzICpxX3VuaXg7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfVU5JWDsKKyAgICAgICAgIHFfdW5peCA9IGFkZHItPnUucV91bml4LmRhdGEgPSBnX25ldzAoVW5peFNvY2tldEFkZHJlc3MsIDEpOworKyNpZm5kZWYgX1dJTjMyCisrICAgICAgICBxX3VuaXgtPnBhdGggPSBjbWQgPyBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCkgOiBnX3N0cmR1cChwYXRoKTsKKysjZWxzZQorICAgICAgICAgcV91bml4LT5wYXRoID0gZ19zdHJkdXAocGF0aCk7CisrI2VuZGlmCisgICAgIH0gZWxzZSB7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfSU5FVDsKKyAgICAgICAgIGFkZHItPnUuaW5ldC5kYXRhID0gZ19uZXcoSW5ldFNvY2tldEFkZHJlc3MsIDEpOworZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci5jIGIvY2hhcmRldi9jaGFyLmMKK2luZGV4IDJhZTRmNDY1ZWMuLjVkNTJjZDVkZTUgMTAwNjQ0CistLS0gYS9jaGFyZGV2L2NoYXIuYworKysrIGIvY2hhcmRldi9jaGFyLmMKK0BAIC03OTIsNiArNzkyLDkgQEAgUWVtdU9wdHNMaXN0IHFlbXVfY2hhcmRldl9vcHRzID0geworICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAicGF0aCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCisrICAgICAgICB9LHsKKysgICAgICAgICAgICAubmFtZSA9ICJjbWQiLAorKyAgICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5HLAorICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAiaG9zdCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCitkaWZmIC0tZ2l0IGEvcWFwaS9jaGFyLmpzb24gYi9xYXBpL2NoYXIuanNvbgoraW5kZXggYWUxOWRjZDFlZC4uNmRlMGYyOWJjZCAxMDA2NDQKKy0tLSBhL3FhcGkvY2hhci5qc29uCisrKysgYi9xYXBpL2NoYXIuanNvbgorQEAgLTI0MSw2ICsyNDEsMTAgQEAKKyAjCisgIyBAYWRkcjogc29ja2V0IGFkZHJlc3MgdG8gbGlzdGVuIG9uIChzZXJ2ZXI9dHJ1ZSkKKyAjICAgICAgICBvciBjb25uZWN0IHRvIChzZXJ2ZXI9ZmFsc2UpCisrIyBAY21kOiBjb21tYW5kIHRvIHJ1biB2aWEgInNoIC1jIiB3aXRoIHN0ZGluIGFzIG9uZSBlbmQgb2YKKysjICAgICAgIGEgQUZfVU5JWCBTT0NLX0RTVFJFQU0gc29ja2V0IHBhaXIuIFRoZSBvdGhlciBlbmQKKysjICAgICAgIGlzIHVzZWQgYnkgdGhlIGNoYXJkZXYuIEVpdGhlciBhbiBhZGRyIG9yIGEgY21kIGNhbgorKyMgICAgICAgYmUgc3BlY2lmaWVkLCBidXQgbm90IGJvdGguCisgIyBAdGxzLWNyZWRzOiB0aGUgSUQgb2YgdGhlIFRMUyBjcmVkZW50aWFscyBvYmplY3QgKHNpbmNlIDIuNikKKyAjIEBzZXJ2ZXI6IGNyZWF0ZSBzZXJ2ZXIgc29ja2V0IChkZWZhdWx0OiB0cnVlKQorICMgQHdhaXQ6IHdhaXQgZm9yIGluY29taW5nIGNvbm5lY3Rpb24gb24gc2VydmVyCitAQCAtMjU4LDYgKzI2Miw3IEBACisgIyBTaW5jZTogMS40CisgIyMKKyB7ICdzdHJ1Y3QnOiAnQ2hhcmRldlNvY2tldCcsICdkYXRhJzogeyAnYWRkcicgICAgICAgOiAnU29ja2V0QWRkcmVzc0xlZ2FjeScsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY21kJyAgICAgICA6ICdzdHInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKnRscy1jcmVkcycgIDogJ3N0cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqc2VydmVyJyAgICA6ICdib29sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyp3YWl0JyAgICAgIDogJ2Jvb2wnLAorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkN2Y2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gZWU5YTE3ZDBlMTIxNDM5NzFhOTY3NjIyN2NjZTk1M2MwZGJlNTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAxNyAxMzoyMTo1NSArMDUzMAorU3ViamVjdDogW1BBVENIXSBwczI6IGNoZWNrIFBTMlF1ZXVlIHBvaW50ZXJzIGluIHBvc3RfbG9hZCByb3V0aW5lCisKK0R1cmluZyBRZW11IGd1ZXN0IG1pZ3JhdGlvbiwgYSBkZXN0aW5hdGlvbiBwcm9jZXNzIGludm9rZXMgcHMyCitwb3N0X2xvYWQgZnVuY3Rpb24uIEluIHRoYXQsIGlmICdycHRyJyBhbmQgJ2NvdW50JyB2YWx1ZXMgd2VyZQoraW52YWxpZCwgaXQgY291bGQgbGVhZCB0byBPT0IgYWNjZXNzIG9yIGluZmluaXRlIGxvb3AgaXNzdWUuCitBZGQgY2hlY2sgdG8gYXZvaWQgaXQuCisKK1JlcG9ydGVkLWJ5OiBDeXJpbGxlIENoYXRyYXMgPGN5cmlsbGUuY2hhdHJhc0BvcmFuZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitNZXNzYWdlLWlkOiAyMDE3MTExNjA3NTE1NS4yMjM3OC0xLXBwYW5kaXRAcmVkaGF0LmNvbQorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CisKK0NWRTogQ1ZFLTIwMTctMTY4NDUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L2lucHV0L3BzMi5jIHwgMjEgKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9pbnB1dC9wczIuYyBiL2h3L2lucHV0L3BzMi5jCitpbmRleCBmMzg4YTIzLi5kZTE3MWEyIDEwMDY0NAorLS0tIGEvaHcvaW5wdXQvcHMyLmMKKysrKyBiL2h3L2lucHV0L3BzMi5jCitAQCAtMTIyNSwyNCArMTIyNSwyMSBAQCBzdGF0aWMgdm9pZCBwczJfY29tbW9uX3Jlc2V0KFBTMlN0YXRlICpzKQorIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fcG9zdF9sb2FkKFBTMlN0YXRlICpzKQorIHsKKyAgICAgUFMyUXVldWUgKnEgPSAmcy0+cXVldWU7CistICAgIGludCBzaXplOworLSAgICBpbnQgaTsKKy0gICAgaW50IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKysgICAgdWludDhfdCBpLCBzaXplOworKyAgICB1aW50OF90IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKyAKKyAgICAgLyogc2V0IHRoZSB1c2VmdWwgZGF0YSBidWZmZXIgcXVldWUgc2l6ZSwgPCBQUzJfUVVFVUVfU0laRSAqLworLSAgICBzaXplID0gcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSA/IDAgOiBxLT5jb3VudDsKKysgICAgc2l6ZSA9IChxLT5jb3VudCA8IDAgfHwgcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSkgPyAwIDogcS0+Y291bnQ7CisgCisgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSBzdGFydCBvZiBkYXRhIGFycmF5ICovCistICAgIGlmIChzaXplID4gMCkgeworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworLSAgICAgICAgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCistICAgICAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHJdOworLSAgICAgICAgICAgIGlmICgrK3EtPnJwdHIgPT0gMjU2KSB7CistICAgICAgICAgICAgICAgIHEtPnJwdHIgPSAwOworLSAgICAgICAgICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworKyAgICAgICAgaWYgKHEtPnJwdHIgPCAwIHx8IHEtPnJwdHIgPj0gc2l6ZW9mKHEtPmRhdGEpKSB7CisrICAgICAgICAgICAgcS0+cnB0ciA9IDA7CisgICAgICAgICB9CistICAgICAgICBtZW1jcHkocS0+ZGF0YSwgdG1wX2RhdGEsIHNpemUpOworKyAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHIrK107CisgICAgIH0KKysgICAgbWVtY3B5KHEtPmRhdGEsIHRtcF9kYXRhLCBzaXplKTsKKysKKyAgICAgLyogcmVzZXQgcnB0ci93cHRyL2NvdW50ICovCisgICAgIHEtPnJwdHIgPSAwOworICAgICBxLT53cHRyID0gc2l6ZTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2Rpc2FibGUtZ3JhYnMucGF0Y2gKaW5kZXggMTIzODMzZi4uNzcxMTc4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoCkBAIC0yNCwxMSArMjQsMTEgQEAKICB1aS9zZGwuYyB8IDEyICsrKysrKysrKystLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdWkvc2RsLmMgYi91aS9zZGwuYwotaW5kZXggMzlhNDJkNi4uOWI4YWJlNSAxMDA2NDQKLS0tLSBhL3VpL3NkbC5jCi0rKysgYi91aS9zZGwuYwotQEAgLTU5LDYgKzU5LDEwIEBAIHN0YXRpYyBTRExfQ3Vyc29yICpndWVzdF9zcHJpdGUgPSBOVUxMOworSW5kZXg6IHFlbXUtMi4xMS4xL3VpL3NkbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcWVtdS0yLjExLjEub3JpZy91aS9zZGwuYworKysrIHFlbXUtMi4xMS4xL3VpL3NkbC5jCitAQCAtNjMsNiArNjMsMTAgQEAgc3RhdGljIFNETF9QaXhlbEZvcm1hdCBob3N0X2Zvcm1hdDsKICBzdGF0aWMgaW50IHNjYWxpbmdfYWN0aXZlID0gMDsKICBzdGF0aWMgTm90aWZpZXIgbW91c2VfbW9kZV9ub3RpZmllcjsKICBzdGF0aWMgaW50IGlkbGVfY291bnRlcjsKQEAgLTM3LDEwICszNywxMCBAQAogKyNlbmRpZgogK3N0YXRpYyBkb2luZ19ncmFicyA9IFRydWU7CiAgCi0gc3RhdGljIHZvaWQgc2RsX3VwZGF0ZShEaXNwbGF5Q2hhbmdlTGlzdGVuZXIgKmRjbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKQotQEAgLTM4NCwxNCArMzg4LDE2IEBAIHN0YXRpYyB2b2lkIHNkbF9ncmFiX3N0YXJ0KHZvaWQpCi0gICAgICAgICAgICAgfQorICNkZWZpbmUgU0RMX1JFRlJFU0hfSU5URVJWQUxfQlVTWSAxMAorICNkZWZpbmUgU0RMX01BWF9JRExFX0NPVU5UICgyICogR1VJX1JFRlJFU0hfSU5URVJWQUxfREVGQVVMVCBcCitAQCAtNDMxLDE0ICs0MzUsMTYgQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKKyAgICAgICAgIH0KICAgICAgfSBlbHNlCiAgICAgICAgICBzZGxfaGlkZV9jdXJzb3IoKTsKIC0gICAgU0RMX1dNX0dyYWJJbnB1dChTRExfR1JBQl9PTik7CkBAIC01OCw3ICs1OCw3IEBACiAgICAgIGd1aV9ncmFiID0gMDsKICAgICAgc2RsX3Nob3dfY3Vyc29yKCk7CiAgICAgIHNkbF91cGRhdGVfY2FwdGlvbigpOwotQEAgLTkwOSw2ICs5MTUsOCBAQCB2b2lkIHNkbF9kaXNwbGF5X2luaXQoRGlzcGxheVN0YXRlICpkcywgaW50IGZ1bGxfc2NyZWVuLCBpbnQgbm9fZnJhbWUpCitAQCAtOTg2LDYgKzk5Miw4IEBAIHZvaWQgc2RsX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLAogICAgICAgKiBUaGlzIHJlcXVpcmVzIFNETCA+PSAxLjIuMTQuICovCiAgICAgIHNldGVudigiU0RMX0RJU0FCTEVfTE9DS19LRVlTIiwgIjEiLCAxKTsKICAKQEAgLTY3LDYgKzY3LDMgQEAKICAgICAgZmxhZ3MgPSBTRExfSU5JVF9WSURFTyB8IFNETF9JTklUX05PUEFSQUNIVVRFOwogICAgICBpZiAoU0RMX0luaXQgKGZsYWdzKSkgewogICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBTREwoJXMpIC0gZXhpdGluZ1xuIiwKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTNjZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotW1BBVENIXSBleGNsdWRlIHNvbWUgYXJtIEVBQkkgb2Jzb2xldGUgc3lzY2FsbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXNvbWUgc3lzY2FsbHMgYXJlIG9ic29sZXRlIGFuZCBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBFQUJJLCBleGNsdWRlIHRoZW0gdG8KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci0JSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHFlbXUtc2VjY29tcC5jOjE2OjA6Ci0JcWVtdS1zZWNjb21wLmM6Mjg6NzogZXJyb3I6ICdfX05SX3NlbGVjdCcgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHNlbGVjdCksIDI1MiB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjM2Ojc6IGVycm9yOiAnX19OUl9tbWFwJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMobW1hcCksIDI0NyB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjU3Ojc6IGVycm9yOiAnX19OUl9nZXRybGltaXQnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCi0JICAgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzo5Njo3OiBlcnJvcjogJ19fTlJfdGltZScgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzoxODU6NzogZXJyb3I6ICdfX05SX2FsYXJtJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLQotcGxlYXNlIHJlZmVyIHNvdXJjZSBmaWxlczoKLQlhcmNoL2FybS9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCi1vciBrZXJuZWwgaGVhZGVyOgotCS91c3IvaW5jbHVkZS9hc20vdW5pc3RkLmgKLQotU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcWVtdS1zZWNjb21wLmMgfCAxMyArKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3FlbXUtc2VjY29tcC5jIGIvcWVtdS1zZWNjb21wLmMKLWluZGV4IGRmNzVkOWMuLjBlNTc3ZjggMTAwNjQ0Ci0tLS0gYS9xZW11LXNlY2NvbXAuYwotKysrIGIvcWVtdS1zZWNjb21wLmMKLUBAIC0zNSwxNSArMzUsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBRZW11U2VjY29tcFN5c2NhbGwgc2VjY29tcF93aGl0ZWxpc3RbXSA9IHsKLSAgICAgeyBTQ01QX1NZUyh0aW1lcl9zZXR0aW1lKSwgMjU1IH0sCi0gICAgIHsgU0NNUF9TWVModGltZXJfZ2V0dGltZSksIDI1NCB9LAotICAgICB7IFNDTVBfU1lTKGZ1dGV4KSwgMjUzIH0sCi0rI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykKLSAgICAgeyBTQ01QX1NZUyhzZWxlY3QpLCAyNTIgfSwKLSsgICAgeyBTQ01QX1NZUyh0aW1lKSwgMjQ1IH0sCi0rICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLSsgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLSsgICAgeyBTQ01QX1NZUyhtbWFwKSwgMjQ3IH0sCi0rICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotKyAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotKyNlbmRpZgotICAgICB7IFNDTVBfU1lTKHJlY3Zmcm9tKSwgMjUxIH0sCi0gICAgIHsgU0NNUF9TWVMoc2VuZHRvKSwgMjUwIH0sCi0tICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotICAgICB7IFNDTVBfU1lTKHJlYWQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhpb19zdWJtaXQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhicmspLCAyNDggfSwKLSAgICAgeyBTQ01QX1NZUyhjbG9uZSksIDI0NyB9LAotLSAgICB7IFNDTVBfU1lTKG1tYXApLCAyNDcgfSwKLSAgICAgeyBTQ01QX1NZUyhtcHJvdGVjdCksIDI0NiB9LAotICAgICB7IFNDTVBfU1lTKGV4ZWN2ZSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG9wZW4pLCAyNDUgfSwKLUBAIC01OCw3ICs2NCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVMoYmluZCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGxpc3RlbiksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHNlbWdldCksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGdldHRpbWVvZmRheSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHJlYWRsaW5rKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoYWNjZXNzKSwgMjQ1IH0sCi1AQCAtMTA0LDcgKzEwOSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVModGltZXMpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhleGl0KSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoY2xvY2tfZ2V0dGltZSksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhyZXN0YXJ0X3N5c2NhbGwpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhwd3JpdGU2NCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG5hbm9zbGVlcCksIDI0NSB9LAotQEAgLTE5NCw3ICsxOTgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IFFlbXVTZWNjb21wU3lzY2FsbCBzZWNjb21wX3doaXRlbGlzdFtdID0gewotICAgICB7IFNDTVBfU1lTKGxzdGF0NjQpLCAyNDEgfSwKLSAgICAgeyBTQ01QX1NZUyhzZW5kZmlsZTY0KSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVModWdldHJsaW1pdCksIDI0MSB9LAotLSAgICB7IFNDTVBfU1lTKGFsYXJtKSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVMocnRfc2lnc3VzcGVuZCksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3NpZ3F1ZXVlaW5mbyksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3Rnc2lncXVldWVpbmZvKSwgMjQxIH0sCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9nbGliYy0yLjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjkwOGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1Gcm9tOiBDaHJpc3RvcGhlciBDb3Zpbmd0b24KLURhdGU6IFdlZCwgMjggRGVjIDIwMTYgMTU6MDQ6MzMgLTA1MDAKLVN1YmplY3Q6IFtRZW11LWRldmVsXSBbUEFUQ0ggdjNdIGJ1aWxkOiBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IoKSBhbmQgbWlub3IoKWEKLQotVGhlIGRlZmluaXRpb24gb2YgdGhlIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zIGFyZSBtb3Zpbmcgd2l0aGluIGdsaWJjIHRvCi08c3lzL3N5c21hY3Jvcy5oPi4gSW5jbHVkZSB0aGlzIGhlYWRlciB3aGVuIGl0IGlzIGF2YWlsYWJsZSB0byBhdm9pZCB0aGUKLWZvbGxvd2luZyBzb3J0cyBvZiBidWlsZC1zdG9wcGluZyBtZXNzYWdlczoKLQotcWdhL2NvbW1hbmRzLXBvc2l4LmM6IEluIGZ1bmN0aW9uIOKAmGRldl9tYWpvcl9taW5vcuKAmToKLXFnYS9jb21tYW5kcy1wb3NpeC5jOjY1NjoxMzogZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWFqb3IiIGlzIGRlZmluZWQKLSBieSA8c3lzL3N5c21hY3Jvcy5oPi4gRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMKLSBjdXJyZW50bHkgZGVmaW5lZCBieSA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvCi0gcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtYWpvciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSBkaXJlY3RseS4gSWYgeW91IGRpZCBub3QgaW50ZW5kIHRvIHVzZSBhIHN5c3RlbS1kZWZpbmVkIG1hY3JvCi0gIm1ham9yIiwgeW91IHNob3VsZCB1bmRlZmluZSBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4gWy1XZXJyb3JdCi0gICAgICAgICAqZGV2bWFqb3IgPSBtYWpvcihzdC5zdF9yZGV2KTsKLSAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1xZ2EvY29tbWFuZHMtcG9zaXguYzo2NTc6MTM6IGVycm9yOiBJbiB0aGUgR05VIEMgTGlicmFyeSwgIm1pbm9yIiBpcyBkZWZpbmVkCi0gYnkgPHN5cy9zeXNtYWNyb3MuaD4uIEZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksIGl0IGlzCi0gY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotIHJlbW92ZSB0aGlzIHNvb24uIFRvIHVzZSAibWlub3IiLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gZGlyZWN0bHkuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybwotICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotICAgICAgICAgKmRldm1pbm9yID0gbWlub3Ioc3Quc3RfcmRldik7Ci0gICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVGhlIGFkZGl0aW9uYWwgaW5jbHVkZSBhbGxvd3MgdGhlIGJ1aWxkIHRvIGNvbXBsZXRlIG9uIEZlZG9yYSAyNiAoUmF3aGlkZSkKLXdpdGggZ2xpYmMgdmVyc2lvbiAyLjI0LjkwLgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDb3Zpbmd0b24gPGFkZHJlc3NAaGlkZGVuPgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0xMi9tc2cwMzU0OC5odG1sCi0KLWRpZmYgLXVOciBxZW11LTIuOC4wLm9yaWcvY29uZmlndXJlIHFlbXUtMi44LjAvY29uZmlndXJlCi0tLS0gcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSAgMjAxNy0wMi0yMSAxOTowNToxMy4xODAwOTQ3MDggKzAxMDAKLSsrKyBxZW11LTIuOC4wL2NvbmZpZ3VyZSAgICAgICAyMDE3LTAyLTIxIDE5OjA4OjUzLjExNDA4NzA4NCArMDEwMAotQEAgLTQ3MjcsNiArNDcyNywyMCBAQAotIHRoZW4KLSBmaQotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgY2hlY2sgZm9yIHN5c21hY3Jvcy5oCi0rCi0raGF2ZV9zeXNtYWNyb3M9bm8KLStjYXQgPiAkVE1QQyA8PCBFT0YKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotK2ludCBtYWluKHZvaWQpIHsKLSsgICAgcmV0dXJuIG1ha2VkZXYoMCwgMCk7Ci0rfQotK0VPRgotK2lmIGNvbXBpbGVfcHJvZyAiIiAiIiA7IHRoZW4KLSsgICAgaGF2ZV9zeXNtYWNyb3M9eWVzCi0rZmkKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIEVuZCBvZiBDQyBjaGVja3MKLSAjIEFmdGVyIGhlcmUsIG5vIG1vcmUgJGNjIG9yICRsZCBydW5zCi0gCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSBxZW11LTIuOC4wL2NvbmZpZ3VyZQotLS0tIHFlbXUtMi44LjAub3JpZy9jb25maWd1cmUgIDIwMTctMDItMjEgMTk6MDU6MTMuMTgwMDk0NzA4ICswMTAwCi0rKysgcWVtdS0yLjguMC9jb25maWd1cmUgICAgICAgMjAxNy0wMi0yMSAxOTowODo1My4xMTQwODcwODQgKzAxMDAKLUBAIC01Njk1LDYgKzU3MDksMTAgQEAKLSAgIGVjaG8gIkNPTkZJR19BRl9WU09DSz15IiA+PiAkY29uZmlnX2hvc3RfbWFrCi0gZmkKLSAKLStpZiB0ZXN0ICIkaGF2ZV9zeXNtYWNyb3MiID0gInllcyIgOyB0aGVuCi0rICBlY2hvICJDT05GSUdfU1lTTUFDUk9TPXkiID4+ICRjb25maWdfaG9zdF9tYWsKLStmaQotKwotICMgSG9sZCB0d28gdHlwZXMgb2YgZmxhZzoKLSAjICAgQ09ORklHX1RIUkVBRF9TRVROQU1FX0JZVEhSRUFEICAtIHdlJ3ZlIGdvdCBhIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9uCi0gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHRocmVhZCB3ZSBoYXZlIGEgaGFuZGxlIHRvCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmggcWVtdS0yLjguMC9pbmNsdWRlL3N5c2VtdS9vcy1wb3NpeC5oCi0tLS0gcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNi0xMi0yMCAyMToxNjo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxZW11LTIuOC4wL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNy0wMi0yMSAxOTowNzoxOC4wMDkwOTAzODEgKzAxMDAKLUBAIC0zNCw2ICszNCwxMCBAQAotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAKLSsjaWZkZWYgQ09ORklHX1NZU01BQ1JPUwotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gdm9pZCBvc19zZXRfbGluZV9idWZmZXJpbmcodm9pZCk7Ci0gdm9pZCBvc19zZXRfcHJvY19uYW1lKGNvbnN0IGNoYXIgKnMpOwotIHZvaWQgb3Nfc2V0dXBfc2lnbmFsX2hhbmRsaW5nKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYzUyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA0ZmE0YWFlNDE3NmVmNmQ4ZjRkNGI4MzIzZDA2MWUyNDMzOTE4YTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDo1MTo0OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsaW51eC11c2VyOiBGaXggd2Via2l0Z3RrIGhhbmdzIG9uIDMyLWJpdCB4ODYgdGFyZ2V0CisKK1NpbmNlIGNvbW1pdCAibGludXgtdXNlcjogVGlkeSBhbmQgZW5mb3JjZSByZXNlcnZlZF92YSBpbml0aWFsaXphdGlvbiIKKygxOGU4MGM1NWJiNmVjMTdjMDVlYzBiYTcxN2VjODM5MzNjMmJmYzA3KSB0aGUgWW9jdG8gd2Via2l0Z3RrIGJ1aWxkCitoYW5ncyB3aGVuIGNyb3NzIGNvbXBpbGluZyBmb3IgMzItYml0IHg4NiBvbiBhIDY0LWJpdCB4ODYgbWFjaGluZSB1c2luZworbXVzbC4KKworVG8gZml4IHRoZSBpc3N1ZSByZWR1Y2UgdGhlIE1BWF9SRVNFUlZFRF9WQSBtYWNybyB0byBiZSBhIGNsb3NlciBtYXRjaAordG8gd2hhdCBpdCB3YXMgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBjb21taXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDEvbXNnMDQxODUuaHRtbAorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorLS0tCisgbGludXgtdXNlci9tYWluLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCitpbmRleCA0NTBlYjNjZTY1Li5jN2NjMGExODRlIDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9tYWluLmMKKysrKyBiL2xpbnV4LXVzZXIvbWFpbi5jCitAQCAtNzcsNyArNzcsNyBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgfHwgZGVmaW5lZChUQVJHRVRfQUJJMzIpKQorIC8qIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUgd2UgYXNzaWduIHJlc2VydmVkX3ZhIHRvIGEgdmFyaWFibGUKKyAgICBvZiB0eXBlIGFiaV91bG9uZyBhbmQgZXhwZWN0IGl0IHRvIGZpdC4gIEF2b2lkIHRoZSBsYXN0IHBhZ2UuICAqLworLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMHhmZmZmZmZmZnVsICYgVEFSR0VUX1BBR0VfTUFTSykKKysjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4N2ZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCisgIyAgZWxzZQorICMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykKKyAjICBlbmRpZgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcHBjX2xvY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY3MjI0My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1JJ3ZlIHRyYWNrZWQgZG93biB3aGF0IEkgdGhpbmsgaXMgYSBwcm9ibGVtIGNhdXNpbmcgcWVtdS1zeXN0ZW0tcHBjCi10byBoYW5nIHdoaWxzdCBib290aW5nIGltYWdlcy4KLQotSSBiZWxpZXZlIHRoZSBkZWNyZW1lbnRlciB0aW1lciBzdG9wcyByZWNlaXZpbmcgaW50ZXJydXB0cyBzbwotdGFza3MgaW4gb3VyIGltYWdlcyBoYW5nIGluZGVmaW5pdGVseSBhcyB0aGUgdGltZXIgc3RvcHBlZC4gCi0KLUl0IGNhbiBiZSBzdW1tZWQgdXAgd2l0aCB0aGlzIGxpbmUgb2YgZGVidWc6Ci0KLXBwY19zZXRfaXJxOiAweDU1YjRlMGQ1NjJmMCBuX0lSUSA4IGxldmVsIDEgPT4gcGVuZGluZyAwMDAwMDEwMHJlcSAwMDAwMDAwNAotCi1JdCBzaG91bGQgbm9ybWFsbHkgcmVhZDoKLQotcHBjX3NldF9pcnE6IDB4NTViNGUwZDU2MmYwIG5fSVJRIDggbGV2ZWwgMSA9PiBwZW5kaW5nIDAwMDAwMTAwcmVxIDAwMDAwMDAyCi0KLVRoZSBxdWVzdGlvbiBpcyB3aHkgQ1BVX0lOVEVSUlVQVF9FWElUVEIgZW5kcyB1cCBiZWluZyBzZXQgd2hlbiB0aGUKLWxpbmVzIGFib3ZlIHRoaXMgbG9nIG1lc3NhZ2UgY2xlYXJseSBzZXRzIENQVV9JTlRFUlJVUFRfSEFSRCAodmlhIAotY3B1X2ludGVycnVwdCgpICkuCi0KLUkgbm90ZSBpbiBjcHUuaDoKLQotICAgIC8qIHVwZGF0ZXMgcHJvdGVjdGVkIGJ5IEJRTCAqLwotICAgIHVpbnQzMl90IGludGVycnVwdF9yZXF1ZXN0OwotCi0oZm9yIHN0cnVjdCBDUFVTdGF0ZSkKLQotVGhlIHBwYyBjb2RlIGRvZXMgImNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQiIgaW4gNQotcGxhY2VzLCAzIGluIGV4Y3BfaGVscGVyLmMgYW5kIDIgaW4gaGVscGVyX3JlZ3MuaC4gSW4gYWxsIGNhc2VzLCAgCi1nX2Fzc2VydChxZW11X211dGV4X2lvdGhyZWFkX2xvY2tlZCgpKTsgZmFpbHMuIElmIEkgZG8gc29tZXRoaW5nIGxpa2U6Ci0KLWlmICghcWVtdV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKSkgewotICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotfSBlbHNlIHsKLSAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci19Ci0KLWluIHRoZXNlIGNhbGwgc2l0ZXMgdGhlbiBJIGNhbiBubyBsb25nZXIgbG9jayBxZW11IHVwIHdpdGggbXkgdGVzdAotY2FzZS4KLQotSSBzdXNwZWN0IHRoZSBfSEFSRCBzZXR0aW5nIGdldHMgb3ZlcndyaXR0ZW4gd2hpY2ggc3RvcHMgdGhlIAotZGVjcmVtZW50ZXIgaW50ZXJydXB0cyBiZWluZyBkZWxpdmVyZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtJc3N1ZSBkaXNjdXNzZWQgb24gcWVtdSBtYWlsaW5nIGxpc3QgMjAxNy8xMS8yMF0KLVJQIDIwMTcvMTEvMjAKLQotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi1AQCAtMjA3LDcgKzIwNyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb3dlcnBjX2V4Y3AoUG93ZXJQQ0MKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRW50ZXJpbmcgY2hlY2tzdG9wIHN0YXRlXG4iKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgY3MtPmhhbHRlZCA9IDE7Ci0tICAgICAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICAgICAgfQotICAgICAgICAgaWYgKGVudi0+bXNyX21hc2sgJiBNU1JfSFZCKSB7Ci0gICAgICAgICAgICAgLyogSVNBIHNwZWNpZmllcyBIViwgYnV0IGNhbiBiZSBkZWxpdmVyZWQgdG8gZ3Vlc3Qgd2l0aCBIViBjbGVhcgotQEAgLTk0MCw3ICs5NDIsOSBAQCB2b2lkIGhlbHBlcl9zdG9yZV9tc3IoQ1BVUFBDU3RhdGUgKmVudiwKLSAKLSAgICAgaWYgKGV4Y3AgIT0gMCkgewotICAgICAgICAgQ1BVU3RhdGUgKmNzID0gQ1BVKHBwY19lbnZfZ2V0X2NwdShlbnYpKTsKLS0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKLSsgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOwotKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKLSAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihlbnYsIGV4Y3ApOwotICAgICB9Ci0gfQotQEAgLTk5NSw3ICs5OTksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmZpKENQVVBQQ1N0YXRlICplCi0gICAgIC8qIE5vIG5lZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGhlcmUsCi0gICAgICAqIGFzIHJmaSBpcyBhbHdheXMgdGhlIGxhc3QgaW5zbiBvZiBhIFRCCi0gICAgICAqLwotLSAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gCi0gICAgIC8qIFJlc2V0IHRoZSByZXNlcnZhdGlvbiAqLwotICAgICBlbnYtPnJlc2VydmVfYWRkciA9IC0xOwotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi1AQCAtMTE0LDExICsxMTQsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgaHJlZ19zdG9yZV9tc3IoQ1BVUFBDUwotICAgICB9Ci0gICAgIGlmICgoKHZhbHVlID4+IE1TUl9JUikgJiAxKSAhPSBtc3JfaXIgfHwKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0RSKSAmIDEpICE9IG1zcl9kcikgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICgoZW52LT5tbXVfbW9kZWwgJiBQT1dFUlBDX01NVV9CT09LRSkgJiYKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0dTKSAmIDEpICE9IG1zcl9ncykgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICh1bmxpa2VseSgoZW52LT5mbGFncyAmIFBPV0VSUENfRkxBR19UR1BSKSAmJgotICAgICAgICAgICAgICAgICAgKCh2YWx1ZSBeIGVudi0+bXNyKSAmICgxIDw8IE1TUl9UR1BSKSkpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZjZjMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotcmVxdWlyZSBxZW11LmluYwotCi1pbmhlcml0IHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93YWNvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9xZW11LWVubGFyZ2UtZW52LWVudHJ5LXNpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGF0aGxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzcxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcGNfbG9ja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZW1mZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrXC4uKilcLnRhciIKLQotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3B1cy5jLXFlbXVfY3B1X2tpY2tfdGhyZWFkX2RlYnVnZ2luZy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTczNDQxZGU3M2E5YjUyYzZjNDljOTcxOTBkMjE4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTlmMzllMTMwNmU2ZGNjNTk1NDk0ZTkxYzE0NjRkNGIwM2Y1NWRkZDIwNTMxODNlMGUxYjY5ZjdmNzc2ZDQ4IgotCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFByZXZlbnQgUUEgd2FybmluZ3MgYWJvdXQgaW5zdGFsbGVkICR7bG9jYWxzdGF0ZWRpcn0vcnVuCi0gICAgaWYgWyAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXTsgdGhlbiBybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW47IGZpCi0gICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3Bvd2VycGNfcm9tLmJpbiAke0R9JHtkYXRhZGlyfS9xZW11Ci19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JbWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KLQotCWNwICR7U30vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiODJjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIKQEAgLTAsMCArMSw1OSBAQAorcmVxdWlyZSBxZW11LmluYworCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dhY29tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWVtZmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgorCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jcHVzLmMtcWVtdV9jcHVfa2lja190aHJlYWRfZGVidWdnaW5nLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxY2Y4NjJiNjAwN2ViYTRhYzk4MjQ3Nzc2YWYyZTI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGYyMjEzY2VlZDMyZTkxZGFiN2JjOWRkMTljMWFmODNmOTFiYTcyYzdhZWVmNzYwNWRmYWFmODE3MzJjY2IiCisKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwltYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQorCisJY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJIyBEb24ndCBjaGVjayB0aGUgZmlsZSBnZW5yZWF0ZWQgYnkgY29uZmlndXJlCisJc2VkIC1pIC1lICcvd2lsZGNhcmQgY29uZmlnLWhvc3QubWFrL2QnIFwKKwkgICAgICAgLWUgJyQgey9lbmRpZi9kfScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWY0NDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQvYWNsb2NhbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIHRoZSBhY2xvY2FsLm00IGFzIGFjaW5jbHVkZS5tNAotCi1JbmRleDogcXVpbHQtMC40Ny9hY2luY2x1ZGUubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdWlsdC0wLjQ3L2FjaW5jbHVkZS5tNAkyMDA2LTEwLTEwIDE3OjA1OjU2LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMTkgQEAKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIXSxbCi0rICBtNF9kZWZpbmUoW2ludGVybmFsXyQyX2NtZF0sW2VzeXNjbWQobHMgY29tcGF0LyQyLmluIDI+L2Rldi9udWxsKV0pCi0rCi0rICBBQ19BUkdfV0lUSCgkMiwgQUNfSEVMUF9TVFJJTkcoCi0rICAgIFstLXdpdGgtJDJdLCBbbmFtZSBvZiB0aGUgJDIgZXhlY3V0YWJsZSB0byB1c2VdCi0rICAgICAgICAgICAgICAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sW10sWyAodXNlIC0td2l0aG91dC0kMgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGFuIGludGVybmFsIG1lY2hhbmlzbSldKSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgPSB4bm9uZTsgdGhlbgotKyAgICAgIEFDX01TR19FUlJPUihbSW52YWxpZCBjb25maWd1cmUgYXJndW1lbnQuICB1c2UgLS13aXRob3V0LSQyXSkKLSsgICAgZmkKLSsgICAgaWYgdGVzdCB4IiR3aXRodmFsIiAhPSB4bm87IHRoZW4KLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICQyKQotKyAgICAgICQxPSIkd2l0aHZhbCIKLSsgICAgICBpZiB0ZXN0IC1lICIkJDEiOyB0aGVuCi0rCWlmIHRlc3QgISAtZiAiJCQxIiAtYSAhIC1oICIkJDEiIHx8IHRlc3QgISAteCAiJCQxIjsgdGhlbgotKwkgIEFDX01TR19FUlJPUihbJCQxIGlzIG5vdCBhbiBleGVjdXRhYmxlIGZpbGVdKQotKwlmaQotKyAgICAgIGZpCi0rICAgICAgQUNfTVNHX1JFU1VMVChbJCQxXSkKLSsgICAgICBpZiB0ZXN0ICEgLWUgIiQkMSI7IHRoZW4KLSsgICAgICAgIEFDX01TR19XQVJOKFskJDEgZG9lcyBub3QgZXhpc3RdKQotKyAgICAgIGZpCi0rICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKyAgICBmaQotKyAgXSxbCi0rICAgIG00X2lmKFskM10sW10sWwotKyAgICAgIEFDX1BBVEhfUFJPRygkMSwkMiwsJFBBVEg6JDQpCi0rICAgIF0sWwotKyAgICAgIEFDX1BBVEhfUFJPR1MoJDEsJDMsLCRQQVRIOiQ0KQotKyAgICAgIGlmIHRlc3QgLW4gIiQkMSIgLWEgImBleHByICIkJDEiIDogJy4qL1woW1teL11dKlwpJCdgIiAhPSAiJDIiOyB0aGVuCi0rCUNPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBtNF9pZihbJDRdLFtdLFtdLFsKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCi0rCWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSsgICAgICAgIGZvciBkaXIgaW4gIiQ0IjsgZG8KLSsgICAgICAgICAgaWYgdGVzdCAiYGRpcm5hbWUgJCQxYCIgPSAiJGRpciI7IHRoZW4KLSsgICAgICAgICAgICBDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rCSAgICBicmVhawotKwkgIGZpCi0rICAgICAgICBkb25lCi0rCUlGUz0iJGFzX3NhdmVfSUZTIgotKyAgICAgIGZpCi0rICAgIF0pCi0rICBdKQotKyAgaWYgdGVzdCAteiAiJCQxIjsgdGhlbgotKyAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sWwotKyAgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mICQyIHdpdGggdGhlIG9wdGlvbiAnLS13aXRoLSQyJ10pCi0rICAgIF0sWwotKyAgICAgIEFDX01TR19XQVJOKFtVc2luZyBpbnRlcm5hbCAkMiBtZWNoYW5pc20uICBVc2Ugb3B0aW9uICctLXdpdGgtJDInIHRvIG92ZXJyaWRlXSkKLSsgICAgICBDT01QQVRfUFJPR1JBTVM9IiRDT01QQVRfUFJPR1JBTVMgJDIiCi0rICAgICAgJDE9JDIKLSsgICAgICBJTlRFUk5BTF8kMT0xCi0rICAgIF0pCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKLSsKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgVGhpcyB2YXJpYW50IGlzIGZvciBvcHRpb25hbCBiaW5hcmllcy4KLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIX09QVF0sWwotKyAgQUNfQVJHX1dJVEgoJDIsIEFDX0hFTFBfU1RSSU5HKAotKyAgICBbLS13aXRoLSQyXSwgW25hbWUgb2YgdGhlICQyIGV4ZWN1dGFibGUgdG8gdXNlXSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgIT0geG5vOyB0aGVuCi0rICAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciAkMikKLSsgICAgICAkMT0iJHdpdGh2YWwiCi0rICAgICAgaWYgdGVzdCAtZSAiJCQxIjsgdGhlbgotKwlpZiB0ZXN0ICEgLWYgIiQkMSIgLWEgISAtaCAiJCQxIiB8fCB0ZXN0ICEgLXggIiQkMSI7IHRoZW4KLSsJICBBQ19NU0dfRVJST1IoWyQkMSBpcyBub3QgYW4gZXhlY3V0YWJsZSBmaWxlXSkKLSsJZmkKLSsgICAgICBmaQotKyAgICAgIEFDX01TR19SRVNVTFQoWyQkMV0pCi0rICAgICAgaWYgdGVzdCAhIC1lICIkJDEiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfV0FSTihbJCQxIGRvZXMgbm90IGV4aXN0XSkKLSsgICAgICBmaQotKyAgICAgIENPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgZmkKLSsgIF0sWwotKyAgICBtNF9pZihbJDNdLFtdLFsKLSsgICAgICBBQ19QQVRIX1BST0coJDEsJDIsLCRQQVRIOiQ0KQotKyAgICBdLFsKLSsgICAgICBBQ19QQVRIX1BST0dTKCQxLCQzLCwkUEFUSDokNCkKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiIC1hICJgZXhwciAiJCQxIiA6ICcuKi9cKFtbXi9dXSpcKSQnYCIgIT0gIiQyIjsgdGhlbgotKwlDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rICAgICAgZmkKLSsgICAgXSkKLSsgICAgbTRfaWYoWyQ0XSxbXSxbXSxbCi0rICAgICAgaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgotKwlhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rICAgICAgICBmb3IgZGlyIGluICIkNCI7IGRvCi0rICAgICAgICAgIGlmIHRlc3QgImBkaXJuYW1lICQkMWAiID0gIiRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKwkgICAgYnJlYWsKLSsJICBmaQotKyAgICAgICAgZG9uZQotKwlJRlM9IiRhc19zYXZlX0lGUyIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICAgQUNfTVNHX1dBUk4oWyQyIG5vdCBmb3VuZCwgc29tZSBvcHRpb25hbCBmdW5jdGlvbmFsaXRpZXMgd2lsbCBiZSBtaXNzaW5nXSkKLSsgICAgZmkKLSsgIF0pCi0rICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICQxPSQyCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYgppbmRleCAxMjg1OWYwLi41YmY4MThkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0XzAuNjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdF8wLjY1LmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSBxdWlsdC5pbmMKIGluaGVyaXQgZ2V0dGV4dAorCitTUkNfVVJJICs9ICJmaWxlOi8vZ251X3BhdGNoX3Rlc3RfZml4X3RhcmdldC5wYXRjaCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKIFJERVBFTkRTXyR7UE59ICs9ICJwYXRjaCBkaWZmc3RhdCBiemlwMiB1dGlsLWxpbnV4IgotU1JDX1VSSSArPSAiZmlsZTovL2FjbG9jYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2dudV9wYXRjaF90ZXN0X2ZpeF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwOTMzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzNmNmMGZmMjZlY2U1M2U1MjllOGI0ZjJkMmYwOWFjZDg3OTRiMDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDE1OjM1OjQ3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBQWVRIT05fQUJJIHdoZW4gc2VhcmNoaW5nIGZvciBweXRob24gbGlicmFyaWVzLgotCi1JdCBoYXMgYSB2YWx1ZSBvZiAnbScgd2hlbiB1c2luZyBQeXRob24zLCBhbmQgc28gd2l0aG91dCBpdAotY29uZmlndXJlIHdpbGwgbm90IGZpbmQgdGhlIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDljNTg0NjdjMS4uYTUwNmVjODE5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NDIsNyArNjQyLDcgQEAgQVNfSUYoW3Rlc3QgIiRlbmFibGVfcHl0aG9uIiA9IHllc10sWwotICAgICAgIF0pCi0gICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICAgc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSBweXRob25dLFsKLSsgICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSR7UFlUSE9OX0FCSX0gcHl0aG9uXSxbCi0gICAgICAgV0lUSF9QWVRIT05fTElCPSIkYWNfcmVzIgotICAgICBdLFtBQ19NU0dfRVJST1IoW21pc3NpbmcgcHl0aG9uIGxpYnJhcnldKQotICAgICBdKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCmluZGV4IDFmNjFhY2EuLjU2MDRjYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKLUZyb20gZDgyNjkxYjhkNTgyMDFkZDAzZTMwNTg1ZGFhY2Q4ZmZkMTU1NmFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzgyYzE5ZGM1ODM4NDNiMWE5NzVmMmUzZjJlMTUxNjU2YTZmMzc3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyNyBGZWIgMjAxNyAwOTo0MzozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgImxpYi9ycG0iIGFzIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCiAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3MuCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjYzXQorVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yNjNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCkBAIC0xNCwxMCArMTQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGYzYmU4NzcwLi45MmZmZDNkNjggMTAwNjQ0CitpbmRleCA3MTU1ZDlmMDAuLjIxYjk1YWU1ZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODc1LDcgKzg3NSw3IEBAIGVsc2UKK0BAIC0xMDQ3LDcgKzEwNDcsNyBAQCBlbHNlCiAgICAgIHVzcnByZWZpeD0kcHJlZml4CiAgZmkKICAKQEAgLTI3LDEwICsyNywxMCBAQAogIAogIEFDX1NVQlNUKE9CSkRVTVApCiBkaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCBjNmQ1YTZiMDMuLjg0YWUyNTI3NSAxMDA2NDQKK2luZGV4IGQwODYyNDg1Ni4uNjhhOTcyZjFlIDEwMDY0NAogLS0tIGEvbWFjcm9zLmluCiArKysgYi9tYWNyb3MuaW4KLUBAIC04NzcsNyArODc3LDcgQEAgcGFja2FnZSBvciB3aGVuIGRlYnVnZ2luZyB0aGlzIHBhY2thZ2UuXAorQEAgLTk1NCw3ICs5NTQsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCiAgJV9zaGFyZWRzdGF0ZWRpcgkle19wcmVmaXh9L2NvbQogICVfbG9jYWxzdGF0ZWRpcgkJJXtfcHJlZml4fS92YXIKICAlX2xpYgkJCWxpYgpAQCAtNDAsNyArNDAsNyBAQAogICVfaW5mb2RpcgkJJXtfZGF0YWRpcn0vaW5mbwogICVfbWFuZGlyCQkle19kYXRhZGlyfS9tYW4KIGRpZmYgLS1naXQgYS9ycG0uYW0gYi9ycG0uYW0KLWluZGV4IDFmNDNhZDhhMC4uNjg1NGZmNmJhIDEwMDY0NAoraW5kZXggNTEyMjU4OTJkLi5lMGM4MzRkMzcgMTAwNjQ0CiAtLS0gYS9ycG0uYW0KICsrKyBiL3JwbS5hbQogQEAgLTEsMTAgKzEsMTAgQEAKQEAgLTU1LDcgKzU1LDcgQEAKICtycG1jb25maWdkaXIgPSAkKGxpYmRpcikvcnBtCiAgCiAgIyBMaWJ0b29sIHZlcnNpb24gKGN1cnJlbnQtcmV2aXNpb24tYWdlKSBmb3IgYWxsIG91ciBsaWJyYXJpZXMKLSBycG1fdmVyc2lvbl9pbmZvID0gNzowOjAKKyBycG1fdmVyc2lvbl9pbmZvID0gODoxOjAKIC0tIAotMi4xMS4wCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCmluZGV4IGEzODY3NWYuLmJmMjRkNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKQEAgLTYsNiArNiw5IEBACiAKIFdlIGFkZCBsb3RzIG9mIG5hdGl2ZSBzdHVmZiBpbnRvIGl0IGFuZCBzY3JpcHRsZXRzIHJlbHkgb24gdGhhdC4KIAorQWxzbyBuZWVkIHRvIHJlbW92ZSB0aGUgeHggdGVzdCBsYXRlciBpbiB0aGUgZnVuY3Rpb24gc2luY2UgdGhlCit2YWx1ZSBjb3VsZCBub3cgYmUgdXNlZCB1bi1pbml0aWFsaXNlZC4KKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KQEAgLTI1LDYgKzI4LDEzIEBACiAgCWZyZWUoaXBhdGgpOwogICAgICB9CiAgCi0tLSAKLTIuMTEuMAotCitAQCAtMjA2LDkgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXIKKyAJLyogWFhYIERvbid0IG10cmFjZSBpbnRvIGNoaWxkcmVuLiAqLworIAl1bnNldGVudigiTUFMTE9DX0NIRUNLXyIpOworIAorLQlpZiAoeHggPT0gMCkgeworIAkgICAgeHggPSBleGVjdihhcmd2WzBdLCBhcmd2KTsKKy0JfQorICAgICB9CisgICAgIF9leGl0KDEyNyk7IC8qIGV4aXQgMTI3IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYmFzaCgxKSAqLworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0NDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoCkBAIC0wLDAgKzEsMTQ4IEBACitGcm9tIDljM2U1ZGUzMjQwNTU0YzhlYTFiMjlkNTJlZWFkZWU0ODQwZmVmYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxNzozNzowNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gRmFjdG9yIG91dCBhbmQgdW5pZnkgc2V0dGluZyBDTE9FWEVDCisKK0NvbW1pdCA3YTdjMzFmNSAoIlNldCBGRF9DTE9FWEVDIG9uIG9wZW5lZCBmaWxlcyBiZWZvcmUgZXhlYyBmcm9tCitsdWEgc2NyaXB0IGlzIGNhbGxlZCIpIGNvcGllZCB0aGUgY29kZSB0aGF0IHNldHMgQ0xPRVhFQyBmbGFnIG9uIGFsbAorcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGxpYi9ycG1zY3JpcHQuYyB0byBsdWFleHQvbHBvc2l4LmMsCitlc3NlbnRpYWxseSBjcmVhdGluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGNvZGUgKG1vZHVsbyBjb21tZW50cworYW5kIHRoZSB1bnVzZWQgYXNzaWdubWVudCkuCisKK1RoaXMgY29tbWl0IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gaXRzIG93biBmdW5jdGlvbiwgd2l0aG91dAorYW55IGNvZGUgbW9kaWZpY2F0aW9ucywgdXNpbmcgdGhlIHZlcnNpb24gZnJvbSBsdWFleHQvbHBvc2l4LmMuCisKK1NpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBsaWIvcnBtc2NyaXB0LmMgICAgICAgIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCisgbHVhZXh0L2xwb3NpeC5jICAgICAgICB8IDEzICsrLS0tLS0tLS0tLS0KKyBycG1pby9ycG1pby5jICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKworIHJwbWlvL3JwbWlvX2ludGVybmFsLmggfCAgNiArKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCitpbmRleCA3NDczODVhNWIuLmI0Y2NkMzI0NiAxMDA2NDQKKy0tLSBhL2xpYi9ycG1zY3JpcHQuYworKysrIGIvbGliL3JwbXNjcmlwdC5jCitAQCAtMyw3ICszLDYgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpbmNsdWRlIDxycG0vcnBtZmlsZXV0aWwuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTQsNiArMTMsNyBAQAorIAorICNpbmNsdWRlICJycG1pby9ycG1sdWEuaCIKKyAjaW5jbHVkZSAibGliL3JwbXNjcmlwdC5oIgorKyNpbmNsdWRlICJycG1pby9ycG1pb19pbnRlcm5hbC5oIgorIAorICNpbmNsdWRlICJsaWIvcnBtcGx1Z2lucy5oIiAgICAgLyogcnBtIHBsdWdpbnMgaG9va3MgKi8KKyAKK0BAIC0xNzAsMjYgKzE3MCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IFNDUklQVF9QQVRIID0gIlBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3VzcgorIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAorIAkJCUZEX3Qgc2NyaXB0RmQsIEZEX3Qgb3V0KQorIHsKKy0gICAgaW50IGZsYWc7CistICAgIGludCBmZG5vOworICAgICBpbnQgeHg7CistICAgIGludCBvcGVuX21heDsKKyAKKyAgICAgLyogU0lHUElQRSBpcyBpZ25vcmVkIGluIHJwbSwgcmVzZXQgdG8gZGVmYXVsdCBmb3IgdGhlIHNjcmlwdGxldCAqLworICAgICAodm9pZCkgc2lnbmFsKFNJR1BJUEUsIFNJR19ERkwpOworIAorLSAgICAvKiBYWFggRm9yY2UgRkRfQ0xPRVhFQyBvbiBhbGwgaW5oZXJpdGVkIGZkbm8ncy4gKi8KKy0gICAgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistICAgIGlmIChvcGVuX21heCA9PSAtMSkgeworLQlvcGVuX21heCA9IDEwMjQ7CistICAgIH0KKy0gICAgZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKKy0JZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworLQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkgICAgY29udGludWU7CistCXh4ID0gZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CistCS8qIFhYWCBXMkRPPyBkZWJ1ZyBtc2cgZm9yIGluaGVpcml0ZWQgZmRubyB3L28gRkRfQ0xPRVhFQyAqLworLSAgICB9CisrICAgIHJwbVNldENsb3NlT25FeGVjKCk7CisgCisgICAgIGlmIChzY3JpcHRGZCAhPSBOVUxMKSB7CisgCWludCBzZmRubyA9IEZpbGVubyhzY3JpcHRGZCk7CitkaWZmIC0tZ2l0IGEvbHVhZXh0L2xwb3NpeC5jIGIvbHVhZXh0L2xwb3NpeC5jCitpbmRleCAwYTdjMjZjNzEuLjVkN2FkM2M4NyAxMDA2NDQKKy0tLSBhL2x1YWV4dC9scG9zaXguYworKysrIGIvbHVhZXh0L2xwb3NpeC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dXRpbWUuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbXV0aWwuaD4KKysjaW5jbHVkZSAicnBtaW8vcnBtaW9faW50ZXJuYWwuaCIKKyAKKyAjZGVmaW5lIE1ZTkFNRQkJInBvc2l4IgorICNkZWZpbmUgTVlWRVJTSU9OCU1ZTkFNRSAiIGxpYnJhcnkgZm9yICIgTFVBX1ZFUlNJT04gIiAvIE5vdiAyMDAzIgorQEAgLTMzNSwyMSArMzM2LDExIEBAIHN0YXRpYyBpbnQgUGV4ZWMobHVhX1N0YXRlICpMKQkJCS8qKiBleGVjKHBhdGgsW2FyZ3NdKSAqLworIAljb25zdCBjaGFyICpwYXRoID0gbHVhTF9jaGVja3N0cmluZyhMLCAxKTsKKyAJaW50IGksbj1sdWFfZ2V0dG9wKEwpOworIAljaGFyICoqYXJndjsKKy0JaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OworIAorIAlpZiAoIWhhdmVfZm9ya2VkKQorIAkgICAgcmV0dXJuIGx1YUxfZXJyb3IoTCwgImV4ZWMgbm90IHBlcm1pdHRlZCBpbiB0aGlzIGNvbnRleHQiKTsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkgICAgb3Blbl9tYXggPSAxMDI0OworLQl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCSAgICBmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCSAgICBpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJY29udGludWU7CistCSAgICBmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKy0JfQorKwlycG1TZXRDbG9zZU9uRXhlYygpOworIAorIAlhcmd2ID0gbWFsbG9jKChuKzEpKnNpemVvZihjaGFyKikpOworIAlpZiAoYXJndj09TlVMTCkgcmV0dXJuIGx1YUxfZXJyb3IoTCwibm90IGVub3VnaCBtZW1vcnkiKTsKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggYzdjYmMzMmFhLi5lYTExMWQyZWMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc1OSwzICsxNzU5LDE5IEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQorIAorICAgICByZXR1cm4gY3R4OworIH0KKysKKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisreworKwlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCisrCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwlpZiAob3Blbl9tYXggPT0gLTEpIHsKKysJCW9wZW5fbWF4ID0gMTAyNDsKKysJfQorKwlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgeworKwkJZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworKwkJaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKKysJCQljb250aW51ZTsKKysJCWZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOworKwl9CisrfQorZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmggYi9ycG1pby9ycG1pb19pbnRlcm5hbC5oCitpbmRleCBmYmVkMTgzYjAuLjM3MGNiZGM3NSAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKKysrKyBiL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKK0BAIC00MSw2ICs0MSwxMiBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCk7CisgaW50IHJwbWlvU2x1cnAoY29uc3QgY2hhciAqIGZuLAorICAgICAgICAgICAgICAgICB1aW50OF90ICoqIGJwLCBzc2l6ZV90ICogYmxlbnApOworIAorKy8qKgorKyAqIFNldCBjbG9zZS1vbi1leGVjIGZsYWcgZm9yIGFsbCBvcGVuZWQgZmlsZSBkZXNjcmlwdG9ycywgZXhjZXB0CisrICogc3RkaW4vc3Rkb3V0L3N0ZGVyci4KKysgKi8KKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpOworKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCmluZGV4IGVkZjllYzAuLjBiMWQ2MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMSwyNCArMSwyMSBAQAotRnJvbSAyMTFjMmQxMTIwMGU2NjU3MTMyYzUyZTdhYzY4ZjhjMTE4MjMxMjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkMDc2ZGUwMzBkZWI5Y2FmZDliMmU4MmJlNWQ1MDZjZWJkZWZhZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI3IEZlYiAyMDE3IDE0OjQzOjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgQyBsaWJyYXJ5LgorU3ViamVjdDogW1BBVENIIDEvOV0gRml4IGJ1aWxkIHdpdGggbXVzbCBDIGxpYnJhcnkuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbcHJvYmxlbSBhbHJlYWR5IHNvbHZlZCBpbiBtYXN0ZXIgYnJhbmNoXQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAzICsrLQotIG1pc2MvTWFrZWZpbGUuYW0gICAgfCAzICstLQotIG1pc2MvcnBteHByb2duYW1lLmMgfCAzICstLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyAgICAgICB8IDMgKystCisgcnBtaW8vZGlnZXN0X25zcy5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTJmZmQzZDY4Li45YzU4NDY3YzEgMTAwNjQ0CitpbmRleCBjMDRhMmU4ZDEuLmM5ZDlhYzE2ZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjI5LDYgKzIyOSw3IEBAIEFDX1NFQVJDSF9MSUJTKGRsb3BlbiwgW2RsXSkKK0BAIC0yNTUsNiArMjU1LDcgQEAgQUNfU0VBUkNIX0xJQlMoZGxvcGVuLCBbZGxdKQogICMgQ2hlY2sgZm9yIGxpYmVsZiBsaWJyYXJ5LiBQcmVmZXIgZXh0ZXJuYWwsIG90aGVyd2lzZSBub25lLgogIFdJVEhfTElCRUxGX0xJQj0KICBBQ19DSEVDS19IRUFERVIoW2xpYmVsZi5oXSkKQEAgLTI2LDcgKzIzLDcgQEAKICBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCiAgCUFDX0NIRUNLX0xJQihlbGYsIGdlbGZfZ2V0dmVybmF1eCwgWwogIAkgICAgQUNfREVGSU5FKEhBVkVfTElCRUxGLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdlbGYnIGxpYnJhcnkgKC1sZWxmKS5dKQotQEAgLTIzNyw3ICsyMzgsNyBAQCBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCitAQCAtMjYzLDcgKzI2NCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW2dlbGYuaF0sIFsKICAJXSkKICBdKQogIEFDX1NVQlNUKFdJVEhfTElCRUxGX0xJQikKQEAgLTM1LDQwICszMiwxNyBAQAogIAogIEFDX0NIRUNLX0hFQURFUlMoW2R3YXJmLmhdLCBbCiAgICBXSVRIX0xJQkRXQVJGPXllcwotZGlmZiAtLWdpdCBhL21pc2MvTWFrZWZpbGUuYW0gYi9taXNjL01ha2VmaWxlLmFtCi1pbmRleCA4YmYwMDkzZDkuLmI5ZGIzZDMxYSAxMDA2NDQKLS0tLSBhL21pc2MvTWFrZWZpbGUuYW0KLSsrKyBiL21pc2MvTWFrZWZpbGUuYW0KLUBAIC01LDEwICs1LDkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL21pc2MKK2RpZmYgLS1naXQgYS9ycG1pby9kaWdlc3RfbnNzLmMgYi9ycG1pby9kaWdlc3RfbnNzLmMKK2luZGV4IDk5MmQ5YWNmNi4uZTExOTIwZTNlIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X25zcy5jCisrKysgYi9ycG1pby9kaWdlc3RfbnNzLmMKK0BAIC0xLDUgKzEsNiBAQAorICNpbmNsdWRlICJzeXN0ZW0uaCIKICAKLSBFWFRSQV9ESVNUID0gXAotIAlmbm1hdGNoLmMJZm5tYXRjaC5oIFwKLS0JcnBteHByb2duYW1lLmMJcnBteHByb2duYW1lLmggXAotIAlzdHBjcHkuYwlzdHBuY3B5LmMKLSAKLSBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJtaXNjLmxhCi0gCi0tbGlibWlzY19sYV9TT1VSQ0VTID0gZnRzLmMgZnRzLmgKLStsaWJtaXNjX2xhX1NPVVJDRVMgPSBmdHMuYyBmdHMuaCBycG14cHJvZ25hbWUuYyBycG14cHJvZ25hbWUuaAotIGxpYm1pc2NfbGFfTElCQUREID0gQExUTElCT0JKU0AKLWRpZmYgLS1naXQgYS9taXNjL3JwbXhwcm9nbmFtZS5jIGIvbWlzYy9ycG14cHJvZ25hbWUuYwotaW5kZXggZjg5NjAwNjEzLi5lOTQ2MjVlYTggMTAwNjQ0Ci0tLS0gYS9taXNjL3JwbXhwcm9nbmFtZS5jCi0rKysgYi9taXNjL3JwbXhwcm9nbmFtZS5jCi1AQCAtMTMsNyArMTMsNyBAQCBjaGFyICpfcnBteGdldHByb2duYW1lKHZvaWQpCi0gewotICAgY29uc3QgY2hhciAqZW1wdHkgPSAiIjsKLSAKLS0gIGlmIChfcnBteHByb2duYW0gIT0gTlVMTCkgLyogbmV2ZXIgcmV0dXJuIE5VTEwgc3RyaW5nICovCi0rICBpZiAoX3JwbXhwcm9nbmFtZSAhPSBOVUxMKSAvKiBuZXZlciByZXR1cm4gTlVMTCBzdHJpbmcgKi8KLSAgICAgcmV0dXJuIF9ycG14cHJvZ25hbWU7Ci0gICBlbHNlCi0gICAgIHJldHVybiBlbXB0eTsKLUBAIC0zMCw0ICszMCwzIEBAIHZvaWQgX3JwbXhzZXRwcm9nbmFtZShjb25zdCBjaGFyICpwbikKLSAgIH0KLSB9Ci0gCi0tI2VuZGlmIC8qIF9SUE1YUFJPR05BTUVfSCAqLworKyNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxuc3MuaD4KKyAjaW5jbHVkZSA8c2VjaGFzaC5oPgogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NDhjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1XaGVuLW5pY2UtdmFsdWUtY2Fubm90LWJlLXJlc2V0LWlzc3VlLWEtbm90aWNlLWluc3RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkNDJlY2U2ZmExNWI5OGQ3ZjkyMjFiOTBiODViNzg2MzFkZjJjMGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IEZlYiAyMDE3IDEzOjUxOjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gbmljZSB2YWx1ZSBjYW5ub3QgYmUgcmVzZXQsIGlzc3VlIGEgbm90aWNlIGluc3RlYWQgb2YgYQotIHdhcm5pbmcKLQotT3RoZXJ3aXNlIGJ1aWxkIGxvZ3Mgb24gdGhlIGF1dG9idWlsZGVyIGdldCB2ZXJ5IGNsdXR0ZXIsIGFzIGl0Ci1kb2Vzbid0IGFsbG93IHRoZSBuaWNlIHZhbHVlIHRvIGJlIHJlc2V0IGZvciBzb21lIHJlYXNvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbGliL3JwbXNjcmlwdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCi1pbmRleCA1ZTFlOTk5MDYuLjM5NzVhZWFkOCAxMDA2NDQKLS0tLSBhL2xpYi9ycG1zY3JpcHQuYwotKysrIGIvbGliL3JwbXNjcmlwdC5jCi1AQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBycG1SQyBydW5FeHRTY3JpcHQocnBtUGx1Z2lucyBwbHVnaW5zLCBBUkdWX2NvbnN0X3QgcHJlZml4ZXMsCi0gICAgICAgICBpbnQgcmV0OwotICAgICAgICAgcmV0ID0gc2V0cHJpb3JpdHkoUFJJT19QUk9DRVNTLCAwLCAwKTsKLSAgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKLS0gICAgICAgICAgICBycG1sb2coUlBNTE9HX1dBUk5JTkcsIF8oIlVuYWJsZSB0byByZXNldCBuaWNlIHZhbHVlOiAlcyIpLAotKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJVbmFibGUgdG8gcmVzZXQgbmljZSB2YWx1ZTogJXNcbiIpLAotICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3MWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkZmI0MjJjNzQ0ZmRjMTgzOGFmYzQwYjhlMWYxNjFiYjQ2MDkzZDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA4IEFwciAyMDE4IDEyOjA2OjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIG9wdGlvbiBmb3IgZGJ1cworCitBZGQgb3B0aW9uIGZvciBkYnVzIHNvIHRoYXQgdXNlcnMgY291bGQgY2hvb3NlIHRvIGJ1aWxkIHdpdGggZGJ1cworb3Igd2l0aCBubyBkYnVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0ZGIxNWM3OTA5Li40OTNmMzkzZDMxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05NzYsMTIgKzk3NiwxNSBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10sWworIF0pCisgQU1fQ09ORElUSU9OQUwoRU5BQkxFX1BMVUdJTlMsW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgPSB5ZXNdKQorIAorLXdpdGhfZGJ1cz1ubworLUFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiICE9IG5vXSxbCisrQUNfQVJHX1dJVEgoW2RidXNdLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kYnVzXSwgW2J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0XSldLAorKyAgICAgICAgICAgIFtdLAorKyAgICAgICAgICAgIFt3aXRoX2RidXM9eWVzXSkKKysKKytBU19JRihbdGVzdCAiJHdpdGhfZGJ1cyIgIT0gbm9dLFsKKyAgIFBLR19DSEVDS19NT0RVTEVTKFtEQlVTXSwKKyAgICAgW2RidXMtMSA+PSAxLjNdLAorLSAgICBbQUNfREVGSU5FKERCVVMsIDEsIFtCdWlsZCB3aXRoIGRidXMgc3VwcG9ydD9dKSB3aXRoX2RidXM9eWVzXSwKKy0gICAgW3dpdGhfZGJ1cz1ub10pCisrICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pXSwKKysgICAgW0FDX01TR19FUlJPUihbZGJ1cyBub3QgcHJlc2VudCAoLS13aXRob3V0LWRidXMgdG8gZGlzYWJsZSldKV0pCisgICBBQ19TVUJTVChEQlVTX0NGTEFHUykKKyAgIEFDX1NVQlNUKERCVVNfTElCUykKKyBdKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3ZjhlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gNWU2ZjA1Y2Q4ZGFkNmMxZWU2YmQxZTZlNDNmMTc2OTc2YzljMzQxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI5IE1heSAyMDE4IDE3OjUyOjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBPcHRpbWl6ZSBycG1TZXRDbG9zZU9uRXhlYworCitJbiBjYXNlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgbGltaXQgaXMgc2V0IHRvbyBoaWdoLCBib3RoCitsdWFleHQvUGV4ZWMoKSBhbmQgbGliL2RvU2NyaXB0RXhlYygpIHNwZW5kIHdheSB0b28gbXVjaCB0aW1lCit0cnlpbmcgdG8gc2V0IEZEX0NMT0VYRUMgZmxhZyBmb3IgYWxsIHRob3NlIGZpbGUgZGVzY3JpcHRvcnMsCityZXN1bHRpbmcgaW4gc2V2ZXJlIGluY3JlYXNlIG9mIHRpbWUgaXQgdGFrZXMgdG8gZXhlY3V0ZSBzYXkKK3JwbSBvciBkbmYuCisKK1RoaXMgYmVjb21lcyBpbmNyZWFzaW5nbHkgbm90aWNlYWJsZSB3aGVuIHJ1bm5pbmcgd2l0aCBlLmcuIHVuZGVyCitEb2NrZXIsIHRoZSByZWFzb24gYmVpbmc6CisKKz4gJCBkb2NrZXIgcnVuIGZlZG9yYSB1bGltaXQgLW4KKz4gMTA0ODU3NgorCitPbmUgb2J2aW91cyBmaXggaXMgdG8gdXNlIHByb2NmcyB0byBnZXQgdGhlIGFjdHVhbCBsaXN0IG9mIG9wZW5lZCBmZHMKK2FuZCBpdGVyYXRlIG92ZXIgaXQuIE15IHF1aWNrLW4tZGlydHkgYmVuY2htYXJrIHNob3dzIHRoZSAvcHJvYyBhcHByb2FjaAoraXMgYWJvdXQgMTB4IGZhc3RlciB0aGFuIGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBqdXN0IDEwMjQgZmRzLAorc28gaXQncyBhbiBpbXByb3ZlbWVudCBldmVuIGZvciBkZWZhdWx0IHVsaW1pdCB2YWx1ZXMuCisKK05vdGUgdGhhdCB0aGUgb2xkIG1ldGhvZCBpcyBzdGlsbCB1c2VkIGluIGNhc2UgL3Byb2MgaXMgbm90IGF2YWlsYWJsZS4KKworV2hpbGUgYXQgaXQsCisKKyAxLiBmaXggdGhlIGZ1bmN0aW9uIGJ5IG1ha2luZyBzdXJlIHdlIG1vZGlmeSAocmF0aGVyIHRoYW4gc2V0KQorICAgIHRoZSBleGlzdGluZyBmbGFncy4gQXMgdGhlIG9ubHkga25vd24gZmxhZyBpcyBGRF9DTE9FWEVDLAorICAgIHRoaXMgY2hhbmdlIGlzIGN1cnJlbnRseSBwdXJlbHkgYWVzdGhldGljYWwsIGJ1dCBpbiBjYXNlCisgICAgb3RoZXIgZmxhZ3Mgd2lsbCBhcHBlYXIgaXQgd2lsbCBiZWNvbWUgYSByZWFsIGJ1ZyBmaXguCisKKyAyLiBnZXQgcmlkIG9mIG1hZ2ljIG51bWJlciAzOyB1c2UgU1RERVJSX0ZJTEVOTworCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorCitGaXhlcyAjNDQ0CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC80NDRdCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorIHJwbWlvL3JwbWlvLmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggZWExMTFkMmVjLi41NTM1MWMyMjEgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc2MCwxOCArMTc2MCw0MyBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCkKKyAgICAgcmV0dXJuIGN0eDsKKyB9CisgCisrc3RhdGljIHZvaWQgc2V0X2Nsb2V4ZWMoaW50IGZkKQorK3sKKysJaW50IGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkQpOworKworKwlpZiAoZmxhZ3MgPT0gLTEgfHwgKGZsYWdzICYgRkRfQ0xPRVhFQykpCisrCQlyZXR1cm47CisrCisrCWZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyB8IEZEX0NMT0VYRUMpOworK30KKysKKyB2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisgeworLQlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCWNvbnN0IGludCBtaW5fZmQgPSBTVERFUlJfRklMRU5POyAvKiBkb24ndCB0b3VjaCBzdGRpbi9vdXQvZXJyICovCisrCWludCBmZDsKKysKKysJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisrCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisrCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworKwkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJaWYgKG9wZW5fbWF4ID09IC0xKQorKwkJCW9wZW5fbWF4ID0gMTAyNDsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkJb3Blbl9tYXggPSAxMDI0OworKwkJZm9yIChmZCA9IG1pbl9mZCArIDE7IGZkIDwgb3Blbl9tYXg7IGZkKyspCisrCQkJc2V0X2Nsb2V4ZWMoZmQpOworKworKwkJcmV0dXJuOworIAl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCQlmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJCWNvbnRpbnVlOworLQkJZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisrCisrCS8qIGl0ZXJhdGUgb3ZlciBmZHMgb2J0YWluZWQgZnJvbSAvcHJvYyAqLworKwlzdHJ1Y3QgZGlyZW50ICplbnRyeTsKKysJd2hpbGUgKChlbnRyeSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworKwkJZmQgPSBhdG9pKGVudHJ5LT5kX25hbWUpOworKwkJaWYgKGZkID4gbWluX2ZkKQorKwkJCXNldF9jbG9leGVjKGZkKTsKKyAJfQorKworKwljbG9zZWRpcihkaXIpOworKworKwlyZXR1cm47CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWI0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzMDdlMjhiNGNiMDhiMDViYzA0NDQ4MjA1OGVlZWJjOWY1OWJiOWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTg6MDk6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJwbVNldENsb3NlT25FeGVjOiB1c2UgZ2V0cmxpbWl0KCkKKworSW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcywKK3dlIGZhbGwgYmFjayB0byBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBvZiBhbGwgcG9zc2libGUgZmRzLgorCitJdCBpcyBwb3NzaWJsZSB0aGF0IGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiB0aGUgbGltaXQKK29uIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgbWlnaHQgYmUgbG93ZXJlZCwgc28gdXNpbmcgdGhlCitjdXJyZW50IGxpbWl0LCBhcyByZXR1cm5lZCBieSBzeXNjb25mKF9TQ19PUEVOX01BWCksIG1pZ2h0IG9taXQgc29tZQorZmRzLiBUaGVyZWZvcmUsIGl0IGlzIGJldHRlciB0byB1c2UgcmxpbV9tYXggZnJvbSB0aGUgc3RydWN0dXJlCitmaWxsZWQgaW4gYnkgZ2VydGxpbWl0KFJMSU1JVF9OT0ZJTEUpIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjaGVja2luZworYWxsIGZkcy4KKworVGhpcyBzbG93cyBkb3duIHRoZSBmdW5jdGlvbiwgYnV0IG9ubHkgaW4gdGhlIGNhc2UgL3Byb2MgaXMgbm90CithdmFpbGFibGUsIHdoaWNoIHNob3VsZCBiZSByYXJlIGluIHByYWN0aWNlLgorCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorLS0tCisgcnBtaW8vcnBtaW8uYyB8IDEwICsrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggNTUzNTFjMjIxLi5lMDUxYzk4NjMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKysjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1sb2cuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTc3OCw3ICsxNzc5LDE0IEBAIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKKyAJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisgCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisgCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworLQkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJc3RydWN0IHJsaW1pdCBybDsKKysJCWludCBvcGVuX21heDsKKysKKysJCWlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA9PSAwICYmIHJsLnJsaW1fbWF4ICE9IFJMSU1fSU5GSU5JVFkpCisrCQkJb3Blbl9tYXggPSBybC5ybGltX21heDsKKysJCWVsc2UKKysJCQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKysKKyAJCWlmIChvcGVuX21heCA9PSAtMSkKKyAJCQlvcGVuX21heCA9IDEwMjQ7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKaW5kZXggNjRhNTY1MS4uODk4OWRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZWMzMDU3OTVhMzAyZDIyNjM0M2U2OTAzMWZmMjAyNGRmY2RlNjljMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGNlOWZiYWIyOTkwNjA5YmRhY2U0NTdlMTQ2MTYwMzM0ZTkzMWM4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KK1N1YmplY3Q6IFtQQVRDSCAxNC8xNV0gYnVpbGQvcGFjay5jOiByZW1vdmUgc3RhdGljIGxvY2FsIHZhcmlhYmxlcyBmcm9tCiAgYnVpbGRIb3N0KCkgYW5kIGdldEJ1aWxkVGltZSgpCiAKIFRoZWlyIHVzZSBpcyBjYXVzaW5nIGRpZmZpY3VsdCB0byBkaWFnbm96ZSBkYXRhIHJhY2VzIHdoZW4gYnVpbGRpbmcgbXVsdGlwbGUKQEAgLTExLDggKzExLDggQEAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKLQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGJ1aWxkL2J1aWxkLmMgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KICBidWlsZC9wYWNrLmMgICAgICAgICAgICAgIHwgODQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwLDcgKzIwLDcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGQuYyBiL2J1aWxkL2J1aWxkLmMKLWluZGV4IDVmOTljOGRiNy4uMDlhMTMxMWM1IDEwMDY0NAoraW5kZXggODExNTJlNTNlLi42MDAxZjllNTIgMTAwNjQ0CiAtLS0gYS9idWlsZC9idWlsZC5jCiArKysgYi9idWlsZC9idWlsZC5jCiBAQCAtNiw2ICs2LDggQEAKQEAgLTgzLDcgKzgzLDcgQEAKICAvKioKICAgKi8KICBzdGF0aWMgcnBtUkMgZG9SbVNvdXJjZShycG1TcGVjIHNwZWMpCi1AQCAtMjAzLDYgKzI0OSw5IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTIwMSw2ICsyNDcsOSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAgICAgcnBtUkMgcmMgPSBSUE1SQ19PSzsKICAgICAgaW50IHRlc3QgPSAod2hhdCAmIFJQTUJVSUxEX05PQlVJTEQpOwogICAgICBjaGFyICpjb29raWUgPSBidWlsZEFyZ3MtPmNvb2tpZSA/IHhzdHJkdXAoYnVpbGRBcmdzLT5jb29raWUpIDogTlVMTDsKQEAgLTkzLDcgKzkzLDcgQEAKICAKICAgICAgaWYgKHJwbUV4cGFuZE51bWVyaWMoIiV7P3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21fY2hhbmdlbG9nfSIpICYmCiAgCWdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKSA9PSBOVUxMKSB7Ci1AQCAtMjcxLDExICszMjAsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCitAQCAtMjY5LDExICszMTgsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCiAgCQlnb3RvIGV4aXQ7CiAgCiAgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFU09VUkNFKSAmJiAhdGVzdCkgJiYKQEAgLTEwNyw3ICsxMDcsNyBAQAogIAkJZ290byBleGl0OwogIAkKICAJaWYgKCh3aGF0ICYgUlBNQlVJTERfQ0xFQU4pICYmCi1AQCAtMjk1LDYgKzM0NCw3IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTI5Myw2ICszNDIsNyBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAJKHZvaWQpIHVubGluayhzcGVjLT5zcGVjRmlsZSk7CiAgCiAgZXhpdDoKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKICAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CiBkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCi1pbmRleCBlZDViOWFiNGUuLjYyNDI3MDY1YSAxMDA2NDQKK2luZGV4IGRmMTU4NzZmZi4uMTdhNGIwOTA1IDEwMDY0NAogLS0tIGEvYnVpbGQvcGFjay5jCiArKysgYi9idWlsZC9wYWNrLmMKIEBAIC02LDggKzYsNiBAQApAQCAtMTI4LDcgKzEyOCw3IEBACiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgCiAgI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4JCQkvKiBSUE1TSUdUQUcqLCBycG1SZWFkUGFja2FnZUZpbGUgKi8KLUBAIC0xNTEsNTcgKzE0OSw2IEBAIGV4aXQ6CitAQCAtMTUyLDU3ICsxNTAsNiBAQCBleGl0OgogICAgICByZXR1cm4gcmM7CiAgfQogIApAQCAtMTg2LDkgKzE4Niw5IEBACiAgc3RhdGljIHJwbVJDIHByb2Nlc3NTY3JpcHRGaWxlcyhycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnKQogIHsKICAgICAgc3RydWN0IFRyaWdnZXJGaWxlRW50cnkgKnA7Ci1AQCAtMzA4LDcgKzI1NSw4IEBAIHN0YXRpYyBpbnQgaGF2ZVJpY2hEZXAoUGFja2FnZSBwa2cpCi0gfQotIAorQEAgLTQ3Niw3ICs0MjMsOCBAQCBleGl0OgorICAqIG9yZGVyIHRvIGhvdyB0aGUgUlBNIGZvcm1hdCBpcyBsYWlkIG9uIGRpc2suCisgICovCiAgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKIC0JCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBjaGFyICoqY29va2llKQogKwkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUsCkBAIC0xOTYsNyArMTk2LDcgQEAKICB7CiAgICAgIEZEX3QgZmQgPSBOVUxMOwogICAgICBjaGFyICogcnBtaW9fZmxhZ3MgPSBOVUxMOwotQEAgLTM5Nyw3ICszNDUsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAorQEAgLTUwMCw3ICs0NDgsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAogIAogICAgICAvKiBDcmVhdGUgYW5kIGFkZCB0aGUgY29va2llICovCiAgICAgIGlmIChjb29raWUpIHsKQEAgLTIwNCw4ICsyMDQsOCBAQAogKwlyYXNwcmludGYoY29va2llLCAiJXMgJWQiLCBidWlsZEhvc3QsIGJ1aWxkVGltZSk7CiAgCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX0NPT0tJRSwgKmNvb2tpZSk7CiAgICAgIH0KLSAgICAgCi1AQCAtNTQ2LDcgKzQ5NCw3IEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorIAorQEAgLTY0MSw3ICs1ODksNyBAQCBzdGF0aWMgcnBtUkMgY2hlY2tQYWNrYWdlcyhjaGFyICpwa2djaGVjaykKICAgICAgcmV0dXJuIFJQTVJDX09LOwogIH0KICAKQEAgLTIxNCw3ICsyMTQsNyBAQAogIHsKICAJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CiAgCXJwbVJDIHJjID0gUlBNUkNfT0s7Ci1AQCAtNTY1LDggKzUxMyw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCitAQCAtNjYwLDggKzYwOCw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCiAgCWhlYWRlckNvcHlUYWdzKHNwZWMtPnBhY2thZ2VzLT5oZWFkZXIsIHBrZy0+aGVhZGVyLCBjb3B5VGFncyk7CiAgCQogIAloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKQEAgLTIyNSw3ICsyMjUsNyBAQAogIAogIAlpZiAoc3BlYy0+c291cmNlUGtnSWQgIT0gTlVMTCkgewogIAkgICAgaGVhZGVyUHV0QmluKHBrZy0+aGVhZGVyLCBSUE1UQUdfU09VUkNFUEtHSUQsIHNwZWMtPnNvdXJjZVBrZ0lkLDE2KTsKLUBAIC02MDQsNyArNTUyLDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKK0BAIC02OTksNyArNjQ3LDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKICAJICAgIGZyZWUoYmluUnBtKTsKICAJfQogIApAQCAtMjM0LDcgKzIzNCw3IEBACiAgCWlmIChyYyA9PSBSUE1SQ19PSykgewogIAkgICAgLyogRG8gY2hlY2sgZWFjaCB3cml0dGVuIHBhY2thZ2UgaWYgZW5hYmxlZCAqLwogIAkgICAgY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja30gIiwgKmZpbGVuYW1lLCBOVUxMKTsKLUBAIC02MjQsNyArNTcyLDcgQEAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorQEAgLTcxOSw3ICs2NjcsNyBAQCBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCiAgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKm5leHQ7CiAgfTsKICAKQEAgLTI0Myw3ICsyNDMsNyBAQAogIHsKICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBOVUxMOwogICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gTlVMTDsKLUBAIC02MzYsNyArNTg0LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKK0BAIC03MzEsNyArNjc5LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKICAgICAgICAgIGlmIChwa2cgPT0gc3BlYy0+cGFja2FnZXMpIHsKICAgICAgICAgICAgICAvLyB0aGUgZmlyc3QgcGFja2FnZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYWhlYWQgb2Ygb3RoZXJzLCBhcyB0aGV5IGNvcHkKICAgICAgICAgICAgICAvLyBjaGFuZ2Vsb2cgZGF0YSBmcm9tIGl0LCBhbmQgc28gb3RoZXJ3aXNlIGRhdGEgcmFjZXMgd291bGQgaGFwcGVuCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICAgICAgdGFza3MgPSB0YXNrOwogICAgICAgICAgfQotQEAgLTY1Myw3ICs2MDEsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYworQEAgLTc0OCw3ICs2OTYsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYwogICAgICAgICAgaWYgKHRhc2sgIT0gdGFza3MpCiAgICAgICAgICAjcHJhZ21hIG9tcCB0YXNrCiAgICAgICAgICB7CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICB9CiAgICAgIH0KLUBAIC02NzEsMTEgKzYxOSwxMSBAQCBzdGF0aWMgdm9pZCBmcmVlQmluYXJ5UGFja2FnZVRhc2tzKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHRhc2tzKQorQEAgLTc2NiwxMSArNzE0LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCiAgICAgIH0KICB9CiAgCkBAIC0yNzUsNyArMjc1LDcgQEAKICAKICAgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKICAgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKLUBAIC03MDIsMjIgKzY1MCwyMiBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKK0BAIC03OTcsNyArNzQ1LDcgQEAgcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCiAgICAgIHJldHVybiBSUE1SQ19PSzsKICB9CiAgCkBAIC0yODQsNiArMjg0LDcgQEAKICB7CiAgICAgIFBhY2thZ2Ugc291cmNlUGtnID0gc3BlYy0+c291cmNlUGFja2FnZTsKICAgICAgcnBtUkMgcmM7CitAQCAtODA1LDggKzc1Myw4IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAKICAgICAgLyogQWRkIHNvbWUgY3J1ZnQgKi8KICAgICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfUlBNVkVSU0lPTiwgVkVSU0lPTik7CkBAIC0yOTEsOSArMjkyLDEwIEBACiAtICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOwogKyAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CiArICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX1NPVVJDRVBBQ0tBR0UsICZvbmUsIDEpOwogIAogICAgICAvKiBYWFggdGhpcyBzaG91bGQgYmUgJV9zcnBtZGlyICovCi0gICAgIHsJY2hhciAqZm4gPSBycG1HZXRQYXRoKCIle19zcmNycG1kaXJ9LyIsIHNwZWMtPnNvdXJjZVJwbU5hbWUsTlVMTCk7CitAQCAtODE0LDcgKzc2Miw3IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAJY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja19zcnBtfSAiLCBmbiwgTlVMTCk7CiAgCiAgCXNwZWMtPnNvdXJjZVBrZ0lkID0gTlVMTDsKQEAgLTMwMywxMCArMzA1LDEwIEBACiAgCS8qIERvIGNoZWNrIFNSUE0gcGFja2FnZSBpZiBlbmFibGVkICovCiAgCWlmIChyYyA9PSBSUE1SQ19PSyAmJiBwa2djaGVja1swXSAhPSAnICcpIHsKIGRpZmYgLS1naXQgYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAotaW5kZXggODM1MWE2YTM0Li43OTczMzdjYTcgMTAwNjQ0CitpbmRleCA0MzliN2QzYjUuLjA3ZTgzMzhhZCAxMDA2NDQKIC0tLSBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKICsrKyBiL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKLUBAIC00MDgsMTkgKzQwOCwyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKK0BAIC00MjcsMTkgKzQyNywyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKICAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCiAgICogQHBhcmFtIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKICAgKiBAcGFyYW0gY2hlYXRpbmcJd2FzIGJ1aWxkIHNob3J0Y2lyY3VpdGVkPwpAQCAtMzMzLDUgKzMzNSw1IEBACiAgUlBNX0dOVUNfSU5URVJOQUwKICBpbnQgYWRkTGFuZ1RhZyhycG1TcGVjIHNwZWMsIEhlYWRlciBoLCBycG1UYWdWYWwgdGFnLAogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2gKaW5kZXggYzkxMGE0Ny4uNGFjNWMzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDY1ZDZlODc2MGFmYmQ3ZjcwYjIyYTFmMzI5N2EwMzdiYzQ3NWZlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTE0MWQ1MGQ3YjNkM2MyMDlhMjJjNTNkZWVkYjRjZWVmMDE0NDAxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgogRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxMDoyMTowOCArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEzXSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQorU3ViamVjdDogW1BBVENIIDA5LzE1XSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQogIGlkZW50aWZpYWJsZQogCiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgcmVxdWlyZXMsIGUuZy4sIGEgRFNPIHRvIGJlIGV4ZWN1dGFibGUsIGJ1dCBpdApAQCAtMTQsMTkgKzE0LDIwIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CisKIC0tLQogIGZpbGVhdHRycy9lbGYuYXR0ciB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9maWxlYXR0cnMvZWxmLmF0dHIgYi9maWxlYXR0cnMvZWxmLmF0dHIKLWluZGV4IDU5NWIzM2UwOS4uYmFjNTI2NDlkIDEwMDY0NAoraW5kZXggNTgwNWRkMGVlLi4zNTE2ZjMwOWQgMTAwNjQ0CiAtLS0gYS9maWxlYXR0cnMvZWxmLmF0dHIKICsrKyBiL2ZpbGVhdHRycy9lbGYuYXR0cgogQEAgLTEsNCArMSwzIEBACiAgJV9fZWxmX3Byb3ZpZGVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1wcm92aWRlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9CiAgJV9fZWxmX3JlcXVpcmVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1yZXF1aXJlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9Ci0gJV9fZWxmX21hZ2ljCQleKHNldHVpZCApPyhzZXRnaWQgKT8oc3RpY2t5ICk/RUxGICgzMnw2NCktYml0LiokCisgJV9fZWxmX21hZ2ljCQleKHNldHVpZCw/ICk/KHNldGdpZCw/ICk/KHN0aWNreSApP0VMRiAoMzJ8NjQpLWJpdC4qJAogLSVfX2VsZl9mbGFncwkJZXhlb25seQogLS0gCi0yLjEyLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NmRhOTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3NzgwOGRiNDAzNmRjNGEwMTJjNDdhY2EzNjI1NTU0OWVkNzY0YTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+Ci1EYXRlOiBUdWUsIDE2IE1heSAyMDE3IDEwOjU4OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTNdIFVzZSBjb25kaXRpb25hbCB0byBhY2Nlc3MgJXtfZG9jZGlyfSBpbiBtYWNyb3MuaW4KLQotVGhpcyBhdm9pZHMgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgotCi13YXJuaW5nOiBJZ25vcmluZyBpbnZhbGlkIHJlZ2V4ICV7X2RvY2Rpcn0KLQotd2hlbiBydW5pbmcgYHJwbWRlcHMgLVIgPGZpbGU+YCwgc2luY2UgJXtfZG9jZGlyfSBpcyBvbmx5IGRlZmluZWQgd2hlbgotcGFyc2luZyBhIHNwZWMgZmlsZSAoaW4gcGFyc2VTcGVjKCkpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjE2XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBtYWNyb3MuaW4gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCA4NGFlMjUyNzUuLmNjYTY3YTUwMCAxMDA2NDQKLS0tLSBhL21hY3Jvcy5pbgotKysrIGIvbWFjcm9zLmluCi1AQCAtMjAwLDggKzIwMCw4IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBwYWNrYWdlLlwKLSAjIFRoZWlyIHB1cnBvdXNlIGlzIHRvIHNldCB1cCBnbG9iYWwgZmlsdGVyaW5nIGZvciBhbGwgcGFja2FnZXMuIElmIHlvdSBuZWVkCi0gIyB0byBzZXQgdXAgc3BlY2lmaWMgZmlsdGVyaW5nIGZvciB5b3VyIHBhY2thZ2UgdXNlICVfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQotICMgYW5kICVfX3Byb3ZpZGVzX2V4Y2x1ZGVfZnJvbSBpbnN0ZWFkLgotLSVfX2dsb2JhbF9yZXF1aXJlc19leGNsdWRlX2Zyb20JCSV7X2RvY2Rpcn0KLS0lX19nbG9iYWxfcHJvdmlkZXNfZXhjbHVkZV9mcm9tCQkle19kb2NkaXJ9Ci0rJV9fZ2xvYmFsX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQkJJXs/X2RvY2Rpcjole19kb2NkaXJ9fQotKyVfX2dsb2JhbF9wcm92aWRlc19leGNsdWRlX2Zyb20JCSV7P19kb2NkaXI6JXtfZG9jZGlyfX0KLSAKLSAjCVRoZSBwYXRoIHRvIHRoZSBnemlwIGV4ZWN1dGFibGUgKGxlZ2FjeSwgdXNlICV7X19nemlwfSBpbnN0ZWFkKS4KLSAlX2d6aXBiaW4JCSV7X19nemlwfQotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWY2MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1Gcm9tIDNiZjIwYTYxMTZhZTNlMWE1YTNhNjkwN2JlZTdlODgxYjE3ZWZiMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTE6MjM6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xM10gQWRkIGEgbmV3IG9wdGlvbiAtLWFsbGRlcHMgdG8gcnBtZGVwcwotCi1UaGlzIHdpbGwgc2VuZCB0aGUgb3V0cHV0IGZyb20gcnBtZmNQcmludCgpIHRvIHN0ZG91dC4gVGhpcyBpcyBhbgotYWx0ZXJuYXRpdmUgdG8gdXNpbmcgdGhlIC0tcnBtZmNkZWJ1ZyBvcHRpb24sIHdoaWNoIHdpbGwgc2VuZCB0aGUgc2FtZQotb3V0cHV0IHRvIHN0ZGVyci4gVGhlIHR3byBvcHRpb25zIGhhdmUgdG90YWxseSBkaWZmZXJlbnQgdXNlIGNhc2VzCi10aG91Z2guIFdoaWxlIC0tYWxsZGVwcyBpcyB1c2VkIHdoZW4gdGhlIG91dHB1dCBmcm9tIHJwbWZjUHJpbnQoKSBpcwotd2hhdCBpcyB3YW50ZWQsIC0tcnBtZmNkZWJ1ZyBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvdGhlcgotb3V0cHV0IG9wdGlvbnMsIGUuZy4sIC0tcmVxdWlyZXMsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZWlyIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjBdCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KLS0tLQotIGJ1aWxkL3JwbWZjLmMgICB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGJ1aWxkL3JwbWZjLmggICB8ICAxIC0KLSB0b29scy9ycG1kZXBzLmMgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZC9ycG1mYy5jIGIvYnVpbGQvcnBtZmMuYwotaW5kZXggYzhlMmY4NzZhLi40NGYxY2RjOWEgMTAwNjQ0Ci0tLS0gYS9idWlsZC9ycG1mYy5jCi0rKysgYi9idWlsZC9ycG1mYy5jCi1AQCAtNzMyLDcgKzczMiw2IEBAIHN0YXRpYyBycG1fY29sb3JfdCBycG1mY0NvbG9yKGNvbnN0IGNoYXIgKiBmbXN0cikKLSAKLSB2b2lkIHJwbWZjUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZmMgZmMsIEZJTEUgKiBmcCkKLSB7Ci0tICAgIHJwbV9jb2xvcl90IGZjb2xvcjsKLSAgICAgaW50IG5keDsKLSAgICAgaW50IGR4OwotICAgICBpbnQgZng7Ci1AQCAtNzQ0LDIxICs3NDMsMjMgQEAgdm9pZCBycG1mY1ByaW50KGNvbnN0IGNoYXIgKiBtc2csIHJwbWZjIGZjLCBGSUxFICogZnApCi0gCi0gICAgIGlmIChmYykKLSAgICAgZm9yIChmeCA9IDA7IGZ4IDwgZmMtPm5maWxlczsgZngrKykgewotLQlycG1zaWQgY3ggPSBmYy0+ZmNkaWN0eFtmeF0gKyAxOyAvKiBpZCdzIGFyZSBvbmUgb2ZmICovCi0tCWZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotLQlBUkdWX3QgZmF0dHJzID0gZmMtPmZhdHRyc1tmeF07Ci0tCi0gCWZwcmludGYoZnAsICIlM2QgJXMiLCBmeCwgZmMtPmZuW2Z4XSk7Ci0tCWlmIChmY29sb3IgIT0gUlBNRkNfQkxBQ0spCi0rCWlmIChfcnBtZmNfZGVidWcpIHsKLSsJICAgIHJwbXNpZCBjeCA9IGZjLT5mY2RpY3R4W2Z4XSArIDE7IC8qIGlkJ3MgYXJlIG9uZSBvZmYgKi8KLSsJICAgIHJwbV9jb2xvcl90IGZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotKwkgICAgQVJHVl90IGZhdHRycyA9IGZjLT5mYXR0cnNbZnhdOwotKwotKwkgICAgaWYgKGZjb2xvciAhPSBSUE1GQ19CTEFDSykKLSAJCWZwcmludGYoZnAsICJcdDB4JXgiLCBmYy0+ZmNvbG9yW2Z4XSk7Ci0tCWVsc2UKLSsJICAgIGVsc2UKLSAJCWZwcmludGYoZnAsICJcdCVzIiwgcnBtc3RyUG9vbFN0cihmYy0+Y2RpY3QsIGN4KSk7Ci0tCWlmIChmYXR0cnMpIHsKLS0JICAgIGNoYXIgKmF0dHJzID0gYXJndkpvaW4oZmF0dHJzLCAiLCIpOwotLQkgICAgZnByaW50ZihmcCwgIiBbJXNdIiwgYXR0cnMpOwotLQkgICAgZnJlZShhdHRycyk7Ci0tCX0gZWxzZSB7Ci0tCSAgICBmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgaWYgKGZhdHRycykgewotKwkJY2hhciAqYXR0cnMgPSBhcmd2Sm9pbihmYXR0cnMsICIsIik7Ci0rCQlmcHJpbnRmKGZwLCAiIFslc10iLCBhdHRycyk7Ci0rCQlmcmVlKGF0dHJzKTsKLSsJICAgIH0gZWxzZSB7Ci0rCQlmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgfQotIAl9Ci0gCWZwcmludGYoZnAsICJcbiIpOwotIAotZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWZjLmggYi9idWlsZC9ycG1mYy5oCi1pbmRleCBkYWU4ZWE1YjEuLjNkODdiMzFjZiAxMDA2NDQKLS0tLSBhL2J1aWxkL3JwbWZjLmgKLSsrKyBiL2J1aWxkL3JwbWZjLmgKLUBAIC00NSw3ICs0NSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IHJwbWZjVG9rZW5zX3MgKiBycG1mY1Rva2VuOwotIAotIC8qKiBcaW5ncm91cCBycG1mYwotICAqIFByaW50IHJlc3VsdHMgb2YgZmlsZSBjbGFzc2lmaWNhdGlvbi4KLS0gKiBAdG9kbyBSZW1vdmUgZGVidWdnaW5nIHJvdXRpbmUuCi0gICogQHBhcmFtIG1zZwkJbWVzc2FnZSBwcmVmaXggKE5VTEwgZm9yIG5vbmUpCi0gICogQHBhcmFtIGZjCQlmaWxlIGNsYXNzaWZpZXIKLSAgKiBAcGFyYW0gZnAJCW91dHB1dCBmaWxlIGhhbmRsZSAoTlVMTCBmb3Igc3RkZXJyKQotZGlmZiAtLWdpdCBhL3Rvb2xzL3JwbWRlcHMuYyBiL3Rvb2xzL3JwbWRlcHMuYwotaW5kZXggYTQxNGI2MzQzLi5mMjYwYTM4YzQgMTAwNjQ0Ci0tLS0gYS90b29scy9ycG1kZXBzLmMKLSsrKyBiL3Rvb2xzL3JwbWRlcHMuYwotQEAgLTIzLDYgKzIzLDggQEAgc3RhdGljIGludCBwcmludF9jb25mbGljdHM7Ci0gCi0gc3RhdGljIGludCBwcmludF9vYnNvbGV0ZXM7Ci0gCi0rc3RhdGljIGludCBwcmludF9hbGxkZXBzOwotKwotIHN0YXRpYyB2b2lkIHJwbWRzUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZHMgZHMsIEZJTEUgKiBmcCkKLSB7Ci0gICAgIGlmIChmcCA9PSBOVUxMKSBmcCA9IHN0ZGVycjsKLUBAIC01Nyw2ICs1OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcG9wdE9wdGlvbiBvcHRpb25zVGFibGVbXSA9IHsKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSAgeyAib2Jzb2xldGVzIiwgJ1wwJywgUE9QVF9BUkdfVkFMLCAmcHJpbnRfb2Jzb2xldGVzLCAtMSwKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSsgeyAiYWxsZGVwcyIsICdcMCcsIFBPUFRfQVJHX1ZBTCwgJnByaW50X2FsbGRlcHMsIC0xLAotKyAgICAgICAgTlVMTCwgTlVMTCB9LAotIAotICAgIFBPUFRfQVVUT0FMSUFTCi0gICAgUE9QVF9BVVRPSEVMUAotQEAgLTEwMCwyNSArMTA0LDI3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgaWYgKHJwbWZjQ2xhc3NpZnkoZmMsIGF2LCBOVUxMKSB8fCBycG1mY0FwcGx5KGZjKSkKLSAJZ290byBleGl0OwotIAotLSAgICBpZiAoX3JwbWZjX2RlYnVnKQotLQlycG1mY1ByaW50KGJ1ZiwgZmMsIE5VTEwpOwotLQotLSAgICBpZiAocHJpbnRfcHJvdmlkZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9yZXF1aXJlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1JlcXVpcmVzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3JlY29tbWVuZHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZWNvbW1lbmRzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3N1Z2dlc3RzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdXBwbGVtZW50cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9lbmhhbmNlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0VuaGFuY2VzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X2NvbmZsaWN0cykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9vYnNvbGV0ZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNPYnNvbGV0ZXMoZmMpLCBzdGRvdXQpOwotKyAgICBpZiAocHJpbnRfYWxsZGVwcyB8fCBfcnBtZmNfZGVidWcpCi0rCXJwbWZjUHJpbnQoTlVMTCwgZmMsIHByaW50X2FsbGRlcHMgPyBzdGRvdXQgOiBOVUxMKTsKLSsKLSsgICAgaWYgKCFwcmludF9hbGxkZXBzKSB7Ci0rCWlmIChwcmludF9wcm92aWRlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZXF1aXJlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZXF1aXJlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZWNvbW1lbmRzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY1JlY29tbWVuZHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VnZ2VzdHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VwcGxlbWVudHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfZW5oYW5jZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjRW5oYW5jZXMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfY29uZmxpY3RzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9vYnNvbGV0ZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjT2Jzb2xldGVzKGZjKSwgc3Rkb3V0KTsKLSsgICAgfQotIAotICAgICBlYyA9IDA7Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDEyOTIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpAQCAtMCwwICsxLDEzOCBAQAorU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCitERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAorcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAordmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKK3BhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKK3RoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCisKK1NVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgorREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCitkZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCittYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAorc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKK290aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKK3RvIGZ1bmN0aW9uLiIKKworU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKK0RFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAord3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKK3N1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKKworIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/CitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMGJmMDE3YzBmZDE5MjBlNjE1OGEzMzNhY2FiZmQ0YSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbTticmFuY2g9cnBtLTQuMTQueCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29sb3Itc2V0dGluZy1mb3ItbWlwczY0X24zMi1iaW5hcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU9wdGltaXplLXJwbVNldENsb3NlT25FeGVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcnBtU2V0Q2xvc2VPbkV4ZWMtdXNlLWdldHJsaW1pdC5wYXRjaCBcCisgICAgICAgICAgICIKKworUEUgPSAiMSIKK1NSQ1JFViA9ICJiZmVlMTQxMGFmNTFjMWNjOTcyNDc5MWZiOGQ5ODUyNjBhNjIxMDJiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQorZXhwb3J0IFBZVEhPTl9BQkkKKworIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKK0VYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKKworIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCisjCisjIC0tbG9jYWxzdGF0ZWRpciBwcmV2ZW50cyBycG0gZnJvbSB3cml0aW5nIGl0cyBkYXRhYmFzZSB0byBuYXRpdmUgc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGltYWdlcworIworIyBEaXNhYmxlIGRidXMgZm9yIG5hdGl2ZSwgc28gdGhhdCBycG0gZG9lc24ndCBhdHRlbXB0IHRvIGluaGliaXQgc2h1dGRvd24gdmlhIHNlc3Npb24gZGJ1cyBldmVuIHdoZW4gcGx1Z2lucyBzdXBwb3J0IGlzIGVuYWJsZWQuCisjIEFsc28gZGlzYWJsZSBwbHVnaW5zIGJ5IGRlZmF1bHQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLXdpdGhvdXQtZGJ1cyAtLWRpc2FibGUtcGx1Z2lucyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCisKKyMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgdG9vbHM9IlwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKKyAgICAgICAgIgorCisgICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KKyAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQorICAgICAgICBkb25lCit9CisKKyMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBybSAtcmYgJHtEfS92YXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCisKKwlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKKwkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkgXAorCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob24tbWFjcm8taGVscGVyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5zbyBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICJweXRob24zLXJwbSIKK1BST1ZJREVTICs9ICJweXRob24zLXJwbSIKK0ZJTEVTX3B5dGhvbjMtcnBtID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qIgorCisjIHJwbSA1Lnggd2FzIHBhY2thZ2luZyB0aGUgcnBtIGJ1aWxkIHRvb2xzIHNlcGFyYXRlbHkKK1JQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY2MzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAotcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAotdmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKLXBhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKLXRoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCi0KLVNVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCi1kZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCi1tYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAotc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKLW90aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKLXRvIGZ1bmN0aW9uLiIKLQotU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAotd3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKLXN1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKLQotIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/Ci1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNTI1OTE1MWQyNmZmMThlNzgwMjM0NTBhNWFjOGQ5NiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1uaWNlLXZhbHVlLWNhbm5vdC1iZS1yZXNldC1pc3N1ZS1hLW5vdGljZS1pbnN0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbG9yLXNldHRpbmctZm9yLW1pcHM2NF9uMzItYmluYXJpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAotICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKLQotUFYgPSAiNC4xMy45MCtnaXQke1NSQ1BWfSIKLVBFID0gIjEiCi1TUkNSRVYgPSAiYThlNTFiM2JiMDVjNmFjYjFkOWIyZTNkMzRmODU5ZGRkYTE2NzdiZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKLWV4cG9ydCBQWVRIT05fQUJJCi0KLSMgT0UtY29yZSBwYXRjaGVzIGF1dG9yZWNvbmYgdG8gYWRkaXRpb25hbGx5IHJ1biBnbnUtY29uZmlnaXplLCB3aGljaCBmYWlscyB3aXRoIHRoaXMgcmVjaXBlCi1FWFRSQV9BVVRPUkVDT05GX2FwcGVuZCA9ICIgLS1leGNsdWRlPWdudS1jb25maWdpemUiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1ubHMiCi0KLSMgLS1zeXNjb25mZGlyIHByZXZlbnRzIHJwbSBmcm9tIGF0dGVtcHRpbmcgdG8gYWNjZXNzIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiBzeXNyb290L2V0Yzsgd2UgbmVlZCB0byBoYXZlIGl0IGluIHJvb3RmcwotIwotIyAtLWxvY2Fsc3RhdGVkaXIgcHJldmVudHMgcnBtIGZyb20gd3JpdGluZyBpdHMgZGF0YWJhc2UgdG8gbmF0aXZlIHN5c3Jvb3Qgd2hlbiBidWlsZGluZyBpbWFnZXMKLSMKLSMgQWxzbyBkaXNhYmxlIHBsdWdpbnMsIHNvIHRoYXQgcnBtIGRvZXNuJ3QgYXR0ZW1wdCB0byBpbmhpYml0IHNodXRkb3duIHZpYSBzZXNzaW9uIGRidXMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLWRpc2FibGUtcGx1Z2lucyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCi0KLSMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgdG9vbHM9IlwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKLSAgICAgICAgIgotCi0gICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KLSAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotICAgICAgICBkb25lCi19Ci0KLSMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBybSAtcmYgJHtEfS92YXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKLQkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLnNvIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGhvbjMtcnBtIgotUFJPVklERVMgKz0gInB5dGhvbjMtcnBtIgotRklMRVNfcHl0aG9uMy1ycG0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtLyoiCi0KLSMgcnBtIDUueCB3YXMgcGFja2FnaW5nIHRoZSBycG0gYnVpbGQgdG9vbHMgc2VwYXJhdGVseQotUlBST1ZJREVTXyR7UE59ICs9ICJycG0tYnVpbGQiCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcGVybCBweXRob24zLWNvcmUiCi0KLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicnBtX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotIyBEbyBub3Qgc3BlY2lmeSBhIHN5c3Jvb3Qgd2hlbiBjb21waWxpbmcgb24gYSB0YXJnZXQuCi1ycG1fcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290W14gXSo6OmcnIFwKLQkgICAgJHtQS0dEfS8ke2xpYmRpcn0vcnBtL21hY3JvcwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzE5ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXJlcXVpcmUgcnN5bmMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZS1uby1yZWJ1aWxkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGY3NThkN2UwMDBjMGY3ZjdkMzc5MjYxMGZhZDcwY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWNmYTYyYTdmYTNjNGMxOGI5ZWNjZDhjMTZlYWRkZWU0YmQzMDhhNzZlYTUwYjVjMDJhNTg0MGYwOWMwYTFjMiIKLQotIyBHUEx2MisgKDw8IDMuMC4wKSwgR1BMdjMrICg+PSAzLjAuMCkKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhY2wgYXR0ciBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLXN1cHBvcnQsLS1kaXNhYmxlLWFjbC1zdXBwb3J0LGFjbCwiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0tZW5hYmxlLXhhdHRyLXN1cHBvcnQsLS1kaXNhYmxlLXhhdHRyLXN1cHBvcnQsYXR0ciwiCi0KLSMgQnkgZGVmYXVsdCwgaWYgY3Jvc3Njb21waWxpbmcsIHJzeW5jIGRpc2FibGVzIGEgbnVtYmVyIG9mCi0jIGNhcGFiaWxpdGllcywgaGFyZGxpbmtpbmcgc3ltbGlua3MgYW5kIHNwZWNpYWwgZmlsZXMgKGkuZS4gZGV2aWNlcykKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJyc3luY19jdl9jYW5faGFyZGxpbmtfc3BlY2lhbD15ZXMgcnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3N5bWxpbms9eWVzIgotCi0jIHJzeW5jIDMuMCB1c2VzIGNvbmZpZ3VyZS5zaCBpbnN0ZWFkIG9mIGNvbmZpZ3VyZSwgYW5kCi0jIG1ha2VmaWxlIGNoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyZS5zaAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCWNwIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhMDI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSByc3luYy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlLW5vLXJlYnVpbGQucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgorCisjIEdQTHYyKyAoPDwgMy4wLjApLCBHUEx2MysgKD49IDMuMC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wtc3VwcG9ydCwtLWRpc2FibGUtYWNsLXN1cHBvcnQsYWNsLCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS1lbmFibGUteGF0dHItc3VwcG9ydCwtLWRpc2FibGUteGF0dHItc3VwcG9ydCxhdHRyLCIKKworIyBCeSBkZWZhdWx0LCBpZiBjcm9zc2NvbXBpbGluZywgcnN5bmMgZGlzYWJsZXMgYSBudW1iZXIgb2YKKyMgY2FwYWJpbGl0aWVzLCBoYXJkbGlua2luZyBzeW1saW5rcyBhbmQgc3BlY2lhbCBmaWxlcyAoaS5lLiBkZXZpY2VzKQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInJzeW5jX2N2X2Nhbl9oYXJkbGlua19zcGVjaWFsPXllcyByc3luY19jdl9jYW5faGFyZGxpbmtfc3ltbGluaz15ZXMiCisKKyMgcnN5bmMgMy4wIHVzZXMgY29uZmlndXJlLnNoIGluc3RlYWQgb2YgY29uZmlndXJlLCBhbmQKKyMgbWFrZWZpbGUgY2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgY29uZmlndXJlLnNoCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJY3AgLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKaW5kZXggZDcxOTg5OC4uZmQzOTExYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMyArOCwxMyBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNEIHwgR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9OGE5NjBiMDhkOTcyZjQzZjkxYWU4NGE2ZjAwZGNiZmIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zNDA5NDhlMTg4MmU1Nzk3MzE4NDFiZjQ5Y2RjMjJjMSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9ZGFmMzQ5YWQ1OWRkMTliZDhjOTE5MTcxYmZmM2M1ZDYgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9OGY4NzFmM2YwMzczMmMwMThhNWZhOWIxODU5NTgyMzEgXAogIgogCi1ERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBkYiBnZGJtIHJlYWRsaW5lIgorREVQRU5EUyA9ICJydWJ5LW5hdGl2ZSB6bGliIG9wZW5zc2wgdGNsIGxpYnlhbWwgZ2RibSByZWFkbGluZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIGxpYnlhbWwtbmF0aXZlIgogCiBTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAppbmRleCBiMDExNGJhLi40Y2Y1NzlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaApAQCAtMTAsMTkgKzEwLDE2IEBACiAgTWFrZWZpbGUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3ZGEyNDg4Li41YjRhZWExIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzUsNyArNzUsNyBAQCBFWFRMSUJTID0KLSBMSUJTID0gQExJQlNAICQoRVhUTElCUykKK0luZGV4OiBydWJ5LTIuNS4wL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcnVieS0yLjUuMC5vcmlnL01ha2VmaWxlLmluCisrKysgcnVieS0yLjUuMC9NYWtlZmlsZS5pbgorQEAgLTc3LDcgKzc3LDcgQEAgTElCUyA9IEBMSUJTQCAkKEVYVExJQlMpCiAgTUlTU0lORyA9IEBMSUJPQkpTQCBAQUxMT0NBQAorIEVOQUJMRV9TSEFSRUQgPSBARU5BQkxFX1NIQVJFREAKICBMRFNIQVJFRCA9IEBMSUJSVUJZX0xEU0hBUkVEQAogLURMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAICQoWExERkxBR1MpICQoQVJDSF9GTEFHKQogK0RMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAIEBMREZMQUdTQCAkKFhMREZMQUdTKSAkKEFSQ0hfRkxBRykKICBTT0xJQlMgPSBAU09MSUJTQAorIEVOQUJMRV9ERUJVR19FTlYgPSBARU5BQkxFX0RFQlVHX0VOVkAKICBNQUlOTElCUyA9IEBNQUlOTElCU0AKLSBBUkNITUlOSU9CSlMgPSBATUlOSU9CSlNACi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKaW5kZXggYTViMjE4NC4uNDA0YjlhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKQEAgLTIsMTMgKzIsMTUgQEAKIGRpZmYgLXJ1IHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYiBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCiAtLS0gcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiCTIwMDktMTItMjQgMDM6MDE6NTguMDAwMDAwMDAwIC0wNjAwCiArKysgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgkyMDEwLTAyLTEyIDE1OjU1OjI3LjM3MDA2MTU1OCAtMDYwMAotQEAgLTM1NCw4ICszNTQsOCBAQAotICAgJHJ1YnkgPSAnJCh0b3BkaXIpL21pbmlydWJ5JyArIEVYRUVYVAorQEAgLTQxMyw4ICs0MTMsOCBAQCBkZWYgJG1mbGFncy5kZWZpbmVkPyh2YXIpCiAgZW5kCi0gJHJ1YnkgPDwgIiAtSSckKHRvcGRpciknIgotKyRydWJ5IDw8ICIgLUknJCh0b3Bfc3JjZGlyKS9saWInIgorICRydWJ5ID0gWyRydWJ5XQorICRydWJ5IDw8ICItSSckKHRvcGRpciknIgorKyRydWJ5IDw8ICItSSckKHRvcF9zcmNkaXIpL2xpYiciCiAgdW5sZXNzIENST1NTX0NPTVBJTElORwotLSAgJHJ1YnkgPDwgIiAtSSckKHRvcF9zcmNkaXIpL2xpYiciCi0gICAkcnVieSA8PCAiIC1JJyQoZXh0b3V0KS8kKGFyY2gpJyAtSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAotICAgJHJ1YnkgPDwgIiAtSS4vLSAtSSckKHRvcF9zcmNkaXIpL2V4dCcgLXJwdXJlbGliLnJiIgorLSAgJHJ1YnkgPDwgIi1JJyQodG9wX3NyY2RpcikvbGliJyIKKyAgICRydWJ5IDw8ICItSSckKGV4dG91dCkvJChhcmNoKSciIDw8ICItSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAogICAgRU5WWyJSVUJZTElCIl0gPSAiLSIKKyBlbmQKKy0tIAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhlNjkzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA4Zjc4MmZkOGUxODFkOWNmZTkzODdkZWQ0M2E1Y2E5NjkyMjY2Yjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmxvcmlhbiBGcmFuayA8ZmxvcmlAcGluZy5kZT4KLURhdGU6IFRodSwgMiBNYXIgMjAxNyAxMjoxMjozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGhlYXAgZXhwb3N1cmUgcHJvYmxlbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE0MDY0Ci0KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyB8IDEyICsrKysrKy0tLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8ICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotaW5kZXggZWY4NWJiNy4uYzg4ODE4YyAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi1AQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBjaGFyICpmc3RybmR1cChjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKSB7Ci0gICBjaGFyICpyZXN1bHQ7Ci0gICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOwotICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOwotLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKLSsgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWxmLCBWQUxVRSBpbmRlbnQpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKLS0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7Ci0rICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZV9iZWZvcmUpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKLS0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBvYmplY3RfbmwpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKLS0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGFycmF5X25sKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5hcnJheV9ubCkgcnVieV94ZnJlZShzdGF0ZS0+YXJyYXlfbmwpOwotLSAgICAgICAgc3RhdGUtPmFycmF5X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+YXJyYXlfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotaW5kZXggOTAwYjRkNS4uYzM2N2E2MiAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi1AQCAtMSw3ICsxLDYgQEAKLSAjaWZuZGVmIF9HRU5FUkFUT1JfSF8KLSAjZGVmaW5lIF9HRU5FUkFUT1JfSF8KLSAKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4MTM5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY5MDMxM2EwNjFmN2E0ZmE2MTRlYzVjYzgzNjhiNGYyMjg0ZTA1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSy5Lb3Nha28iIDxrb3Nha29Ac29mbmVjLmNvLmpwPgotRGF0ZTogVHVlLCAyMyBNYXkgMjAxNyAxMDoyODo1OCArMDkwMAotU3ViamVjdDogW1BBVENIXSBmaXggIzU3IDogREFUQV9FTlNVUkUoKSBjaGVjayBtdXN0IGJlIGJlZm9yZSBkYXRhIGFjY2VzcwotCi0tLS0KLSByZWdleGVjLmMgfCAgICA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNAotCi1Db250ZXh0IG1vZGlmaWVkIHNvIHRoYXQgcGF0Y2ggYXBwbGllcyBmb3IgdmVyc2lvbiAyLjQuMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggMzVmZWYxMS4uZDRlNTc3ZCAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMTQ3MywxNCArMTQ3Myw5IEBAIG1hdGNoX2F0KHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwKLSAgICAgICBORVhUOwotCi0gICAgIENBU0UoT1BfRVhBQ1QxKSAgTU9QX0lOKE9QX0VYQUNUMSk7Ci0tI2lmIDAKLSAgICAgICBEQVRBX0VOU1VSRSgxKTsKLSAgICAgICBpZiAoKnAgIT0gKnMpIGdvdG8gZmFpbDsKLSAgICAgICBwKys7IHMrKzsKLS0jZW5kaWYKLS0gICAgICBpZiAoKnAgIT0gKnMrKykgZ290byBmYWlsOwotLSAgICAgIERBVEFfRU5TVVJFKDApOwotLSAgICAgIHArKzsKLSAgICAgICBNT1BfT1VUOwotICAgICAgIGJyZWFrOwotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaAppbmRleCAwZjJhNDMwLi44OTQzN2JiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoCkBAIC0yMCwyMiArMjAsMTMgQEAKIAogLS0tIHJ1YnktMi40LjEub3JpZy9yZWdwYXJzZS5jCiArKysgcnVieS0yLjQuMS9yZWdwYXJzZS5jCi1AQCAtMzY0NCw3ICszNjQ0LDcgQEAgZmV0Y2hfdG9rZW4oT25pZ1Rva2VuKiB0b2ssIFVDaGFyKiogc3JjLAotICAgICAgIGlmIChJU19TWU5UQVhfT1Aoc3luLCBPTklHX1NZTl9PUF9FU0NfT0NUQUwzKSkgewotIAlwcmV2ID0gcDsKLSAJbnVtID0gc2Nhbl91bnNpZ25lZF9vY3RhbF9udW1iZXIoJnAsIGVuZCwgKGMgPT0gJzAnID8gMjozKSwgZW5jKTsKLS0JaWYgKG51bSA8IDApIHJldHVybiBPTklHRVJSX1RPT19CSUdfTlVNQkVSOwotKwlpZiAobnVtIDwgMCB8fCAweGZmIDwgbnVtKSByZXR1cm4gT05JR0VSUl9UT09fQklHX05VTUJFUjsKLSAJaWYgKHAgPT0gcHJldikgeyAgLyogY2FuJ3QgcmVhZCBub3RoaW5nLiAqLwotIAkgIG51bSA9IDA7IC8qIGJ1dCwgaXQncyBub3QgZXJyb3IgKi8KLSAJfQogQEAgLTQ0NTAsNiArNDQ1MCw5IEBAIG5leHRfc3RhdGVfdmFsKENDbGFzc05vZGUqIGNjLCBDQ2xhc3NOb2QKICAgIHN3aXRjaCAoKnN0YXRlKSB7CiAgICBjYXNlIENDU19WQUxVRToKICAgICAgaWYgKCp0eXBlID09IENDVl9TQikgewotKyAgICAgIGlmICgqdnMgPiAweGZmKQorKyAgICAgIGlmICgqZnJvbSA+IDB4ZmYpCiArICAgICAgICAgIHJldHVybiBPTklHRVJSX0lOVkFMSURfQ09ERV9QT0lOVF9WQUxVRTsKICsKLSAgICAgICBCSVRTRVRfU0VUX0JJVF9DSEtEVVAoY2MtPmJzLCAoaW50ICkoKnZzKSk7CisgICAgICAgQklUU0VUX1NFVF9CSVRfQ0hLRFVQKGNjLT5icywgKGludCApKCpmcm9tKSk7CiAgICAgICAgaWYgKElTX05PVF9OVUxMKGFzY19jYykpCi0gCUJJVFNFVF9TRVRfQklUKGFzY19jYy0+YnMsIChpbnQgKSgqdnMpKTsKKyAJQklUU0VUX1NFVF9CSVQoYXNjX2NjLT5icywgKGludCApKCpmcm9tKSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZTdjY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5NjkwZDNhYjFmOWJjZDJkYjhjYmUxZmUzZWU0YTVkYTYwNmI4ODE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIksuS29zYWtvIiA8a29zYWtvQHNvZm5lYy5jby5qcD4KLURhdGU6IFR1ZSwgMjMgTWF5IDIwMTcgMTY6MTU6MzUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4ICM1OCA6IGFjY2VzcyB0byBpbnZhbGlkIGFkZHJlc3MgYnkgcmVnLT5kbWluIHZhbHVlCi0KLS0tLQotIHJlZ2V4ZWMuYyB8ICAgIDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9yZWdleGVjLmMgYi9yZWdleGVjLmMKLWluZGV4IGQ0ZTU3N2QuLjJmYTBmM2QgMTAwNjQ0Ci0tLS0gYS9yZWdleGVjLmMKLSsrKyBiL3JlZ2V4ZWMuYwotQEAgLTMxNTQsNiArMzE1NCw4IEBAIGZvcndhcmRfc2VhcmNoX3JhbmdlKHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIqIHMsCi0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgVUNoYXIgKnEgPSBwICsgcmVnLT5kbWluOwotKwotKyAgICAgIGlmIChxID49IGVuZCkgcmV0dXJuIDA7IC8qIGZhaWwgKi8KLSAgICAgICB3aGlsZSAocCA8IHEpIHAgKz0gZW5jbGVuKHJlZy0+ZW5jLCBwLCBlbmQpOwotICAgICB9Ci0gICB9Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTc2NWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gYjY5MDM3MWJiZjk3Nzk0YjRhMWQzZjI5NWQ0ZmI5YThiMDVkNDAyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJLLktvc2FrbyIgPGtvc2Frb0Bzb2ZuZWMuY28uanA+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDEwOjI3OjA0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCAjNTkgOiBhY2Nlc3MgdG8gaW52YWxpZCBhZGRyZXNzIGJ5IHJlZy0+ZG1heCB2YWx1ZQotCi0tLS0KLSByZWdleGVjLmMgfCAgIDI3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05MjI5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggNDliY2M1MC4uYzA2MjZlZiAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMzc1NiwxOCArMzc1NiwyNSBAQCBmb3J3YXJkX3NlYXJjaF9yYW5nZShyZWdleF90KiByZWcsIGNvbnN0Ci0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgaWYgKHJlZy0+ZG1heCAhPSBPTklHX0lORklOSVRFX0RJU1RBTkNFKSB7Ci0tCSpsb3cgPSBwIC0gcmVnLT5kbWF4OwotLQlpZiAoKmxvdyA+IHMpIHsKLS0JICAqbG93ID0gb25pZ2VuY19nZXRfcmlnaHRfYWRqdXN0X2NoYXJfaGVhZF93aXRoX3ByZXYocmVnLT5lbmMsIHMsCi0tCQkJCQkJCSAgICAgICpsb3csIGVuZCwgKGNvbnN0IFVDaGFyKiogKWxvd19wcmV2KTsKLS0JICBpZiAobG93X3ByZXYgJiYgSVNfTlVMTCgqbG93X3ByZXYpKQotLQkgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0tCQkJCQkJICAgKHBwcmV2ID8gcHByZXYgOiBzKSwgKmxvdywgZW5kKTsKLSsgICAgICAgIGlmIChwIC0gc3RyIDwgcmVnLT5kbWF4KSB7Ci0rICAgICAgICAgICpsb3cgPSAoVUNoYXIqIClzdHI7Ci0rICAgICAgICAgIGlmIChsb3dfcHJldikKLSsgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywgc3RyLCAqbG93LCBlbmQpOwotIAl9Ci0gCWVsc2UgewotLQkgIGlmIChsb3dfcHJldikKLS0JICAgICpsb3dfcHJldiA9IG9uaWdlbmNfZ2V0X3ByZXZfY2hhcl9oZWFkKHJlZy0+ZW5jLAotLQkJCQkJICAgICAgIChwcHJldiA/IHBwcmV2IDogc3RyKSwgKmxvdywgZW5kKTsKLSsgICAgICAgICAgKmxvdyA9IHAgLSByZWctPmRtYXg7Ci0rICAgICAgICAgIGlmICgqbG93ID4gcykgewotKyAgICAgICAgICAgICpsb3cgPSBvbmlnZW5jX2dldF9yaWdodF9hZGp1c3RfY2hhcl9oZWFkX3dpdGhfcHJldihyZWctPmVuYywgcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxvdywgZW5kLCAoY29uc3QgVUNoYXIqKiApbG93X3ByZXYpOwotKyAgICAgICAgICAgIGlmIChsb3dfcHJldiAmJiBJU19OVUxMKCpsb3dfcHJldikpCi0rICAgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHJldiA/IHBwcmV2IDogcyksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgaWYgKGxvd19wcmV2KQotKyAgICAgICAgICAgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHByZXYgPyBwcHJldiA6IHN0ciksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSAJfQotICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMjdhYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODJiY2E1NjJlNDc0ZGQyNTk1NmRkMDAxN2Q5MjY3NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzMwZTEwZDVjYjVlNTNiM2EwMDc4MzI2YzU3MzE4ODhiYjU1ZTMyYzRhYmZlYjI3ZDllN2Y4ZTVkMDAwMjUwIgotCi0jIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgotIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCi0jIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbZ3BtXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICIsLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbywiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZGlzYWJsZS12ZXJzaW9uZWQtcGF0aHMgXAotICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgLS1kaXNhYmxlLWR0cmFjZSBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1sb2FkLXJlbGF0aXZlIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzdmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYgpAQCAtMCwwICsxLDQ5IEBACityZXF1aXJlIHJ1YnkuaW5jCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ3MTFmODU2ZmUxNGRlMjIyYjlkYTNkM2I4ZWZhODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDZlNmYzNjMwZjE4ODhlYjY1M2IxNWZhODExZDc3YjViMWRmNmZkN2EzYWY0MzZiMzQzY2ZlNGY0NTAzZjJhYiIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKaW5kZXggNTBjMGExYS4uMzA3ZmViNyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzCkBAIC00Myw3ICs0Myw3IEBACiAJZmkKIH0KIAotaWYgWyAteiAiJHBpX2RpciIgXTsgdGhlbgoraWYgISBbIC1kICRwaV9kaXIgXTsgdGhlbgogCXJlbW92ZV9yY3NkX2xpbmsKIAlleGl0IDAKIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIKaW5kZXggMzFjOThlYy4uODViM2ZjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHNfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzXzEuMC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiUnVucyBwb3N0aW5zdGFsbCBzY3JpcHRzIG9uIGZpcnN0IGJvb3Qgb2YgdGhlIHRhcmdldCBkZXZpY2UiCiBTRUNUSU9OID0gImRldmVsIgotUFIgPSAicjkiCitQUiA9ICJyMTAiCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2gKaW5kZXggZDU0NTE0Ni4uMGNlN2I0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9maXgtY29tcGF0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvZml4LWNvbXBhdC5wYXRjaApAQCAtMjMsNyArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvbWtzcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvbWtzcXVhc2hmcy5jCi1AQCAtMTI4Niw2ICsxMjg2LDEwIEBAIHZvaWQgd3JpdGVfZGlyKHNxdWFzaGZzX2lub2RlICppbm9kZSwgc3QKK0BAIC0xMjYxLDYgKzEyNjEsMTAgQEAgdm9pZCB3cml0ZV9kaXIoc3F1YXNoZnNfaW5vZGUgKmlub2RlLCBzdAogIAkJZGlyX3NpemUgKyAzLCBkaXJlY3RvcnlfYmxvY2ssIGRpcmVjdG9yeV9vZmZzZXQsIE5VTEwsIE5VTEwsCiAgCQlkaXIsIDApOwogIApAQCAtNTAsOSArNTAsOSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvdW5zcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvdW5zcXVhc2hmcy5jCi1AQCAtMzgsNiArMzgsMTAgQEAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+CitAQCAtNDIsNiArNDIsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNlbmRpZgogIAogKyNpZm5kZWYgRk5NX0VYVE1BVENICiArI2RlZmluZSBGTk1fRVhUTUFUQ0ggMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgppbmRleCAwZjk5MTcwLi5hOGJhY2E1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBhdC5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ19VUklbbHptYS5tZDVzdW1dID0gIjI5ZDVmZmQwM2E1YTNlNTFhZWY2YTc0ZTllYWZiNzU5IgogU1JDX1VSSVtsem1hLnNoYTI1NnN1bV0gPSAiYzkzNWZkMDRkZDhlMGU4YzY4OGEzMDc4ZjM2NzVkNjk5Njc5YTkwYmU4MWMxMjY4NjgzN2UwODgwYWEwZmExZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCmluZGV4IDk3YmNjOTAuLmExMmY0YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTE0LDIzICsxNCwyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2MWQ2NDI1Li42Mzg3YzI0IDEwMDY0NAoraW5kZXggNWYwYWVjNC4uOGVhYWNjNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDEsNyArNDEsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoQykgMTk5OS1dY29weXJpZ2h0X3llYXJbIFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQorQEAgLTQyLDcgKzQyLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKGMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKICBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCiAgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQogIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFNX0VYVFJBX1JFQ1VSU0lWRV9UQVJHRVRTKFtjaGVjay12YWxncmluZF0pCistQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0cyAxLjEzXSkKKytBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyAxLjEzXSkKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAorIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDVhYTdmODkuLmE1NWEzNTUgMTAwNjQ0CitpbmRleCBiNGJhMjJhLi41ODM2NDM4IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzc5LDMgKzM3OSwyMSBAQCBjbGVhbi1sb2NhbC1jaGVjazoKK0BAIC00MDgsMyArNDA4LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKICBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCkBAIC01Miw2ICs1MiwzIEBACiArCQlzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCiArCWZvciBpIGluIG5ldCBzY21fcmlnaHRzLWZkIHJ0X3NpZ2FjdGlvbjsgZG8gc2VkIC1pIC1lICdzLyQkc3JjZGlyLy4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkaS50ZXN0OyBkb25lCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjI4OTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjEzMmI0ZDJhZGZjY2M2M2RhNDEzOWE2MDkzNjc3MTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3N0cmFjZS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNTc5YjMyNjZiYjA5NmNlYmFlZmJlMmNkYjFhM2E3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWFkODg3YzFlNjIyNmJkYmNhOGRhMzFkNTg5Y2FkZWE0YmUwNzQ0YjE0MmViNDdiNzY4MDg2YzkzN2ZjYTA4IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAotCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCi0JJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjljMTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMTMyYjRkMmFkZmNjYzYzZGE0MTM5YTYwOTM2NzcxMSIKKworU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjI3MWFiMGZhYzQ5ZWJlZTljYmQ3ZjM0NjkyMjdjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmYzMTQ4ZGQxNzMwNmE0MjU2NmY3ZGExNzM2OGZkZDc4MWFmYTE0N2RiMDVlYTYzYTRjYTJiNTBmNThjNTIzIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKKworVEVTVERJUiA9ICJ0ZXN0cyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAorCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL0NWRS0yMDE3LTk4MDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1OTljMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXIxODA0NjkxIHwgZGFuaWVsc2ggfCAyMDE3LTA4LTEwIDExOjE0OjEzIC0wNzAwIChUaHUsIDEwIEF1ZyAyMDE3KSB8IDE4IGxpbmVzCi0KLUZpeCBDVkUtMjAxNy05ODAwLgotCi1TZWU6IGh0dHBzOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3NlY3VyaXR5L0NWRS0yMDE3LTA4MDAtYWR2aXNvcnkudHh0Ci0KLSogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCi0gIChzdm5fY3R5cGUuaCk6IEluY2x1ZGUuCi0gIChmaW5kX3R1bm5lbF9hZ2VudCk6IFBhc3MgYSAiLS0iIGVuZC1vZi1vcHRpb25zIGd1YXJkIHRvIHNzaC4KLSAgICBFeHBlY3QgdGhlICdob3N0aW5mbycgcGFyYW1ldGVyIHRvIGJlIFVSSS1kZWNvZGVkLgotICAoaXNfdmFsaWRfaG9zdGluZm8pOiBOZXcuCi0gIChyYV9zdm5fb3Blbik6IFZhbGlkYXRlIHRoZSBob3N0bmFtZSBiZWZvcmUgdXNpbmcgaXQuCi0KLSogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCi0gIChzdm5fY29uZmlnX2Vuc3VyZSk6IFVwZGF0ZSB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGxpa2V3aXNlLgotCi1QYXRjaCBieTogcGhpbGlwCi1SZXZpZXcgYnk6IGRhbmllbHNoCi0gICAgICAgICAgIHN0c3AKLSAgICAgICAgICAgYXN0aWVnZXIgKGVhcmxpZXIgdmVyc2lvbikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yz92aWV3PXJldmlzaW9uJmFtcDtzb3J0Ynk9cmV2JmFtcDtyZXZpc2lvbj0xODA0NjkxCi0KLUNWRTogQ1ZFLTIwMTctOTgwMAotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtMTQ0OCwxMiArMTQ0OCwxMiBAQAotICAgICAgICAgIiMjIyBwYXNzZWQgdG8gdGhlIHR1bm5lbCBhZ2VudCBhcyA8dXNlcj5APGhvc3RuYW1lPi4pICBJZiB0aGUiICAgICAgTkwKLSAgICAgICAgICIjIyMgYnVpbHQtaW4gc3NoIHNjaGVtZSB3ZXJlIG5vdCBwcmVkZWZpbmVkLCBpdCBjb3VsZCBiZSBkZWZpbmVkIiAgIE5MCi0gICAgICAgICAiIyMjIGFzOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotLSAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSsgICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0gICAgICAgICAiIyMjIElmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGEgbmV3ICdyc2gnIHNjaGVtZSwgdG8gYmUgdXNlZCB3aXRoIiAgICBOTAotICAgICAgICAgIiMjIyAnc3ZuK3JzaDonIFVSTHMsIHlvdSBjb3VsZCBkbyBzbyBhcyBmb2xsb3dzOiIgICAgICAgICAgICAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IHJzaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSByc2ggLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPciwgaWYgeW91IHdhbnRlZCB0byBzcGVjaWZ5IGEgZnVsbCBwYXRoIGFuZCBhcmd1bWVudHM6IiAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPbiBXaW5kb3dzLCBpZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSBmdWxsIHBhdGggdG8gYSBjb21tYW5kLCIgICAgTkwKLSAgICAgICAgICIjIyMgdXNlIGEgZm9yd2FyZCBzbGFzaCAoLykgb3IgYSBwYWlyZWQgYmFja3NsYXNoIChcXFxcKSBhcyB0aGUiICAgIE5MCi0gICAgICAgICAiIyMjIHBhdGggc2VwYXJhdG9yLiAgQSBzaW5nbGUgYmFja3NsYXNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhbiIgICAgICBOTAotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlICJzdm5fcHJvcHMuaCIKLSAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgotICNpbmNsdWRlICJzdm5fdmVyc2lvbi5oIgotKyNpbmNsdWRlICJzdm5fY3R5cGUuaCIKLSAKLSAjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCi0gCi1AQCAtMzk4LDcgKzM5OSw3IEBACi0gICAgICAgICogdmVyc2lvbnMgaGF2ZSBpdCB0b28uIElmIHRoZSB1c2VyIGlzIHVzaW5nIHNvbWUgb3RoZXIgc3NoCi0gICAgICAgICogaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGFjY2VwdCBpdCwgdGhleSBjYW4gb3ZlcnJpZGUgaXQKLSAgICAgICAgKiBpbiB0aGUgW3R1bm5lbHNdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy4gKi8KLS0gICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIjsKLSsgICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIC0tIjsKLSAgICAgfQotIAotICAgaWYgKCF2YWwgfHwgISp2YWwpCi1AQCAtNDQzLDcgKzQ0NCw3IEBACi0gICBmb3IgKG4gPSAwOyBjbWRfYXJndltuXSAhPSBOVUxMOyBuKyspCi0gICAgIGFyZ3Zbbl0gPSBjbWRfYXJndltuXTsKLSAKLS0gIGFyZ3ZbbisrXSA9IHN2bl9wYXRoX3VyaV9kZWNvZGUoaG9zdGluZm8sIHBvb2wpOwotKyAgYXJndltuKytdID0gaG9zdGluZm87Ci0gICBhcmd2W24rK10gPSAic3Zuc2VydmUiOwotICAgYXJndltuKytdID0gIi10IjsKLSAgIGFyZ3Zbbl0gPSBOVUxMOwotQEAgLTgxMSw3ICs4MTIsMzMgQEAKLSB9Ci0gCi0gCi0rLyogQSBzaW1wbGUgd2hpdGVsaXN0IHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDoKLSsgKiAgIHVzZXJAc2VydmVyCi0rICogICBbOjoxXToyMgotKyAqICAgc2VydmVyLW5hbWUKLSsgKiAgIHNlcnZlcl9uYW1lCi0rICogICAxMjcuMC4wLjEKLSsgKiB3aXRoIGFuIGV4dHJhIHJlc3RyaWN0aW9uIHRoYXQgYSBsZWFkaW5nICctJyBpcyBpbnZhbGlkLgotKyAqLwotK3N0YXRpYyBzdm5fYm9vbGVhbl90Ci0raXNfdmFsaWRfaG9zdGluZm8oY29uc3QgY2hhciAqaG9zdGluZm8pCi0rewotKyAgY29uc3QgY2hhciAqcCA9IGhvc3RpbmZvOwotIAotKyAgaWYgKHBbMF0gPT0gJy0nKQotKyAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICB3aGlsZSAoKnApCi0rICAgIHsKLSsgICAgICBpZiAoIXN2bl9jdHlwZV9pc2FsbnVtKCpwKSAmJiAhc3RyY2hyKCI6Li1fW11AIiwgKnApKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKwotKyAgICAgICsrcDsKLSsgICAgfQotKwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotIHN0YXRpYyBzdm5fZXJyb3JfdCAqcmFfc3ZuX29wZW4oc3ZuX3JhX3Nlc3Npb25fdCAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipjb3JyZWN0ZWRfdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLAotQEAgLTg0NCw4ICs4NzEsMTggQEAKLSAgICAgICAgICAgfHwgKGNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMgJiYgY2FsbGJhY2tzLT5vcGVuX3R1bm5lbF9mdW5jCi0gICAgICAgICAgICAgICAmJiAhY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyhjYWxsYmFja3MtPnR1bm5lbF9iYXRvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbCkpKSkKLS0gICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIHVyaS5ob3N0aW5mbywgJnR1bm5lbF9hcmd2LCBjb25maWcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3Bvb2wpKTsKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmRlY29kZWRfaG9zdGluZm87Ci0rCi0rICAgICAgZGVjb2RlZF9ob3N0aW5mbyA9IHN2bl9wYXRoX3VyaV9kZWNvZGUodXJpLmhvc3RpbmZvLCByZXN1bHRfcG9vbCk7Ci0rCi0rICAgICAgaWYgKCFpc192YWxpZF9ob3N0aW5mbyhkZWNvZGVkX2hvc3RpbmZvKSkKLSsgICAgICAgIHJldHVybiBzdm5fZXJyb3JfY3JlYXRlZihTVk5fRVJSX0JBRF9VUkwsIE5VTEwsIF8oIkludmFsaWQgaG9zdCAnJXMnIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLmhvc3RpbmZvKTsKLSsKLSsgICAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgZGVjb2RlZF9ob3N0aW5mbywgJnR1bm5lbF9hcmd2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLCByZXN1bHRfcG9vbCkpOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHR1bm5lbF9hcmd2ID0gTlVMTDsKLSAKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJlZGViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmYubTQtUmVnZXgtbW9kaWZpZWQtdG8tYWxsb3ctRC1pbi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODAwLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYyN2UwMDMzOGQ0YTlmN2Y5YWVjOWQ0YTNmOGI0MThiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiY2JjNTFmYjYzNDA4MmYwMDkxMjFmMmNiNjQzNTBjZTMyMTQ2NjEyNzg3ZmZiMGY3Y2VkMzUxYWFjYWFlMTkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgotCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzM1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZworCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDViMGM2Nzc2ODEwNzM5MjBmOTM4YzFmMzIyZTBiZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNiMTE4MzMzY2UxMmU1MDFkNTA5ZTY2YmIwYTQ3YmNjMzRkMDUzOTkwYWNhYjQ1NTU5NDMxYWMzZTQ5MTYyMyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2V4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCitDUFBGTEFHUyArPSAiLVAiCitCVUlMRF9DUFBGTEFHUyArPSAiLVAiCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2xpYnRvb2wKKwlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKKwlybSAtZiAke1N9L2FjbG9jYWwubTQKKwlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKK30KKworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0CisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCisjfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYwppbmRleCA4Y2I2ZmJkLi5iZjYxYjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jCkBAIC0xMSw3ICsxMSw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgogCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLXdpdGgtcHl0aG9uMz0ke1BZVEhPTn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NWMzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwzMzAgQEAKK0Zyb20gMWE1YWFkY2Q2NmU4NWM2M2QyMjhiZmQ4MTFhNTIxZDYxN2MyMmEzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdHJpY2sgU2NobmVpZGVyIDxwYXRyaWNrLnNjaG5laWRlckBtZWV0bm93LmV1PgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNTowMjo1MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgTm9kZSA3LnggYWthIFY4IDUuMisgc3VwcG9ydAorCisqIFVzZSBXZWFrQ2FsbGJhY2tJbmZvIGluc3RlYWQgb2YgV2Vha0NhbGxiYWNrRGF0YQorKiBVc2UgR2V0UHJpdmF0ZSBpbnN0ZWFkIG9mIEdldEhpZGRlblZhbHVlCisqIEFkb3B0ZWQgbmV3IHNpZ25hdHVyZSBmb3IgU2V0V2VhayB0byBzdXBwb3J0IGRlc3RydWN0b3IgY2FsbGluZworKiBTZXRBY2Nlc3NvciBkZXByZWNhdGlvbiBmaXhlZAorKiBQcm9wZXIgdmVyc2lvbiBjaGVja3Mgd2hlcmUgYXBwbGljYWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N3aWcvc3dpZy9wdWxsLzk2OF0KKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CistLS0KKyBMaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgICAgfCAyNyArKysrKysrKysrKysrKysrKy0tLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnIHwgMjkgKysrKysrKysrKysrKysrKysrKysrLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnICAgIHwgMTYgKysrKysrKysrKystLQorIExpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKK2luZGV4IGZiN2Q1NWMuLmI4YzUwODkgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKKysrKyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZworQEAgLTEzMywxMCArMTMzLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IGRhdGEuR2V0VmFsdWUoKTsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrICBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKysgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgaWYocHJveHktPnN3aWdDTWVtT3duICYmIHByb3h5LT5zd2lnQ09iamVjdCkgeworQEAgLTE0Nyw3ICsxNTAsOSBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgfQorICAgZGVsZXRlIHByb3h5OworIAorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworKyNlbmRpZgorICAgCisgI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgMHgwMzE3MTApCisgICBvYmplY3QuRGlzcG9zZSgpOworQEAgLTE1NSw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgb2JqZWN0LkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMjEwMCkKKyAgIG9iamVjdC0+RGlzcG9zZShpc29sYXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CisgI2VuZGlmCisgfQorQEAgLTE3NywxMCArMTgyLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6T2JqZWN0PiAqb2JqZWN0LCBTV0lHVjhfUHJveHkgKnByb3h5KSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSBkYXRhLkdldFZhbHVlKCk7CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gZGF0YS5HZXRQYXJhbWV0ZXIoKTsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBpZihwcm94eS0+c3dpZ0NNZW1Pd24gJiYgcHJveHktPnN3aWdDT2JqZWN0KSB7CitAQCAtMTk3LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICBvYmplY3QtPkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworICNlbmRpZgorIH0KK0BAIC0yMTEsNyArMjE5LDExIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAlZnJhZ21lbnQoImpzX2dldHRlciIsICJ0ZW1wbGF0ZXMiKQorICV7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm8gJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6TmFtZT4gcHJvcGVydHksIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvICZpbmZvKSB7CisrI2VuZGlmCisgICBTV0lHVjhfSEFORExFU0NPUEUoKTsKKyAgIAorICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzcmVzdWx0OworQEAgLTIzMyw4ICsyNDUsMTEgQEAgZmFpbDoKKyAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICVmcmFnbWVudCgianNfc2V0dGVyIiwgInRlbXBsYXRlcyIpCisgJXsKKy1zdGF0aWMgdm9pZCAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisrc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCAmaW5mbykgeworKyNlbmRpZgorICAgU1dJR1Y4X0hBTkRMRVNDT1BFKCk7CisgICAKKyAgICRqc2xvY2FscworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworaW5kZXggMDkxNDY3ZC4uNzQ2MTA3OSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnCitAQCAtNiwxMSArNiwxNiBAQCB0eXBlZGVmIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgIFN3aWdWOEZ1bmN0aW9uQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JHZXR0ZXIgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyICAgICAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyB0eXBlZGVmIHY4OjpBY2Nlc3NvckluZm8gICAgICAgIFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZDsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHR5cGVkZWYgdjg6OkZ1bmN0aW9uQ2FsbGJhY2sgICAgICAgICAgICBTd2lnVjhGdW5jdGlvbkNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yR2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHZvaWQ+ICBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQ7CisrI2Vsc2UKKyt0eXBlZGVmIHY4OjpGdW5jdGlvbkNhbGxiYWNrICAgICAgICAgICAgU3dpZ1Y4RnVuY3Rpb25DYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVHZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JHZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVTZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpQcm9wZXJ0eUNhbGxiYWNrSW5mbzx2b2lkPiAgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkOworICNlbmRpZgorIAorIC8qKgorQEAgLTY1LDE4ICs3MCwzNiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9BZGRTdGF0aWNGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiwgY29uc3QgY2hhcgorICAqLworIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X0FkZFN0YXRpY1ZhcmlhYmxlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqLCBjb25zdCBjaGFyKiBzeW1ib2wsCisgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrIGdldHRlciwgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjayBzZXR0ZXIpIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEFjY2Vzc29yKFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZWxzZQorKyAgb2JqLT5TZXRBY2Nlc3NvcihTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCksIFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZW5kaWYKKyB9CisgCistU1dJR1JVTlRJTUUgdm9pZCBKU192ZXRvX3NldF92YXJpYWJsZSh2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkJiBpbmZvKQorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKytTV0lHUlVOVElNRSB2b2lkIEpTX3ZldG9fc2V0X3ZhcmlhYmxlKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZWxzZQorK1NXSUdSVU5USU1FIHZvaWQgSlNfdmV0b19zZXRfdmFyaWFibGUodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZW5kaWYKKyB7CisgICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgIGNoYXIgbXNnWzUxMl07CisgICAgIGludCByZXM7CisgCisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgICBwcm9wZXJ0eS0+V3JpdGVVdGY4KGJ1ZmZlciwgMjU2KTsKKyAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrI2Vsc2UKKysgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNwcm9wZXJ0eTsKKysgICAgaWYgKHByb3BlcnR5LT5Ub1N0cmluZyhTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCkpLlRvTG9jYWwoJnNwcm9wZXJ0eSkpIHsKKysgICAgICBzcHJvcGVydHktPldyaXRlVXRmOChidWZmZXIsIDI1Nik7CisrICAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgcmVzID0gLTE7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgaWYocmVzPDApIHsKKyAgICAgICBTV0lHX2V4Y2VwdGlvbihTV0lHX0VSUk9SLCAiVHJpZWQgdG8gd3JpdGUgcmVhZC1vbmx5IHZhcmlhYmxlLiIpOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworaW5kZXggMzRiZWZhNy4uODYwMDhkOSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnCitAQCAtNywxNSArNywyNyBAQCBTV0lHX1Y4X1NldE1vZHVsZSh2b2lkICosIHN3aWdfbW9kdWxlX2luZm8gKnN3aWdfbW9kdWxlKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisgICB2ODo6TG9jYWw8djg6OkV4dGVybmFsPiBtb2QgPSBTV0lHVjhfRVhURVJOQUxfTkVXKHN3aWdfbW9kdWxlKTsKKyAgIGFzc2VydCghbW9kLklzRW1wdHkoKSk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgZ2xvYmFsX29iai0+U2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpLCBtb2QpOworKyNlbHNlCisrICB2ODo6TG9jYWw8djg6OlByaXZhdGU+IHByaXZhdGVLZXkgPSB2ODo6UHJpdmF0ZTo6Rm9yQXBpKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrICBnbG9iYWxfb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgbW9kKTsKKysjZW5kaWYKKyB9CisgCisgU1dJR1JVTlRJTUUgc3dpZ19tb2R1bGVfaW5mbyAqCisgU1dJR19WOF9HZXRNb2R1bGUodm9pZCAqKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbW9kdWxlaW5mbyA9IGdsb2JhbF9vYmotPkdldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrI2Vsc2UKKysgIHY4OjpMb2NhbDx2ODo6UHJpdmF0ZT4gcHJpdmF0ZUtleSA9IHY4OjpQcml2YXRlOjpGb3JBcGkodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpKTsKKysgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1vZHVsZWluZm87CisrICBpZiAoIWdsb2JhbF9vYmotPkdldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5KS5Ub0xvY2FsKCZtb2R1bGVpbmZvKSkKKysgICAgcmV0dXJuIDA7CisrI2VuZGlmCisgCistICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkgfHwgbW9kdWxlaW5mby0+SXNOdWxsKCkgfHwgbW9kdWxlaW5mby0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gSXQncyBub3QgeWV0IGxvYWRlZAorICAgICByZXR1cm4gMDsKK0BAIC0yMyw3ICszNSw3IEBAIFNXSUdfVjhfR2V0TW9kdWxlKHZvaWQgKikgeworIAorICAgdjg6OkxvY2FsPHY4OjpFeHRlcm5hbD4gbW9kdWxlaW5mb19leHRlcm4gPSB2ODo6TG9jYWw8djg6OkV4dGVybmFsPjo6Q2FzdChtb2R1bGVpbmZvKTsKKyAKKy0gIGlmIChtb2R1bGVpbmZvX2V4dGVybi5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mb19leHRlcm4uSXNFbXB0eSgpIHx8IG1vZHVsZWluZm9fZXh0ZXJuLT5Jc051bGwoKSB8fCBtb2R1bGVpbmZvX2V4dGVybi0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0CisgICAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK2luZGV4IDVhYzUyYTUuLjMwMDAyYzAgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0cnVuLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK0BAIC0xOTMsOCArMTkzLDEwIEBAIHB1YmxpYzoKKyAgIHZvaWQgKCpkdG9yKSAodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCAqcGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgICB2b2lkICgqZHRvcikgKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpOworKyNlbHNlCisrICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpOworICNlbmRpZgorIH07CisgCitAQCAtMjQxLDkgKzI0MywxMiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6OlZhbAorICAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IHN0YXRpY19jYXN0PFNXSUdWOF9Qcm94eSAqPihwYXJhbWV0ZXIpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfUHJveHlfRGVmYXVsdER0b3IoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBkZWxldGUgcHJveHk7CitAQCAtMzEyLDEyICszMTcsMTggQEAgU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfU2V0UHJpdmF0ZURhdGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmosIHZvaWQgKnB0ciwgc3cKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcik7CisgICB9CistI2Vsc2UKKysjZWxpZmlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworICAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yKTsKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKTsKKyAgIH0KKysjZWxzZQorKyAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yLCB2ODo6V2Vha0NhbGxiYWNrVHlwZTo6a1BhcmFtZXRlcik7CisrICB9IGVsc2UgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvciwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworKyAgfQorICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorQEAgLTQ3MCw3ICs0ODEsMTQgQEAgaW50IFN3aWdWOFBhY2tlZF9DaGVjayh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsUmVmKSB7CisgICAKKyAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqUmVmID0gdmFsUmVmLT5Ub09iamVjdCgpOworICAgaWYob2JqUmVmLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA8IDEpIHJldHVybiBmYWxzZTsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxhZyA9IG9ialJlZi0+R2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoIl9fc3dpZ19fcGFja2VkX2RhdGFfXyIpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZmxhZzsKKysgIGlmICghb2JqUmVmLT5HZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSkuVG9Mb2NhbCgmZmxhZykpCisrICAgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyAgIHJldHVybiAoZmxhZy0+SXNCb29sZWFuKCkgJiYgZmxhZy0+Qm9vbGVhblZhbHVlKCkpOworIH0KKyAKK0BAIC01MTksMTAgKzUzNywxMyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdAorICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBzdGF0aWNfY2FzdDxTd2lnVjhQYWNrZWREYXRhICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFN3aWdWOFBhY2tlZERhdGEgKmNkYXRhKSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFN3aWdWOFBhY2tlZERhdGE+ICZkYXRhKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gZGF0YS5HZXRWYWx1ZSgpOworICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZShjb25zdCB2ODo6V2Vha0NhbGxiYWNrSW5mbzxTd2lnVjhQYWNrZWREYXRhPiAmZGF0YSkgeworKyAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgZGVsZXRlIGNkYXRhOworQEAgLTUzNyw3ICs1NTgsNyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYgorICAgb2JqZWN0LT5EaXNwb3NlKGlzb2xhdGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIG9iamVjdC0+RGlzcG9zZSgpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmplY3QuQ2xlYXIoKTsKKyAjZW5kaWYKKyB9CitAQCAtNTUwLDcgKzU3MSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorIC8vICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiA9IFNXSUdWOF9PQkpFQ1RfTkVXKCk7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqID0gU1dJR1Y4X09CSkVDVF9ORVcoKTsKKyAKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJfX3N3aWdfX3BhY2tlZF9kYXRhX18iKSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZW5kaWYKKyAKKyAjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMTUxMSkKKyAgIG9iai0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZCgwLCBjZGF0YSk7CitAQCAtNTczLDkgKzU5OSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorICAgY2RhdGEtPmhhbmRsZS5NYWtlV2Vhayh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBjZGF0YSwgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSk7CisgLy8gIHY4OjpWODo6U2V0V2VhaygmY2RhdGEtPmhhbmRsZSwgY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKysjZWxzZQorKyAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorLS0gCisyLjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKaW5kZXggZDVjYWE2Ny4uMTVmNzM0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgpAQCAtMiw2ICsyLDcgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVXNlLXByb2Mtc2VsZi1leGUtZm9yLXN3aWctc3dpZ2xpYi1vbi1ub24tV2luMzItcGxhdC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiODIxMzNkZmE3YmJhNzVmZjlhZDk4YTcwNDZiZTY4N2MiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NmOWY0NDdhZTdlZDFjNTE3MjJlZmM0NWU3ZjE0NDE4ZDE1ZDdhMWUxNDNhYzlmMDlhNjY4OTk5ZjRmYzk0ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4L3N5c2xpbnV4LWxpYnVwbG9hZC1kZXBlbmQtbGliLnBhdGNoCmluZGV4IGMwNzE0YjUuLjZiYTk2YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eC9zeXNsaW51eC1saWJ1cGxvYWQtZGVwZW5kLWxpYi5wYXRjaApAQCAtMjAsMTUgKzIwLDEyIEBACiAgY29tMzIvTWFrZWZpbGUgfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL2NvbTMyL01ha2VmaWxlIGIvY29tMzIvTWFrZWZpbGUKLWluZGV4IDlhMTcyMWIuLmYxNzJkYjIgMTAwNjQ0Ci0tLS0gYS9jb20zMi9NYWtlZmlsZQotKysrIGIvY29tMzIvTWFrZWZpbGUKLUBAIC0yMSwzICsyMSw0IEBAIHJvc2g6IGxpYiBsaWJ1dGlsCi0gc2FtcGxlczogbGlidXRpbCBlbGZsaW5rL2xkbGludXgKLSBzeXNkdW1wOiBsaWJ1cGxvYWQgZ3BsbGliCitJbmRleDogc3lzbGludXgtNi4wMy9jb20zMi9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2xpbnV4LTYuMDMub3JpZy9jb20zMi9NYWtlZmlsZQorKysrIHN5c2xpbnV4LTYuMDMvY29tMzIvTWFrZWZpbGUKK0BAIC0yMiwzICsyMiw0IEBAIHNhbXBsZXM6IGxpYnV0aWwgZWxmbGluay9sZGxpbnV4Cisgc3lzZHVtcDogbGliIGxpYnV0aWwgbGlidXBsb2FkIGdwbGxpYgorIGx1YS9zcmM6IGNtZW51IG1vZHVsZXMKICBncGxsaWI6IGxpYgogK2xpYnVwbG9hZDogbGliCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYTA0NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZDM3OTEyNmQ1NmQwYjZlOTM1YjJkOTdjYTcxNTc5ZTZjYzU0ZDFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDEzOjM3OjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhcnNlLXV0aWw6IERvbid0IHVzZSB4bG9jYWxlLmgKLQotZ2xpYmMgMi4yNiBubyBsb25nZXIgY29udGFpbnMgdGhlIG5vbi1zdGFuZGFyZCB4bG9jYWxlLmgKLShodHRwOi8vc291cmNld2FyZS5vcmcvZ2xpYmMvd2lraS9SZWxlYXNlLzIuMjYjUmVtb3ZhbF9vZl8uMjd4bG9jYWxlLmguMjcpCi0KLVRoaXMgY2hhbmdlIHNob3VsZG4ndCBicmVhayBhbnl0aGluZyBhcyB4bG9jYWxlLmggd2FzIGEgc3Vic2V0IG9mCi1sb2NhbGUuaC4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC9wdWxsLzM1XQotLS0tCi0gc3JjL3BhcnNlLXV0aWwuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcGFyc2UtdXRpbC5jIGIvc3JjL3BhcnNlLXV0aWwuYwotaW5kZXggNTYzNWE2OC4uMWIyMTY5YyAxMDA2NDQKLS0tLSBhL3NyYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9wYXJzZS11dGlsLmMKLUBAIC0yMSw3ICsyMSw2IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHhsb2NhbGUuaD4KLSAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzkyY2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0NWI0MDFhOTQ3YWY5NDRjMjBiM2M0NTFhMzVkZmU1M2JjYTVlZjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDI4IERlYyAyMDE3IDIxOjI0OjU3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCisgZnVuY3Rpb24gcG9pbnRlcgorCitNYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKKworUmV1c2UgdGhlIGFwcHJvYWNoIGZyb20gc3lzdGVtZDoKK3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCisKK0Jhc2VkIG9uIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC5oIGIvc3JjL3V0aWwuaAoraW5kZXggNTYxZjllNy4uZTljZmQ4MSAxMDA2NDQKKy0tLSBhL3NyYy91dGlsLmgKKysrKyBiL3NyYy91dGlsLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiBjaGFyICoqc2F2ZWRfYXJndjsKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2MjcyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKQEAgLTAsMCArMSw0MjMgQEAKK0Zyb20gNmY5NDU0MTg0YTAyMzEwODAyYjFlZDNlNDAyODc5NThiNTI0YTQ5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyOCBEZWMgMjAxNyAyMTozOTo1MSAtMDgwMAorU3ViamVjdDogW1BBVENIIDIvM10gbXVzbCBkb2VzIG5vdCBwcm92aWRlIHByaW50Zi5oCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKworT3JpZ2luYWwgcGF0Y2ggYXV0aG9yOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0luY2x1ZGVzIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCAgIDQgKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgIDMgKworIHNyYy9sb2cuYyAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrKworIHNyYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5YmJjOGZhLi5iODg3ZDE2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTY5LDYgKzE2OSwxMCBAQCBsaWJ1dGlsc19sYV9TT1VSQ0VTID0gXAorIAlzcmMvdXRpbC5jIFwKKyAJc3JjL3V0aWwuaAorIAorK2lmICFIQVZFX1BSSU5URl9IIAorK2xpYnV0aWxzX2xhX1NPVVJDRVMgKz0gc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworK2VuZGlmCisrCisgbGlidXRpbHNfbGFfQ0ZMQUdTID0gXAorIAkkKEFNX0NGTEFHUykgXAorIAkkKExJQlNZU1RFTURfQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggN2Y3NGJhYy4uMDYyZTMxMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzMsNiArNzMsOSBAQCBBU19JRihbdGVzdCAieCR3aXRoX2xpYnN5c3RlbWQiICE9IHhub10sCisgICAgICAgICApXQorICkKKyAKKytBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKKytBTV9DT05ESVRJT05BTChIQVZFX1BSSU5URl9ILCBbdGVzdCAieCRhY19jdl9oZWFkZXJfcHJpbnRfaCIgPSB4eWVzXSkKKysKKyBDQ19DSEVDS19GTEFHU19BUFBFTkQoW3dpdGhfY2ZsYWdzXSwgW0NGTEFHU10sIFtcCisgICAgICAgICAtcGlwZSBcCisgICAgICAgICAtV2FsbCBcCitkaWZmIC0tZ2l0IGEvc3JjL2xvZy5jIGIvc3JjL2xvZy5jCitpbmRleCAxNWRlYzgzLi5hZWNmMjMxIDEwMDY0NAorLS0tIGEvc3JjL2xvZy5jCisrKysgYi9zcmMvbG9nLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy91aW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAjaW5jbHVkZSAic2QtbWVzc2FnZXMuaCIKKyAKKyAjaW5jbHVkZSAiZmQtdXRpbC5oIgorZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDk0MzdlNQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQzNzExNzcKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWZkZWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvc3RkaW8tdXRpbC5oIGIvc3JjL3N0ZGlvLXV0aWwuaAoraW5kZXggMGE2NzU1Ny4uMjFjYzUxNSAxMDA2NDQKKy0tLSBhL3NyYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9zdGRpby11dGlsLmgKK0BAIC0xOSw3ICsxOSw2IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY3MGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMy1tdXNsLWRvZXMtbm90LXByb3ZpZGUtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDc5Mzk2NDQ5ZDI2NGJkZTU4YjRkYWEzZWY2ZGQ5OWYwZjA2NTI0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMjggRGVjIDIwMTcgMjI6MTA6NTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wgZG9lcyBub3QgcHJvdmlkZSBjYW5vbmljYWxpemVfZmlsZV9uYW1lCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaAorCitCYXNlZCBvbiB3b3JrIGJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvcGF0aC11dGlsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGF0aC11dGlsLmMgYi9zcmMvcGF0aC11dGlsLmMKK2luZGV4IDJmYjYzNjYuLjEyZTJlMTcgMTAwNjQ0CistLS0gYS9zcmMvcGF0aC11dGlsLmMKKysrKyBiL3NyYy9wYXRoLXV0aWwuYworQEAgLTYzLDcgKzYzLDcgQEAgY2hhciAqKnBhdGhfc3Rydl9yZXNvbHZlKGNoYXIgKipsLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKnM7CisgCisgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKy0gICAgICAgICAgICAgICAgdSA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUodCk7CisrICAgICAgICAgICAgICAgIHUgPSByZWFscGF0aCh0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgaWYgKCF1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgeworLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhMDAwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoIFwKLSIKLQotIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAotUFYgPSAiMjMxK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjllZTJmZmMxZGM2YzgyMDk3MjVlNjI1OTU0YmJkODlmOTZjYjcxMzkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAotICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWUyMWIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKQEAgLTAsMCArMSwzNyBAQAorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAiCisKKworIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAorUFYgPSAiMjMzK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZlMWM1ZTQxZTZiZGI3ODA0M2RhZDhmYTg2M2ZjMmRmNjZkMWRhZGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAorICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAppbmRleCA1ZDcwNDU2Li5iNjZmNDFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaApAQCAtMSwxNCArMSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwb2t5LXNwZWNpZmljIGZpeF0KIAotLS0tIGEvTWFrZWZpbGUuaW5jCi0rKysgYi9NYWtlZmlsZS5pbmMKLUBAIC01Nyw2ICs1Nyw5IEBACi0gICBpZmVxICgkKE5PX1VVSUQpLCkKLSAgICAgTElCUyArPSAtbHV1aWQKK0luZGV4OiBhZ2VudC9NYWtlZmlsZS5pbmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhZ2VudC5vcmlnL01ha2VmaWxlLmluYworKysrIGFnZW50L01ha2VmaWxlLmluYworQEAgLTg4LDYgKzg4LDkgQEAgaWZuZXEgKCQoT1BTWVMpLFdpbmRvd3MpCisgICBpZm5lcSAoJChDQyksZysrKQorICAgICBPUFRTICs9IC1XbWlzc2luZy1wcm90b3R5cGVzCiAgICBlbmRpZgogKyAgaWZuZXEgKCQoUkFOTElCKSwpCiArICAgIFJBTkxJQiArPSAkQAogKyAgZW5kaWYKICBlbmRpZgogIAotIGlmbmVxICgkKE9QU1lTKSxXaW5kb3dzKQorICMgQ29tcGlsZXIgZmxhZ3MgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggOWRiMjZkYy4uYmExNGM0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCkBAIC0xNiw3ICsxNiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuc2VydmljZSBcCiAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIERFUEVORFMgPSAidXRpbC1saW51eCBvcGVuc3NsIgogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKQEAgLTMxLDcgKzMwLDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQsYTY0LGAiCitNQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsIHwgc2VkIHMsYWFyY2g2NC4qLGE2NCxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLWFkZC1zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAppbmRleCA5NjI3NmVhLi5kMWZjOWI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaApAQCAtMTEsNyArMTEsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L3RjbC5tNApAQCAtMjUsNyArMjUsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L01ha2VmaWxlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWM3M2JlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY3M2FhZjQ1YjVkZTVkOGRkODBiYjNkYWFlYjg4MzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2M2YjhmODRlMzczMzI0MjNjZmU1YmFlNTAzNDQwZDg4NDUwZGE4Y2MxMjQzNDk2MjQ5ZmFhNTI2ODAyNmJhNSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTJlODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyIKKworREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCisKK0JBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTY1NmQzMzY3YWYwMzJlMGFlNjE1N2VmZjEzNGY4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDNjYjBjMTUxOGNlNDJiMDBlN2M4ZjZlYWRkZDUxOTVjNTNhOThmOTRhZGM3MTcyMzRhNjVjYmNmZDNmOTZhIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgorCitWRVIgPSAiJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCit9CisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCisJbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAorCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9CisJc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAorCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KKwlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCisJZG9uZQorfQorCitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCisKK1BBQ0tBR0VTID0rICJ0Y2wtbGliIgorRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGNsdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKK0JJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCisKKyMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQorU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCisKKyMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCisjICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0CitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCit0Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCisJICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAorCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCisJICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCisKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwppbmRleCAxMjYxYzAyLi5iMjJmYWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCkBAIC0zNCw2ICszNCw4IEBACiAgICAgICAgIGNobW9kICt4ICR7Qn0vdmFwaWdlbi13cmFwcGVyCiB9CiAKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1ncmFwaHZpeiIKKwogIyBWYXBpZ2VuIHdyYXBwZXIgbmVlZHMgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIGl0IHdpbGwgYmUgdXNlZAogIyB0byBidWlsZCB2YXBpIGZpbGVzIGZyb20gYWxsIG90aGVyIHBhY2thZ2VzIHdpdGggdmFsYSBzdXBwb3J0CiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMjdiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGI2Y2EzODc2ZTIzM2M3MjRmZDQ2MGMxNTc5YWJjNGFiNjNjOGQwMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNToyMzowOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHZhbGFkb2MKKworVmFsYWRvYyBpcyBhIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBWYWxhIHNvdXJjZXMsIHdoaWNoIHdhcworcmVjZW50bHkgbWVyZ2VkIGludG8gdGhlIG1haW4gdmFsYSBzb3VyY2UgdHJlZS4gVW5zdXJwcmlzaW5nbHksCitpdCdzIGJyb2tlbiBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50IGluIG11bHRpcGxlIHdheXMsCitzbyBsZXQncyBmaXggaXQgc29tZSBvdGhlciB0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTVkYzBjYy4uODEzYjNmYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEzLDggKzEzLDYgQEAgU1VCRElSUyA9IFwKKyAJZG9jIFwKKyAJZ29iamVjdC1pbnRyb3NwZWN0aW9uIFwKKyAJdmFwaWdlbiBcCistCWxpYnZhbGFkb2MgXAorLQl2YWxhZG9jIFwKKyAJJChOVUxMKQorIAorIGlmIEVOQUJMRV9VTlZFUlNJT05FRAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkMTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKQEAgLTAsMCArMSwyMjMgQEAKK0Zyb20gZWI3MTZkYzg1NmMyMGIzZGExNDZhNGU4M2U5ODAwYmQxZjUzYzczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY28gVHpzY2hpY2hob2x6IDxyaWNvdHpAdWJ1bnR1LmNvbT4KK0RhdGU6IFdlZCwgNiBTZXAgMjAxNyAxODo1Mjo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSBsaWJ2YWxhZG9jOiBBbGxvdyBkaXNhYmxpbmcgdGhlIGdyYXBodml6IGRlcGVuZGVuY3kgb2YKKyB2YWxhZG9jCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNzUKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Z3ppbGxhIGxpbmsgYWJvdmVdCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBsaWJ2YWxhZG9jL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKystLS0tCisgbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgICAgICB8ICA4ICsrKysrCisgbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYSB8ICA0ICsrKworIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGM3M2Q1ZDZiMS4uMjkxZTUwM2Q1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05OCwzNCArOTgsMzggQEAgUEtHX0NIRUNLX01PRFVMRVMoR01PRFVMRSwgZ21vZHVsZS0yLjAgPj0gJEdMSUJfUkVRVUlSRUQpCisgQUNfU1VCU1QoR01PRFVMRV9DRkxBR1MpCisgQUNfU1VCU1QoR01PRFVMRV9MSUJTKQorIAorLVBLR19DSEVDS19NT0RVTEVTKExJQkdWQywgbGliZ3ZjID49ICRMSUJHVkNfUkVRVUlSRUQpCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgQ0dSQVBIXSkKKy1jZ3JhcGhfdG1wX0xJQkFERD0iJExJQkFERCIKKy1jZ3JhcGhfdG1wX0NGTEFHUz0iJENGTEFHUyIKKy1MSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorLUNGTEFHUz0iJENGTEFHUyAkTElCR1ZDX0NGTEFHUyIKKy1BQ19SVU5fSUZFTFNFKAorLQlbQUNfTEFOR19TT1VSQ0UoWworLQkJI2luY2x1ZGUgPGd2Yy5oPgorLQorLQkJaW50IG1haW4odm9pZCkgeworLQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorLQkJCQlyZXR1cm4gMDsKKy0JCQkjZWxzZQorLQkJCQlyZXR1cm4gLTE7CistCQkJI2VuZGlmCistCQl9CistCV0pXSwgWworLQkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0JCVZBTEFGTEFHUz0iJFZBTEFGTEFHUyAtRCBXSVRIX0NHUkFQSCIKKy0JCWhhdmVfY2dyYXBoPXllcworLQldLCBbCistCQlBQ19NU0dfUkVTVUxUKFtub10pCistCQloYXZlX2NncmFwaD1ubworLQldCistKQorLUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorLUNGTEFHUz0iJGNncmFwaF90bXBfQ0ZMQUdTIgorK0FDX0FSR19FTkFCTEUoZ3JhcGh2aXosIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZ3JhcGh2aXpdLCBbRGlzYWJsZSBncmFwaHZpeiB1c2FnZSBmb3IgdmFsYWRvY10pLCBlbmFibGVfZ3JhcGh2aXo9JGVuYWJsZXZhbCwgZW5hYmxlX2dyYXBodml6PXllcykKKytpZiB0ZXN0IHgkZW5hYmxlX2dyYXBodml6ID0geHllczsgdGhlbgorKwlQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVkMsIGxpYmd2YyA+PSAkTElCR1ZDX1JFUVVJUkVEKQorKwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBDR1JBUEhdKQorKwlWQUxBRkxBR1M9IiRWQUxBRkxBR1MgLUQgSEFWRV9HUkFQSFZJWiIKKysJY2dyYXBoX3RtcF9MSUJBREQ9IiRMSUJBREQiCisrCWNncmFwaF90bXBfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwlMSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorKwlDRkxBR1M9IiRDRkxBR1MgJExJQkdWQ19DRkxBR1MiCisrCUFDX1JVTl9JRkVMU0UoCisrCQlbQUNfTEFOR19TT1VSQ0UoWworKwkJCSNpbmNsdWRlIDxndmMuaD4KKysJCQlpbnQgbWFpbih2b2lkKSB7CisrCQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorKwkJCQkJcmV0dXJuIDA7CisrCQkJCSNlbHNlCisrCQkJCQlyZXR1cm4gLTE7CisrCQkJCSNlbmRpZgorKwkJCX0KKysJCV0pXSwgWworKwkJCUFDX01TR19SRVNVTFQoW3llc10pCisrCQkJVkFMQUZMQUdTPSIkVkFMQUZMQUdTIC1EIFdJVEhfQ0dSQVBIIgorKwkJCWhhdmVfY2dyYXBoPXllcworKwkJXSwgWworKwkJCUFDX01TR19SRVNVTFQoW25vXSkKKysJCQloYXZlX2NncmFwaD1ubworKwkJXQorKwkpCisrCUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorKwlDRkxBR1M9IiRjZ3JhcGhfdG1wX0NGTEFHUyIKKytmaQorK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9HUkFQSFZJWiwgdGVzdCB4JGVuYWJsZV9ncmFwaHZpeiA9IHh5ZXMpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9DR1JBUEgsIHRlc3QgIiRoYXZlX2NncmFwaCIgPSAieWVzIikKKyAKKyBBQ19QQVRIX1BST0coW1hTTFRQUk9DXSwgW3hzbHRwcm9jXSwgOikKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtIGIvbGlidmFsYWRvYy9NYWtlZmlsZS5hbQoraW5kZXggODkyNDVkODZiLi43YzA3NDk4YjkgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCisrKysgYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCitAQCAtMTI3LDEwICsxMjcsNiBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAorIAljb250ZW50L3RhYmxlcm93LnZhbGEgXAorIAljb250ZW50L3RhZ2xldC52YWxhIFwKKyAJY29udGVudC90ZXh0LnZhbGEgXAorLQljaGFydHMvY2hhcnQudmFsYSBcCistCWNoYXJ0cy9jaGFydGZhY3RvcnkudmFsYSBcCistCWNoYXJ0cy9oaWVyYXJjaHljaGFydC52YWxhIFwKKy0JY2hhcnRzL3NpbXBsZWNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJcGFyc2VyL21hbnlydWxlLnZhbGEgXAorIAlwYXJzZXIvb25lb2ZydWxlLnZhbGEgXAorIAlwYXJzZXIvb3B0aW9uYWxydWxlLnZhbGEgXAorQEAgLTE1OCwxMyArMTU0LDI0IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCisgCWhpZ2hsaWdodGVyL2NvZGV0b2tlbi52YWxhIFwKKyAJaGlnaGxpZ2h0ZXIvaGlnaGxpZ2h0ZXIudmFsYSBcCisgCWh0bWwvYmFzaWNkb2NsZXQudmFsYSBcCistCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJaHRtbC9saW5raGVscGVyLnZhbGEgXAorIAlodG1sL2Nzc2NsYXNzcmVzb2x2ZXIudmFsYSBcCisgCWh0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIFwKKyAJaHRtbC9odG1scmVuZGVyZXIudmFsYSBcCisgCSQoTlVMTCkKKyAKKytpZiBFTkFCTEVfR1JBUEhWSVoKKytsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTICs9IFwKKysJY2hhcnRzL2NoYXJ0LnZhbGEgXAorKwljaGFydHMvY2hhcnRmYWN0b3J5LnZhbGEgXAorKwljaGFydHMvaGllcmFyY2h5Y2hhcnQudmFsYSBcCisrCWNoYXJ0cy9zaW1wbGVjaGFydGZhY3RvcnkudmFsYSBcCisrCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKysJJChOVUxMKQorKworK0xJQkdWQ19QS0cgPSAtLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YworK2VuZGlmCisrCisgbGlidmFsYWRvY0BQQUNLQUdFX1NVRkZJWEBfbGFfU09VUkNFUyA9IFwKKyAJbGlidmFsYWRvYy52YWxhLnN0YW1wIFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTOi52YWxhPS5jKSBcCitAQCAtMTgyLDggKzE4OSw4IEBAIGxpYnZhbGFkb2MudmFsYS5zdGFtcDogJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKQorIAkJLS1saWJyYXJ5IHZhbGFkb2MgXAorIAkJLS12YXBpIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkgXAorIAkJLS12YXBpZGlyICQodG9wX3NyY2RpcikvdmFwaSAtLXBrZyBnbW9kdWxlLTIuMCBcCistCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YyBcCisgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS9nZWUgLS1wa2cgZ2VlIFwKKysJCSQoTElCR1ZDX1BLRykgXAorIAkJLS1wa2cgY29uZmlnIFwKKyAJCSQoZmlsdGVyICUudmFsYSAlLmMsJF4pCisgCXRvdWNoICRACitAQCAtMjA5LDYgKzIxNiw5IEBAIG5vZGlzdF9wa2djb25maWdfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAucGM6IHZhbGFkb2MucGMKKyAJY3AgJDwgJEAKKytpZiAhRU5BQkxFX0dSQVBIVklaCisrCXNlZCAtaSAicy9saWJndmMgLy9nIiAkQAorK2VuZGlmCisgCisgdmFwaWRpciA9ICQoZGF0YWRpcikvdmFsYS92YXBpCisgZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC52YXBpCitAQCAtMjE2LDYgKzIyNiw5IEBAIG5vZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5kZXBzCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAuZGVwczogdmFsYWRvYy5kZXBzCisgCWNwICQ8ICRACisraWYgIUVOQUJMRV9HUkFQSFZJWgorKwlzZWQgLWkgInMvbGliZ3ZjLy9nIiAkQAorK2VuZGlmCisgCisgRVhUUkFfRElTVCA9IFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKSBcCitkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQoraW5kZXggY2M5ZWE0ZWQ3Li40MzJjMzgxOGYgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQorKysrIGIvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEKK0BAIC00Niw3ICs0NiwxMSBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsYWRvYy5IdG1sLkJhc2ljRG9jbGV0IDogQXBpLlZpc2l0b3IsIERvY2xldCB7CisgCXByb3RlY3RlZCBIdG1sUmVuZGVyZXIgX3JlbmRlcmVyOworIAlwcm90ZWN0ZWQgSHRtbC5NYXJrdXBXcml0ZXIgd3JpdGVyOworIAlwcm90ZWN0ZWQgSHRtbC5Dc3NDbGFzc1Jlc29sdmVyIGNzc3Jlc29sdmVyOworKyNpZiBIQVZFX0dSQVBIVklaCisgCXByb3RlY3RlZCBDaGFydHMuRmFjdG9yeSBpbWFnZV9mYWN0b3J5OworKyNlbHNlCisrCXByb3RlY3RlZCB2b2lkKiBpbWFnZV9mYWN0b3J5OworKyNlbmRpZgorIAlwcm90ZWN0ZWQgRXJyb3JSZXBvcnRlciByZXBvcnRlcjsKKyAJcHJvdGVjdGVkIHN0cmluZyBwYWNrYWdlX2xpc3RfbGluayA9ICIuLi9pbmRleC5odG1sIjsKKyAKK0BAIC0xMjAsNyArMTI0LDkgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAkJdGhpcy5saW5rZXIgPSBuZXcgTGlua0hlbHBlciAoKTsKKyAKKyAJCV9yZW5kZXJlciA9IG5ldyBIdG1sUmVuZGVyZXIgKHNldHRpbmdzLCB0aGlzLmxpbmtlciwgdGhpcy5jc3NyZXNvbHZlcik7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCXRoaXMuaW1hZ2VfZmFjdG9yeSA9IG5ldyBTaW1wbGVDaGFydEZhY3RvcnkgKHNldHRpbmdzLCBsaW5rZXIpOworKyNlbmRpZgorIAl9CisgCisgCitAQCAtMTAyNSw2ICsxMDMxLDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAl9CisgCisgCXByb3RlY3RlZCB2b2lkIHdyaXRlX2ltYWdlX2Jsb2NrIChBcGkuTm9kZSBlbGVtZW50KSB7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCWlmIChlbGVtZW50IGlzIENsYXNzIHx8IGVsZW1lbnQgaXMgSW50ZXJmYWNlIHx8IGVsZW1lbnQgaXMgU3RydWN0KSB7CisgCQkJdW5vd25lZCBzdHJpbmcgZm9ybWF0ID0gKHNldHRpbmdzLnVzZV9zdmdfaW1hZ2VzID8gInN2ZyIgOiAicG5nIik7CisgCQkJdmFyIGNoYXJ0ID0gbmV3IENoYXJ0cy5IaWVyYXJjaHkgKGltYWdlX2ZhY3RvcnksIGVsZW1lbnQpOworQEAgLTEwNDQsNiArMTA1MSw3IEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWxhZG9jLkh0bWwuQmFzaWNEb2NsZXQgOiBBcGkuVmlzaXRvciwgRG9jbGV0IHsKKyAJCQkJCQkJCQkgICB0aGlzLmdldF9pbWdfcGF0aF9odG1sIChlbGVtZW50LCBmb3JtYXQpfSk7CisgCQkJd3JpdGVyLmFkZF91c2VtYXAgKGNoYXJ0KTsKKyAJCX0KKysjZW5kaWYKKyAJfQorIAorIAlwdWJsaWMgdm9pZCB3cml0ZV9uYW1lc3BhY2VfY29udGVudCAoTmFtZXNwYWNlIG5vZGUsIEFwaS5Ob2RlPyBwYXJlbnQpIHsKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIGIvbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYQoraW5kZXggMTVlZDllZmQxLi5mZTBkNzA1ZDQgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCisrKysgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCitAQCAtNDMsMTIgKzQzLDE2IEBAIHB1YmxpYyBjbGFzcyBWYWxhZG9jLkh0bWwuTWFya3VwV3JpdGVyIDogVmFsYWRvYy5NYXJrdXBXcml0ZXIgeworIAkJfSwgeG1sX2RlY2xhcmF0aW9uKTsKKyAJfQorIAorKyNpZiBIQVZFX0dSQVBIVklaCisgCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAoQ2hhcnRzLkNoYXJ0IGNoYXJ0KSB7CisgCQlzdHJpbmc/IGJ1ZiA9IChzdHJpbmc/KSBjaGFydC53cml0ZV9idWZmZXIgKCJjbWFweCIpOworIAkJaWYgKGJ1ZiAhPSBudWxsKSB7CisgCQkJcmF3X3RleHQgKCJcbiIpOworIAkJCXJhd190ZXh0ICgoISkgYnVmKTsKKyAJCX0KKysjZWxzZQorKwlwdWJsaWMgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKHZvaWQqIGNoYXJ0KSB7CisrI2VuZGlmCisgCisgCQlyZXR1cm4gdGhpczsKKyAJfQorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEwMDBkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzE5MDE0MDkzZjFhM2Q5OTUzNTcyNTNiNDYzMDgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWYyM2NlNzExYzFhNzJjZTY2NGQxMDk0NmZiYzU5NTNmMDFiMGI3ZjJhMzU2MmU3YTAxZTM2MmQ4NmRlMDU5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYmFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKwkgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYXBodml6LnBhdGNoIFwKKwkgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2VkZDA0NjdkMDU2ZmQ5ZTM5MzdkMGJiY2VkYTgwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmE3NDZiNTFjZDY2ZTQzNTc3ZDFkYTA2YTgwYjcwOGMyODc1Y2FkYWFmZWU3N2U5NzAwZWEzNWNmMjM4ODJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MTEyZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZjk2Y2YxZjRlYWE3Mjg2MGFiOGI1ZTE4YWQxMGZkYzcwNGQ3OGM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBEZWMgMjAxNSAxNTowMTozNCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNV0gcmVtb3ZlIHJwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgY29uZmlnXQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotLS0tCi0gbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSBiL25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDU0ZjJhN2UuLjI1YjBmNDkgMTAwNjQ0Ci0tLS0gYS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzI2LDcgKzMyNiw2IEBAIHRocmVhZGVkZXJybm9fQ0ZMQUdTCSs9IC0tc3RkPWM5OQotIGVuZGlmCi0gdGxzX1NPVVJDRVMJCT0gdGxzLmMgdGxzMi5jCi0gdGxzX0RFUEVOREVOQ0lFUwk9IHRscy5zbyB0bHMyLnNvCi0tdGxzX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMKLSB0bHNfTERBREQJCT0gdGxzLnNvIHRsczIuc28gLWxwdGhyZWFkCi0gdGxzX3NvX1NPVVJDRVMJCT0gdGxzX3NvLmMKLSB0bHNfc29fREVQRU5ERU5DSUVTCT0gdGxzMi5zbwotQEAgLTMzNCw3ICszMzMsNyBAQCBpZiBWR0NPTkZfT1NfSVNfREFSV0lOCi0gIHRsc19zb19MREZMQUdTCQk9IC1keW5hbWljIC1keW5hbWljbGliIC1hbGxfbG9hZCAtZnBpYwotICB0bHNfc29fTERBREQJCT0gYHB3ZGAvdGxzMi5zbwotIGVsc2UKLS0gdGxzX3NvX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMgLXNoYXJlZCAtZlBJQwotKyB0bHNfc29fTERGTEFHUwkJPSAtc2hhcmVkIC1mUElDCi0gIHRsc19zb19MREFERAkJPSB0bHMyLnNvCi0gZW5kaWYKLSB0bHNfc29fQ0ZMQUdTCQk9ICQoQU1fQ0ZMQUdTKSAtZlBJQwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWE5NWI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGaXggcnVudGltZSBWYWxncmluZCBmYWlsdXJlCisKK1RoaXMgcGF0Y2ggaXMgZGVyaXZlZCBmcm9tCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0NjQyMTEKKworQXQgcnVudGltZSBpdCB3aWxsIGZhaWxzIGxpa2UgdGhpczoKKworQVJNNjQgZnJvbnQgZW5kOiBicmFuY2hfZXRjCitkaXNJbnN0cihhcm02NCk6IHVuaGFuZGxlZCBpbnN0cnVjdGlvbiAweEQ1MzgwMDAxCitkaXNJbnN0cihhcm02NCk6IDExMDEnMDEwMSAwMDExJzEwMDAgMDAwMCcwMDAwIDAwMDAnMDAwMSA9PTIwODI9PQordmFsZ3JpbmQ6IFVucmVjb2duaXNlZCBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4NDAxNGU2NC4KKworVGhpcyBwYXRjaCBpcyBhIHdvcmthcm91bmQgYnkgbWFza2luZyBhbGwgSFdDQVAKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgorCitJbmRleDogdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tLSB2YWxncmluZC0zLjEzLjAub3JpZy9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYyAgIDIwMTgtMDMtMDQgMjI6MjI6MTcuNjk4NTcyNjc1IC0wODAwCisrKysgdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jICAgICAgICAyMDE4LTAzLTA0IDIyOjIzOjI1LjcyNzgxNTYyNCAtMDgwMAorQEAgLTcwMyw2ICs3MDMsMTIgQEAKKyAgICAgICAgICAgICAgICAgICAoYW5kIGFueXRoaW5nIGFib3ZlKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWYWxncmluZC4gKi8KKyAgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsICY9IFZLSV9IV0NBUF9TMzkwX1RFIC0gMTsKKyAgICAgICAgICAgICB9CisrIyAgICAgICAgICAgZWxpZiBkZWZpbmVkKFZHUF9hcm02NF9saW51eCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgLyogTGludXggNC4xMSBzdGFydGVkIHBvcHVsYXRpbmcgdGhpcyBmb3IgYXJtNjQsIGJ1dCB3ZQorKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFueS4gKi8KKysgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsID0gMDsKKysgICAgICAgICAgICB9CisgIyAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICBicmVhazsKKyAjICAgICAgICBpZiBkZWZpbmVkKFZHUF9wcGM2NGJlX2xpbnV4KSB8fCBkZWZpbmVkKFZHUF9wcGM2NGxlX2xpbnV4KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgppbmRleCBiZjNjZmQ3Li5kM2FmMzVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpAQCAtMTYsNyArMTYsNiBAQAogICAgICAgICAgICBmaWxlOi8vZml4ZWQtcGVybC1wYXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0FkZGVkLXN1cHBvcnQtZm9yLVBQQy1pbnN0cnVjdGlvbnMtbWZhdGJ1LW1mYXRibC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtTW9kaWZ5LXZnX3Rlc3Qtd3JhcHBlci10by1zdXBwb3J0LVBURVNULWZvcm1hdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdHMtdGhhdC1mYWlsLXRvLWJ1aWxkLW9uLXNvbWUtUFBDMzItY29uZmlnLnBhdGNoIFwKQEAgLTM3LDYgKzM2LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9saW5rLWd6LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwYy1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjgxN2RkMDhmMWU4YTY2MzM2YjlmZjIwNjQwMGE1MzY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjY4MGVmMDNmMDBjZDVlOTcwYmJkY2Q0ZTU3ZmIxZjZkZjdkMmUyYzA3MTYzNWVmMmJlNzQ3OTAxOTBjM2IiCkBAIC04Niw2ICs4Niw4IEBACiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBybSAtcmYgJHtTfS9jb25maWcuaAorICAgIHNlZCAtaSAtZSAnczokKGFic190b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KKyAgICBzZWQgLWkgLWUgJ3M6JCh0b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L21lbWNoZWNrL3Rlc3RzL01ha2VmaWxlLmFtCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ppc29mcy10b29scy96aXNvZnMtdG9vbHMtbmF0aXZlXzEuMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFjMDU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIHppc29mcy10b29scy1uYXRpdmUgT0UgYnVpbGQgZmlsZQotIyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgY3JlYXRpbmcgY29tcHJlc3NlZCBDRC1ST00gZmlsZXN5c3RlbXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL3ppc29mcy10b29scyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ6bGliLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyLzJkMGVkOGM5YTFmNjBiNDVmOTQ5YjEzNmY5YmUxZjZjL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQwZWQ4YzlhMWY2MGI0NWY5NDliMTM2ZjliZTFmNmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU0ZTUzZTQ5MTQ5MzRkNDE2NjAyNDhmYjU5ZDNjODc2MWYxZjFmZDE4MGQ1ZWM5OTNjMTdkZGIzYWZkMDRmMyIKLQotaW5oZXJpdCBuYXRpdmUKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9JHtEfSBiaW5kaXI9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKaW5kZXggODY4NTA1Yi4uNTFhZTc3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgpAQCAtMTcsNyArMTcsNiBAQAogREVQRU5EUyA9ICJiaXNvbiBmbGV4IgogCiBTUkNfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL25vLXdlcnJvci5wYXRjaCBcCiAgICAgZmlsZTovL3JlbmFtZS15eV9zY2FuX3N0cmluZy1tYW51YWxseS5wYXRjaCBcCiAgICAgZmlsZTovL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgIGZpbGU6Ly8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIFwKQEAgLTQ5LDcgKzQ4LDYgQEAKIFBST1ZJREVTID0gImlhc2wiCiBSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCiBSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCiAKLU5BVElWRV9JTlNUQUxMX1dPUktTID0gIjEiCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZlN2I1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1EZXNjcmlwdGlvbjogcmVtb3ZlIC1XZXJyb3IgZmxhZwotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi1BdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdlbmVyYXRlL3VuaXgvaWFzbC9NYWtlZmlsZSB8ICAgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotLS0tIGEvZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlCi0rKysgYi9nZW5lcmF0ZS91bml4L2lhc2wvTWFrZWZpbGUKLUBAIC0yNjYsMTkgKzI2NiwxOSBAQCAkKE9CSkRJUikvcHJwYXJzZXIueS5oOiAkKE9CSkRJUikvcHJwYXJzCi0gIyBieSB0aGUgdXRpbGl0aWVzIGFib3ZlIGFuZCB0aGV5IGFyZSBub3QgbmVjZXNzYXJpbHkgQU5TSSBDLCBldGMuCi0gIwotICQoT0JKRElSKS9hc2xjb21waWxlcmxleC5vIDogICAkKE9CSkRJUikvYXNsY29tcGlsZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2FzbGNvbXBpbGVycGFyc2UubyA6ICQoT0JKRElSKS9hc2xjb21waWxlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9kdHBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvZHRwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2R0cGFyc2VycGFyc2UubyA6ICAgICQoT0JKRElSKS9kdHBhcnNlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9wcnBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvcHJwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCmluZGV4IDkzMmE0YzAuLmQ2MDU2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCkBAIC0xNSwxMyArMTUsMTMgQEAKICBNYWtlZmlsZSB8ICAgIDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDJhOWI5MTguLmFhN2MwNGEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03NSw3ICs3NSw5IEBAIGF0OiAkKEFUT0JKRUNUUykKK0luZGV4OiBhdC0zLjEuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdC0zLjEuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIGF0LTMuMS4yMC9NYWtlZmlsZS5pbgorQEAgLTc2LDcgKzc2LDkgQEAgYXQ6ICQoQVRPQkpFQ1RTKQogIGF0ZDogJChSVU5PQkpFQ1RTKQotIAkkKENDKSAkKExERkxBR1MpIC1vIGF0ZCAkKFJVTk9CSkVDVFMpICQoTElCUykgJChQQU1MSUIpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gYXRkICQoUlVOT0JKRUNUUykgJChMSUJTKSAkKFBBTUxJQikgJChTRUxJTlVYTElCKQogIAogLXkudGFiLmMgeS50YWIuaDogcGFyc2V0aW1lLnkKICt5LnRhYi5oOiB5LnRhYi5jCkBAIC0zMCw2ICszMCwzIEBACiAgCSQoWUFDQykgLWQgcGFyc2V0aW1lLnkKICAKICBsZXgueXkuYzogcGFyc2V0aW1lLmwKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCmluZGV4IDliNTM3ZWUuLjhmZTNiNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCkBAIC01LDcgKzUsNyBAQAogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLURFUEVORFMgPSAiZmxleCBmbGV4LW5hdGl2ZSBcCitERVBFTkRTID0gImZsZXggZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIAogUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fREVQU30nLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwppbmRleCBmNGUxZjdhLi45YzJiMDY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC02LDcgKzYsNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBwdGVzdAogCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hY2xvY2FsIgogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWpvYi1jb250cm9sIC0td2l0aG91dC1iYXNoLW1hbGxvYyIKIAogIyBJZiBOT05fSU5URVJBQ1RJVkVfTE9HSU5fU0hFTExTIGlzIGRlZmluZWQsIGFsbCBsb2dpbiBzaGVsbHMgcmVhZCB0aGUKQEAgLTI1LDcgKzI1LDcgQEAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKIAotREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtbG9jYWxlIgorREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgdmlydHVhbC9saWJjLWxvY2FsZSIKIFJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1mci1mciBsb2NhbGUtYmFzZS1kZS1kZSIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1wdGVzdCIKQEAgLTMzLDEyICszMyw2IEBACiAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJoZWFkZXJzZGlyPSR7aW5jbHVkZWRpcn0vJHtQTn0iCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQljYXQgJHtTfS9hY2xvY2FsLm00ID4gJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCiBkb19jb21waWxlX3B0ZXN0ICgpIHsKIAlvZV9ydW5tYWtlIGJ1aWxkdGVzdAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZXhlY3V0ZV9jbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAppbmRleCA4MWY4ZjBhLi45OTcwYjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi0tLS0gZXhlY3V0ZV9jbWQuYy5vcmlnCUZyaSBKdW4gIDMgMTM6MzQ6NDIgMjAxMQotKysrIGV4ZWN1dGVfY21kLmMJRnJpIEp1biAgMyAxMzozNjo0MSAyMDExCi1AQCAtMjIwMiw3ICsyMjAyLDExIEBACitJbmRleDogZXhlY3V0ZV9jbWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4ZWN1dGVfY21kLmMub3JpZworKysrIGV4ZWN1dGVfY21kLmMKK0BAIC0yNDU5LDcgKzI0NTksMTEgQEAgZXhlY3V0ZV9waXBlbGluZSAoY29tbWFuZCwgYXN5bmNocm9ub3VzLAogICAgLyogSWYgdGhlIGBsYXN0cGlwZScgb3B0aW9uIGlzIHNldCB3aXRoIHNob3B0LCBhbmQgam9iIGNvbnRyb2wgaXMgbm90CiAgICAgICBlbmFibGVkLCBleGVjdXRlIHRoZSBsYXN0IGVsZW1lbnQgb2Ygbm9uLWFzeW5jIHBpcGVsaW5lcyBpbiB0aGUKICAgICAgIGN1cnJlbnQgc2hlbGwgZW52aXJvbm1lbnQuICovCkBAIC0xMyw1ICsxNSw1IEBACiArI2VuZGlmCiArCQlhc3luY2hyb25vdXMgPT0gMCAmJiBwaXBlX291dCA9PSBOT19QSVBFICYmIHByZXYgPiAwKQogICAgICB7Ci0gICAgICAgbHN0ZGluID0gbW92ZV90b19oaWdoX2ZkICgwLCAwLCAyNTUpOworICAgICAgIGxzdGRpbiA9IG1vdmVfdG9faGlnaF9mZCAoMCwgMSwgLTEpOwogICAgICAgIGlmIChsc3RkaW4gPiAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9wYXRoZXhwLWRlcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDViYmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorcGF0aGV4cCBpbmNsdWRlcyBsaWJpbnRsLmggYnV0IGRvZXNuJ3QgZGVwZW5kIG9uIGl0LCB0aHVzIGEgYnVpbGQgcmFjZSBjYW4gb2NjdXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwczovL3NhdmFubmFoLmdudS5vcmcvcGF0Y2gvaW5kZXgucGhwPzk1MDMpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYzdiNjJiYzAuLjI0MWNiZjEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTI4MSwyICsxMjgxLDMgQEAgbm9qb2JzLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgeS50YWIubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKKytwYXRoZXhwLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgcGNvbXBsZXRlLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4MmE3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRoZXhwLWRlcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiN2MxMTI5NzBjYmRjYWRmYzMzMWUxMGVlYjVmNmFhNDEiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI1N2Q4NDMyYmU1NDU0MTUzMWE0OTZmZDQ5MDRmZGMwOGMxMjU0MmY0MzYwNWE5MjAyNTk0ZmE1ZDVmOWYyMzMxIgorCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ0ZDA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA5IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEyIFwKLSAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNDg4ODhhN2M5NWFjMjM3MDU1NTliNmY0NzdkZmUyNSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQ4NmIzMzkyYzEyMDJlOGZmNWE0MjNiMzAyZTYyODRkYjdmOGY0MzVlYTlmMzliNWIxYjIwZmQzYWMzNmRmY2IiCi0KLVNSQ19VUklbcGF0Y2gwMDEubWQ1c3VtXSA9ICI4MTdkMDFhNmMwYWY2Zjc5MzA4YThiN2I2NDllNTNkOCIKLVNSQ19VUklbcGF0Y2gwMDEuc2hhMjU2c3VtXSA9ICIzZTI4ZDkxNTMxNzUyZGY5YThjYjE2N2FkMDdjYzU0MmFiYWY5NDRkZTkzNTNmZThjNmE1MzVjOWYxZjE3ZjBmIgotU1JDX1VSSVtwYXRjaDAwMi5tZDVzdW1dID0gIjc2NWUxNGNmZjEyYzcyODQwMDk3NzJlOGUyNGYyZmUwIgotU1JDX1VSSVtwYXRjaDAwMi5zaGEyNTZzdW1dID0gIjcwMjBhMDE4M2UxN2E3MjMzZTY2NWI5NzljNzhjMTg0ZWEzNjljZmFmM2U4YjRiMTFmNTU0N2VjYjdjMTNjNTMiCi1TUkNfVVJJW3BhdGNoMDAzLm1kNXN1bV0gPSAiNDllN2RhOTNiZjA3ZjUxMGEyZWI2YmI0M2FjM2U1YTIiCi1TUkNfVVJJW3BhdGNoMDAzLnNoYTI1NnN1bV0gPSAiNTFkZjVhOTE5MmZkZWZlMGRkY2E0YmRmMjkwOTMyZjc0YmUwM2ZmZDA1MDNhM2QxMTJlNDE5OTkwNWU3MThiMiIKLVNSQ19VUklbcGF0Y2gwMDQubWQ1c3VtXSA9ICI0NTU3ZDY3NGFiNTgzMWE1ZmE5ODA1MmFiMTllZGFmNCIKLVNSQ19VUklbcGF0Y2gwMDQuc2hhMjU2c3VtXSA9ICJhZDA4MGEzMGE0YWM2YzEyNzMzNzM2MTdmMjk2MjhjYzMyMGEzNWM4Y2QwNjkxMzg5NDc5NDI5M2RjNTJjOGIzIgotU1JDX1VSSVtwYXRjaDAwNS5tZDVzdW1dID0gImNjZTk2ZGQ3N2NkZDFkMjkzYmVlYzEwODQ4ZjZjYmI1IgotU1JDX1VSSVtwYXRjaDAwNS5zaGEyNTZzdW1dID0gIjIyMWU0YjcyNWI3NzBhZDBiYjY5MjRkZjNmOGQwNGY4OWVlY2E0NTU4ZjZlNGM3NzdkZmE5M2U5NjcwOTA1MjkiCi1TUkNfVVJJW3BhdGNoMDA2Lm1kNXN1bV0gPSAiZDMzNzlmOGQ4YWJjZTVjNmVlMzM4ZjkzMWFkMDA4ZDUiCi1TUkNfVVJJW3BhdGNoMDA2LnNoYTI1NnN1bV0gPSAiNmE4ZTJlMmE2MTgwZDBmMWNlMzlkY2Q2NTE2MjJmYjZkMmZkMDVkYjdjNDU5ZjY0YWU0MmQ2NjdmMWUzNDRiOCIKLVNSQ19VUklbcGF0Y2gwMDcubWQ1c3VtXSA9ICJlYzM4Yzc2Y2E0MzljYTdmOWMxNzhlOWJhZWRlODRmYyIKLVNSQ19VUklbcGF0Y2gwMDcuc2hhMjU2c3VtXSA9ICJkZTFjY2MwN2I3YmZjOWUyNTI0M2FkODU0ZjNiYmI1ZDNlYmY5MTU1YjA0NzdkZjE2YWFmMDBhN2IwZDVlZGFmIgotU1JDX1VSSVtwYXRjaDAwOC5tZDVzdW1dID0gImUwYmExOGMxZTNiOTRmOTA1ZGE5YjViZjlkMzhiNThiIgotU1JDX1VSSVtwYXRjaDAwOC5zaGEyNTZzdW1dID0gIjg2MTQ0NzAwNDY1OTMzNjM2ZDdiOTQ1ZTg5Yjc3ZGY5NWQzNjIwMDM0NzI1YmUxNjFjYTBjYTVhNDJlMjM5YmEiCi1TUkNfVVJJW3BhdGNoMDA5Lm1kNXN1bV0gPSAiZTk1MmQ0ZjQ0ZTYxMjA0ODkzMGM1NTlkOTBlYjk5YmIiCi1TUkNfVVJJW3BhdGNoMDA5LnNoYTI1NnN1bV0gPSAiMGI2YmRkMWExOGEwZDIwZTMzMGNjM2JjNzFlMDQ4ODY0ZTRhMTM2NTJlMjlkYzBlYmYzOTE4YmVhNzI5MzQzYyIKLVNSQ19VUklbcGF0Y2gwMTAubWQ1c3VtXSA9ICI1N2I1YjM1OTU1ZDY4ZjlhMDlkYmVmNmI4NmQyYzc4MiIKLVNSQ19VUklbcGF0Y2gwMTAuc2hhMjU2c3VtXSA9ICI4NDY1YzZmMmM1NmFmZTU1OTQwMjI2NWIzOWQ5ZTk0MzY4OTU0OTMwZjlhYTdmM2RmYTZkMzZkZDY2ODY4ZTA2IgotU1JDX1VSSVtwYXRjaDAxMS5tZDVzdW1dID0gImNjODk2ZTFmYTY5NmI5M2RlZDU2OGU1NTdlMjM5MmQ1IgotU1JDX1VSSVtwYXRjaDAxMS5zaGEyNTZzdW1dID0gImRkNTY0MjZlZjdkNzI5NWUxMTA3YzBiM2QwNmMxOTJlYjkyOThmNDAyM2MyMDJjYTJiYTYyNjZjNjEzZDE3MGQiCi1TUkNfVVJJW3BhdGNoMDEyLm1kNXN1bV0gPSAiZmE0N2ZiZmE1NmZiN2U5ZTUzNjdmMTlhOWRmNWZjOWUiCi1TUkNfVVJJW3BhdGNoMDEyLnNoYTI1NnN1bV0gPSAiZmFjMjcxZDJiZjYzNzJjOTkwM2UzYjM1M2NiOWVkYTA0NGQ3ZmUzNmI1YWFiNTJmMjFmM2YyMWNkNmEyMDYzZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaAppbmRleCA1Mzc5ZWI2Li5kYjAxM2NmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKQEAgLTEwLDEyICsxMCwxMiBAQAogIHBwZGMvTWFrZWZpbGUgfCAgIDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBjdXBzLTIuMC4wL3BwZGMvTWFrZWZpbGUKK0luZGV4OiBjdXBzLTIuMi42L3BwZGMvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTIuMC4wLm9yaWcvcHBkYy9NYWtlZmlsZQotKysrIGN1cHMtMi4wLjAvcHBkYy9NYWtlZmlsZQotQEAgLTI0Miw4ICsyNDIsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKLSAJJChDWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKy0tLSBjdXBzLTIuMi42Lm9yaWcvcHBkYy9NYWtlZmlsZQorKysrIGN1cHMtMi4yLjYvcHBkYy9NYWtlZmlsZQorQEAgLTIyOCw4ICsyMjgsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKICAJCWxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpIFwKICAJCSQoRE5TU0RMSUJTKSAkKENPTU1PTkxJQlMpICQoTElCWikKIC0JZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCkBAIC0yNSw4ICsyNSw4IEBACiAgCiAgCiAgIwotQEAgLTI2MCw5ICsyNjAsOSBAQCBwcGRjLXN0YXRpYzoJCXBwZGMubyBsaWJjdXBzcHBkYy5hIC4uL2N1Ci0gCSQoQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBwcGRjLXN0YXRpYyBwcGRjLm8gbGliY3Vwc3BwZGMuYSBcCitAQCAtMjQ2LDkgKzI0Niw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3UKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGMtc3RhdGljIHBwZGMubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KQEAgLTM4LDggKzM4LDggQEAKICAKICAKICAjCi1AQCAtMjg4LDE3ICsyODgsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3VwcwotIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAorQEAgLTI3NCwxNyArMjc0LDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHMKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTRiNjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDI2ZTVhMGE1NzRhNjlmZTFkMDEwNzliMjkzMWZjNDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk2ZDRkYjcyNjUxYzMzNTQ2OWFlNWYzN2IwZGE3MmFjOWY5N2Q3M2UzMDgzOGQ3ODcwNjVmNTU5ZGVhOThjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FhOTM0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOTFjMjZkOGQ5N2I1YTE2MzBhOTYyZjUzMGYwMjE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDM4NTc3OGMyYjNiZGY1NTAzMGQxYzk5OTczNGUyMjc3NGM3OWUzNDI1ZDkxMzM5Y2U2Nzc4MjU2MjAxNjliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKaW5kZXggN2M1YmU1MC4uYzllMzEzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCkBAIC0xMCwzICsxMCw0IEBACiBBTFRFUk5BVElWRV8ke1BOfSA9ICJkaWZmIGNtcCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAppbmRleCBiZjY2MjY3Li5kZTM4MTA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtNSwxMSArNSwxMiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAoZGVmYXVsdCBhdXRvbWFrZSBiZWhhdmlvciBpbmNvbXBhdGlibGUgd2l0aCBwdGVzdCkKIAotZGlmZiAtcnVOIGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxNC0wNS0yOCAxODoxOToxMy41MTM5ODA5NzcgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI4IDE4OjE5OjIxLjEyOTY2MDIxNSArMDIwMAotQEAgLTIsNyArMiw3IEBACi0gQUNfSU5JVChldGh0b29sLCAzLjE0LCBuZXRkZXZAdmdlci5rZXJuZWwub3JnKQorSW5kZXg6IGV0aHRvb2wtNC4xMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBldGh0b29sLTQuMTMub3JpZy9jb25maWd1cmUuYWMKKysrKyBldGh0b29sLTQuMTMvY29uZmlndXJlLmFjCitAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcAorIEFDX0lOSVQoZXRodG9vbCwgNC4xMywgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKICBBQ19QUkVSRVEoMi41MikKICBBQ19DT05GSUdfU1JDRElSKFtldGh0b29sLmNdKQogLUFNX0lOSVRfQVVUT01BS0UoW2dudV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmZTliOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjEwNzI2Nzk4ODhjOTMzNWU0OWIxN2VmYjc5OGI0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjJmZDk2OTJmMzE1OWQzYWIxZTQxZTZmOWI3ZDhkYjJhNDY5M2YxY2IyMjM0OGM4OGJhODlmNzBmMGU2NTAzIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODYyYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjJiYTQ0ZWIwY2E5Njc1MjM5MmU5YmY4ZGM4M2JhMzAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzMTFjNGI1NTdjNDRjNTI0OGFjNTQzNmI5ZTE5YzM5MWE2MGQ4ZTQ4MzBiNmE3ZjQxYmUxNmQ4OWMwNTU2ZGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3Rlc3QtYXJyYXlpbmQxLVJlbW92ZS1oYXNoYmFuZy1saW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjYyZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGEzYTNmMjYwNzgyMjNjNDc4NzFjN2I1M2U1YzAxNWFkMTYzYWUwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogVGh1LCAzIE5vdiAyMDE2IDE0OjUwOjUyIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3QvYXJyYXlpbmQxOiBSZW1vdmUgaGFzaGJhbmcgbGluZQotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotUmVtb3ZlICIjIS91c3IvbG9jYWwvYmluL2F3ayAtZiIgYXMgbm9uZSBvZiB0aGUgb3RoZXIgYXdrIHNjcmlwdHMgaW4gdGhlCi10ZXN0IHN1aXRlIGhhdmUgYSBoYXNoYmFuZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nYXdrLzIwMTYtMTEvbXNnMDAwMDMuaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gdGVzdC9hcnJheWluZDEuYXdrIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3QvYXJyYXlpbmQxLmF3ayBiL3Rlc3QvYXJyYXlpbmQxLmF3awotaW5kZXggNWQ0YTZmMy4uNTllOGI0ZSAxMDA3NTUKLS0tLSBhL3Rlc3QvYXJyYXlpbmQxLmF3awotKysrIGIvdGVzdC9hcnJheWluZDEuYXdrCi1AQCAtMSw0ICsxLDMgQEAKLS0jIS91c3IvbG9jYWwvYmluL2F3ayAtZgotICMgdGhpcyBzY3JpcHQgcmVudW1zIHBlZGlncmVlcyB3aXRoIG1ldGFmb3VuZGVycwotICMgc28gdGhhdCB0aGV5IGFyZSBhZGRlZCAqYmVmb3JlKnJlZ3VsYXIgYW5pbWFscwotICMgbWYgYXJlIGFzY2VydGFpbmVkIGJlY2F1c2UgdGhleSBhcmUgbm90IGluIHRoZSAxc3QgY29sdW1uCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvcnVuLXB0ZXN0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWQzN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBhd2sgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIHZlcnNpb24gb2YgYXdrLCBhIHRleHQgcHJvY2Vzc2luZyB1dGlsaXR5LiBcCi1Bd2sgaW50ZXJwcmV0cyBhIHNwZWNpYWwtcHVycG9zZSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byBkbyBcCi1xdWljayBhbmQgZWFzeSB0ZXh0IHBhdHRlcm4gbWF0Y2hpbmcgYW5kIHJlZm9ybWF0dGluZyBqb2JzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2F3ay8iCi1CVUdUUkFDS0VSICA9ICJidWctZ2F3a0BnbnUub3JnIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIGdhd2sgPD0gMy4xLjU6IEdQTHYyCi0jIGdhd2sgPj0gMy4xLjY6IEdQTHYzCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIgotCi1QQUNLQUdFQ09ORklHW21wZnJdID0gIi0td2l0aC1tcGZyLC0td2l0aG91dC1tcGZyLCBtcGZyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2F3ay9nYXdrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjIwYzk0Y2E1MWI2ZWJmYzliZmZiOTBmOTVjOGZmYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGMwMzA4MGUyYjVhNTYyNjNlODc4M2Y2ZjFmMzA2Mzk4ZDQ1OTFiZTE4MjU0MDQxZjNmNTQ3ZWZlZjk0NGQzNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXdrIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyoubGEiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImF3ayIKLUFMVEVSTkFUSVZFX1RBUkdFVFthd2tdID0gIiR7YmluZGlyfS9nYXdrIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHJlbW92ZSB0aGUgbGluayBzaW5jZSB3ZSBkb24ndCBwYWNrYWdlIGl0Ci0Jcm0gJHtEfSR7YmluZGlyfS9hd2sKLX0KLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0cyBpbmNsaWIuYXdrOyBcCi0JICBkbyBjcCAke1N9L3Rlc3QvJGkqICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IFwKLQlkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmNzlhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGF3ayB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgdmVyc2lvbiBvZiBhd2ssIGEgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkuIFwKK0F3ayBpbnRlcnByZXRzIGEgc3BlY2lhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIGRvIFwKK3F1aWNrIGFuZCBlYXN5IHRleHQgcGF0dGVybiBtYXRjaGluZyBhbmQgcmVmb3JtYXR0aW5nIGpvYnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrLyIKK0JVR1RSQUNLRVIgID0gImJ1Zy1nYXdrQGdudS5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgZ2F3ayA8PSAzLjEuNTogR1BMdjIKKyMgZ2F3ayA+PSAzLjEuNjogR1BMdjMKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyArPSAicmVhZGxpbmUiCisKK1BBQ0tBR0VDT05GSUdbbXBmcl0gPSAiLS13aXRoLW1wZnIsLS13aXRob3V0LW1wZnIsIG1wZnIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nYXdrL2dhd2stJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYjU5OGMzMWJjNzAzZDY2MDgyYmQ5NThkNDE4OTk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjODgwNDZjNmU4Mzk2ZWU1NDhiY2I5NDFlMTZkZWY4MDliN2I1NWI2MGExMDQ0YjVkZDI1NDA5NGYzNDdjN2Q5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hd2siCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5sYSIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYXdrIgorQUxURVJOQVRJVkVfVEFSR0VUW2F3a10gPSAiJHtiaW5kaXJ9L2dhd2siCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgcmVtb3ZlIHRoZSBsaW5rIHNpbmNlIHdlIGRvbid0IHBhY2thZ2UgaXQKKwlybSAke0R9JHtiaW5kaXJ9L2F3aworfQorCitpbmhlcml0IHB0ZXN0CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBpIGluIGBncmVwIC12RSAiQHxeJHwjfEd0LWR1bW15IiAke1N9L3Rlc3QvTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2AgTWFrZXRlc3RzIGluY2xpYi5hd2s7IFwKKwkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAorCWRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZDEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOGFiZDIyMDEwZWI0ZGIwZmIxYjEwZTQzMGQ1ZjVkODNlMDE1ZWY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBNb24sIDMgT2N0IDIwMTYgMDE6NDY6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzE2OTogQmUgcmlnb3JvdXMgd2l0aCBTQUZFUiBwZXJtaXNzaW9ucwotCi1PbmNlIHdlJ3ZlIG9wZW5lZCBvdXIgaW5wdXQgZmlsZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGVuZm9yY2UgdGhlIFNBRkVSCi1ydWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc3Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL3pmaWxlLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BzaS96ZmlsZS5jIGIvcHNpL3pmaWxlLmMKLWluZGV4IGI2Y2FlYTIuLjJjNmM5NTggMTAwNjQ0Ci0tLS0gYS9wc2kvemZpbGUuYwotKysrIGIvcHNpL3pmaWxlLmMKLUBAIC0xMDgxLDYgKzEwODEsOSBAQCBsaWJfZmlsZV9vcGVuKGdzX2ZpbGVfcGF0aF9wdHIgIGxpYl9wYXRoLCBjb25zdCBnc19tZW1vcnlfdCAqbWVtLCBpX2N0eF90ICppX2N0eAotICAgICBnc19tYWluX2luc3RhbmNlICptaW5zdCA9IGdldF9taW5zdF9mcm9tX21lbW9yeShtZW0pOwotICAgICBpbnQgY29kZTsKLSAKLSsgICAgaWYgKGlfY3R4X3AgJiYgc3RhcnRpbmdfYXJnX2ZpbGUpCi0rICAgICAgICBpX2N0eF9wLT5zdGFydGluZ19hcmdfZmlsZSA9IGZhbHNlOwotKwotICAgICAvKiB3aGVuIHN0YXJ0aW5nIGFyZyBmaWxlcyAoQCBmaWxlcykgaW9kZXZfZGVmYXVsdCBpcyBub3QgeWV0IHNldCAqLwotICAgICBpZiAoaW9kZXYgPT0gMCkKLSAgICAgICAgIGlvZGV2ID0gKGd4X2lvX2RldmljZSAqKWd4X2lvX2RldmljZV90YWJsZVswXTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKaW5kZXggZTI4YTk0OS4uYjRjMTRlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKQEAgLTEyLDExICsxMiwxMiBAQAogIyBTdW1tYXJ5OiBHZW5lcmF0ZSBhcmNoLmggZm9yIHBwYzMyCiAjCiAKLWRpZmYgLU5ydSBnaG9zdHNjcmlwdC04LjY0Lm9yaWcvYmFzZS9saWIubWFrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCi0tLS0gZ2hvc3RzY3JpcHQtOC42NC5vcmlnL2Jhc2UvbGliLm1hawkyMDEwLTAyLTEwIDEwOjMwOjAyLjAwMDAwMDAwMCArMDgwMAotKysrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCTIwMTAtMDItMTAgMTA6NTY6MjEuMDAwMDAwMDAwICswODAwCi1AQCAtNjcsOCArNjcsOCBAQAotIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmggJChzdGRwbl9oKQorSW5kZXg6IGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2hvc3RzY3JpcHQtOS4yMS5vcmlnL2Jhc2UvbGliLm1haworKysrIGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCitAQCAtNzMsOCArNzMsOCBAQCBhcmNoX2g9JChHTEdFTilhcmNoLmgKKyBzdGRwcmVfaD0kKEdMU1JDKXN0ZHByZS5oCiAgc3RkaW50X19oPSQoR0xTUkMpc3RkaW50Xy5oICQoc3RkX2gpCiAgCiAtJChHTEdFTilhcmNoLmggOiAkKEdFTkFSQ0hfWEUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKaW5kZXggYmY5ODVjNC4uNTBlYzdlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpAQCAtMzIsNyArMzIsNiBAQAogICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc3LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNTk1MS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTc1LnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCmluZGV4IDIyMmZjOWQuLmFiNzBlYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgpAQCAtNyw2ICs3LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCiBTUkNSRVYgPSAiNDY2OTVkODFkMWZhZTkwNWEyNzBmYjdkYjhhNGQxMWEzMzQ1NjJmZSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2V4YW1wbGUiCiBHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9oZWxsbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Y2UyMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHTlUgZ3BlcmYgaXMgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZ2VuZXJhdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dwZXJmIgotU1VNTUFSWSAgPSAiR2VuZXJhdGUgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZnJvbSBhIHNldCBvZiBrZXl3b3JkcyIKLUxJQ0VOU0UgID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmNjO2JlZ2lubGluZT04O2VuZGxpbmU9MTk7bWQ1PWRlYzhmNjExODQ1ZDA0NzM4N2VkNTZiNWI4NWZhOTliIgotCi1TUkNfVVJJICA9ICIke0dOVV9NSVJST1J9L2dwZXJmL2dwZXJmLSR7UFZ9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBhdXRvcmVjb25mIGNvdWxkbid0IGZpbmQgYWNpbmNsdWRlLm00IHdoZW4gc3RlcHBpbmcgaW50byBzdWJkaXJlY3RvcnkuIEluc3RlYWQgb2YKLSMgZHVwbGljYXRpbmcgYWNpbmNsdWRlLm00IGluIGV2ZXJ5IHN1YmRpcmVjdG9yeSwgdXNlIGFic29sdXRlIGluY2x1ZGUgcGF0aCB0byBhY2xvY2FsCi1FWFRSQV9BVVRPUkVDT05GICs9ICIgLUkgJHtTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgY2F0ICR7U30vYWNsb2NhbC5tNCA+ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgppbmRleCA5NDI4MjBiLi5mNjFiMmEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgpAQCAtMSw1ICsxLDE4IEBACi1yZXF1aXJlIGdwZXJmLmluYworREVTQ1JJUFRJT04gPSAiR05VIGdwZXJmIGlzIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGdlbmVyYXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ncGVyZiIKK1NVTU1BUlkgID0gIkdlbmVyYXRlIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGZyb20gYSBzZXQgb2Yga2V5d29yZHMiCitMSUNFTlNFICA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jYztiZWdpbmxpbmU9ODtlbmRsaW5lPTE5O21kNT1kZWM4ZjYxMTg0NWQwNDczODdlZDU2YjViODVmYTk5YiIKIAotCitTUkNfVVJJICA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiOWUyNTFjMGE2MThhZDA4MjRiNTExMTdkNWQ5ZGI4N2UiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg4NTQ2Yjk0NWJiYTRiNzBiNmEzYTYxNmU4MGI0YWI0NjZlM2YzMzAyNGEzNTJmYzIxOTgxMTJjZGJiM2FlMiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBUaGUgbmVzdGVkIGNvbmZpZ3VyZXMgZG9uJ3QgZmluZCB0aGUgcGFyZW50IGFjbG9jYWwubTQgb3V0IG9mIHRoZSBib3gsIHNvIHRlbGwKKyMgaXQgd2hlcmUgdG8gbG9vayBleHBsaWNpdGx5IChtaXJyb3JpbmcgdGhlIGJlaGF2aW91ciBvZiB1cHN0cmVhbSdzIE1ha2VmaWxlLmRldmVsKS4KK0VYVFJBX0FVVE9SRUNPTkYgKz0gIiAtSSAke1N9IC0tZXhjbHVkZT1hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgppbmRleCAwNWI2YjkzLi43MTgxMGRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiCkBAIC0xNCw4ICsxNCw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1wZXJsLXJlZ2V4cCIKLQogIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKIGFjcGF0aHMgPSAiLUkgLi9tNCIKIApAQCAtMzYsNiArMzQsOSBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAorUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBlcmwtcmVnZXhwLC0tZGlzYWJsZS1wZXJsLXJlZ2V4cCxsaWJwY3JlIgorCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImdyZXAgZWdyZXAgZmdyZXAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQ1YTE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA1ZjcxMjYyMTgyOWVkODFhNzU4MDc3NDMxMjI2YTg2ZGYzN2ZiYzNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci1EYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6MDU6NTAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3ppcDogcG9ydCB6ZGlmZiwgemxlc3MgdG8gQnVzeWJveAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IERlbnlzIFphZ29ydWkgKEJ1ZyMyNjA4OCkuCi0qIHRlc3RzL3pkaWZmOiBDaGVjayB0aGF0IGRpZmYgdXNlcyBQT1NJWC1mb3JtYXQgb3V0cHV0LgotKiB6bGVzcy5pbiAobGVzc192ZXJzaW9uKTogRG9uJ3QgZXhpdCBtZXJlbHkgYmVjYXVzZSAnbGVzcyAtVicKLWZhaWxzOyBpbnN0ZWFkLCBhc3N1bWUgJ2xlc3MnIGlzIGNvbXBhdGlibGUgd2l0aCBhbiBvbGQgdmVyc2lvbiBvZgotdGhlIG9yaWdpbmFsICdsZXNzJy4gIEJ1c3lib3ggJ2xlc3MgLVYnIGZhaWxzLCBidXQgYXBwYXJlbnRseSBpdHMKLSdsZXNzJyB3b3JrcyBhbnl3YXkgc29tZWhvdy4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIHRlc3RzL3pkaWZmIHwgNCArKystCi0gemxlc3MuaW4gICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy96ZGlmZiBiL3Rlc3RzL3pkaWZmCi1pbmRleCAwYmI3YzdkLi45Y2Q0ZmQ0IDEwMDc1NQotLS0tIGEvdGVzdHMvemRpZmYKLSsrKyBiL3Rlc3RzL3pkaWZmCi1AQCAtMjIsNyArMjIsNiBAQAotIAotIGVjaG8gYSA+IGEgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi0gZWNobyBiID4gYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLS1nemlwIGEgYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSAKLSBjYXQgPDxFT0YgPiBleHAKLSAxYzEKLUBAIC0zMSw3ICszMCwxMCBAQCBjYXQgPDxFT0YgPiBleHAKLSA+IGIKLSBFT0YKLSAKLStkaWZmIGEgYiB8IGRpZmYgZXhwIC0gfHwgc2tpcF8gImRpZmYgb3V0cHV0IGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBQT1NJWCIKLSsKLSBmYWlsPTAKLStnemlwIGEgYiB8fCBmYWlsPTEKLSB6ZGlmZiBhLmd6IGIuZ3ogPiBvdXQgMj4mMQotIHRlc3QgJD8gPSAxIHx8IGZhaWw9MQotIAotZGlmZiAtLWdpdCBhL3psZXNzLmluIGIvemxlc3MuaW4KLWluZGV4IGU2MzRhZjYuLjk3NTlhZTYgMTAwNjQ0Ci0tLS0gYS96bGVzcy5pbgotKysrIGIvemxlc3MuaW4KLUBAIC00Nyw3ICs0Nyw3IEBAIGlmIHRlc3QgIiR7TEVTU01FVEFDSEFSUytzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgIGV4cG9ydCBMRVNTTUVUQUNIQVJTCi0gZmkKLSAKLS1sZXNzX3ZlcnNpb249YGxlc3MgLVZgIHx8IGV4aXQKLStsZXNzX3ZlcnNpb249YGxlc3MgLVYgMj4vZGV2L251bGxgCi0gY2FzZSAkbGVzc192ZXJzaW9uIGluCi0gbGVzcycgJzQ1WzEtOV0qIHwgXAotIGxlc3MnICc0WzYtOV1bMC05XSogfCBcCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMTAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjgvd3JvbmctcGF0aC1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1maXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKLQotQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKLXJlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKLWlzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKLWVycm9ycyBhdCBydW4gdGltZSBsaWtlOgotIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKLQotRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKLWluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGd6aXAtMS44L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3ppcC0xLjgub3JpZy9NYWtlZmlsZS5hbQotKysrIGd6aXAtMS44L01ha2VmaWxlLmFtCi1AQCAtODEsOCArODEsNyBAQCBnemlwLmRvYy5nejogZ3ppcC5kb2MgJChiaW5fUFJPR1JBTVMpCi0gU1VGRklYRVMgPSAuaW4KLSAuaW46Ci0gCSQoQU1fVl9HRU4pc2VkIFwKLS0JCS1lICdzfC9iaW4vc2h8JChTSEVMTCl8ZycgXAotLQkJLWUgJ3N8W0BdR1JFUEB8JChHUkVQKXxnJyBcCi0rCQktZSAnc3xbQF1HUkVQQHwkKGJhc2VfYmluZGlyKS9ncmVwfGcnIFwKLSAJCS1lICdzfFtAXVZFUlNJT05AfCQoVkVSU0lPTil8ZycgXAotIAkJJChzcmNkaXIpLyRALmluID4kQC10IFwKLSAJICAmJiBjaG1vZCBhK3ggJEAtdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzN2JjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS93cm9uZy1wYXRoLWZpeC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitmaXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKKworQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKK3JlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKK2lzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKK2Vycm9ycyBhdCBydW4gdGltZSBsaWtlOgorIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKK2luc3RlYWQuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGQ0ZWNjM2YuLmU0NjU3ZDIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC04Miw4ICs4Miw3IEBAIFNVRkZJWEVTID0gLmluCisgLmluOgorIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgXAorICAgICAgICAgICAmJiBzZWQgXAorLQkJLWUgJ3N8L2Jpbi9zaHwkKFNIRUxMKXxnJyBcCistCQktZSAnc3xbQF1HUkVQQHwkKEdSRVApfGcnIFwKKysJCS1lICdzfFtAXUdSRVBAfCQoYmFzZV9iaW5kaXIpL2dyZXB8ZycgXAorIAkJLWUgJ3N8W0BdVkVSU0lPTkB8JChWRVJTSU9OKXxnJyBcCisgCQkkKHNyY2RpcikvJEAuaW4gPiRALXQgXAorIAkgICYmIGNobW9kIGE9cnggJEAtdCBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA5MzIwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1yZXF1aXJlIGd6aXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nemlwLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMDttZDU9NmU0N2NhYWE2MzBlMGM4YmY5ZjFiYzhkOTRhOGVkMGUiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd6aXAtcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LwotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cwotCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKLQlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCi0gICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKLSAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCi0gICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZWViYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKQEAgLTAsMCArMSwzOCBAQAorcmVxdWlyZSBnemlwLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2d6aXAvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3ppcC5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjA7bWQ1PTZlNDdjYWFhNjMwZTBjOGJmOWYxYmM4ZDk0YThlZDBlIgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2J1aWxkLWF1eC8KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzCisJc2VkIC1lICdzL15hYnNfc3JjZGlyID0gLi4qL2Fic19zcmNkaXIgPSBcLlwuLycgXAorICAgICAgICAgICAgLWUgJ3MvXnRvcF9zcmNkaXIgPSAuLiovdG9wX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9eR1JFUCA9IC4uKi9HUkVQID0gZ3JlcC8nICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15BV0sgPSAuLiovQVdLID0gYXdrLycgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IC4uKi9zcmNkaXIgPSBcLi8nICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9eTWFrZWZpbGU6IC4uKi9NYWtlZmlsZTogLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnICAgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICR7Qn0vdGVzdHMvTWFrZWZpbGUgPiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMvTWFrZWZpbGUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjkyOWQ2YTZiODMyZjc1YjI4ZTNlZWVhZmIzMGMxZDliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkMmQzYTM0MzJlZjMyZjI0Y2RiMDYwZDI3ODgzNDUwN2I0ODFhNzVhZGVjYTE4ODUwYzczNTkyZjc3OGY2YWQiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmMWI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTIzMzAwNmVlMjEyMTA5ZDJhMTQwMWRhYzM3YTlhODUxY2M0OTNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTQgRGVjIDIwMTcgMTU6MjM6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2lwZXIuc2g6IGZpeCBzdGF0IHBhdGgKKworRml4IHRoZSBzdGF0IHBhdGggZm9yIE9FLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB3aXBlci93aXBlci5zaCB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2lwZXIvd2lwZXIuc2ggYi93aXBlci93aXBlci5zaAoraW5kZXggNzllZGRjOC4uOWVmMjg0MCAxMDA3NTUKKy0tLSBhL3dpcGVyL3dpcGVyLnNoCisrKysgYi93aXBlci93aXBlci5zaAorQEAgLTk3LDcgKzk3LDYgQEAgZnVuY3Rpb24gZmluZF9wcm9nKCl7CisgaGFzaCAtciAgIyMgUmVmcmVzaCBiYXNoJ3MgY2FjaGVkIFBBVEggZW50cmllcworIEhEUEFSTT1gZmluZF9wcm9nIC9zYmluL2hkcGFybWAJfHwgZXhpdCAxCisgRklORD1gZmluZF9wcm9nIC91c3IvYmluL2ZpbmRgCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyBHQVdLPWBmaW5kX3Byb2cgL3Vzci9iaW4vZ2F3a2AJfHwgZXhpdCAxCisgQkxLSUQ9YGZpbmRfcHJvZyAvc2Jpbi9ibGtpZGAJfHwgZXhpdCAxCisgR1JFUD1gZmluZF9wcm9nIC9iaW4vZ3JlcGAJfHwgZXhpdCAxCitAQCAtMTA1LDcgKzEwNCw3IEBAIElEPWBmaW5kX3Byb2cgL3Vzci9iaW4vaWRgCXx8IGV4aXQgMQorIExTPWBmaW5kX3Byb2cgL2Jpbi9sc2AJCXx8IGV4aXQgMQorIERGPWBmaW5kX3Byb2cgL2Jpbi9kZmAJCXx8IGV4aXQgMQorIFJNPWBmaW5kX3Byb2cgL2Jpbi9ybWAJCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKytTVEFUPWBmaW5kX3Byb2cgL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyAKKyBbICR2ZXJib3NlIC1ndCAxIF0gJiYgSERQQVJNPSIkSERQQVJNIC0tdmVyYm9zZSIKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlmZGM5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCi1ERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKLWFuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgotTElDRU5TRV93aXBlciA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCi0KLQotUEFDS0FHRVMgPSsgIndpcGVyIgotCi1GSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCi0KLVJERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDEwNTM5ZDBiZjNjYzI0NzE4MTU5NDU4MWVkYmZiNTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM0MjljZDQyM2UyNzFmYTU2NWJmNTg0NTk4ZmQ3NTFkZDJlNzczYmI3MTk5YTU5MmIwNmI1YTYxY2VjNGZiNiIKLQotRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCi0JY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzNlYzVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCitERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKK2FuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgorTElDRU5TRV93aXBlciA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCisKKworUEFDS0FHRVMgPSsgIndpcGVyIgorCitGSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCisKK1JERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBjb3JldXRpbHMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vd2lwZXIuc2gtZml4LXN0YXQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWU1NGI1MmUwYzhjYjc5Mzg5ZDRkNDdlYWNiYTQxMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY3M2Y1OTFkZjY5MTZjNmExZmFlYzA3MDY5YTdlYjFjYjhlZTMwNzYxNWE2MTVkODA4MTkyZmIwYzAyNjVlNSIKKworRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCisJY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmODVhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbAotCi1EZWZpbmUgYWRkaXRpb25hbCBUQ09QVFMgaWYgbm90IHRoZXJlCi11X2luaXRYIHR5cGVzIGFyZSBpbiBzeXMvdHlwZXMuaCBiZSBleHBsaWNpdCBhYm91dCBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIGlwdGFibGVzLTEuNi4wLW9yaWdpbi9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMgaXB0YWJsZXMtMS42LjAvZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTA5IDE0OjU1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGlwdGFibGVzLTEuNi4wL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTI5IDE0OjQ0OjMyLjU4NTMyNzA3NyArMDIwMAotQEAgLTEyLDYgKzEyLDIxIEBACi0gI2lmbmRlZiBUQ1BPUFRfTUQ1U0lHCi0gIwlkZWZpbmUgVENQT1BUX01ENVNJRyAxOQotICNlbmRpZgotKyNpZm5kZWYgVENQT1BUX01BWFNFRwotKyNkZWZpbmUgVENQT1BUX01BWFNFRyAyCi0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfV0lORE9XCi0rI2RlZmluZSBUQ1BPUFRfV0lORE9XIDMKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLX1BFUk1JVFRFRAotKyNkZWZpbmUgVENQT1BUX1NBQ0tfUEVSTUlUVEVEIDQKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLCi0rI2RlZmluZSBUQ1BPUFRfU0FDSyA1Ci0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfVElNRVNUQU1QCi0rI2RlZmluZSBUQ1BPUFRfVElNRVNUQU1QIDgKLSsjZW5kaWYKLSAKLSBlbnVtIHsKLSAJT19TVFJJUF9PUFRJT04gPSAwLAotZGlmZiAtTmF1ciBpcHRhYmxlcy0xLjYuMC1vcmlnaW4vaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgJMjAxNS0xMi0wOSAxNDo1NTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCTIwMTUtMTItMjkgMTQ6NDA6MjEuMjUwNDY5MTk1ICswMjAwCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgX0lQVEFCTEVTX0gKLSAjZGVmaW5lIF9JUFRBQkxFU19ICi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlZTI5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMTk1OTM0OTFmNDNiNzBjMWE3MWMzYjliOGY0ZmY0ZmQxNDUwMDAxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBNYXIgMjAxMiAxNDoyNzoyMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0eXBlcy5oOiBhZGQgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgaWZfcGFja2V0LmgKLQotVGhlIGlwdGFibGVzIGxvY2FsIGxpbnV4L3R5cGVzLmggb3ZlcnJpZGVzIHRoZSBrZXJuZWwvc3lzcm9vdAotdHlwZXMuaC4gQXMgc3VjaCwgd2UgbmVlZCB0byBwcm92aWRlIHNvbWUgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZAotdG8gYnVpbGQgYWdhaW5zdCAzLjIrIGtlcm5lbCBoZWFkZXJzLgotCi1pZm5kZWYgcHJvdGVjdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGRlZmluZXMgdG8gZW5zdXJlIHRoYXQKLWNvbmZpZ3VyYXRpb24gdGhhdCBhbHJlYWR5IGhhdmUgdGhlc2UgZGVmaW5lcyBhcmUgc3RpbGwgYnVpbGRhYmxlLgotCi1UaGlzIGNvbW1pdCBpcyB0ZW1wb3JhcnkgdW50aWwgYSBuZXcgdmVyc2lvbiBvZiBpcHRhYmxlcyBjYW4gYmUKLXVzZWQgdGhhdCBjb250YWlucyB0aGUgZGVmaW5lcy4KLQotVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBjb21taXQgaW4gdGhlIGlwdGFibGVzIGdpdCByZXBvc2l0b3J5OgotCi0gIGh0dHBzOi8vZ2l0Lm5ldGZpbHRlci5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9aXB0YWJsZXMuZ2l0O2E9Y29tbWl0O2g9ZGJlNzdjYzk3NGNlZTY1NmVhZTM3ZTc1MDM5ZGQxYTQxMGE0NTM1YgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5jbHVkZS9saW51eC90eXBlcy5oIHwgICAxMCArKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90eXBlcy5oIGIvaW5jbHVkZS9saW51eC90eXBlcy5oCi1pbmRleCA4YjQ4M2M4Li5lYmY2NDMyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC90eXBlcy5oCi0rKysgYi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgKLUBAIC0zNCw1ICszNCwxNSBAQCB0eXBlZGVmIF9fdTY0IF9fYml0d2lzZSBfX2JlNjQ7Ci0gdHlwZWRlZiBfX3UxNiBfX2JpdHdpc2UgX19zdW0xNjsKLSB0eXBlZGVmIF9fdTMyIF9fYml0d2lzZSBfX3dzdW07Ci0gCi0rI2lmbmRlZiBfX2FsaWduZWRfdTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfdTY0IF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQotKyNlbmRpZgotKyNpZm5kZWYgX19hbGlnbmVkX2JlNjQKLSsjZGVmaW5lIF9fYWxpZ25lZF9iZTY0IF9fYmU2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSsjZW5kaWYKLSsjaWZuZGVmIF9fYWxpZ25lZF9sZTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfbGU2NCBfX2xlNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qICBfX0FTU0VNQkxZX18gKi8KLSAjZW5kaWYgLyogX0xJTlVYX1RZUEVTX0ggKi8KLS0tIAotMS43LjAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3YzU1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCi1maWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMvaXB0YWJsZXMuYztiZWdpbmxpbmU9MTM7ZW5kbGluZT0yNTttZDU9YzVjZmZkMDk5NzQ1NThjZjI3ZDBmNzYzZGYyYTEyZGMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIgotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS94dGFibGVzLyAke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWIzOGEzMzgwNmI2MTgyYzZmNTNkNmFmYjQ2MTlhZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZjMmQ3YmQ1ZDdiZTExMzExNzI2NDY2Nzg5ZDRjNjVmYjRjOGUwOTZjOTE4MmI1NmNlOTc0NDA4NjRmMGNmNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLSMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKLVBBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLQotIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCi1QQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcwotCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgotCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGE4M2QyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBrZXJuZWwgcGFja2V0IGZpbHRlcmluZyBjYXBhYmlsaXRpZXMiCitERVNDUklQVElPTiA9ICJpcHRhYmxlcyBpcyB0aGUgdXNlcnNwYWNlIGNvbW1hbmQgbGluZSBwcm9ncmFtIHVzZWQgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIG5ldHdvcmsgcGFja2V0IFwKK2ZpbHRlcmluZyBjb2RlIGluIExpbnV4LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5uZXRmaWx0ZXIub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUiCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3h0YWJsZXMvICR7ZGF0YWRpcn0veHRhYmxlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtbGlibmZuZXRsaW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLW9ubHktY2hlY2stY29ubnRyYWNrLXdoZW4tbGlibmZuZXRsaW5rLWVuYWJsZWQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2QyYjc4NDdlNGFhODgzMmExODQzN2I4YTRjMTg3M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVkMDJkZmE0NjI2MzM0M2E0MDFmMjk3ZDQ0MTkwZjJhM2U1MTEzYzg5MzM5NDZmMDk0ZWQ0MDIzNzA1MzczMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICIKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKKyMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKKworIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCitQQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcworCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgorCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOGNmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaApAQCAtMCwwICsxLDk1IEBACitGcm9tIGM2YzU5NjZkOWZhZTI3YmMyZjBhMzRhYjU5Yjk5OTU1NTExMWJkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcmljIEJlbHNpdG8gPGxsdWl4aGlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBPY3QgMjAxNyAyMzoxNzowMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gTVVTTAorCitBZGQgbWlzc2luZyBBSV9JRE4gYW5kIE5JX0lETiBkZWNsYXJhdGlvbnMuCisKK0J1ZzogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNTAzOTE0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBhcnBpbmcuYyAgICAgIHwgIDcgKysrKysrKworIHBpbmcuaCAgICAgICAgfCAxMSArKysrKysrKysrKworIHRyYWNlcGF0aC5jICAgfCAgOCArKysrKysrKworIHRyYWNlcm91dGU2LmMgfCAgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hcnBpbmcuYyBiL2FycGluZy5jCitpbmRleCAxYTNmNDBiLi41MzFkMjlkIDEwMDY0NAorLS0tIGEvYXJwaW5nLmMKKysrKyBiL2FycGluZy5jCitAQCAtNDUsNiArNDUsMTMgQEAgc3RydWN0IHN5c2ZzX2RldmF0dHJfdmFsdWVzOworICNpZmRlZiBVU0VfSUROCisgI2luY2x1ZGUgPGlkbmEuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisrCisrI2lmbmRlZiBBSV9JRE4KKysjZGVmaW5lIEFJX0lETiAweDAwNDAKKysjZW5kaWYKKysjaWZuZGVmIEFJX0NBTk9OSUROCisrI2RlZmluZSBBSV9DQU5PTklETiAweDAwODAKKysjZW5kaWYKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSAiU05BUFNIT1QuaCIKK2RpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKK2luZGV4IDc0OWYzZmYuLjIyNzMxNWYgMTAwNjQ0CistLS0gYS9waW5nLmgKKysrKyBiL3BpbmcuaAorQEAgLTM4LDYgKzM4LDE3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPHN0cmluZ3ByZXAuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgQUlfQ0FOT05JRE4KKysjZGVmaW5lIEFJX0NBTk9OSUROIDB4MDA4MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgorICNlbHNlCitkaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYworaW5kZXggNzRhODI5ZC4uZGNlYzViOSAxMDA2NDQKKy0tLSBhL3RyYWNlcGF0aC5jCisrKysgYi90cmFjZXBhdGguYworQEAgLTMwLDYgKzMwLDE0IEBACisgI2lmZGVmIFVTRV9JRE4KKyAjaW5jbHVkZSA8aWRuYS5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCitkaWZmIC0tZ2l0IGEvdHJhY2Vyb3V0ZTYuYyBiL3RyYWNlcm91dGU2LmMKK2luZGV4IDQ4ZmM1YzUuLjhkMWVlYmYgMTAwNjQ0CistLS0gYS90cmFjZXJvdXRlNi5jCisrKysgYi90cmFjZXJvdXRlNi5jCitAQCAtMjUxLDYgKzI1MSwxMCBAQAorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGVmMDdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotRnJvbSBiZTBiYjgxZDcyZmVhNGQyMGRhNzRmNGYyMjM2YWExNDU2ODRmMzMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKYW4gMjAxNiAxNDoxNDoyMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggaGVhZGVyIGluY2x1c2lvbiBmb3IgbXVzbAotCi1GaXggZXJyb3JzIGUuZy4KLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRyYWNlcGF0aC5jOjE3OjA6Ci0vdXNyL2luY2x1ZGUvbGludXgvZXJycXVldWUuaDozMzoxODoKLWVycm9yOiBhcnJheSB0eXBlIGhhcyBpbmNvbXBsZXRlIGVsZW1lbnQgdHlwZSAnc3RydWN0IHRpbWVzcGVjJwotICBzdHJ1Y3QgdGltZXNwZWMgdHNbM107Ci0gICAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzogSW4gZnVuY3Rpb24gJ21haW4nOgotdHJhY2VwYXRoLmM6MzI5OjE2OiBlcnJvcjogJ0lOVF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzCi1mdW5jdGlvbikKLSAgICAgIG92ZXJoZWFkLCBJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzozMjk6MTY6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkKLW9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgotTWFrZWZpbGU6MTMxOiByZWNpcGUgZm9yIHRhcmdldCAndHJhY2VwYXRoLm8nIGZhaWxlZAotbWFrZTogKioqIFt0cmFjZXBhdGgub10gRXJyb3IgMQotCi1waW5nX2NvbW1vbi5jOiBJbiBmdW5jdGlvbiAnbWFpbl9sb29wJzoKLXBpbmdfY29tbW9uLmM6NzU2OjE1OiBlcnJvcjogJ0haJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcwotZnVuY3Rpb24pCi0gICAgaWYgKDEwMDAgJSBIWiA9PSAwID8gbmV4dCA8PSAxMDAwIC8gSFogOiAobmV4dCA8IElOVF9NQVggLyBIWiAmJgotbmV4dCAqIEhaIDw9IDEwMDApKSB7Ci0KLXByb3RvY29scy90aW1lZC5oIGlzIG5vdCBuZWVkZWQgYW5kIGlzIGFic2VudCBpbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gY2xvY2tkaWZmLmMgICB8IDEgLQotIHBpbmdfY29tbW9uLmMgfCAxICsKLSB0cmFjZXBhdGguYyAgIHwgMiArKwotIHRyYWNlcGF0aDYuYyAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2xvY2tkaWZmLmMgYi9jbG9ja2RpZmYuYwotaW5kZXggN2MxZWExYi4uMWQ2MzQxZSAxMDA2NDQKLS0tLSBhL2Nsb2NrZGlmZi5jCi0rKysgYi9jbG9ja2RpZmYuYwotQEAgLTE0LDcgKzE0LDYgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KLSAjZGVmaW5lIFRTUFRZUEVTCi0tI2luY2x1ZGUgPHByb3RvY29scy90aW1lZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLWRpZmYgLS1naXQgYS9waW5nX2NvbW1vbi5jIGIvcGluZ19jb21tb24uYwotaW5kZXggN2Y4Mjg1MS4uM2NlNjk5ZCAxMDA2NDQKLS0tLSBhL3BpbmdfY29tbW9uLmMKLSsrKyBiL3BpbmdfY29tbW9uLmMKLUBAIC0yLDYgKzIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzY2hlZC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BhcmFtLmg+Ci0gCi0gaW50IG9wdGlvbnM7Ci0gCi1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYwotaW5kZXggODllNmQxNi4uYzlkNmRkZCAxMDA2NDQKLS0tLSBhL3RyYWNlcGF0aC5jCi0rKysgYi90cmFjZXBhdGguYwotQEAgLTEyLDYgKzEyLDggQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VycnF1ZXVlLmg+Ci1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoNi5jIGIvdHJhY2VwYXRoNi5jCi1pbmRleCAxMjZmYWRmLi45ZDU3NDVjIDEwMDY0NAotLS0tIGEvdHJhY2VwYXRoNi5jCi0rKysgYi90cmFjZXBhdGg2LmMKLUBAIC0xMiw2ICsxMiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2ljbXA2Lmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhMDFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1JbnRpYWxpemUtc3RydWN0LWVsZW1lbnRzLWJ5LW5hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDAwMDYyOWY3NDkwOGEyYTk1ZjYxMDQ0NDRjNzdhZDkzY2Y0MGQ2MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAwODo1MDo1MCArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbnRpYWxpemUgc3RydWN0IGVsZW1lbnRzIGJ5IG5hbWUKLQotbWFrZXMgaXQgcG9ydGFibGUgYWNyb3NzIGdsaWJjIGFuZCBtdXNsCi0KLUZpeGVzIGVycm9ycwotCi18IHBpbmcuYzogSW4gZnVuY3Rpb24gJ3NlbmRfcHJvYmUnOgotfCBwaW5nLmM6NzM1OjE5OiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlcgotd2l0aG91dCBhIGNhc3QgWy1XaW50LWNvbnZlcnNpb25dCi18ICAgICAgICAgICAmaW92LCAxLCAmY21zZywgMCwgMCB9OwotfCAgICAgICAgICAgICAgICAgICAgXgotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgcGluZy5jOjczNToxOTogZXJyb3I6IGluaXRpYWxpemVyIGVsZW1lbnQgaXMgbm90IGNvbXB1dGFibGUgYXQgbG9hZAotdGltZQotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgbWFrZTogKioqIFtwaW5nLm9dIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwaW5nLmMgfCAxMSArKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9waW5nLmMgYi9waW5nLmMKLWluZGV4IDQ5ODk3NjAuLmU2N2YzODEgMTAwNjQ0Ci0tLS0gYS9waW5nLmMKLSsrKyBiL3BpbmcuYwotQEAgLTczMSw4ICs3MzEsMTUgQEAgaW50IHNlbmRfcHJvYmUoKQotIAotIAlkbyB7Ci0gCQlzdGF0aWMgc3RydWN0IGlvdmVjIGlvdiA9IHtvdXRwYWNrLCAwfTsKLS0JCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7ICZ3aGVyZXRvLCBzaXplb2Yod2hlcmV0byksCi0tCQkJCQkJICAgJmlvdiwgMSwgJmNtc2csIDAsIDAgfTsKLSsJCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7Ci0rCQkJLm1zZ19uYW1lID0gJndoZXJldG8sCi0rCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHdoZXJldG8pLAotKwkJCS5tc2dfaW92ID0gJmlvdiwKLSsJCQkubXNnX2lvdmxlbiA9IDEsCi0rCQkJLm1zZ19jb250cm9sID0gJmNtc2csCi0rCQkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCQkubXNnX2ZsYWdzPSAwLAotKwkJfTsKLSAJCW0ubXNnX2NvbnRyb2xsZW4gPSBjbXNnX2xlbjsKLSAJCWlvdi5pb3ZfbGVuID0gY2M7Ci0gCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1NjI3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1hcnBpbmc6IGZpeCBhcnBpbmcgaGFuZyBpZiBTSUdBTFJNIGlzIGJsb2NrZWQKLQotVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkgY2FuIHByZXZlbnQKLXJlY3Zmcm9tKCkgZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlIGluaGVyaXRlZCBwcm9jbWFzayBpcwotYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0IGlzIHJlY2VpdmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBSdWkgUHJpb3IgPHJwcmlvckBkY2MuZmMudXAucHQ+Ci1SSC1CdWd6aWxsYTogIzEwODU5NzEKLVNpZ25lZC1vZmYtYnk6IEphbiBTeW5hY2VrIDxqc3luYWNla0ByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXJwaW5nLmMub3JpZyBiL2FycGluZy5jCi1pbmRleCAzNTQwOGMxLi4yMDk4MTU5IDEwMDY0NAotLS0tIGEvYXJwaW5nLmMub3JpZwotKysrIGIvYXJwaW5nLmMKLUBAIC0xMjE1LDE2ICsxMjE1LDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJc29ja2xlbl90IGFsZW4gPSBzaXplb2YoZnJvbSk7Ci0gCQlpbnQgY2M7Ci0gCi0rCQlzaWdlbXB0eXNldCgmc3NldCk7Ci0rCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOwotKwkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOwotKwkJLyogVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkKLSsJCSAqIGNhbiBwcmV2ZW50IHJlY3Zmcm9tIGZyb20gYmxvY2tpbmcgZm9yZXZlciBpbiBjYXNlIHRoZQotKwkJICogaW5oZXJpdGVkIHByb2NtYXNrIGlzIGJsb2NraW5nIFNJR0FMUk0gYW5kIG5vIHBhY2tldAotKwkJICogaXMgcmVjZWl2ZWQuICovCi0rCQlzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCi0gCQlpZiAoKGNjID0gcmVjdmZyb20ocywgcGFja2V0LCBzaXplb2YocGFja2V0KSwgMCwKLSAJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmYWxlbikpIDwgMCkgewotIAkJCXBlcnJvcigiYXJwaW5nOiByZWN2ZnJvbSIpOwotIAkJCWNvbnRpbnVlOwotIAkJfQotIAotLQkJc2lnZW1wdHlzZXQoJnNzZXQpOwotLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdBTFJNKTsKLS0JCXNpZ2FkZHNldCgmc3NldCwgU0lHSU5UKTsKLS0JCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzc2V0LCBOVUxMKTsKLSAJCXJlY3ZfcGFjayhwYWNrZXQsIGNjLCAoc3RydWN0IHNvY2thZGRyX2xsICopJmZyb20pOwotIAkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZvc3NldCwgTlVMTCk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdGFyZ2V0cy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYjU1NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9NYWtlZmlsZQotKysrIGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVuZGlmCi0gZW5kaWYKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1JUFY0X1RBUkdFVFM9dHJhY2VwYXRoIHBpbmcgY2xvY2tkaWZmIHJkaXNjIGFycGluZyB0ZnRwZCByYXJwZAotK0lQVjRfVEFSR0VUUz10cmFjZXBhdGggcGluZyBjbG9ja2RpZmYgYXJwaW5nCi0gSVBWNl9UQVJHRVRTPXRyYWNlcGF0aDYgdHJhY2Vyb3V0ZTYgcGluZzYKLSBUQVJHRVRTPSQoSVBWNF9UQVJHRVRTKSAkKElQVjZfVEFSR0VUUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3VzZV9nZXRob3N0YnluYW1lMi5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2IxODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gb3RoZXIgZGlzdHJvIERlYmlhbl0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy90cmFjZXBhdGguYwotKysrIGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi1AQCAtMzcwLDkgKzM3MCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl9Ci0gI2VuZGlmCi0gCi0tCWhlID0gZ2V0aG9zdGJ5bmFtZShwKTsKLSsJaGUgPSBnZXRob3N0YnluYW1lMihhcmd2WzBdLCBBRl9JTkVUKTsKLSAJaWYgKGhlID09IE5VTEwpIHsKLS0JCWhlcnJvcigiZ2V0aG9zdGJ5bmFtZSIpOwotKwkJaGVycm9yKCJnZXRob3N0YnluYW1lMiIpOwotIAkJZXhpdCgxKTsKLSAJfQotIAotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3BpbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdXRpbHMtczIwMTIxMjIxLm9yaWcvcGluZy5jCi0rKysgaXB1dGlscy1zMjAxMjEyMjEvcGluZy5jCi1AQCAtMjc5LDcgKzI3OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNlbHNlCi0gCQkJaWRuID0gdGFyZ2V0OwotICNlbmRpZgotLQkJCWhwID0gZ2V0aG9zdGJ5bmFtZShpZG4pOwotKwkJCWhwID0gZ2V0aG9zdGJ5bmFtZTIoaWRuLCBBRl9JTkVUKTsKLSAJCQlpZiAoIWhwKSB7Ci0gCQkJCWZwcmludGYoc3RkZXJyLCAicGluZzogdW5rbm93biBob3N0ICVzXG4iLCB0YXJnZXQpOwotIAkJCQlleGl0KDIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9uc2dtbHMtcGF0aC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYmY5NDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZpeCBuc2dtbHMgcGF0aCBpc3N1ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWmhhaSBFZHdpbiA8ZWR3aW4uemhhaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBpcHV0aWxzLXMyMDEwMTAwNi9kb2MvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHV0aWxzLXMyMDEwMTAwNi5vcmlnL2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIwOjQyOjI3LjAwMDAwMDAwMCArMDgwMAotKysrIGlwdXRpbHMtczIwMTAxMDA2L2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIxOjAxOjUyLjAwMDAwMDAwMCArMDgwMAotQEAgLTI3LDEwICsyNywxNSBAQAotICMgZG9jYm9vazJtYW4gcHJvZHVjZXMgdXR0ZXJseSB1Z2x5IG91dHB1dCBhbmQgSSBkaWQgbm90IGZpbmQKLSAjIGFueSB3YXkgdG8gY3VzdG9taXplIHRoaXMgYnV0IGhhY2tpbmcgYmFja2VuZCBwZXJsIHNjcmlwdCBhIGxpdHRsZS4KLSAjIFdlbGwsIGhlbmNlLi4uCi0rIyBuc2dtbHMgc2VlbXMgYXBwZW5kIHBhdGggdG8gc2VhcmNoIGRpcmVjdG9yeSBhY2NvcmRpbmcgdG8gdGhlIHN5c2lkIHBhdGguCi0rIyBlLmcuIGlmIGlucHV0IC4uL2luZGV4LmRiLCBpdCB3b3VsZCBzZWFyY2ggJHNlYXJjaF9kaXJlY3RvcnkvLi4vIHJhdGhlciB0aGFuCi0rIyAkc2VhcmNoX2RpcmVjdG9yeSwgd2hpY2ggbGVhZHMgc2VhcmNoaW5nIGZhaWx1cmUuIEZpeGluZyBuc2dtbHMgcHJvYmFibHkKLSsjIGludHJvZHVjZSBzb21lIHNpZGUgZWZmZWN0cywgc28gdXNlIHRoaXMgdWdseSBoYWNrOiBydW5uaW5nIG5zZ21scyBpbiBjdXJyZW50Ci0rIyBkaXJlY3RvcnksIGFuZCBydW5uaW5nIGRvY2Jvb2sybWFuIGluIHRtcCBkaXJlY3RvcnkuCi0gCi0gJChNQU5GSUxFUyk6IGluZGV4LmRiCi0gCUAtbWtkaXIgdG1wLmRiMm1hbgotLQlAc2V0IC1lOyBjZCB0bXAuZGIybWFuOyBuc2dtbHMgLi4vJDwgfCBzZ21sc3BsIC4uL2RvY2Jvb2sybWFuLXNwZWMucGwgOwltdiAkQCAuLgotKwlAc2V0IC1lOyBuc2dtbHMgJDwgPnRtcC5kYjJtYW4vb3V0cHV0OyBjZCB0bXAuZGIybWFuOyBjYXQgb3V0cHV0IHwgc2dtbHNwbCAuLi9kb2Nib29rMm1hbi1zcGVjLnBsIDsJbXYgJEAgLi4KLSAJQC1ybSAtcmYgdG1wLmRiMm1hbgotIAotIGNsZWFuOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRlNmZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAotdHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc2tidWZmLm5ldC9pcHV0aWxzIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zNTttZDU9ZjljZWIyMDE3MzNlOWE2Y2Y4ZjAwNzY2ZGQyNzhkODIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2VwYXRoLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMDttZDU9MGVjZWEyYmY2MGJmZjJmM2Q4NDAwOTZkODc2NDdmM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXJwaW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZmU4NDMwMWI1YzI2NTVjOTUwZjhiOTJhMDU3ZmFmYTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGZ0cGQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT0yODgzNGJmOGE5MWE1YjhhOTI3NTVkYmVlNzA5ZWY5NiAiCi0KLURFUEVORFMgPSAiZ251dGxzIGxpYmNhcCBsaWJnY3J5cHQiCi0KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNrYnVmZi5uZXQvaXB1dGlscy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3RhcmdldHMuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc2dtbHMtcGF0aC1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGFhYTczOTVmMjdkZmY5ZjU3YWUwMTZkNGJjNzUzY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQ5ZjU4ZDcxOTUxZTUyYjQ2NTk1ODI5MTM0ZDRlMzMwNjQyZjUyMmY1MDAyNjkxN2ZhZGMzNDlhNTQ4MjVhMSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiaXB1dGlscy0oP1A8cHZlcj5zXGQrKS50YXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgYWxsCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkjIFNVSUQgcm9vdCBwcm9ncmFtcwotCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCi0JaW5zdGFsbCAtbSA0NTU1IHBpbmc2ICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nNgotCWluc3RhbGwgLW0gNDU1NSB0cmFjZXJvdXRlNiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JaW5zdGFsbCAtbSA0NTU1IGNsb2NrZGlmZiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JIyBPdGhlciBwcm9ncmFtZ3MKLQlmb3IgaSBpbiBhcnBpbmcgdHJhY2VwYXRoIHRyYWNlcGF0aDY7IGRvCi0JICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCWRvbmUKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCi0KLUFMVEVSTkFUSVZFXyR7UE59LXBpbmc2ID0gInBpbmc2IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bpbmc2XSA9ICIke2Jhc2VfYmluZGlyfS9waW5nNiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBpbmcgJHtQTn0tcGluZzYgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXBhdGg2ICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1waW5nICR7UE59LXBpbmc2ICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2VwYXRoNiAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCi0KLUZJTEVTXyR7UE59CT0gIiIKLUZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCi1GSUxFU18ke1BOfS1waW5nNiA9ICIke2Jhc2VfYmluZGlyfS9waW5nNi4ke0JQTn0iCi1GSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgotRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKLUZJTEVTXyR7UE59LXRyYWNlcGF0aDYgPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoNiIKLUZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgotRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI1NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAordHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKKworREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJiZmZjMGU5NTdiOThkNjI2YWI0Y2VhMjE4Yzg5MjUxMjAxNDI1NDQyIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5zXGQrKSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbiIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAnQ0M9JHtDQ30gLURfR05VX1NPVVJDRScgVlBBVEg9IiR7U1RBR0lOR19MSUJESVJ9OiR7U1RBR0lOR19ESVJfSE9TVH0vJHtiYXNlX2xpYmRpcn0iICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gYWxsCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkjIFNVSUQgcm9vdCBwcm9ncmFtcworCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCisJaW5zdGFsbCAtbSA0NTU1IHRyYWNlcm91dGU2ICR7RH0ke2Jhc2VfYmluZGlyfS8KKwlpbnN0YWxsIC1tIDQ1NTUgY2xvY2tkaWZmICR7RH0ke2Jhc2VfYmluZGlyfS8KKwkjIE90aGVyIHByb2dyYW1ncworCWZvciBpIGluIGFycGluZyB0cmFjZXBhdGg7IGRvCisJICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LworCWRvbmUKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCisKK0ZJTEVTXyR7UE59CT0gIiIKK0ZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCitGSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKK0ZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhZTQ4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc180ODcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgotREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAotYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAotcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcwotIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKLSMKLSMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgotIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCi0jIERhdGU6IDEyLzE5LzExCi0jCi0jIEhpIEVsaXphYmV0aCwKLSMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KLSMgVGhhbmtzLAotIwotIyAtLU1hcmsKLSMKLQotTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2M4YmYxODNhODNiMzYyZDM3ZmU5ZWY4ZGYxZmI2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2RjODQ1NWNiMGIyYjY2ZTBjNmI4MTZjMDAxOTdhNzFiZjZkMTc4NzA3OGFkZWVlMGJjZjJhZWE0YjEyNzA2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg2Zjc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgorREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAorYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAorcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcworIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKKyMKKyMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgorIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCisjIERhdGU6IDEyLzE5LzExCisjCisjIEhpIEVsaXphYmV0aCwKKyMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KKyMgVGhhbmtzLAorIworIyAtLU1hcmsKKyMKKworTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMjAxOGI1M2ExZjczMTlhYjU0MzQ5YmFmODBlNmFhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmE0MmNkNGMzODE3NGI3YmQwZDQyNmQ4YTM5ZGYyYmU2YmNjMWVjMTg5NDZhNDY0MjcxMzI5MGY2YmY5YTBiIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZGVzdGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCmluZGV4IGRhZDk2MDEuLjBmOTA0MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCkBAIC0yLDE2ICsyLDE2IEBACiAKIGZyb20gb3BlbmVtYmVkZGVkLCBhZGRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFpby0wLjMuMTA2L01ha2VmaWxlCitJbmRleDogbGliYWlvLTAuMy4xMTAvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhaW8tMC4zLjEwNi5vcmlnL01ha2VmaWxlCTIwMDQtMDItMjYgMDc6MjU6MTAuMDAwMDAwMDAwIC0wODAwCi0rKysgbGliYWlvLTAuMy4xMDYvTWFrZWZpbGUJMjAwNi0xMC0xNCAwOToxOTowNy4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xNSw3ICsxNSw3IEBACistLS0gbGliYWlvLTAuMy4xMTAub3JpZy9NYWtlZmlsZQorKysrIGxpYmFpby0wLjMuMTEwL01ha2VmaWxlCitAQCAtMTUsNyArMTUsNyBAQCBhbGw6CiAgCUAkKE1BS0UpIC1DIHNyYwogIAogIGluc3RhbGw6CiAtCUAkKE1BS0UpIC1DIHNyYyBpbnN0YWxsIHByZWZpeD0kKHByZWZpeCkgaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpIGxpYmRpcj0kKGxpYmRpcikKICsJQCQoTUFLRSkgLUMgc3JjIGluc3RhbGwgcHJlZml4PSQoREVTVERJUikkKHByZWZpeCkgaW5jbHVkZWRpcj0kKERFU1RESVIpJChpbmNsdWRlZGlyKSBsaWJkaXI9JChERVNURElSKSQobGliZGlyKQogIAotIAotIGNsZWFuOgorIGNoZWNrOgorIAlAJChNQUtFKSAtQyBoYXJuZXNzIGNoZWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IDU2ODNkM2MuLmRiOTEzMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC05LDEyICs5LDEyIEBACiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wMwogCi1JbmRleDogbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCitJbmRleDogbGliaWRuLTEuMzMvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWRuLTEuMjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKLUBAIC0zNCw2ICszNCwxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxNykKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgNykKKy0tLSBsaWJpZG4tMS4zMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmlkbi0xLjMzL2NvbmZpZ3VyZS5hYworQEAgLTMzLDYgKzMzLDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE3KQorIEFDX1NVQlNUKExUX1JFVklTSU9OLCAxNikKICBBQ19TVUJTVChMVF9BR0UsIDYpCiAgCiArIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgppbmRleCBiNDU4Nzk5Li4yMzI2MmU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCkBAIC0xMSwzICsxMSw1IEBACiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Y2M5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYjc0MzdhNTAyMDE5MGNmYTg0ZjA5YzQxMmRiMzg5MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ3MmUxMmU0ZjJhZmZmNjdmZDdiOWRmMGEyNGQ3YmE0MmI1YTdjOTIxMWFjNWIzZGNjY2M1Y2Q4YjI4NmYyYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggYTU3NWQwZS4uZTVjYjYwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRkOWI2ZWMzMGI3OGQwMGVhZDBhMjJlYjVkMDQ3ZGNkYmEzN2U5OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ3YzZmMWI0MzMyYTllNDkzNWM0OGNjYTgyNjc4NmE2YjhmZTZmNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTMsNiArMTMsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKICBleHQvc29sdl94Zm9wZW4uYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLS0KQEAgLTIzLDcgKzI0LDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmgKIAogZGlmZiAtLWdpdCBhL2V4dC9DTWFrZUxpc3RzLnR4dCBiL2V4dC9DTWFrZUxpc3RzLnR4dAotaW5kZXggNTg2ZWRhOC4uNDc3YTJlZiAxMDA2NDQKK2luZGV4IGI4OTE3YTIuLmZhYzZjMzIgMTAwNjQ0CiAtLS0gYS9leHQvQ01ha2VMaXN0cy50eHQKICsrKyBiL2V4dC9DTWFrZUxpc3RzLnR4dAogQEAgLTQsNiArNCwxMyBAQCBTRVQgKGxpYnNvbHZleHRfU1JDUwpAQCAtNDEsMTEgKzQyLDExIEBACiAgICAgIFNFVCAobGlic29sdmV4dF9TUkNTICR7bGlic29sdmV4dF9TUkNTfQogICAgICAgICAgcG9vbF9maWxlY29uZmxpY3RzLmMgcmVwb19ycG1kYi5jKQogZGlmZiAtLWdpdCBhL2V4dC9zb2x2X3hmb3Blbi5jIGIvZXh0L3NvbHZfeGZvcGVuLmMKLWluZGV4IGIwNDIxYmYuLjMxMzQ1ZGQgMTAwNjQ0CitpbmRleCAyYzY0YmI2Li5lYjNhM2FkIDEwMDY0NAogLS0tIGEvZXh0L3NvbHZfeGZvcGVuLmMKICsrKyBiL2V4dC9zb2x2X3hmb3Blbi5jCi1AQCAtMTMsNiArMTMsMTAgQEAKLSAjaW5jbHVkZSA8emxpYi5oPgorQEAgLTEyLDYgKzEyLDEwIEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxmY250bC5oPgogIAogKyNpZiAhZGVmaW5lZChIQVZFX0ZVTk9QRU4pICYmICFkZWZpbmVkKEhBVkVfRk9QRU5DT09LSUUpCkBAIC01NSw3ICs1Niw3IEBACiAgI2luY2x1ZGUgInNvbHZfeGZvcGVuLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAKLUBAIC0zOSw3ICs0Myw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKK0BAIC0yMSw3ICsyNSw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKICAJc3NpemVfdCAoKmN3cml0ZSkodm9pZCAqLCBjb25zdCBjaGFyICosIHNpemVfdCksCiAgCWludCAoKmNjbG9zZSkodm9pZCAqKSkKICB7CkBAIC02NCw3ICs2NSw3IEBACiAgICBpZiAoIWNvb2tpZSkKICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gZnVub3Blbihjb29raWUsCi1AQCAtNDgsNyArNTIsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtMzAsNyArMzQsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgICAgKGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCkpTlVMTCwJCQkJCS8qIHNlZWtmbiAqLwogICAgICAgIGNjbG9zZQogICAgICAgICk7CkBAIC03Myw3ICs3NCw3IEBACiAgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgY2lvOwogIAogICAgaWYgKCFjb29raWUpCi1AQCAtNjAsOCArNjQsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtNDIsOCArNDYsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgIGNpby53cml0ZSA9IGN3cml0ZTsKICAgIGNpby5jbG9zZSA9IGNjbG9zZTsKICAgIHJldHVybiAgZm9wZW5jb29raWUoY29va2llLCAqbW9kZSA9PSAndycgPyAidyIgOiAiciIsIGNpbyk7CkBAIC0yNDYsNSArMjQ3LDUgQEAKICsKICsjZW5kaWYKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTRlNWNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAxYzRjOTM1Y2I3M2FjMWNjYjk2OTNkZjFhNTFiYTIxOGEyMmU4Y2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBTZXAgMjAxNyAxMToxNToxNiArMDgwMAotU3ViamVjdDogW1BBVENIXSByZXBvX3JwbWRiLmM6IGluY3JlYXNlIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9wdWxsLzIzMF0KLQotV2UgZW5jb3VudGVyZWQgJ2NvcnJ1cHQgcnBtJyBpc3N1ZXMgd2hlbiBpbnN0YWxsaW5nIGV4dHJlbWUgYmlnIFJQTQotcGFja2FnZXMgbGlrZSB0aGUga2VybmVsLWRldnNyYyBwYWNrYWdlIG9mIFlvY3RvIHByb2plY3QuCi0KLUl0IGNhbiBiZSBmaXhlZCBieSBpbmNyZWFzaW5nIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFIHBlciB0ZXN0LgotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci0tLS0KLSBleHQvcmVwb19ycG1kYi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9yZXBvX3JwbWRiLmMgYi9leHQvcmVwb19ycG1kYi5jCi1pbmRleCBjNzAwMGE5Li43MDAwODM1IDEwMDY0NAotLS0tIGEvZXh0L3JlcG9fcnBtZGIuYwotKysrIGIvZXh0L3JlcG9fcnBtZGIuYwotQEAgLTE3MCw4ICsxNzAsOCBAQAotICNkZWZpbmUgTUFYX1NJR19DTlQJCTB4MTAwMDAwCi0gI2RlZmluZSBNQVhfU0lHX0RTSVpFCQkweDEwMDAwMAotIAotLSNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MTAwMDAwCi0tI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDIwMDAwMDAKLSsjZGVmaW5lIE1BWF9IRFJfQ05UCQkweDIwMDAwMAotKyNkZWZpbmUgTUFYX0hEUl9EU0laRQkJMHg0MDAwMDAwCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgcnBtaGVhZCB7Ci0gICBpbnQgY250OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBlZmI0ZTNhLi45M2I4Y2M5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk5YjEwY2RmNmEwZjhhMjRlMTY3MGMxODEzYjFkOTU2M2FlM2Y1YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg0ZTEyYmY3ZWNlNDkwNzNjNTU5ZGZkNTgwMDUxMzJhNjA5OWE5NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTEsNiArMTEsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmMgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmggfCAxMCArKysrKy0tLS0tCkBAIC0xMDAsNSArMTAxLDUgQEAKICAKICAjaWZuZGVmIFNPTFZfWEZPUEVOX0ZBTExCQUNLX0ZPUEVOQ09PS0lFX0gKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOGY3ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCi0KLURFUEVORFMgPSAiZXhwYXQgemxpYiBycG0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiOGE5ZGRkODhlYjRlMGFiMzUxZWI1NWE1MzE4NmI1ZGM1YWMwODI1IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYlNvbHYuY21ha2UiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwMWNlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKKworREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjY5ZjE4MDM5NzhiYTdhNDZhNTc5MjhmYTRiZTY0MzA3OTI0MTllNGUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgppbmRleCAxNzY1MzQ2Li43ZWM1NGViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKQEAgLTIyLDYgKzIyLDkgQEAKIAogREVQRU5EUyA9ICJwb3B0IGxpYnBhbSBnbGliLTIuMCBweXRob24zIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZyBndGstZG9jCiAKIEVYVFJBX09FTUFLRSA9ICJQWVRIT05fQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKaW5kZXggYjhjN2YzNy4uZjE3YmRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU3YThjOTI1YjkzMTZhNzJiZGM4ZjMyNzg5ZmZlNTZmZGE1YzQ3ODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIyYWZjNWQ5YWFhMjE1YzNjODdiYTIxYzc3ZDQ3ZGE0NGFiM2IxMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjYgQXVnIDIwMTYgMTg6MjA6MzIgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gVXNlIHBrZy1jb25maWcgZm9yIHBjcmUgZGVwZW5kZW5jeSBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0LgpAQCAtNywzMSArNywzNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFkMTcyYTEuLmE5MjM2ZGEgMTAwNjQ0CitpbmRleCA1MzgzY2VjLi5jMjlhOTAyIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zODAsMTEgKzM4MCwxMiBAQCBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCi0gCQkJUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgotIAkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkV0lUSF9QQ1JFL2luY2x1ZGUiCi0gCQllbHNlCi0tCQkJQUNfUEFUSF9QUk9HKFBDUkVDT05GSUcsIHBjcmUtY29uZmlnKQotLQkJCWlmIHRlc3QgeCIkUENSRUNPTkZJRyIgIT0geDsgdGhlbgotLQkJCQlQQ1JFX0xJQj1gJFBDUkVDT05GSUcgLS1saWJzYAotLQkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUENSRUNPTkZJRyAtLWNmbGFnc2AiCi0tCQkJZmkKLSsJCQlQS0dfQ0hFQ0tfTU9EVUxFUyhQQ1JFUEtHLCBbbGlicGNyZV0sIFsKK0BAIC02NTEsMTAgKzY1MSwxOCBAQCBBQ19BUkdfV0lUSChbcGNyZV0sCisgKQorIEFDX01TR19SRVNVTFQoWyRXSVRIX1BDUkVdKQorIAorLWlmIHRlc3QgIiRXSVRIX1BDUkUiICE9IG5vOyB0aGVuCistICBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSB5ZXM7IHRoZW4KKy0gICAgUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgorLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJFdJVEhfUENSRS9pbmNsdWRlIgorK2lmIHRlc3QgIiRXSVRIX1BDUkUiICE9ICJubyI7IHRoZW4KKysgIFBLR19DSEVDS19NT0RVTEVTKFBDUkVQS0csIFtsaWJwY3JlXSwgWwogKwkJCQlQQ1JFX0xJQj0ke1BDUkVQS0dfTElCU30KICsJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAke1BDUkVQS0dfQ0ZMQUdTfSIKLSsJCQldLCBbCisrICBdLCBbCiArCQkJCUFDX01TR19FUlJPUihbcGNyZSBwa2djb25maWcgbm90IGZvdW5kLCBpbnN0YWxsIHRoZSBwY3JlLWRldmVsIHBhY2thZ2Ugb3IgYnVpbGQgd2l0aCAtLXdpdGhvdXQtcGNyZV0pCi0rCQkJXSkKLSAJCWZpCi0gCi0gICBpZiB0ZXN0IHgiJFBDUkVfTElCIiAhPSB4OyB0aGVuCisrICBdKQorKworKyAgaWYgdGVzdCB4IiRQQ1JFX0xJQiIgIT0geDsgdGhlbgorKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCUENSRV0sIFsxXSwgW2xpYnBjcmVdKQorKyAgICBBQ19ERUZJTkUoW0hBVkVfUENSRV9IXSwgWzFdLCBbcGNyZS5oXSkKKysgICAgQUNfU1VCU1QoUENSRV9MSUIpCisgICBlbHNlCisgICAgIEFDX1BBVEhfUFJPRyhbUENSRUNPTkZJR10sIFtwY3JlLWNvbmZpZ10pCisgICAgIGlmIHRlc3QgLW4gIiRQQ1JFQ09ORklHIjsgdGhlbgogLS0gCi0yLjkuMworMi4xNS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGRhMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKLQotU0VDVElPTiA9ICJuZXQiCi1SREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAotICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImExMjhlMWVkYTc2ODk5Y2UzZmQxMTVlZmFlNWZlNjMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjOTcyMjVkZWVhMzNlZWZiYTZkNDE1OGMyY2VmMjc5MTNkNDc1NTMyNjM1MTZiYmU5ZDJlMjc2MGZjNDNhM2YiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCi1QQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKLQkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzQ0NDRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorUkRFUEVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuc2VydmljZSBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTNhOWViNTA3OGY0ODFlM2E4YTFkMGFhYWM4YzNjOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjhhZDVhYWM3NTI5ZDdiOTQ4YjlkN2U4Y2QwYjRhOWUxNzczMDlkODVkNmJmNjUxNmUyOGU2ZTQwZDc0ZjM2IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmYW1dID0gIi0td2l0aC1mYW0sLS13aXRob3V0LWZhbSxnYW1pbiIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2LXByb3BzXSA9ICItLXdpdGgtd2ViZGF2LXByb3BzLC0td2l0aG91dC13ZWJkYXYtcHJvcHMsbGlieG1sMiBzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtbG9ja3NdID0gIi0td2l0aC13ZWJkYXYtbG9ja3MsLS13aXRob3V0LXdlYmRhdi1sb2Nrcyx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICItLXdpdGgtZ2RibSwtLXdpdGhvdXQtZ2RibSxnZGJtIgorUEFDS0FHRUNPTkZJR1ttZW1jYWNoZV0gPSAiLS13aXRoLW1lbWNhY2hlZCwtLXdpdGhvdXQtbWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhNS4xIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCisJI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncworCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQuY29uZiIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgJ15tb2RfKC4qKVwuc28kJywgJ2xpZ2h0dHBkLW1vZHVsZS0lcycsICdMaWdodHRwZCBtb2R1bGUgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjBiMjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/Ci0KLURFUEVORFM9ImNvcmV1dGlscyBwb3B0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCi0jIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCi0jIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCi0jIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCi0JCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgotCi0jIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCi0jIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExGUz0gXAotICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAotIgotCi0jIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKLSMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCi0jIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgotT1NfTkFNRSA9ICJMaW51eCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAotICAgICR7QlBOfS5zZXJ2aWNlIFwKLSAgICAke0JQTn0udGltZXIgXAotIgotCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9Ci0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICBmaQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkwY2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzhlZjI0ZDZmZGRjYzRkZjhlNDEyZGQ3NWM1NTFiNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIyMmNhMDMyZjk5YmU4ZDdhNGE4YzZhZDY5ZjNkY2M0OWI5NTExYmZlMzg0YmQ1YTI3MWViY2Q5YmQzZTUyYyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKKworIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgorIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMRlM9IFwKKyAgICBPU19OQU1FPScke09TX05BTUV9JyBcCisgICAgJ0NDPSR7Q0N9JyBcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKKyIKKworIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCisjIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cworIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KK09TX05BTUUgPSAiTGludXgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICAke0JQTn0uc2VydmljZSBcCisgICAgJHtCUE59LnRpbWVyIFwKKyIKKworTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVMgPz0gImRhaWx5IgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1kgPz0gIjEyaCIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLE9uQ2FsZW5kYXI9LiokLE9uQ2FsZW5kYXI9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU30sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIHNlZCAtaSAtZSAncyxBY2N1cmFjeVNlYz0uKiQsQWNjdXJhY3lTZWM9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX0sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzg1NjEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMU0Igc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCi1MSUNFTlNFID0gIkdQTHYyKyIKLVBSID0gInIyIgotCi1MU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKLUxTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgotTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgotUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKLQotIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCi1SREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1TID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQotCi0JIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAotCi0JbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAotCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTQuMS1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlwcmludGYgImNvcmUtNC4xLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVsc2UKLQkJcHJpbnRmICJjb3JlLTQuMS0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZmkKLQllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCi0JCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWZpCi0JZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCi0JZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0Ci0JZmkKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgotCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0Ci0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKLSAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgotICAgICAgIGRvCi0gICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCi0gICAgICAgZG9uZQotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLQotICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAotICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKLSAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKLSAgICAgICBmaQotCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKLSAgICAgICBmaQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCi0gICAgICAgZmkKLQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKLSAgICAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDgxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCkBAIC0wLDAgKzEsMTM0IEBACitTVU1NQVJZID0gIkxTQiBzdXBwb3J0IGZvciBPcGVuRW1iZWRkZWQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2xzYiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKK0xTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgorTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgorUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKKworIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCitSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKKyAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitTID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQorCisJIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAorCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAorCisJbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAorCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTUuMC1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlwcmludGYgImNvcmUtNS4wLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWVsc2UKKwkJcHJpbnRmICJjb3JlLTUuMC0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZmkKKwllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCisJCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWZpCisJZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCisJZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0CisJZmkKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgorCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0CisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKKyAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgorICAgICAgIGRvCisgICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCisgICAgICAgZG9uZQorCisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKyAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKworICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAorICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKKyAgICAgICBmaQorCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0CisgICAgICAgICAgICAgICBmaQorCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKKyAgICAgICBmaQorICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCisJICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCisgICAgICAgZmkKKworICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMworICAgICAgIGZpCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKwkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKKyAgICAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaAppbmRleCAxN2M5MDAyLi5jMDA3NjQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCkBAIC03LDE4ICs3LDE1IEBACiAgcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCA2ODUwMDQ2Li4xMTIyM2Y3IDEwMDY0NAotLS0tIGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi0rKysgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLUBAIC01OTcsNiArNTk3LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCi0gCWZpCitJbmRleDogaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpbml0c2NyaXB0cy05LjcyLm9yaWcvcmMuZC9pbml0LmQvZnVuY3Rpb25zCisrKysgaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK0BAIC02ODYsNiArNjg2LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCisgICAgIGZpCiAgZmkKICAKIC1zdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteAogK3N0cnN0ciAiJChjYXQgL3Byb2MvY21kbGluZSkiICJyYy5kZWJ1ZyIgJiYgc2V0IC14IHx8IHRydWUKICByZXR1cm4gMAotCi0tLSAKLTIuMS4wCi0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAppbmRleCA5YzU4ZDkwLi5lOTEyZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1NzQ2OGM1ZjRlMzY0YmRhZDU1NjYwNGRjYTA5MDQ2ZTFhZmNhOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNDZiMDU2MjgyYzg0MjBmMDk2ZDVjMzRkNzhjMDBmODE2Nzg4Nzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIERhdGU6IE1vbiwgNSBKdW4gMjAxNyAxNjoyNjo0NyArMDkwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CkBAIC0xMCwyMyArMTAsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KLSBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyByYy5kL2luaXQuZC9mdW5jdGlvbnMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCAwZjYyN2YxLi5hNmFhMDkyIDEwMDY0NAotLS0tIGEvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitkaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitpbmRleCAyZTNkYTk2NC4uMWEyMDRkZWMgMTAwNjQ0CistLS0gYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKysrKyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwogQEAgLTU5LDcgKzU5LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKICBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAogIAogIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KLS0gICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIC1hIC1yICIvZGV2L3N0ZGVyciIgXTsgdGhlbgotKyAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiAtYSAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCistICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCisrICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdICYmIFsgLWUgL3NiaW4vY29uc29sZXR5cGUgXTsgdGhlbgogICAgICAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCiAgICAgIGVsc2UKICAgICAgICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCiAtLSAKLTEuOS4xCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzRhNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCi0KLVM9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuZ3ovc2hhNTEyL2I2ZWQzOGY5NTc2ZTkyMjdjMmVjZjA0N2UyZDYwZTFlODcyZjQwZDUxZDEzODYxYjBjOTFkZGRiMjgyZjEwZjdlNmI3OTcwNmE0ZDE0MzVkN2E1N2ExNGEwYjczYTFiNzE1NDFjZmU0NGMwMGU4ZTAzZWY5NmIwOGRlMTllYzMyL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIiAKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCi0KLSMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCi0jIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKLQotZG9faW5zdGFsbCgpewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVkZWVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJwb3B0IGdsaWItMi4wIgorCitSUFJPVklERVNfJHtQTn0gKz0gImluaXRkLWZ1bmN0aW9ucyIKK1JERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgorUkNPTkZMSUNUU18ke1BOfSA9ICJpbml0c2NyaXB0cy1mdW5jdGlvbnMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViZjRlOGI0OTc4MGFiMTg3ZDUxYmQyNmFhYTAyMmM2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2luaXRzY3JpcHRzIFwKKyAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggXAorICAgICAgICAgICIgCitTUkNSRVYgPSAiYTUxYzFiNGY3ZGNmNTViNTY4YjJlZTRjMmIxODA3ODg0OTk0MzQ2OSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNmM3OThmNDBkY2ViMTE3ZTEyMTI2ZDk0Y2IyNWE5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkzNjc3YmRkMWY3ZWU0Y2IwMDg3OGNlNDMzNDYxOTYzNzRmODQ4YTRjOGU0NTU5ZTA4NjA0MGZjNzQ4N2RiIgorCisjIFNpbmNlIHdlIGFyZSBvbmx5IHRha2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIGZ1bmN0aW9ucywgbm8gbmVlZCB0bworIyBjb25maWd1cmUgb3IgY29tcGlsZSBhbnl0aGluZyBzbyBkbyBub3QgZXhlY3V0ZSB0aGVzZQorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIgCitkb19jb21waWxlW25vZXhlY10gPSAiMSIgCisKK2RvX2luc3RhbGwoKXsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKaW5kZXggMGViMjc5My4uMDczZTI0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCkBAIC02MCw3ICs2MCw3IEBACiAKIFBBQ0tBR0VTX0RJUj0iL3Zhci9vcHQvbHNiL3Rlc3QvbWFuYWdlci9wYWNrYWdlcy9mdHAubGludXhmb3VuZGF0aW9uLm9yZy9wdWIvbHNiIgogCi1CQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2Jhc2UvJHtMU0JfUkVMRUFTRX0vYmluYXJ5IgorQkFTRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9iYXNlL3JlbGVhc2VkLWFsbC9iaW5hcnkiCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vdGVzdF9zdWl0ZXMvcmVsZWFzZWQtYWxsL2JpbmFyeS9ydW50aW1lIgogUlVOVElNRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKIEFQUF9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKQEAgLTk4LDcgKzk4LDcgQEAKIGZpCiAKICMgT2ZmaWNpYWwgZG93bmxvYWQgc2VydmVyIGxpc3QuIFlvdSBjYW4gcmVwbGFjZSB0aGVtIHdpdGggeW91ciBvd24gc2VydmVyLgotU0VSVkVSX0lQQUREUj0iMTQwLjIxMS4xNjkuMjMiCitTRVJWRVJfSVBBRERSPSIxNDAuMjExLjE2OS4yOCIKIFNFUlZFUl9OQU1FPSJmdHAubGludXhmb3VuZGF0aW9uLm9yZyIKIAogaWYgISBgZ3JlcCAtRiAtcSAiJHtTRVJWRVJfTkFNRX0iIC9ldGMvaG9zdHNgOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKaW5kZXggOTU5ZjkzMS4uMWE2YzExNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdApAQCAtMSw3ICsxLDcgQEAKIExTQl9SRUxFQVNFPSJyZWxlYXNlZC01LjAiCiBMU0JfQVJDSD0ibHNiYXJjaCIKIAotQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNC4xLjAtMS5ub2FyY2gucnBtIgorQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNS4wLjAtMi5ub2FyY2gucnBtIgogCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVD0ibHNiLWRpc3QtY2hlY2tlci01LjAuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAogCWxzYi10ZXQzLWxpdGUtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCmluZGV4IDNhYmNjYTcuLjRkNDdlNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KQEAgLTIsNyArMiw3IEBACiBWRVJCT1NFX0xFVkVMOiAgIDEKIEFSQ0hJVEVDVFVSRTogICAgdGFyZ2V0YXJjaAogVVNFX0lOVEVSTkVUOiAgICAxCi1TVERfVkVSU0lPTjogICAgIExTQiA0LjEKK1NURF9WRVJTSU9OOiAgICAgTFNCIDUuMAogU1REX1BST0ZJTEU6ICAgICBubwogW2NtZGNoa10KIFJVTjogMQpAQCAtMTI2LDE1ICsxMjYsNiBAQAogQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uCiBBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uL3Jlc3VsdHMKIAotW3F0NC1hem92XQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtxdDQtYXpvdnxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcXQ0LWF6b3YKLUFVVE9SRVBMWV9YMTFfRk9OVF9QQVRIOiBbZGVmYXVsdF0KLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9xdDQtYXpvdi9yZXN1bHRzCi0KIFt4bWwyLWF6b3ZdCiBSVU46IDEKIFZFUlNJT046IGxvY2FsfCoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKaW5kZXggMzZmNTJmZC4uYTkwYzAyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKQEAgLTEwLDE0ICsxMCwxMyBAQAogCQkgICBmaWxlOi8vcGFja2FnZXNfbGlzdCBcCiAJCSAgIGZpbGU6Ly9zZXNzaW9uIFwKIAkJICAgIgotUkRFUEVORFNfJHtQTn0gPSAicnBtIgorUkRFUEVORFNfJHtQTn0gPSAibHNiIHJwbSIKIAogUyA9ICIke1dPUktESVJ9IgogCiBkb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIC1kICAke0R9L29wdC9sc2ItdGVzdAorCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0vb3B0L2xzYi10ZXN0L0xTQl9UZXN0LnNoCiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcGFja2FnZXNfbGlzdCAke0R9L29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0CiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc2Vzc2lvbiAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCiAJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07dGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM2NmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYWUxMDI0NWMxNWE2MTdiZDU3MzM3OTgxYmI0MmViMzY2MjlmOWI1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTU6NTM6MzEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNl0gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLUluIHByZXZpb3VzIHBhdGNoIDAwMDctcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIG1hZGUgYnkgS2hlbSBSYWoKLWNvbnRhaW5zIHR3byBhc3BlY3RzOgotCi0JMS4gcmVwbGFjZSBTSUdDTEQgd2l0aCBTSUdDSExECi0JMi4gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLVRoZSByZXBsYWNlIFNJR0NMRCB3aXRoIFNJR0NITEQgaGF2ZSBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0sIHNvIG1ha2UgYQotYW5vdGhlciBwYXRjaCB0byBhZGQgX0dOVV9TT1VSQ0UgdG8gcGVjX2xpc3RlbmVyLmMgY29tcGx5IHdpdGggS2hlbSBSYWoncwotcHJldmlvdXMgcGF0Y2guCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29ubmVjdG9ycy9wZWMvcGVjX2xpc3RlbmVyLmMKLWluZGV4IGQxMWU0ZGMuLmI4YjVlMGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi1AQCAtMjAsNiArMjAsNyBAQAotIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNGFjZTY4YTZiYTUwMTkwN2EwNzQxZGJhNWY1ZjE1NWUwNmE3NGMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorRGF0ZTogV2VkLCA3IEZlYiAyMDE4IDExOjA5OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogRml4IGRlZmF1bHQgdmFsdWUgb2YgLS13aXRob3V0LW51bWEgc3dpdGNoIGluIGhlbHAKKworVGhlIGRlZmF1bHQgdmFsdWUgaXMgbm8uCisKK0ZpeGVzOiAzOWE4NWExZjEgKCJjb25maWd1cmU6IGFkZCBrbm9iIHRvIGNvbnRyb2wgbnVtYSBzdXBwb3J0IikKKworU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzOWEzMWQuLmQ2NmVhMDAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg2LDcgKzg2LDcgQEAgZmkKKyAjIE51bWEKKyBBQ19BUkdfV0lUSChbbnVtYV0sCisgICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorLSAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9bm8pXSksCisgICBbd2l0aF9udW1hPW5vXSwKKyAgIFt3aXRoX251bWE9eWVzXQorICkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYWEyODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAzOWE4NWExZjFlNjYyNGY1NTQyMTViYTRiNjg0M2QzNjg5YTg0MTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDExOjU2OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogYWRkIGtub2IgdG8gY29udHJvbCBudW1hIHN1cHBvcnQKKworQWxsb3cgdG8gZGlzYWJsZSBudW1hIGZyb20gdGhlIHRvcCBsZXZlbC4KKworQmFzZWQgb24gcGF0Y2g6CitodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2NvbW1pdC9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwP2lkPTRjNzg3MzU1MmUxM2RmZGJhOTZhZmNhNzU2MmMzOThkMjk2NmNhNzEKKworUmVwb3J0ZWQtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorLS0tCisgY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDVjOGQ0ZWEuLmIzOWEzMWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTgzLDYgKzgzLDE0IEBAIGVsc2UKKyAgICAgQUNfU1VCU1QoW1dJVEhfRVhQRUNUXSxbIm5vIl0pCisgZmkKKyAKKysjIE51bWEKKytBQ19BUkdfV0lUSChbbnVtYV0sCisrICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgW3dpdGhfbnVtYT1ub10sCisrICBbd2l0aF9udW1hPXllc10KKyspCisrCisgIyBQZXJsCisgQUNfQVJHX1dJVEgoW3BlcmxdLAorICAgW0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtcGVybF0sCitAQCAtMTU3LDcgKzE2NSw5IEBAIExUUF9DSEVDS19TRUxJTlVYCisgTFRQX0NIRUNLX1NJR05BTAorIExUUF9DSEVDS19TWVNDQUxMX0VWRU5URkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9NT0RJRllfTERUCisraWYgdGVzdCAieCR3aXRoX251bWEiID0geHllczsgdGhlbgorIExUUF9DSEVDS19TWVNDQUxMX05VTUEKKytmaQorIExUUF9DSEVDS19TWVNDQUxMX1FVT1RBQ1RMCisgTFRQX0NIRUNLX1NZU0NBTExfU0lHTkFMRkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9VTlNIQVJFCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODY1MDIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDg2N2FkNWQ1ZDY0YjliMjdlZTMyMTQ4MDI3NTMyZGIwYTAwZjY0MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUm95LkxpIiA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxNzozMzoyNiArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzMyXSBBZGQga25vYiB0byBjb250cm9sIHdoZXRoZXIgbnVtYSBzdXBwb3J0IHNob3VsZCBiZQotIGNoZWNrZWQKLQotb3RoZXJ3aXNlIHVuZGV0ZXJtaW5pc3RpYyBkZXBlbmRlbmN5IHdpbGwgYmUgZ2VuZXJhdGVkCi1kdXJpbmcgYnVpbGQgZGVwZW5kaW5nIHVwb25nIG51bWEgYmVpbmcgc3RhZ2VkIG9yIG5vdAotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9sdHAtbnVtYS5tNCB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tNC9sdHAtbnVtYS5tNCBiL200L2x0cC1udW1hLm00Ci1pbmRleCA2MGFlMDdiLi5lZDcwNzhkIDEwMDY0NAotLS0tIGEvbTQvbHRwLW51bWEubTQKLSsrKyBiL200L2x0cC1udW1hLm00Ci1AQCAtMjQsNyArMjQsMTMgQEAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwKLSBBQ19ERUZVTihbTFRQX0NIRUNLX1NZU0NBTExfTlVNQV0sCi0gW2RubAotLUFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotK0FDX01TR19DSEVDS0lORyhbZm9yIG51bWFdKQotK0FDX0FSR19XSVRIKAotKwlbbnVtYV0sCi0rCUFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCi0rCVt3aXRob3V0IG51bWEgc3VwcG9ydF0pLAotKwlbXSwKLSsJW0FDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotIAlMVFBfU1lTQ0FMTF9OVU1BX0hFQURFUlM9eWVzCi0gCUFDX0NIRUNLX0xJQihudW1hLG51bWFfYWxsb2Nfb25ub2RlLFtoYXZlX251bWFfYWxsb2Nfb25ub2RlPSJ5ZXMiXSkKLSAJaWYgIHRlc3QgIngkaGF2ZV9udW1hX2FsbG9jX29ubm9kZSIgPSAieHllcyI7IHRoZW4KLUBAIC00OCwzICs1NCw1IEBAIGlmIHRlc3QgIngkaGF2ZV9tcG9sX2NvbnN0YW50cyIgPSAieHllcyI7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfTVBPTF9DT05TVEFOVFMsMSxbZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYWxsIGNvbnN0YW50cyByZXF1aXJlZCB0byB1c2UgbWJpbmQgdGVzdHNdKQotIGZpCi0gKV0pCi0rQUNfTVNHX1JFU1VMVChbJHdpdGhfbnVtYV0pCi0rXSkKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggY2Y3NDQ2My4uODRhYjM3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICB0ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIHwgNSArKysrKwogIDggZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDI5N2Y4ZTcuLjkwNmIyODAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQogQEAgLTQ5LDYgKzQ5LDExIEBAIFNLSVBfSURDSEVDSwkJPz0gMAogIFVDTElOVVgJCQk/PSAwCiAgZXhwb3J0IFVDTElOVVgKQEAgLTM4LDExICszOCwxMSBAQAogICMgQ0xFQU5fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBzb2xlbHkgaW4gY2xlYW4uCiAgIyBDT01NT05fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBhbGwsIGNsZWFuLCBhbmQgaW5zdGFsbC4KICAjIElOU1RBTExfVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBjbGVhbiBhbmQgaW5zdGFsbCAoY29udGFpbnMKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotaW5kZXggNTBhMTJmYS4uNGYxOTg3ZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00NywxMyArNDcsMTYgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCitAQCAtNDgsMTMgKzQ4LDE2IEBAIFNVQkRJUlMJCQkrPSBjb25uZWN0b3JzIFwKICAJCQkgICBsb2dnaW5nIFwKICAJCQkgICBtZW0gXAogIAkJCSAgIG51bWEgXApAQCAtNjAsMTAgKzYwLDEwIEBACiAgaWZlcSAoJChXSVRIX1BPV0VSX01BTkFHRU1FTlRfVEVTVFNVSVRFKSx5ZXMpCiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2MjQ1ZWQwLi5hYTRlYjdmIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uCiAgCkBAIC03MywxMSArNzMsMTEgQEAKICsJRklMVEVSX09VVF9ESVJTICs9IHByb2Nlc3Nfc3RyZXNzCiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA4YWNiMzk1Li5iNzQ5MTI2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTI4LDUgKzI4LDEwIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorQEAgLTI4LDYgKzI4LDExIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKICAJCSAgIG1pbmNvcmUgbXByb3RlY3QgbmZ0dyBwcm9maWwgcmVtYXBfZmlsZV9wYWdlcyBzYnJrCiAgZW5kaWYKQEAgLTg3LDEyICs4NywxMyBAQAogKwkJICAgdXN0YXQKICtlbmRpZgogIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YmM3OGMyLi5jMzZjZjUwIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKKyBpZmVxICgkKFVDTElCQyksMSkKKyBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKK0BAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICAKICBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQogIApAQCAtMTAxLDEwICsxMDIsMTAgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLWluZGV4IDMxNjA4MTMuLjliZGY1ZDAgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCiBAQCAtMjMsNCArMjMsOSBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCiAgCkBAIC0xMTUsMTEgKzExNiwxMSBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA3YTdhNTdhLi41ODA4ODY2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKK0BAIC0yNyw1ICsyNyw5IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCiAgCiAgTUFLRV9UQVJHRVRTCQk6PSB0ZXN0cGktMCB0ZXN0cGktMSB0ZXN0cGktMiB0ZXN0cGktNCB0ZXN0cGktNSB0ZXN0cGktNiB0ZXN0cGktNyBzYnJrX211dGV4CkBAIC0xMjksMTAgKzEzMCwxMCBAQAogKwogIAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotaW5kZXggNWVkYzNiNC4uYWE1OTg3YSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKK0luZGV4OiBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQogQEAgLTI0LDQgKzI0LDkgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KICAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCkBAIC0xNDMsNiArMTQ0LDMgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWY2YmE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1Gcm9tIGRjMTkwNWI2ZDk3MmY5MTc2YjQwZGEyNzBjODNkOGZiNGQxNzUxYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjEyOjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBSZW5hbWUgc2lnc2V0IHZhcmlhYmxlIHRvIHNpZ3NldDEKLQotc2lnc2V0IEFQSSBmcm9tIHNpZ25hbC5oIGlzIHNoYWRvd2VkIGJ5IHRoaXMgbmFtZSBjb25mbGljdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYyB8IDEwICsrKysrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMKLWluZGV4IGIyNjgyZGEuLjNmMzVmYWQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi1AQCAtNTYsNyArNTYsNyBAQCBpbnQgVFNUX1RPVEFMID0gMjsJCS8qIFRvdGFsIG51bWJlciBvZiB0ZXN0IGNhc2VzLiAqLwotIC8qKioqKioqKioqKioqKi8KLSAKLSBrZXlfdCBrZXk7Ci0tc2lnc2V0X3Qgc2V0OwotK3NpZ3NldF90IHNldDE7Ci0gCi0gI2RlZmluZSAgU0laRSAgMTYqMTAyNAotIAotQEAgLTcxLDkgKzcxLDkgQEAgaW50IG1haW4odm9pZCkKLSAKLSAJa2V5ID0gKGtleV90KSBnZXRwaWQoKTsKLSAKLS0Jc2lnZW1wdHlzZXQoJnNldCk7Ci0tCXNpZ2FkZHNldCgmc2V0LCBTSUdVU1IxKTsKLS0Jc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0LCBOVUxMKTsKLSsJc2lnZW1wdHlzZXQoJnNldDEpOwotKwlzaWdhZGRzZXQoJnNldDEsIFNJR1VTUjEpOwotKwlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCBOVUxMKTsKLSAKLSAJcGlkID0gZm9yaygpOwotIAlzd2l0Y2ggKHBpZCkgewotQEAgLTE0OCw3ICsxNDgsNyBAQCBpbnQgY2hpbGQodm9pZCkKLSAJY2hhciAqY3A7Ci0gCWludCBzaWc7Ci0gCi0tCXNpZ3dhaXQoJnNldCwgJnNpZyk7Ci0rCXNpZ3dhaXQoJnNldDEsICZzaWcpOwotIAljaGxkX3BpZCA9IGdldHBpZCgpOwotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jCi1pbmRleCBkZDY5ZGU3Li41NmZiMWRhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotQEAgLTU3LDcgKzU3LDcgQEAgaW50IFRTVF9UT1RBTCA9IDI7CQkvKiBUb3RhbCBudW1iZXIgb2YgdGVzdCBjYXNlcy4gKi8KLSAvKioqKioqKioqKioqKiovCi0gCi0ga2V5X3Qga2V5OwotLXNpZ3NldF90IHNldDsKLStzaWdzZXRfdCBzZXQxOwotIAotIGludCBjaGlsZCgpOwotIHN0YXRpYyBpbnQgcm1fc2htKGludCk7Ci1AQCAtNzAsOSArNzAsOSBAQCBpbnQgbWFpbih2b2lkKQotIAotIAlrZXkgPSAoa2V5X3QpIGdldHBpZCgpOwotIAotLQlzaWdlbXB0eXNldCgmc2V0KTsKLS0Jc2lnYWRkc2V0KCZzZXQsIFNJR1VTUjEpOwotLQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQsIE5VTEwpOwotKwlzaWdlbXB0eXNldCgmc2V0MSk7Ci0rCXNpZ2FkZHNldCgmc2V0MSwgU0lHVVNSMSk7Ci0rCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldDEsIE5VTEwpOwotIAotIAlwaWQgPSBmb3JrKCk7Ci0gCXN3aXRjaCAocGlkKSB7Ci1AQCAtMTQ3LDcgKzE0Nyw3IEBAIGludCBjaGlsZCh2b2lkKQotIAljaGFyICpjcDsKLSAJaW50IHNpZzsKLSAKLS0Jc2lnd2FpdCgmc2V0LCAmc2lnKTsKLSsJc2lnd2FpdCgmc2V0MSwgJnNpZyk7Ci0gCWNobGRfcGlkID0gZ2V0cGlkKCk7Ci0gCi0gCWlmICgoc2htaWQgPSBzaG1nZXQoa2V5LCBTSVpFLCAwKSkgPCAwKSB7Ci1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWdwcm9jbWFzay9zaWdwcm9jbWFzazAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotaW5kZXggMjMyZDI1YS4uMDZkOTAyZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IFRTVF9UT1RBTCA9IDE7Ci0gaW50IHNpZ19jYXRjaCA9IDA7CQkvKiB2YXJpYWJsZSB0byBibG9ja2VkL3VuYmxvY2tlZCBzaWduYWxzICovCi0gCi0gc3RydWN0IHNpZ2FjdGlvbiBzYV9uZXc7CS8qIHN0cnVjdCB0byBob2xkIHNpZ25hbCBpbmZvICovCi0tc2lnc2V0X3Qgc2V0OwkJLyogc2lnbmFsIHNldCB0byBob2xkIHNpZ25hbCBsaXN0cyAqLwotK3NpZ3NldF90IHNldDE7CQkvKiBzaWduYWwgc2V0IHRvIGhvbGQgc2lnbmFsIGxpc3RzICovCi0gc2lnc2V0X3Qgc2lnc2V0MjsKLSAKLSBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKLUBAIC0xMTIsNyArMTEyLDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkgKiBzbyB0aGF0LCBzaWduYWwgd2lsbCBub3QgYmUgZGVsaXZlcmVkIHRvCi0gCQkgKiB0aGUgdGVzdCBwcm9jZXNzLgotIAkJICovCi0tCQlURVNUKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldCwgMCkpOwotKwkJVEVTVChzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCAwKSk7Ci0gCi0gCQkvKiBHZXQgdGhlIHByb2Nlc3MgaWQgb2YgdGVzdCBwcm9jZXNzICovCi0gCQlteV9waWQgPSBnZXRwaWQoKTsKLUBAIC0xNjUsNyArMTY1LDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkJCSAqLwotIAkJCQllcnJubyA9IDA7Ci0gCQkJCWlmIChzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywKLS0JCQkJCQkmc2V0LCAwKSA9PSAtMSkgewotKwkJCQkJCSZzZXQxLCAwKSA9PSAtMSkgewotIAkJCQkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJCQkJICJzaWdwcm9jbWFzaygpIGZhaWxlZCAiCi0gCQkJCQkJICJ0byB1bmJsb2NrIHNpZ25hbCwgIgotQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEluaXRpYWxpc2UgdGhlIHNpZ25hbCBzZXRzIHdpdGggdGhlIGxpc3QgdGhhdAotIAkgKiBleGNsdWRlcy9pbmNsdWRlcyAgYWxsIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnZW1wdHlzZXQoJnNldCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2VtcHR5c2V0KCZzZXQxKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdlbXB0eXNldCgpIGZhaWxlZCwgZXJybm89JWQgOiAlcyIsCi0gCQkJIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwotQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEFkZCBzcGVjaWZpZWQgc2lnbmFsIChTSUdJTlQpIHRvIHRoZSBzaWduYWwgc2V0Ci0gCSAqIHdoaWNoIGV4Y2x1ZGVzIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnYWRkc2V0KCZzZXQsIFNJR0lOVCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2FkZHNldCgmc2V0MSwgU0lHSU5UKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdhZGRzZXQoKSBmYWlsZWQsIGVycm5vPSVkIDogJXMiLAotIAkJCSBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDNlNzljOWYuLjQ2Mjk3NmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMgfCAyICsrCiAgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCi1pbmRleCBkNjNkMWU0Li4yNGNhMTc0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCiBAQCAtNzYsMTAgKzc2LDEyIEBACiAgICovCiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMzUsMTEgKzM1LDExIEBACiArI3VuZGVmIF9HTlVfU09VUkNFCiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKLSAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwotaW5kZXggNWE1MWI5YS4uYTUzMGE2YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKyAjaW5jbHVkZSAic2FmZV9tYWNyb3MuaCIKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwogQEAgLTc1LDkgKzc1LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsMTAgKzUyLDEwIEBACiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKICAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwotaW5kZXggMTJlMzgyOS4uOWIzOWY4YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwogQEAgLTc2LDkgKzc2LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNjgsNiArNjgsMyBAQAogIAogICNpbmNsdWRlICJ0ZXN0LmgiCiAgCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZjYmE2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDlkMTRlZGZjMTJlZWZhYzkwMGRkNTQ3MjlhODhiM2NjZjkxYzFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCA4IEphbiAyMDE2IDA3OjE4OjE1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzJdIG1jX2dldGhvc3Q6IGluY2x1ZGUgc3lzL3R5cGVzLmgKLQotRml4IGJ1aWxkIG9uIG11c2wKLWVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9jaGFyJwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi1pbmRleCA1YjlhNzkwLi5jNzk5ZTJhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY2ZjI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDE0NzEwMTIxNjRiYThmMjYwNDZkNGIxY2U1NTMxYTBkOTI4MDVlZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjIxOjE2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBzeXNjb25mMDE6IFVzZSBfU0NfMl9DX1ZFUlNJT04gY29uZGl0aW9uYWxseQotCi1fU0NfMl9DX1ZFUlNJT04gaXMgbm90IGF2YWlsYWJsZSBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLWluZGV4IDU4M2RlZWYuLmRlOTM2OTUgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYwotQEAgLTEwMyw3ICsxMDMsOSBAQCBpbnQgbWFpbih2b2lkKQotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19CSU5EKTsKLSAJdGVzdF9zeXNjb25mKF9TQ18yX0NfREVWKTsKLSAjaWZkZWYgX1NDXzJfQ19WRVJTSU9OCi0rI2lmZGVmIF9fR0xJQkNfXwotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19WRVJTSU9OKTsKLSsjZW5kaWYKLSAjZWxzZQotIAl0c3RfcmVzbShUQ09ORiwgIl9TQ18yX0NfVkVSU0lPTiBub3QgZGVmaW5lZCIpOwotICNlbmRpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNmQwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwMGJhN2NkZDA2MDhiMTUwNzAyNzQyOGY5Zjg3YjFjYjk3NDczNzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOSBGZWIgMjAxNyAxNTo1NDo1MyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsaWI6IFVzZSBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSBpbiBwbGFjZSBvZgotIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIGZvciBub24tZ2xpYmMKLQotZS5nLiBtdXNsIGRvZXMgbm90IGltcGxlbWVudCB0aGUgX05QIG11dGV4IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYi90c3RfcmVzLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWIvdHN0X3Jlcy5jIGIvbGliL3RzdF9yZXMuYwotaW5kZXggNjFkYWFlYi4uNDM1MjI0ZiAxMDA2NDQKLS0tLSBhL2xpYi90c3RfcmVzLmMKLSsrKyBiL2xpYi90c3RfcmVzLmMKLUBAIC03OSw3ICs3OSwxMSBAQCBpbnQgVEVTVF9FUlJOTzsKLSAJYXNzZXJ0KHN0cmxlbihidWYpID4gMCk7CQlcCi0gfSB3aGlsZSAoMCkKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0bXV0ZXggPSBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUDsKLSsjZWxzZQotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdG11dGV4ID0geyAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgfTsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCBjaGVja19lbnYodm9pZCk7Ci0gc3RhdGljIHZvaWQgdHN0X2NvbmRlbnNlKGludCB0bnVtLCBpbnQgdHR5cGUsIGNvbnN0IGNoYXIgKnRtZXNnKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OGUxY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWUzZGVhNjY5ZTViMGI3NjlmMzIyZDU0YTNiYjlmMzIwYjUzMjdkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE1hciAyMDE2IDE1OjQ3OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIHNobWF0MTogQ292ZXIgR05VIHNwZWNpZmljIGNvZGUgdW5kZXIgX19VU0VfR05VCi0KLW9uIHg4Niwgd2UgdXNlIHVjX21jb250ZXh0IGVsZW1lbnQgZnJvbSBzaWdjb250ZXh0Ci13aGljaCBpcyBtYXJrZWQgZ251LXNwZWNpZmljIGluIGdsaWJjLCB0aGlzIHBhdGNoCi1hZGRzIHRoaXMgY29uZGl0aW9uIGFyb3VuZCB0aGUgY29kZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHRlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwNi9zaG1hdDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMKLWluZGV4IDBkNmQ3YTQuLmJlZTY5ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi1AQCAtMTExLDcgKzExMSw3IEBAIGludCBkb25lX3NobWF0ID0gMDsJCS8qIGRpc2FsbG93IHJlYWQgYW5kIHdyaXRlcyBiZWZvcmUgc2htYXQgICAgICAqLwotIHN0YXRpYyB2b2lkIHNpZ19oYW5kbGVyKGludCBzaWduYWwsCS8qIHNpZ25hbCBudW1iZXIsIHNldCB0byBoYW5kbGUgU0lHQUxSTSAgICAgICAqLwotIAkJCWludCBjb2RlLCBzdHJ1Y3QgdWNvbnRleHQgKnV0KQotIHsJCQkJLyogY29udGFpbnMgcG9pbnRlciB0byBzaWdjb250ZXh0IHN0cnVjdHVyZSAgICovCi0tI2lmZGVmIF9faTM4Nl9fCi0rI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19VU0VfR05VKQotIAl1bnNpZ25lZCBsb25nIGV4Y2VwdDsJLyogZXhjZXB0aW9uIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gCWludCByZXQgPSAwOwkJLyogZXhpdCBjb2RlIGZyb20gc2lnbmFsIGhhbmRsZXIuICAgICAgICAgICAgICovCi0gCXN0cnVjdCBzaWdjb250ZXh0ICpzY3AgPQkvKiBwb2ludGVyIHRvIHNpZ2NvbnRleHQgc3RydWN0dXJlICAgICAgICAgICAgKi8KLUBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgc2lnX2hhbmRsZXIoaW50IHNpZ25hbCwJLyogc2lnbmFsIG51bWJlciwgc2V0IHRvIGhhbmRsZSBTSUdBTFJNCi0gCQlmcHJpbnRmKHN0ZG91dCwgIlRlc3QgZW5kZWQsIHN1Y2Nlc3NcbiIpOwotIAkJZXhpdCgwKTsKLSAJfQotLSNpZmRlZiBfX2kzODZfXwotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9fVVNFX0dOVSkKLSAJZWxzZSB7Ci0gCQlleGNlcHQgPSBzY3AtPnRyYXBubzsKLSAJCWZwcmludGYoc3RkZXJyLCAic2lnbmFsIGNhdWdodCAtIFslZF0gIiwgc2lnbmFsKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NzM4YWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGE5ZDU1OTVkMmZhMmFiMjUyZjFjYWJmNjNmNGI2NWMzZWZiYWZlYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAxNyAxNToyNzowMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsdHA6IGZpeCBQQUdFX1NJWkUgcmVkZWZpbml0aW9uIGFuZCBPX0NSRUFUIHVuZGVjbGVhciB3aGVuCi0gYnVpbGQgd2l0aCBtdXNsCi0KLWVycm9yIDE6Ci0KLXxzdGFja19jbGFzaC5jOjUwOjIyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKLXwgc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBhbHJlYWR5IGNvbnRhaW4gUEFHRV9TSVpFIGRlZmluaXRpb24gaW4gbGltaXRzLmMsCi13ZSBjYW4gY2hlY2sgaXQgaGVyZToKLQotICAgIGh0dHBzOi8vZ2l0Lm11c2wtbGliYy5vcmcvY2dpdC9tdXNsL3RyZWUvaW5jbHVkZS9saW1pdHMuaCNuNDMKLQotZXJyb3IgMjoKLQotfGNrMDEuYzoxNTc6MjI6IGVycm9yOiAnT19DUkVBVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1NfSVJFQUQnPwotfCAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX1JEV1IsIDA2NDQpOwotfCAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgU19JUkVBRAotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBwdXQgdGhvc2UgaW4gZmNudGwuaCwgc28gd2Ugc2hvdWxkIGluY2x1ZGUgdGhhdAotZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzE5NCBdCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jIHwgIDEgKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi1pbmRleCAyZWYxYTgyLi43YzQ1OTkxIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi0rKysgYi90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gI2luY2x1ZGUgInRzdF90ZXN0LmgiCi0gI2luY2x1ZGUgInRzdF9zYWZlX3N0ZGlvLmgiCi0gCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRV90c3Q7Ci0gc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9NQVNLOwotIHN0YXRpYyB1bnNpZ25lZCBsb25nIEdBUF9QQUdFUyA9IDI1NjsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZyBUSFJFU0hPTEQ7Ci1AQCAtNjYsNyArNjYsNyBAQCB2b2lkIGV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KHZvaWQpCi0gCWV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KCk7Ci0gfQotIAotLSNkZWZpbmUgTUFQUEVEX0xFTiBQQUdFX1NJWkUKLSsjZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFX3RzdAotIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hcHBlZF9hZGRyOwotIAotIHZvaWQgc2Vndl9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqZGF0YSBMVFBfQVRUUklCVVRFX1VOVVNFRCkKLUBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkb19jaGlsZCh2b2lkKQotIAlzdGFja190IHNpZ25hbF9zdGFjazsKLSAJc3RydWN0IHNpZ2FjdGlvbiBzZWd2X3NpZyA9IHsuc2Ffc2lnYWN0aW9uID0gc2Vndl9oYW5kbGVyLCAuc2FfZmxhZ3MgPSBTQV9PTlNUQUNLfFNBX1NJR0lORk99OwotIAl2b2lkICptYXA7Ci0tCXVuc2lnbmVkIGxvbmcgZ2FwID0gR0FQX1BBR0VTICogUEFHRV9TSVpFOwotKwl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRV90c3Q7Ci0gCXN0cnVjdCBybGltaXQgcmxpbWl0OwotIAotIAlybGltaXQucmxpbV9jdXIgPSBybGltaXQucmxpbV9tYXggPSBSTElNX0lORklOSVRZOwotQEAgLTIwMCw4ICsyMDAsOCBAQCB2b2lkIHNldHVwKHZvaWQpCi0gewotIAljaGFyIGJ1Zls0MDk2XSwgKnA7Ci0gCi0tCVBBR0VfU0laRSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLS0JUEFHRV9NQVNLID0gfihQQUdFX1NJWkUgLSAxKTsKLSsJUEFHRV9TSVpFX3RzdCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSsJUEFHRV9NQVNLID0gfihQQUdFX1NJWkVfdHN0IC0gMSk7Ci0gCi0gCWJ1Zls0MDk1XSA9ICdcMCc7Ci0gCVNBRkVfRklMRV9TQ0FORigiL3Byb2MvY21kbGluZSIsICIlNDA5NVteXG5dIiwgYnVmKTsKLUBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBzZXR1cCh2b2lkKQotIAkJdHN0X3JlcyhUSU5GTywgInN0YWNrX2d1YXJkX2dhcCA9ICVsZCIsIEdBUF9QQUdFUyk7Ci0gCX0KLSAKLS0JVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFOwotKwlUSFJFU0hPTEQgPSAoR0FQX1BBR0VTIC0gMSkgKiBQQUdFX1NJWkVfdHN0OwotIAotIAl7Ci0gCQl2b2xhdGlsZSBpbnQgKmEgPSBhbGxvY2EoMTI4KTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1pbmRleCAzZTE3YmU0Li4wNmQ4OWUzIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1AQCAtNjksNiArNjksNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gCi0gdm9pZCBzZXR1cCh2b2lkKTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1pbmRleCA0MTRkZjY4Li45ZGRmNzI5IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1AQCAtNzUsNiArNzUsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSAidGVzdC5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YzBhNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSAyZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDExIFNlcCAyMDE3IDEyOjU3OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbW1hbmRzL2dkYjAxOiByZXBsYWNlIHN0ZGluIHdpdGggL2Rldi9udWxsCi0KLUlmIHRoaXMgdGVzdGNhc2UgcnVucyBhcyBiYWNrZ3JvdW5kIHByb2Nlc3MsIGdkYiBjYW4gcmVjZWl2ZQotU0lHVFRPVSBhbmQgdGhlbiB0ZXN0Y2FzZSBnZXRzIHN0dWNrLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC8yZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKLWluZGV4IDA3YWUzNmYuLmUzYTViNTEgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi0rKysgYi90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi1AQCAtMjksNyArMjksNyBAQCBUU1RfTkVFRFNfQ01EUz0iZ2RiIC9iaW4vY2F0IgotIAotIHNpbXBsZV90ZXN0KCkKLSB7Ci0tCWdkYiAvYmluL2NhdCAtZXggInJ1biAvZXRjL3Bhc3N3ZCIgLWV4IHF1aXQKLSsJZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdCA8IC9kZXYvbnVsbAotIAlSQz0kPwotIAlpZiBbICRSQyAtZXEgMCBdIDsgdGhlbgotIAkJdHN0X3JlcyBUUEFTUyAiZ2RiIGF0dGFjaGVkIHRvIHByb2Nlc3MgYW5kIGNvbXBsZXRlZCBydW4iCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2M5MjdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktY29tbWFuZHMtYXIwMS1GaXgtZm9yLXRlc3QtaW4tZGV0ZXJtaW5pc3RpYy1tb2RlLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIDA0ZGE5NDc4ODg3ZTcwNWVhMzhlNGYwOTc0OTJkYTIwZTY1MTY4NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMTU6NDg6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbWFuZHMvYXIwMTogRml4IGZvciB0ZXN0IGluIGRldGVybWluaXN0aWMgbW9kZQorCitJZiBiaW51dGlscyB3YXMgY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWRldGVybWluaXN0aWMtYXJjaGl2ZXMsCithciB3aWxsIHJ1biBpbiBkZXRlcm1pbmlzdGljIG1vZGUgYnkgZGVmYXVsdCwgYW5kIHVzZSB6ZXJvIGZvcgordGltZXN0YW1wcyBhbmQgdWlkcy9naWRzLCB3aGljaCBtYWtlcyB0aGUgdGVzdCBjYXNlIGFibm9ybWFsLgorCitGaXggdGhpcyBieSBhZGQgdGhlICJVIiBtb2RpZmllciB3aGVuIGRldGVybWluaXN0aWMgbW9kZSBpcyBkZWZhdWx0LgorCitTaWduZWQtb2ZmLWJ5OiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEZlaSBKaWUgPGZlaWouZm5zdEBjbi5mdWppdHN1LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHA6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTctU2VwdGVtYmVyLzAwNTY2OC5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitpbmRleCBkZGFiMmUwLi5kNjg4Zjc2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL2FyL2FyMDEKKysrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitAQCAtMjMsMTQgKzIzLDI2IEBACisgIyBUaGlzIGlzIGEgYmFzaWMgYXIgY29tbWFuZCB0ZXN0LgorICMKKyBUU1RfQ05UPTE3CisrVFNUX1NFVFVQPXNldHVwCisgVFNUX1RFU1RGVU5DPXRlc3QKKyBUU1RfTkVFRFNfVE1QRElSPTEKKyAuIHRzdF90ZXN0LnNoCisgCisrc2V0dXAoKQorK3sKKysJYXIgLS1oZWxwIHwgZ3JlcCAidXNlIHplcm8gZm9yIHRpbWVzdGFtcHMgYW5kIHVpZHMvZ2lkcyAoZGVmYXVsdCkiIFwKKysJCT4vZGV2L251bGwKKysJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrCQlNT0Q9IlUiCisrCWVsc2UKKysJCU1PRD0iIgorKwlmaQorK30KKysKKyB0ZXN0MSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJhIGZpbGUxLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtNDcsOSArNTksOSBAQCB0ZXN0MSgpCisgCisgdGVzdDIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkJICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbiAkVFNUX0RBVEFST09UL2ZpbGU0LmluCistCVJPRCBhciAtbWEgZmlsZTEuaW4gbGliLmEgZmlsZTQuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKysJUk9EIGFyIC1tYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSBmaWxlNC5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGU0LmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC02Niw4ICs3OCw4IEBAIHRlc3QyKCkKKyAKKyB0ZXN0MygpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJiIGZpbGUzLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtODQsOSArOTYsOSBAQCB0ZXN0MygpCisgCisgdGVzdDQoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tYiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1tYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTEwMyw3ICsxMTUsNyBAQCB0ZXN0NCgpCisgCisgdGVzdDUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gXD4gYXIub3V0CisgCisgCWlmIFsgLXMgYXIub3V0IF07IHRoZW4KKyAJCXRzdF9yZXMgVEZBSUwgImFyIHByb2R1Y2VkIG91dHB1dCB1bmV4cGVjdGVkbHkgKC1jKSIKK0BAIC0xMTcsNyArMTI5LDcgQEAgdGVzdDUoKQorIAorIHRlc3Q2KCkKKyB7CistCVJPRCBhciAtcWMgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1xYyIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorIAorIAlpZiBbIC1zIGFyLm91dCBdOyB0aGVuCisgCQl0c3RfcmVzIFRGQUlMICJhciBwcm9kdWNlZCBvdXRwdXQgdW5leHBlY3RlZGx5ICgtcWMpIgorQEAgLTEzMSw5ICsxNDMsOSBAQCB0ZXN0NigpCisgCisgdGVzdDcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1kIGxpYi5hIGZpbGUxLmluIGZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLWQiJE1PRCIgbGliLmEgZmlsZTEuaW4gZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTUwLDkgKzE2Miw5IEBAIHRlc3Q3KCkKKyAKKyB0ZXN0OCgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLWQgbGliLmEKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtZCIkTU9EIiBsaWIuYQorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE2OSw4ICsxODEsOCBAQCB0ZXN0OCgpCisgCisgdGVzdDkoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1yaSBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtcmkiJE1PRCIgZmlsZTMuaW4gbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE4Nyw5ICsxOTksOSBAQCB0ZXN0OSgpCisgCisgdGVzdDEwKCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCistCVJPRCBhciAtbWkgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtbWkiJE1PRCIgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMDYsOSArMjE4LDkgQEAgdGVzdDEwKCkKKyAKKyB0ZXN0MTEoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tIGxpYi5hIGZpbGUzLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLW0iJE1PRCIgbGliLmEgZmlsZTMuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMjUsOSArMjM3LDkgQEAgdGVzdDExKCkKKyAKKyB0ZXN0MTIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1wIGxpYi5hIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1wIiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgIlRoaXMgaXMgZmlsZSBvbmVcblRoaXMgaXMgZmlsZSB0d29cblRoaXMgaXMgZmlsZSB0aHJlZVxuIiA+IGFyLmV4cAorIAorQEAgLTI0NCw5ICsyNTYsOSBAQCB0ZXN0MTIoKQorIHRlc3QxMygpCisgeworIAorLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXEgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlNC5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1xIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbmZpbGU0LmluXG4iID4gYXIuZXhwCitAQCAtMjY0LDE0ICsyNzYsMTQgQEAgdGVzdDEzKCkKKyB0ZXN0MTQoKQorIHsKKyAJUk9EIHRvdWNoIGZpbGUwLmluCistCVJPRCBhciAtY3IgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKKyAKKyAJdG91Y2ggLWMgLXQgJChkYXRlIC0tZGF0ZT0nbmV4dCBkYXknICsiJVklbSVkJUglTSIpIGZpbGUwLmluCisgCistCVJPRCBhciAtcnUgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLXJ1IiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKK0BAIC0yOTMsNyArMzA1LDcgQEAgdGVzdDE0KCkKKyAKKyB0ZXN0MTUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorIAlST0QgYXIgLXR2IGxpYi5hIFw+IGFyLm91dAorIAorIAlpZiBncmVwIC1xICdbcnd4LV1cezlcfSBbMC05XS4qL1swLTldLipccypbMC05XS4qLipmaWxlMS5pbicgYXIub3V0OyB0aGVuCitAQCAtMzA4LDkgKzMyMCw5IEBAIHRlc3QxNSgpCisgCisgdGVzdDE2KCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAteHYgbGliLmEgXD4gYXIub3V0CisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXh2IiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgInggLSBmaWxlMS5pblxueCAtIGZpbGUyLmluXG54IC0gZmlsZTMuaW5cbiIgPiBhci5leHAKKyAKK0BAIC0zMzIsOCArMzQ0LDggQEAgdGVzdDE2KCkKKyAKKyB0ZXN0MTcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC14diBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC14diIkTU9EIiBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJ4IC0gZmlsZTIuaW5cbiIgPiBhci5leHAKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5NmE4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA2N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE3OjQ2OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNhZmVfbWFjcm9zOiBtYWtlIGlzX2Z1c2UoKSByZXR1cm4gemVybyBpZiBmc190eXBlIGlzIE5VTEwKKworVGhpcyBjb21tbWl0IDI4NTA3ZTUxNGMoc2FmZV9tb3VudDogRG8gbm90IHRyeSBtb3VudCgpIHN5c2NhbGwgZm9yIEZVU0UgZnMpCitpbnZvbHZlcyBGVVNFIGZzIGNoZWNrIGluIHNhZmVfbW91bnQoKSwgYnV0IHdlJ2QgYmV0dGVyIGd1YXJhbnRlZSB0aGUgImZzX3R5cGUiCitpcyBsZWdhbCB0byBjaGVjayBpbiBpc19mdXNlKCkgZnVuY3Rpb24gb3RoZXJ3aXNlIHN5c3RlbSB3aWxsIGtpbGwgdGhlIHByb2dyYW0uCisKKyAgY21kbGluZT0iZmFub3RpZnkwNiIKKyAgY29udGFjdHM9IiIKKyAgYW5hbHlzaXM9ZXhpdAorICA8PDx0ZXN0X291dHB1dD4+PgorICB0c3RfdGVzdC5jOjk4MDogSU5GTzogVGltZW91dCBwZXIgcnVuIGlzIDBoIDEwbSAwMHMKKyAgdHN0X3Rlc3QuYzoxMDI1OiBCUk9LOiBUZXN0IGtpbGxlZCBieSBTSUdTRUdWIQorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaXdhbmdAcmVkaGF0LmNvbT4KK0Fja2VkLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC82N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkXQorLS0tCisgbGliL3NhZmVfbWFjcm9zLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zYWZlX21hY3Jvcy5jIGIvbGliL3NhZmVfbWFjcm9zLmMKK2luZGV4IGM0OGU0MzZkYy4uYWJkZWNhMDEzIDEwMDY0NAorLS0tIGEvbGliL3NhZmVfbWFjcm9zLmMKKysrKyBiL2xpYi9zYWZlX21hY3Jvcy5jCitAQCAtNzA4LDYgKzcwOCw5IEBAIHN0YXRpYyBpbnQgaXNfZnVzZShjb25zdCBjaGFyICpmc190eXBlKQorIHsKKyAJdW5zaWduZWQgaW50IGk7CisgCisrCWlmICghZnNfdHlwZSkKKysJCXJldHVybiAwOworKworIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdXNlX2ZzX3R5cGVzKTsgaSsrKSB7CisgCQlpZiAoIXN0cmNtcChmdXNlX2ZzX3R5cGVzW2ldLCBmc190eXBlKSkKKyAJCQlyZXR1cm4gMTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzY2JmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzA1MTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLUNGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLUNGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotU1JDUkVWID0gIjE4OTE2YTJlNmQ4Yzk5N2I3YjI5ZGNmYTk1NTBkNWExNWIyMmVkMjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCi0KLSAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgotICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKLSAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCi0gICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcwotICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCi0gICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQotICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCi0KLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIGFjbCBcCi0gICAgYXQgXAotICAgIGF0dHIgXAotICAgIGJhc2ggXAotICAgIGNwaW8gXAotICAgIGNyb25pZSBcCi0gICAgY3VybCBcCi0gICAgZTJmc3Byb2dzLW1rZTJmcyBcCi0gICAgZXhwZWN0IFwKLSAgICBnYXdrIFwKLSAgICBnemlwIFwKLSAgICBpcHJvdXRlMiBcCi0gICAgbGRkIFwKLSAgICBsaWJhaW8gXAotICAgIGxvZ3JvdGF0ZSBcCi0gICAgcGVybCBcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHVuemlwIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB3aGljaCBcCi0iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiL29wdC9sdHAvbGliL2xpYm1lbS5hIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEiCi0KLUZJTEVTXyR7UE59ICs9ICIvb3B0L2x0cC8qIC9vcHQvbHRwL3J1bnRlc3QvKiAvb3B0L2x0cC9zY2VuYXJpb19ncm91cHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qL2Jpbi8qIC9vcHQvbHRwL3Rlc3RzY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0RvY3VtZW50YXRpb24vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9pbmNsdWRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3NjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3Rvb2xzLyoiCi0KLSMgQXZvaWQgZ2VuZXJhdGVkIGJpbmFyaWVzIHN0cmlwcGluZy4gT3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlscwotSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCi1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKLSMgSG93ZXZlciwgdGVzdF9hcmNoX3N0cmlwcGVkIGlzIGFscmVhZHkgc3RyaXBwZWQsIHNvLi4uCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmYjQxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYgpAQCAtMCwwICsxLDExNiBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjczMWNkMzRlNjgyZDI5N2IyMDc2NjhiZThiMWQxNTMyMGE5YWMxYjEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCitleHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCisjIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCisKK2RvX2luc3RhbGwoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCisKKyAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgorICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKKyAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCisgICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcworICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCisgICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQorICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCisgICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGFjbCBcCisgICAgYXQgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNwaW8gXAorICAgIGNyb25pZSBcCisgICAgY3VybCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgZXhwZWN0IFwKKyAgICBnYXdrIFwKKyAgICBnemlwIFwKKyAgICBpcHJvdXRlMiBcCisgICAgbGRkIFwKKyAgICBsaWJhaW8gXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgcGVybCBcCisgICAgcHl0aG9uLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyAgICB0YXIgXAorIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgorCisjIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKKworIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90CisjIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgorIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKKyMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCitTS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyOGE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNTE4NDI5NzhlMDY2ODYyODY0MjFmOTQ5OGQxMDA5YjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZhZWM2NDFjYTNkOTk0MmIwNTRjYzBlOWMzZjA1Y2I0NmEzYTk5MmJjMDAwNjc5NTc1NWUyZmVkMTM1N2YzZSIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS1kaXNhYmxlLWNhY2hlLW93bmVyIgorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisgICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworfQorCitGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgorUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDc3YTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwODMwMGVkMDlkMWFkNTkzODA3MDE1OGIyMWRhMWQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2ZGI5MWEyNGU2OGM3Yzc2NWI3YjhlNjBmMTU5MWVkMTA0OWJjMmRjMzE0M2RiNzc5ZWFlNDgzOGI4OWQxOTUiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiZDA5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTc5NGY3MDE2MTdjYzAzZmU1MGM1MzI1NzY2MGQ4ZWM0IgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODJiZDJkMDVjNGQwZGJhNWU3YTkwZDM5Yzk1NTUxOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVlYmM2YjA5YTExZTdmN2JiYzk4ZjM5ODRmZThiOGIyYmRlOWQyZjVmOWRjYmQ0MzQ4YTllMGQ5MzcwNDIzOCIKKworUkRFUEVORFNfJHtQTn0gPSAibWFuIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCitGSUxFU18ke1BOfS1kb2MgPSAiIgorRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL2NvbmZpZ3VyZV9zZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ZTY4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLW1hbjogcmVwbGFjZSAnLCcgd2l0aCAnIycKLQotU29tZXRpbWVzLCB0aGUgcGFyYW1ldGVycyBvZiBDQy9CVUlMRF9DQyBjb250YWlucyB0aGUgJywnLCB3aGljaAotY2F1c2UgdGhlIHNlZCBjb21tYW5kIGZhaWxlZCwgc28gcmVwbGFjZSB0aGUgJywnIHdpdGggJyMnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDxZdWUuVGFvQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDlmNjJjZjkuLjlhNTY1YWUgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTEzMjEsOSArMTMyMSw5IEBAIGRvCi0gICBlY2hvICJDcmVhdGluZyAkaW5maWxlIGZyb20gJGluZmlsZS5pbiIKLSAgIHNlZCAtZSAnCi0gcyxAdmVyc2lvbkAsJHZlcnNpb24sCi0tcyxAQ0NALCRDQywKLStzI0BDQ0AjJENDIwotIHMsQEVYRUVYVEAsJEVYRUVYVCwKLS1zLEBCVUlMRF9DQ0AsJEJVSUxEX0NDLAotK3MjQEJVSUxEX0NDQCMkQlVJTERfQ0MjCi0gcyxASU5TVEFMTEAsJElOU1RBTEwsCi0gcyxAREVGU0AsJERFRlMsCi0gcyxATElCU0AsJExJQlMsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWctbm9ucm9vdGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjgzNGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgLXIgbWFuLTEuNWcub2xkL2NvbmZpZ3VyZSBtYW4tMS41Zy9jb25maWd1cmUKLS0tLSBtYW4tMS41Zy5vbGQvY29uZmlndXJlCVdlZCBBcHIgIDcgMDQ6MTY6MDUgMTk5OQotKysrIG1hbi0xLjVnL2NvbmZpZ3VyZQlNb24gTWF5IDE1IDE1OjIyOjQ0IDIwMDAKLUBAIC03OTEsNyArNzkxLDcgQEAKLSAgICAgcmVhZCBtb2RlCi0gICAgIGlmIHRlc3QgIiRtb2RlIiAhPSAiIjsgdGhlbiBtYW5fbW9kZT0kbW9kZTsgZmkKLSAgIGZpCi0tICBtYW5faW5zdGFsbF9mbGFncz0iLW0gJG1hbl9tb2RlIC1vICRtYW5fdXNlciAtZyAkbWFuX2dyb3VwIgotKyAgbWFuX2luc3RhbGxfZmxhZ3M9IiIKLSBmaQotIAotICMgV2hhdCBzZWN0aW9ucyBkbyB3ZSBhbnRpY2lwYXRlPwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1nZW5jYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0YjE0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIGdlbmNhdC9nZW5saWIuYwkyMDA2LTA4LTAyIDIwOjExOjQ0LjAwMDAwMDAwMCArMDIwMAotKysrIGdlbmNhdC9nZW5saWIuYy5vZGVuCTIwMDgtMTItMjEgMTk6MTg6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNDcsNiArNDcsNyBAQCB1cC10by1kYXRlLiAgTWFueSB0aGFua3MuCi0gMDEvMTQvOTEgICA0IG5hemd1bAlPZmYgYnkgb25lIG9uIG51bWJlciBzcGVjaWZpZWQgZW50cmllcwotICovCi0gCi0rI3VuZGVmIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpZmRlZiBTWVNWCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MzFlYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluLm1pa2UJRnJpIEFwciAgOSAxMzozNTo1NCAxOTk5Ci0rKysgbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluCUZyaSBBcHIgIDkgMTM6MzY6NDUgMTk5OQotQEAgLTEsOCArMSw4IEBACi0gIyBvbmx5IGV4ZWN1dGVkIGZyb20gYSBzdWJkaXIKLSBNQU4xID0gbWFuIHdoYXRpcyBhcHJvcG9zCi0tTUFONSA9IG1hbi5jb25mCi0rTUFONSA9IG1hbi5jb25maWcKLSBNQU44ID0gbWFrZXdoYXRpcwotLUFMTCA9IG1hbi4xIHdoYXRpcy4xIGFwcm9wb3MuMSBtYW4uY29uZi41Ci0rQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25maWcuNQotIE1BWUJFOCA9IG1ha2V3aGF0aXMKLSAKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1NmMwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLWluaXRpYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2guaW5pdGlhbAlUdWUgSnVsICAzIDE1OjM4OjM5IDIwMDEKLSsrKyBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2gJVHVlIEp1bCAgMyAxNTozOTozOSAyMDAxCi1AQCAtODEsOCArODEsMTAgQEAKLSAJY29udGludWU7OwotICAgICAtcykgc2V0c2VjdGlvbnM9MQotIAljb250aW51ZTs7Ci0tICAgIC11KSBmaW5kYXJnPSItbmV3ZXIgL3Zhci9jYWNoZS9tYW4vd2hhdGlzIgotLQl1cGRhdGU9MQotKyAgICAtdSkgaWYgWyAtZSAvdmFyL2NhY2hlL21hbi93aGF0aXMgXTsgdGhlbgotKwkgIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCi0rCSAgdXBkYXRlPTEKLSsJZmkKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi0gCWNvbnRpbnVlOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExZGY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBzcmMvbWFuLmMJMjAwOC0xMi0yMSAxOToxNzozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBzcmMvbWFuLmMub2RlbgkyMDA4LTEyLTIxIDE5OjE3OjM4LjAwMDAwMDAwMCArMDEwMAotQEAgLTM5MSw3ICszOTEsNyBAQCBhZ2FpbjoKLSAJICBiZWcrKzsKLSAKLSAgICAgIGVuZCA9IGJlZzsKLS0gICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJykKLSsgICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJyAmJiAoZW5kLWJ1Zik8QlVGU0laRSkKLSAJICBlbmQrKzsJCS8qIG5vdGUgdGhhdCBidWYgaXMgTlVMLXRlcm1pbmF0ZWQgKi8KLSAgICAgICplbmQgPSAnXDAnOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZDI4ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVpMi9zcmMvbWFuLmMub3ZlcmZsb3cJTW9uIEp1biAyNSAwMDowMTo0NSAyMDAxCi0rKysgbWFuLTEuNWkyL3NyYy9tYW4uYwlNb24gSnVuIDI1IDAwOjAxOjQ1IDIwMDEKLUBAIC0zODEsNiArMzgxLDkgQEAKLSAJICBzdHJjYXQobmFtZSwgIi8iKTsKLSAJICBzdHJjYXQobmFtZSwgYmVnKTsKLSAgICAgIH0KLSsgICAgIC8qIElmIHRoaXMgaXMgdG9vIGxvbmcsIGJhZCB0aGluZ3MgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkLiAqCi0rICAgICAgKiB3ZSBzaG91bGQgcXVpdCBJTU1FRElBVEVMWS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSsgICAgIGlmKHN0cmxlbihuYW1lKT5zaXplb2YodWx0bmFtZSkpIF9leGl0KDEpOwotIAotICAgICAgZ290byBhZ2FpbjsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotaTE4bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWUwOWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovbXNncy9pbnN0LnNoLmkxOG4JV2VkIEFwciAyNSAxMDo0MDo1MCAyMDAxCi0rKysgbWFuLTEuNWovbXNncy9pbnN0LnNoCVdlZCBBcHIgMjUgMTA6NDE6MTcgMjAwMQotQEAgLTI3LDggKzI3LDcgQEAKLSBmb3IgaiBpbiAkTTsgZG8KLSAgIGlmIFsgLWYgJGogXTsgdGhlbgotICAgICBpPWBlY2hvICRqIHwgc2VkIC1lICdzL21lc3MuLy87IHMvLmNhdC8vJ2AKLS0gICAgZGVzdD1gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLS0gICAgZGVzdD0ke1BSRUZJWH0kZGVzdAotKyAgICBkZXN0PSR7UFJFRklYfS9gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLSAgICAgZWNobyAibWtkaXIgLXAgYGRpcm5hbWUgJGRlc3RgIgotICAgICBta2RpciAtcCBgZGlybmFtZSAkZGVzdGA7Ci0gICAgIGVjaG8gImluc3RhbGwgLWMgLW0gNjQ0ICRqICRkZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLW5vY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxZGRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbi5ub2NhY2hlCVRodSBOb3YgMjIgMTU6MDc6MTIgMjAwMQotKysrIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbglUaHUgTm92IDIyIDE1OjA3OjEyIDIwMDEKLUBAIC04MSw2ICs4MSw5IEBACi0gIyAKLSAjTk9DQUNIRQotICMKLSsjIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMKLStOT0NBQ0hFCi0rIwotICMgVXNlZnVsIHBhdGhzIC0gbm90ZSB0aGF0IENPTCBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hlbgotICMgTlJPRkYgaXMgZGVmaW5lZCBhcyAiZ3JvZmYgLVRhc2NpaSIgb3IgImdyb2ZmIC1UbGF0aW4xIjsKLSAjIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLXV0ZjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNkM2U0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL2NvbmZpZ3VyZS51dGY4CVRodSBOb3YgMjIgMTU6MDI6MzUgMjAwMQotKysrIG1hbi0xLjVqL2NvbmZpZ3VyZQlUaHUgTm92IDIyIDE1OjAzOjE1IDIwMDEKLUBAIC00MDgsOSArNDA4LDkgQEAKLSAgIEZnYXdrPS9iaW4vZ2F3awotICAgRmF3az0vYmluL2dhd2sKLSAgIEZtYXdrPW1pc3NpbmcKLS0gIHRyb2ZmPSIiCi0tICBucm9mZj0iIgotLSAgam5yb2ZmPSIiCi0rICB0cm9mZj0vdXNyL2Jpbi90cm9mZgotKyAgbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgIGpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgZXFuPSIiCi0gICBuZXFuPSIiCi0gICBqbmVxbj0iIgotQEAgLTQ1Myw2ICs0NTMsOCBAQAotICAgICBkb25lCi0gICBkb25lCi0gICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotKyAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgRmdlcW49L3Vzci9iaW4vZ2VxbgotICAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotICAgRmNvbD0vdXNyL2Jpbi9jb2wKLUBAIC00ODUsMjUgKzQ4NywyNSBAQAotICAgdGhlbgotICAgICBpZiB0ZXN0ICRGbnJvZmYgPSAibWlzc2luZyIKLSAgICAgdGhlbgotLSAgICAgIG5yb2ZmPSJucm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSJucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZWxzZQotLSAgICAgIG5yb2ZmPSIkRm5yb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCi0rICAgICAgbnJvZmY9IiRGbnJvZmYgLVR1dGY4IC1tYW5kb2MiCi0gICAgIGZpCi0gICAgIHRyb2ZmPSJ0cm9mZiAtbWFuZG9jIgotICAgICBlY2hvICJXYXJuaW5nOiBjb3VsZCBub3QgZmluZCBncm9mZiIKLSAgIGVsc2UKLSAgICAgaWYgdGVzdCAkRm5yb2ZmID0gIm1pc3NpbmciCi0gICAgIHRoZW4KLS0gICAgICBucm9mZj0iJEZncm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSIkRmdyb2ZmIC1UdXRmOCAtbWFuZG9jIgotICAgICBlbHNlCi0tICAgICAgbnJvZmY9IiRGbnJvZmYgLVRsYXRpbjEgLW1hbmRvYyIKLSsgICAgICBucm9mZj0iJEZucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZmkKLSAgICAgdHJvZmY9IiRGZ3JvZmYgLVRwcyAtbWFuZG9jIgotLSAgICBqbnJvZmY9IiRGZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oiCi0rICAgIGpucm9mZj0iJEZqbnJvZmYgLVR1dGY4IC1tYW5kb2NqIgotICAgZmkKLSAgIGVxbj0iJEZnZXFuIC1UcHMiCi0tICBuZXFuPSIkRmdlcW4gLVRsYXRpbjEiCi0tICBqbmVxbj0iJEZnZXFuIC1UbmlwcG9uIgotKyAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLSsgIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotICAgdGJsPSIkRmd0YmwiCi0gICBjb2w9IiRGY29sIgotICAgdmdyaW5kPSIkRnZncmluZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3NDZjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstY29uZnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBjb25maWd1cmUJMjAwNi0wNS0wMSAxOTo1NjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjb25maWd1cmUub2RlbgkyMDA4LTEyLTIxIDE5OjE2OjUwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICBjb25mZGlyPSIke2NvbmZwcmVmaXh9L3NoYXJlL21pc2MiCi0gICBmaQotIGZpCi0tY29uZmZpbGVuYW1lPSJtYW4uY29uZiIKLStjb25mZmlsZW5hbWU9Im1hbi5jb25maWciCi0gCi0gaWYgdGVzdCAiJFJBTkRPTSIgPSAiJFJBTkRPTSI7IHRoZW4KLSAgICMgUGxhaW4gb2xkIEJvdXJuZSBzaGVsbC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2MmQ5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL3NyYy9hcHJvcG9zLnNoLm5vbmFzY2lpCTIwMDEtMTEtMjMgMDA6MzA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgLi9zcmMvYXByb3Bvcy5zaAkyMDAyLTA4LTEzIDE1OjQ0OjUzLjAwMDAwMDAwMCArMDIwMAotQEAgLTE4LDkgKzE4LDkgQEAKLSAKLSAjIFdoZW4gbWFuIHBhZ2VzIGluIHlvdXIgZmF2b3JpdGUgbG9jYWxlIGxvb2sgdG8gZ3JlcCBsaWtlIGJpbmFyeSBmaWxlcwotICMgKGFuZCB5b3UgdXNlIEdOVSBncmVwKSB5b3UgbWF5IHdhbnQgdG8gYWRkIHRoZSAnYScgb3B0aW9uIHRvICpncmVwb3B0MS4KLS1hcHJvcG9zZ3JlcG9wdDE9J2knCi0rYXByb3Bvc2dyZXBvcHQxPSdpYScKLSBhcHJvcG9zZ3JlcG9wdDI9JycKLS13aGF0aXNncmVwb3B0MT0naXcnCi0rd2hhdGlzZ3JlcG9wdDE9J2l3YScKLSB3aGF0aXNncmVwb3B0Mj0nXicKLSBncmVwb3B0MT0kJWFwcm9wb3Nfb3Jfd2hhdGlzJWdyZXBvcHQxCi0gZ3JlcG9wdDI9JCVhcHJvcG9zX29yX3doYXRpcyVncmVwb3B0MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGI5MjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1zb2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uYy5zb2ZpeAlUaHUgTm92IDIyIDE0OjUxOjQ0IDIwMDEKLSsrKyBtYW4tMS41ai9zcmMvbWFuLmMJVGh1IE5vdiAyMiAxNDo1Mjo0NCAyMDAxCi1AQCAtMzAwLDcgKzMwMCw3IEBACi0gCi0gICAgICBpZiAoc3RybGVuKG5hbWUwKSA+PSBzaXplb2YodWx0bmFtZSkpCi0gCSAgICAgcmV0dXJuIG5hbWUwOwotLSAgICAgc3RyY3B5KHVsdG5hbWUsIG5hbWUwKTsKLSsgICAgIHN0cm5jcHkodWx0bmFtZSwgbmFtZTAsIEJVRlNJWkUtMzIpOwotICAgICAgbmFtZSA9IHVsdG5hbWU7Ci0gCi0gYWdhaW46Ci1AQCAtMzMyLDcgKzMzMiw3IEBACi0gCSAgICogLnNvIGZpbGVzIC0gd2UgY291bGQgZ2xvYiBmb3IgYWxsIHBvc3NpYmxlIGV4dGVuc2lvbnMsCi0gCSAgICogZm9yIG5vdzogb25seSB0cnkgLmd6Ci0gCSAgICovCi0tCSAgZWxzZSBpZiAoZnAgPT0gTlVMTCAmJiBnZXRfZXhwYW5kZXIoIi5neiIpICYmCi0rCSAgaWYgKGZwID09IE5VTEwgJiYgZ2V0X2V4cGFuZGVyKCIuZ3oiKSAmJgotIAkJICAgc3RybGVuKG5hbWUpK3N0cmxlbigiLmd6IikgPCBCVUZTSVpFKSB7Ci0gCSAgICAgICBzdHJjYXQobmFtZSwgIi5neiIpOwotIAkgICAgICAgZnAgPSBmb3BlbiAobmFtZSwgInIiKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1ZzExNjIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTEyOTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL2NvbmZpZ3VyZS5hZAkyMDAzLTEyLTExIDE5OjE3OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MTc6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAtMjYsNyArMjYsNyBAQAotICMgKEluZGVlZCwgLXIgbWF5IGNhdXNlIHRoZSB0ZXJtaW5hbCB0byBnZXQgaW50byBmdW5ueSBzdGF0ZXMuCi0gIyBWZXJ5IGluY29udmVuaWVudC4gRm9yIHZpZXdpbmcgcGFnZXMgaW4gc3RyYW5nZSBsb2NhbGVzLCBzZXQgTENfKi4pCi0gIwotLURFRkFVTFRMRVNTT1BUPSItaXMiCi0rREVGQVVMVExFU1NPUFQ9Ii1pc3IiCi0gIwotICMgTm90ZSB0aGF0IG5vdCBjcmVhdGluZyBhbnkgY2F0IGRpcmVjdG9yaWVzICgvdmFyL2NhY2hlL21hbiBvciBzbykKLSAjIGFuZCBub3QgbWFraW5nIG1hbiBzdWlkIG9yIHNnaWQgaXMgcmVjb21tZW5kZWQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1aWxkcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzk3ZjU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gLi9jb25maWd1cmUubGVzcwkyMDAzLTEyLTExIDE5OjE4OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MjA6MDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNDAxLDE4ICs0MDEsMTMgQEAKLSAKLSBpZiB0ZXN0ICIkYW5zIiA9ICJmYWxzZSIKLSB0aGVuCi0tICBmb3IgaSBpbiBtb3JlIGxlc3MgY21wIGNhdCBhd2sgZ2F3ayBtYXdrCi0tICBkbwotLSAgICBldmFsIEYkaT0ibWlzc2luZyIKLS0gICAgZm9yIGogaW4gJERFRlBBVEgKLS0gICAgZG8KLS0gICAgICBpZiB0ZXN0IC1mICRqLyRpCi0tICAgICAgdGhlbgotLQlldmFsIEYkaT0kai8kaQotLQlicmVhawotLSAgICAgIGZpCi0tICAgIGRvbmUKLS0gIGRvbmUKLSsgIEZtb3JlPS9iaW4vbW9yZQotKyAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgRmNtcD0vdXNyL2Jpbi9jbXAKLSsgIEZjYXQ9L2Jpbi9jYXQKLSsgIEZnYXdrPS9iaW4vZ2F3awotKyAgRmF3az0vYmluL2dhd2sKLSsgIEZtYXdrPW1pc3NpbmcKLSAgIHRyb2ZmPSIiCi0gICBucm9mZj0iIgotICAgam5yb2ZmPSIiCi1AQCAtNDU3LDYgKzQ1MiwxOSBAQAotICAgICAgIGZpCi0gICAgIGRvbmUKLSAgIGRvbmUKLSsgIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotKyAgRmdlcW49L3Vzci9iaW4vZ2VxbgotKyAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotKyAgRmNvbD0vdXNyL2Jpbi9jb2wKLSsgIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0rICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0rICBGbW9yZT0vYmluL21vcmUKLSsgIEZsZXNzPS91c3IvYmluL2xlc3MKLSsgIEZjbXA9L3Vzci9iaW4vY21wCi0rICBGY2F0PS9iaW4vY2F0Ci0rICBGZ2F3az0vYmluL2dhd2sKLSsKLSsKLSAgIGZvciBpIGluIGVxbiB0YmwgcmVmZXIgcGljCi0gICBkbwotICAgICBpZiB0ZXN0IGBldmFsIGVjaG8gXFwkRmckaWAgPSAibWlzc2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItbm8tY29sb3ItZm9yLXByaW50aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWZmMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvY29uZmlndXJlLmNvbG9yCTIwMDYtMDktMTYgMTg6Mjc6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgbWFuLTEuNW0yL2NvbmZpZ3VyZQkyMDA2LTA5LTE2IDE4OjI4OjQ0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUzOSw2ICs1MzksOCBAQAotICAgICB0cm9mZj0iJHRyb2ZmIC1jIgotICAgICBucm9mZj0iJG5yb2ZmIC1jIgotICAgICBqbnJvZmY9IiRqbnJvZmYgLWMiCi0rZWxzZQotKyAgICB0cm9mZj0iJHRyb2ZmIC1jIgotIGZpCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmNzhlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvc3JjL3V0aWwuY19zaWdwaXBlCTIwMDYtMTItMDkgMTM6NDM6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgbWFuLTEuNW0yL3NyYy91dGlsLmMJMjAwNi0xMi0wOSAxMzo1MzoxMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTYsMTEgKzExNiwxNCBAQAotIHN0YXRpYyBpbnQKLSBzeXN0ZW0xIChjb25zdCBjaGFyICpjb21tYW5kKSB7Ci0gCXZvaWQgKCpwcmV2X2hhbmRsZXIpKGludCkgPSBzaWduYWwgKFNJR0lOVCxjYXRjaF9pbnQpOwotKwlzaWduYWwgKFNJR1BJUEUsU0lHX0lHTik7Ci0gCWludCByZXQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gCi0gCS8qIGNoaWxkIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWw/ICovCi0gCWlmIChXSUZTSUdOQUxFRChyZXQpICYmCi0tCSAgICAoV1RFUk1TSUcocmV0KSA9PSBTSUdJTlQgfHwgV1RFUk1TSUcocmV0KSA9PSBTSUdRVUlUKSkKLSsJICAgIChXVEVSTVNJRyhyZXQpID09IFNJR0lOVCB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUElQRSB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUVVJVCkpCi0gCQlleGl0KDEpOwotIAotIAkvKiBvciB3ZSBjYXVnaHQgYW4gaW50ZXJydXB0PyAqLwotQEAgLTEyOCw2ICsxMzEsNyBAQAotIAkJZXhpdCgxKTsKLSAKLSAJc2lnbmFsKFNJR0lOVCxwcmV2X2hhbmRsZXIpOwotKwlzaWduYWwoU0lHUElQRSxTSUdfREZMKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjEzMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9hcHJvcG9zLnNoIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCTIwMDctMDUtMTggMTQ6MjQ6MzMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNjAsMTYgKzYwLDU2IEBACi0gICAgIGVzYWMKLSBkb25lCi0gCi0rIyBsaXN0IG9mIGxhbmd1YWdlcyB0byBsb29rIGZvcgotK0xBTkdfTElTVD1gZWNobyAkTEFOR1VBR0U6JExDX0FMTDokTENfTUVTU0FHRVM6JExBTkcgfCB0ciAnOicgJyAnYAotK0RJUl9MSVNUPSIiCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLStkbwotKyAgICBmb3IgbCBpbiAkTEFOR19MSVNUCi0rICAgIGRvCi0rICAgICAgICBpZiBbIC1kICRkLyRsIF0KLSsgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHBhdGggaXMgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QKLSsgICAgICAgICAgICBpZiAhIGVjaG8gIiRESVJfTElTVCIgfCBncmVwICIgJGQvJGxcYiIgPiAvZGV2L251bGwKLSsgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQvJGwiCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZCIKLSsgICAgIyBjaGVjayB0aGF0IHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0Ci0rICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZFxiIiA+IC9kZXYvbnVsbAotKyAgICB0aGVuCi0rICAgICAgICBESVJfTElTVD0iJERJUl9MSVNUICRkLyRsIgotKyAgICBmaQotK2RvbmUKLSsKLSB3aGlsZSBbICIkMSIgIT0gIiIgXQotIGRvCi0gICAgIGZvdW5kPTAKLS0gICAgZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLSsgICAgIyBpbiBvcmRlciBub3QgdG8gZGlzcGxheSBsaW5lcyBpbiBtb3JlIHRoYW4gb25lIGxhbmd1YWdlIGZvcgotKyAgICAjIGEgc2FtZSBtYW4gcGFnZTsgd2UgY2hlY2sgdGhhdCBhIGdpdmVuIG1hbiBwYWdlIG5hbWUKLSsgICAgIyBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc3BsYXllZAotKyAgICBCQVo9IiIKLSsgICAgZm9yIGQgaW4gJERJUl9MSVNUCi0gICAgIGRvCi0gICAgICAgICBpZiBbIC1mICRkL3doYXRpcyBdCi0gICAgICAgICB0aGVuCi0tICAgICAgICAgICAgaWYgZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpcwotKyAgICAgICAgICAgIGlmIEZPTz1gZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpc2AKLSAgICAgICAgICAgICB0aGVuCi0tICAgICAgICAgICAgICAgIGZvdW5kPTEKLSsgICAgICAgICAgICAgICAgIyB0aGUgTENfQUxMPUMgaXMgbmVlZGVkIGluIGNhc2UgdGhlIHRleHQgaXMKLSsgICAgICAgICAgICAgICAgIyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZyB0aGFuIHRoZSBsb2NhbGUKLSsgICAgICAgICAgICAgICAgQkFSPWBlY2hvIC1lICIkRk9PIiB8IExDX0FMTD1DIHNlZCAncy8gLSAuKiQvLycgfCB0ciAnIFtdJyAnXycgfCBzb3J0IC11YAotKyAgICAgICAgICAgICAgICBmb3IgaSBpbiAkQkFSCi0rICAgICAgICAgICAgICAgIGRvCi0rICAgICAgICAgICAgICAgICAgICBpZiAhIGVjaG8gIiRCQVoiIHwgZ3JlcCAiJGkiID4gL2Rldi9udWxsCi0rICAgICAgICAgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgQkFaPSIkQkFaICRpIgotKyAgICAgICAgICAgICAgICAgICAgICAgIGk9Il5gZWNobyAkaSB8IHNlZCAnczpfXCs6XFxcKFxbXyBcXVxcXHxcXFxbXFxcfFxcXF1cXFwpXFxcKzpnJ2AiCi0rICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAiJEZPTyIgfCBncmVwICIkaSIKLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZD0xCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBkb25lCi0gIyBTb21lIHBlb3BsZSBhcmUgc2F0aXNmaWVkIHdpdGggYSBzaW5nbGUgb2NjdXJyZW5jZQotICMgQnV0IGl0IGlzIGJldHRlciB0byBnaXZlIGFsbAotICMgICAgICAgICAgICAgICBicmVhawotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCTIwMDctMDUtMTggMTM6NTA6MDcuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNDEsMTIgKzQxLDMyIEBACi0gCi0gcHJvZ3JhbT1gYmFzZW5hbWUgJDBgCi0gCi0rIyB0aGlzIGFsbG93cyB0byBkZWZpbmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgdmFsdWVzIGZybyBOQU1FLCBERVNDUklQVElPTgotKyMgaWYgbm90IGRlZmluZWQsIHVzaW5nIHRob3NlIGRlZmF1bHQgdmFsdWVzCi0raWYgWyAteiAiJE1BTl9OQU1FIiBdCi0rdGhlbgotKwlNQU5fTkFNRT0i0JjQnNCVfE5PTXxKTcOJTk98TkFWTnzOn86dzp/OnM6RfE5PTUJSRXxOSU1FfElaRU5BfE5JTUl8SU1FfFwKLStOw4lWfE5PTUV85ZCN5YmNfOydtOumhHxOQUFNfE5BWldBfE5VTUV80JjQnNCvfE1FTk980J3QkNCX0JLQkHzlkI3np7B85ZCN56ixIgotK2ZpCi0raWYgWyAteiAiJE1BTl9ERVNDUklQVElPTiIgXQotK3RoZW4KLSsJTUFOX0RFU0NSSVBUSU9OPSLQntCf0JjQodCQ0J3QmNCVfERFU0NSSVBDScOTfFBPUElTfEJFU0tSSVZFTFNFfEJFU0NIUkVJQlVOR3xcCi0rzqDOlc6hzpnOk86hzpHOps6XfERFU0NSSVBDScOTTnxLSVJKRUxEVVN8QVpBTFBFTkF8S1VWQVVTfE9QSVN8TEXDjVLDgVN8REVTQ1JJWklPTkV8XAotK+iqrOaYjnzshKTrqoV8QkVTQ0hSSUpWSU5HfERFU0NSScOHw4NPfERFU0NSSUVSRXzQntCf0JjQoXzmj4/ov7AiCi0rZmkKLSsjIG1ha2UgdGhlbSBpbnRvIGF3ayByZWdleHAKLStNQU5fTkFNRT0iXigke01BTl9OQU1FfSkiOwotK01BTl9ERVNDUklQVElPTj0iXigke01BTl9ERVNDUklQVElPTn0pIjsKLSsKLSAjIEluIGNhc2UgYm90aCAvdXNyL21hbiBhbmQgL3Vzci9zaGFyZS9tYW4gZXhpc3QsIHRoZSBmb3JtZXIgaXMgbG9jYWwKLSAjIGFuZCBzaG91bGQgYmUgZmlyc3QuCi0gIyBJdCBpcyBhIGJ1ZyB0byBhZGQgL3Zhci9jYWNoZS9tYW4gdG8gREVGQ0FUUEFUSC4KLSBkbT0KLSBmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0rICAgIGlmIFsgLW4gIiRMQU5HIiAtYSAtZCAiJGQvJExBTkciIF07IHRoZW4KLSsJaWYgWyB4JGRtID0geCBdOyB0aGVuIGRtPSIkZC8kTEFORyI7IGVsc2UgZG09JGRtOiIkZC8kTEFORyI7IGZpCi0rICAgIGZpCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotICAgICBmaQotQEAgLTU1LDYgKzc1LDkgQEAKLSBkYz0KLSBmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAvdXNyL3NoYXJlL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuCi0gZG8KLSsgICAgaWYgWyAtbiAiJExBTkciIC1hIC1kICIkZC8kTEFORyIgXTsgdGhlbgotKwlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZG09IiRkLyRMQU5HIjsgZWxzZSBkbT0kZGM6IiRkLyRMQU5HIjsgZmkKLSsgICAgZmkKLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkYz0kZDsgZWxzZSBkYz0kZGM6JGQ7IGZpCi0gICAgIGZpCi1AQCAtMTk0LDcgKzIxNyw3IEBACi0gCSAgICBzZWN0aW9uPSRpCi0gCSAgICBjdXJkaXI9JG1hbmRpci8ke3BhZ2VzfSRpCi0gCSAgICBleHBvcnQgc2VjdGlvbiB2ZXJib3NlIGN1cmRpcgotLQkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8ICRBV0sgJwotKwkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8IExDX0FMTD1DICRBV0sgLXYgTUFOX05BTUU9IiRNQU5fTkFNRSIgLXYgTUFOX0RFU0NSSVBUSU9OPSIkTUFOX0RFU0NSSVBUSU9OIiAnCi0gCi0gCSAgICBmdW5jdGlvbiByZWFkbGluZSgpIHsKLSAJICAgICAgaWYgKHVzZV96Y2F0IHx8IHVzZV9iemNhdCkgewotQEAgLTI2MSwxMyArMjg0LDcgQEAKLSAJCWdzdWIoLy5cYi8sICIiKTsKLSAJCWlmICgoJDEgfiAvXlwuW1NzXVtIaF0vICYmCi0gCQkgICgkMiB+IC9bTm5dW0FhXVtNbV1bRWVdLyB8fAotLQkJICAgJDIgfiAvXkpNyU5PLyB8fCAkMiB+IC9eTkFWTi8gfHwgJDIgfiAvXk5VTUUvIHx8Ci0tCQkgICAkMiB+IC9eQkVaRUlDSE5VTkcvIHx8ICQyIH4gL15OT01CUkUvIHx8Ci0tCQkgICAkMiB+IC9eTklNSS8gfHwgJDIgfiAvXk5PTS8gfHwgJDIgfiAvXklNRS8gfHwKLS0JCSAgICQyIH4gL15OW8lFXVYvIHx8ICQyIH4gL15OQU1BLyB8fCAkMiB+IC9ezL7BsC8gfHwKLS0JCSAgICQyIH4gL17Mvr7OLyB8fCAkMiB+IC9ewMy4py8gfHwgJDIgfiAvXk5BWldBLyB8fAotLQkJICAgJDIgfiAvXu7h+vfh7unlLyB8fCAkMiB+IC9ew/uzxi8gfHwgJDIgfiAvXqZXutkvIHx8Ci0tCQkgICAkMiB+IC9eTk9NRS8gfHwgJDIgfiAvXk5BQU0vIHx8ICQyIH4gL17IzMUvKSkgfHwKLSsJCSAgICQyIH4gTUFOX05BTUUgKSkgfHwKLSAJCSAgKHBhZ2VzID09ICJjYXQiICYmICQxIH4gL15OQU1FLykpIHsKLSAJCSAgICBpZiAoIWluc2gpIHsKLSAJCSAgICAgIGluc2ggPSAxOwotQEAgLTI3OCw2ICsyOTUsNyBAQAotIAkJICBpZiAoJDEgfiAvXlwuW1NzXVtIaFlTXS8gfHwKLSAJCSAgICAocGFnZXMgPT0gImNhdCIgJiYKLSAJCSAgICAoJDEgfiAvXlNbeVllRV0vIHx8ICQxIH4gL15ERVNDUklQVElPTi8gfHwKLSsJCSAgICAgJDEgfiBNQU5fREVTQ1JJUFRJT04gfHwKLSAJCSAgICAgJDEgfiAvXkNPTU1BTkQvIHx8ICQxIH4gL15PVkVSVklFVy8gfHwKLSAJCSAgICAgJDEgfiAvXlNUUlVDVFVSRVMvIHx8ICQxIH4gL15JTlRST0RVQ1RJT04vIHx8Ci0gCQkgICAgICQwIH4gL15bXiBdLykpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbWFuZGlycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjQwMDY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmNvbmYuaW4JMjAwNS0wOC0yMCAyMDoyNjowNi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmNvbmYuaW4JMjAwNy0wNS0xOCAxMDozMDoyOS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0zNiwxMSArMzYsMTIgQEAKLSAjCi0gIyBFdmVyeSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBNQU5QQVRIIGluY2x1ZGVzIHRoZXNlIGZpZWxkcwotICMKLS1NQU5QQVRICS91c3IvbWFuCi0gTUFOUEFUSAkvdXNyL3NoYXJlL21hbgotK01BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRICS91c3IvbG9jYWwvbWFuCi0gTUFOUEFUSAkvdXNyL2xvY2FsL3NoYXJlL21hbgotLU1BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLStNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSAkvdXNyL21hbgotICMKLSAjIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0gIwotQEAgLTY3LDYgKzY4LDkgQEAKLSBNQU5QQVRIX01BUAkvdXNyL1gxMVI2L2JpbgkJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi0gTUFOUEFUSF9NQVAJL3Vzci9iaW4vbWgJCS91c3Ivc2hhcmUvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9iaW4JCS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9zYmluCQkvdXNyL2tlcmJlcm9zL21hbgotKwotICMKLSAjIE5PQVVUT1BBVEgga2VlcHMgbWFuIGZyb20gYXV0b21hdGljYWxseSBhZGRpbmcgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UKLSAjIG1hbnVhbCBwYWdlIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1uZXdfc2VjdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTc3M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZlLm9yaWcvY29uZmlndXJlCTIwMDYtMDUtMDEgMTQ6NTY6MTQuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvY29uZmlndXJlCTIwMDctMDUtMTggMTQ6MzU6NDMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOTYwLDcgKzk2MCw3IEBACi0gCi0gIyBXaGF0IHNlY3Rpb25zIGRvIHdlIGFudGljaXBhdGU/Ci0gCi0tdG1wc2VjdGlvbnM9IjEgMXAgOCAyIDMgM3AgNCA1IDYgNyA5IDBwIHRjbCBuIGwgcCBvIgotK3RtcHNlY3Rpb25zPSIxIDFwIDggMiAzIDNwIDNwbSA0IDUgNiA3IDkgMHAgdGNsIG4gbCBwIG8iCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KLSAgIGVjaG8gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtcm9fdXNyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDFjYjBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo0MjozNC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjQyOjM1LjY2NzQyODM0NyAtMDgwMAotQEAgLTEyNCw3ICsxMjQsNyBAQAotIAljb250aW51ZTs7Ci0gICAgIC1zKSBzZXRzZWN0aW9ucz0xCi0gCWNvbnRpbnVlOzsKLS0gICAgLXUpIGZpbmRhcmc9Ii1jdGltZSAwIgotKyAgICAtdSkgZmluZGFyZz0iLW5ld2VyIC92YXIvY2FjaGUvbWFuL3doYXRpcyIKLSAJdXBkYXRlPTEKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi1AQCAtMTY1LDE0ICsxNjUsNyBAQAotICMgZmlyc3QgdHJ1bmNhdGUgYWxsIHRoZSB3aGF0aXMgZmlsZXMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgbmV3LAotICMgdGhlbiBvbmx5IHVwZGF0ZSAtIHdlIG1pZ2h0IHZpc2l0IHRoZSBzYW1lIGRpcmVjdG9yeSB0d2ljZQotIGlmIFsgeCR1cGRhdGUgPSB4IF07IHRoZW4KLS0gICBmb3IgcGFnZXMgaW4gbWFuIGNhdAotLSAgIGRvCi0tICAgICAgZXZhbCBwYXRoPSJcJCRwYWdlcyJwYXRoCi0tICAgICAgZm9yIG1hbmRpciBpbiAkcGF0aAotLSAgICAgIGRvCi0tCSBjcCAvZGV2L251bGwgJG1hbmRpci93aGF0aXMKLS0gICAgICBkb25lCi0tICAgZG9uZQotKyAgIGNwIC9kZXYvbnVsbCAvdmFyL2NhY2hlL21hbi93aGF0aXMKLSBmaQotIAotIGZvciBwYWdlcyBpbiBtYW4gY2F0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMmE4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXNlY3VyaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMDYtMDctMTkgMDE6NTg6MDguMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMDoxODozMS4wMDAwMDAwMDAgLTAzMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gIyBhbmQgc2hvdWxkIGJlIGZpcnN0LgotICMgSXQgaXMgYSBidWcgdG8gYWRkIC92YXIvY2FjaGUvbWFuIHRvIERFRkNBVFBBVEguCi0gZG09Ci0tZm9yIGQgaW4gL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4gL3Vzci9YMTFSNi9tYW4gL3Vzci9sb2NhbC9tYW4KLStmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotQEAgLTUzLDcgKzUzLDcgQEAKLSBkb25lCi0gREVGTUFOUEFUSD0kZG0KLSBkYz0KLS1mb3IgZCBpbiAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL3NoYXJlL21hbiAvdXNyL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZGM9JGQ7IGVsc2UgZGM9JGRjOiRkOyBmaQotQEAgLTc2LDEyICs3NiwxMiBAQAotICMgV2UgdHJ5IGhlcmUgdG8gYmUgY2FyZWZ1bCAoYW5kIGF2b2lkIHByZWNvbnN0cnVjdGVkIHN5bWxpbmtzKQotICMgaW4gY2FzZSBtYWtld2hhdGlzIGlzIHJ1biBhcyByb290LCBieSBjcmVhdGluZyBhIHN1YmRpcmVjdG9yeSBvZiAvdG1wLgotIAotLVRNUEZJTEVESVI9L3RtcC93aGF0aXMudG1wLmRpci4kJAotLXJtIC1yZiAkVE1QRklMRURJUgotLWlmICEgbWtkaXIgLW0gMDcwMCAkVE1QRklMRURJUjsgdGhlbgotLSAgICBlY2hvIENvdWxkIG5vdCBjcmVhdGUgJFRNUEZJTEVESVIKLS0gICAgZXhpdCAxOwotK1RNUEZJTEVESVI9YG1rdGVtcCAtZCAvdG1wL21ha2V3aGF0aXNYWFhYWFhgCi0raWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0rICAgZWNobyAiJDA6IENhbid0IGNyZWF0ZSB0ZW1wIGZpbGUsIGV4aXRpbmcuLi4iCi0rICAgZXhpdCAxCi0gZmkKLStjaG1vZCAwNzAwICRUTVBGSUxFRElSCi0gVE1QRklMRT0kVE1QRklMRURJUi93Ci0gCi0gIyBtYWtlIHN1cmUgVE1QRklMRURJUiBpcyBkZWxldGVkIGlmIHByb2dyYW0gaXMga2lsbGVkIG9yIHRlcm1pbmF0ZXMKLWRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMgbWFuLTEuNmUvc3JjL21hbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMJMjAwNi0wNS0wMSAxNzozNDoyMi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmMJMjAwNy0wNS0xOCAxMDoxMTozMy4wMDAwMDAwMDAgLTAzMDAKLUBAIC0xMjM0LDcgKzEyMzQsNiBAQAotICNlbmRpZgotIAotIAotLSNpZiAwCi0gICAgICB7Ci0gCS8qIFRoZXJlIGFyZSBubyBrbm93biBjYXNlcyBvZiBidWZmZXIgb3ZlcmZsb3cgY2F1c2VkIGJ5Ci0gCSAgIGV4Y2Vzc2l2ZWx5IGxvbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBJbiBjYXNlIHlvdSBmaW5kIG9uZSwKLUBAIC0xMjU3LDcgKzEyNTYsNiBAQAotIAkgICBNQU5fSUNPTlZfUEFUSCwgTUFOX0lDT05WX09QVCwgTUFOX0lDT05WX0lOUFVUX0NIQVJTRVQsCi0gCSAgIE1BTl9JQ09OVl9PVVRQVVRfQ0hBUlNFVCwgTkxTUEFUSCwgUEFUSCAqLwotICAgICAgfQotLSNlbmRpZgotIAotIAotICNpZm5kZWYgX19GcmVlQlNEX18gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OGY3NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL2NhdG9wZW4vY2F0b3Blbi5jIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9jYXRvcGVuL2NhdG9wZW4uYwkyMDA1LTA4LTIwIDIwOjI2OjA2LjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCTIwMDctMDUtMTggMTE6MzE6MDUuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOSwyMiArOSw2MyBAQAotIGV4dGVybiBjaGFyICppbmRleCAoY29uc3QgY2hhciAqLCBpbnQpOyAgICAgICAgIC8qIG5vdCBhbHdheXMgaW4gPHN0cmluZy5oPiAqLwotIGV4dGVybiBjaGFyICpteV9tYWxsb2MoaW50KTsJLyogaW4gdXRpbC5jICovCi0gCi0rLyogaWYgdGhlIHByb2dyYW0gaGFzIHNnaWQvc3VpZCBwcml2aWxlZ2VzIHRoZW4gZ2V0ZW52IGRvZXNuJ3QgcmV0dXJuCi0rICogTkxTUEFUSDsgc28gd2Ugc2V0IGhlcmUgYSBnb29kIGRlZmF1bHQgdmFsdWUuCi0rICovCi0gI2lmbmRlZiBERUZBVUxUX05MU1BBVEgKLSAjIGlmIF9fR0xJQkNfXyA+PSAyCi0tIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU4iCi0rIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWxfJXQvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWwvJU4iCi0gIyBlbHNlCi0gIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9saWIvbG9jYWxlLyVOLyVMIgotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS1zdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoKTsKLStzdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoLCBjaGFyICpsYW5nKTsKLSAKLSBzdGF0aWMJCQkJLyogdGhpcyBzb3VyY2UgaW5jbHVkZWQgaW4gZ3JpcGVzLmMgKi8KLSBubF9jYXRkCi0gbXlfY2F0b3BlbihjaGFyICpuYW1lLCBpbnQgb2ZsYWcpIHsKLS0gIG5sX2NhdGQgZmQ7Ci0rICBubF9jYXRkIGZkID0gKG5sX2NhdGQpIC0xOwotKwotKyAgLyogdXNpbmcgZmlyc3QgdGhlIG15X2NhdG9wZW5wYXRoLCB3aGljaCBsb29rcyB3aXRoIExBTkdVQUdFCi0rICAgKiBhbmQgb25seSBpZiBpdCBmYWlscyByZXNzb3J0IHRvIGNhdG9wZW4sIGl0IGdpdmVzIGJldHRlciBpMThuCi0rICAgKi8KLSsgIHsKLSsgICAgY2hhciAqbmxzcGF0aCwgKmxhbmcsICpzOwotIAotLSAgZmQgPSBjYXRvcGVuKG5hbWUsIG9mbGFnKTsKLSsgICAgLyoKLSsgICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0rICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0rICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLSsgICAgICovCi0rICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLSsgICAgaWYgKCFubHNwYXRoKQotKyAgICAgIG5sc3BhdGggPSBERUZBVUxUX05MU1BBVEg7Ci0rIAotKyAgICBsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTENfQUxMIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTEFORyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9ICIiOwotKyAKLSsgICAgd2hpbGUoKmxhbmcgJiYgKGZkID09IChubF9jYXRkKSAtMSkpIHsKLSsgICAgICBzID0gaW5kZXgobGFuZywgJzonKTsKLSsgICAgICBpZiAocykgKnMgPSAwOwotKyAgICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoLCBsYW5nKTsKLSsgICAgICBpZiAocykgbGFuZz1zKzE7Ci0rICAgICAgZWxzZSBsYW5nID0gIiI7Ci0rICAgIH0KLSsgICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLSsgICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgsICJlbiIpOwotKyAgfQotKwotKyAgLyogc3RpbGwgbm90IGZvdW5kLCB1c2UgdGhlIHN5c3RlbSBjYXRvcGVuICovCi0rICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQotKyAgICBmZCA9IGNhdG9wZW4obmFtZSwgb2ZsYWcpOwotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSAmJiBvZmxhZykgewotICAgICBvZmxhZyA9IDA7Ci1AQCAtMzIsOCArNzMsNiBAQAotICAgfQotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkgewotLSAgICBjaGFyICpubHNwYXRoOwotLQotICAgICAvKiBUaGUgbGliYyBjYXRvcGVuIGZhaWxzIC0gbGV0IHVzIHNlZSBpZiB3ZSBjYW4gZG8gYmV0dGVyICovCi0gICAgIC8qIFRoZSBxdW90ZXMgYmVsb3cgYXJlIGZyb20gWC9PcGVuLCBYUEcgMTk4NywgVm9sLiAzLiAqLwotIAotQEAgLTU4LDE3ICs5Nyw2IEBACi0gI2VuZGlmCi0gICAgIH0KLSAKLS0gICAgLyoKLS0gICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0tICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0tICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLS0gICAgICovCi0tCi0tICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLS0gICAgaWYgKG5sc3BhdGgpCi0tICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoKTsKLS0gICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLS0gICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIERFRkFVTFRfTkxTUEFUSCk7Ci0gICB9Ci0gICByZXR1cm4gZmQ7Ci0gfQotQEAgLTkwLDE1ICsxMTgsMTMgQEAKLSAgKgotICAqLwotIHN0YXRpYyBubF9jYXRkCi0tbXlfY2F0b3BlbnBhdGgoY2hhciAqbmFtZSwgY2hhciAqbmxzcGF0aCkgewotLSAgaW50IGZkOwotK215X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKm5sc3BhdGgsIGNoYXIgKmxhbmcpIHsKLSAgIG5sX2NhdGQgY2ZkID0gKG5sX2NhdGQpIC0xOwotLSAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nLCAqbGFuZ19sLCAqbGFuZ190LCAqbGFuZ19jOwotKyAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nX2wsICpsYW5nX3QsICpsYW5nX2M7Ci0gICBpbnQgbGFuZ3N6LCBuYW1lc3osIHN6LCBsYW5nX2xfc3osIGxhbmdfdF9zeiwgbGFuZ19jX3N6OwotIAotICAgbmFtZXN6ID0gc3RybGVuKG5hbWUpOwotIAotLSAgbGFuZyA9IGdldGVudigiTEFORyIpOwotICAgaWYgKCFsYW5nKQotICAgICBsYW5nID0gIiI7Ci0gICBsYW5nc3ogPSBzdHJsZW4obGFuZyk7Ci1AQCAtMTk0LDE0ICsyMjAsOSBAQAotICAgICAgIHBhdGggPSBzKzE7Ci0gICAgIH0gZWxzZQotICAgICAgIHBhdGggPSAwOwotLSAgICBmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpOwotLSAgICBpZiAoZmQgIT0gLTEpIHsKLS0gICAgICAvKiB3ZSBmb3VuZCB0aGUgcmlnaHQgY2F0YWxvZyAtIGJ1dCB3ZSBkb24ndCBrbm93IHRoZQotLQkgdHlwZSBvZiBubF9jYXRkLCBzbyBjbG9zZSBpdCBhZ2FpbiBhbmQgYXNrIGxpYmMgKi8KLS0gICAgICBjbG9zZShmZCk7Ci0tICAgICAgY2ZkID0gY2F0b3BlbihmaWxlLCAwKTsKLS0gICAgICBicmVhazsKLS0gICAgfQotKwljZmQgPSBjYXRvcGVuKGZpbGUsIDApOwotKwlpZiAoY2ZkICE9IChubF9jYXRkKSAtMSkKLSsJCQlicmVhazsKLSAgIH0KLSAKLSAgIGZyZWUocGF0aDApOwotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYW5wYXRoLmMgbWFuLTEuNmUvc3JjL21hbnBhdGguYwotLS0tIG1hbi0xLjZlLm9yaWcvc3JjL21hbnBhdGguYwkyMDA2LTA4LTAzIDE4OjE4OjMzLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYW5wYXRoLmMJMjAwNy0wNS0xOCAxMTowMjo0OC4wMDAwMDAwMDAgLTAzMDAKLUBAIC0yODIsMTMgKzI4MiwxNCBAQAotIAkJLyogV2UgY2Fubm90IHVzZSAibGFuZyA9IHNldGxvY2FsZShMQ19NRVNTQUdFUywgTlVMTCkiIG9yIHNvOgotIAkJICAgdGhlIHJldHVybiB2YWx1ZSBvZiBzZXRsb2NhbGUgaXMgYW4gb3BhcXVlIHN0cmluZy4gKi8KLSAJCS8qIFBPU0lYIHByZXNjcmliZXMgdGhlIG9yZGVyOiBMQ19BTEwsIExDX01FU1NBR0VTLCBMQU5HICovCi0tCQlpZigobGFuZyA9IGdldGVudigiTENfQUxMIikpICE9IE5VTEwpCi0rCSAgICAgICAgLyogTEFOR1VBR0UgaXMgR05VL0xpbnV4IGFuZCBvdmVycnVsZXMgYWxsICovCi0rCQlpZigobGFuZyA9IGdldGVudigiTEFOR1VBR0UiKSkgIT0gTlVMTCkKLSAJCQlzcGxpdDIoZGlyLCBsYW5nLCBhZGRfdG9fbWFuZGlybGlzdF94LCBwZXJycyk7Ci0tCQlpZigobGFuZyA9IGdldGVudigiTENfTUVTU0FHRVMiKSkgIT0gTlVMTCkKLSsJCWVsc2UgaWYoKGxhbmcgPSBnZXRlbnYoIkxDX0FMTCIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HIikpICE9IE5VTEwpCi0rCQllbHNlIGlmKChsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpKSAhPSBOVUxMKQotKwkJZWxzZSBpZigobGFuZyA9IGdldGVudigiTEFORyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLSAJCWFkZF90b19tYW5kaXJsaXN0X3goZGlyLCAwLCBwZXJycyk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNGVkMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo1MTo0NS4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjU5OjM1LjM5OTc5OTQxMiAtMDgwMAotQEAgLTE2NCwxMCArMTY0LDE1IEBACi0gZmkKLSBjYXRwYXRoPWBlY2hvICR7Y2F0cGF0aH0gfCB0ciA6ICcgJ2AKLSAKLSsjV0hBVElTX0RJUj0kREVTVERJUi92YXIvY2FjaGUvbWFuL2BlY2hvICRoZXJlfHNlZCAtZSAncyEuKi9tYW4vISFnJ2AKLStXSEFUSVNfRElSPSRERVNURElSL3Zhci9jYWNoZS9tYW4vJExBTkcKLStbWyAtZCAkV0hBVElTX0RJUiBdXSB8fCBta2RpciAtcCAkV0hBVElTX0RJUi8KLSsKLSAjIGZpcnN0IHRydW5jYXRlIGFsbCB0aGUgd2hhdGlzIGZpbGVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIG5ldywKLSAjIHRoZW4gb25seSB1cGRhdGUgLSB3ZSBtaWdodCB2aXNpdCB0aGUgc2FtZSBkaXJlY3RvcnkgdHdpY2UKLSBpZiBbIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tICAgY3AgL2Rldi9udWxsIC92YXIvY2FjaGUvbWFuL3doYXRpcwotKyAgIG1rZGlyIC1wICRXSEFUSVNfRElSLwotKyAgIC9iaW4vZWNobyAtbiA+ICRXSEFUSVNfRElSL3doYXRpcwotIGZpCi0gCi0gZm9yIHBhZ2VzIGluIG1hbiBjYXQKLUBAIC0xODAsMTMgKzE4NSw3IEBACi0gCWVjaG8gImFib3V0IHRvIGVudGVyICRtYW5kaXIiID4gL2Rldi9zdGRlcnIKLSAgICAgIGZpCi0gCi0tICAgICAjIGtsdWRnZSBmb3IgU2xhY2t3YXJlJ3MgL3Vzci9tYW4vcHJlZm9ybWF0Ci0tICAgICBpZiBbICRtYW5kaXIgPSAvdXNyL21hbi9wcmVmb3JtYXQgXQotLSAgICAgdGhlbgotLQltYW5kaXIxPS91c3IvbWFuCi0tICAgICBlbHNlCi0tCW1hbmRpcjE9JG1hbmRpcgotLSAgICAgZmkKLSsgICAgIG1hbmRpcjE9JFdIQVRJU19ESVIKLSAKLSAgICAgICMgaWYgJG1hbmRpciBpcyBvbiBhIHJlYWRvbmx5IHBhcnRpdGlvbiwgYW5kIHRoZSB3aGF0aXMgZmlsZQotICAgICAgIyBpcyBub3QgYSBzeW1saW5rLCB0aGVuIGxldCdzIHNraXAgdHJ5aW5nIHRvIHVwZGF0ZSBpdAotQEAgLTIwNywxMSArMjA2LDYgQEAKLSAJZmkKLSAgICAgIGZpCi0gCi0tICAgICBpZiBbIC1zICR7bWFuZGlyfS93aGF0aXMgLWEgJHBhZ2VzID0gbWFuIC1hIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tCWlmIFsgeCR2ZXJib3NlICE9IHggXTsgdGhlbgotLQkgICBlY2hvIHNraXBwaW5nICRtYW5kaXIgLSB3ZSBkaWQgaXQgYWxyZWFkeSA+IC9kZXYvc3RkZXJyCi0tCWZpCi0tICAgICBlbHNlICAgICAgCi0gICAgICAgIGhlcmU9YHB3ZGAKLSAgICAgICAgY2QgJG1hbmRpcgotICAgICAgICBmb3IgaSBpbiAkc2VjdGlvbnMKLUBAIC00NDcsNyArNDQ3LDYgQEAKLQotICAgICAgICBjaG1vZCA2NDQgJHttYW5kaXIxfS93aGF0aXMKLSAgICAgICAgcm0gJFRNUEZJTEUKLS0gICAgIGZpCi0gICAgZG9uZQotIGRvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb21waWxlLXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFkMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotRml4IGEgYnVpbGQgZXJyb3Igd2hlbiBidWlsZGluZyBtYW4uY29uZmlnLjUgKGEgcmVtbmFudCBvZiBhIGxvbmcKLWFnbyBwcmV2aW91cyBwYXRjaCkuIE9wdGltaXplZCB0aGUgbWFucGFnZXMgTWFrZWZpbGUgZm9yIHBhcmFsbGVsCi1idWlsZHMuIEFsc28sIGZpeCBjb21waWxlIHdhcm5pbmdzIGluIGEgY291cGxlIG90aGVyIGZpbGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGVAaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvbWFuL01ha2VmaWxlLmluLm9yaWcJMjAxNi0wMy0yOCAxNzozMTowOC43MjM5NDkxODAgLTA3MDAKLSsrKyBtYW4tMS42Zy9tYW4vTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAxNzo0NjoxMi44NjY5MTAzODYgLTA3MDAKLUBAIC01LDYgKzUsMTMgQEAKLSBBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotK1NVQkRJUlMgOj0gJChzaGVsbCBlY2hvIEBsYW5ndWFnZXNAKQotKwotKy5QSE9OWTogc3ViZGlycyAkKFNVQkRJUlMpCi0rCi0rbWFuLmNvbmZpZy5tYW46IG1hbi5jb25mLm1hbgotKwlAY3AgJDwgJEAKLSsKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKLSAKLSAubWFuLjE6Ci1AQCAtMTksMTEgKzI2LDExIEBACi0gSU5TVEFMTCA9IEBJTlNUQUxMQCAtYyAtbSA2NDQKLSAKLSAjIFdoZXJlIHRvIHB1dCB0aGUgbWFudWFsIHBhZ2VzLgotLW1hbmRpciA9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0rbWFuZGlyIDo9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0gCi0gYWxsOgkkKEFMTCkKLSAJZm9yIGkgaW4gJChNQVlCRTgpOyBcCi0tCQlkbyBpZiB0ZXN0IC1mICQkaS5tYW47IHRoZW4gbWFrZSAtZiAuLi9NYWtlZmlsZSAkJGkuODsgZmk7IGRvbmUKLSsJCWRvIGlmIHRlc3QgLWYgJCRpLm1hbjsgdGhlbiAkKE1BS0UpIC1mIC4uL01ha2VmaWxlICQkaS44OyBmaTsgZG9uZQotIAotIGluc3RhbGw6ICQoQUxMKQotIAlta2RpciAtcCAkKG1hbmRpcikvbWFuMSAkKG1hbmRpcikvbWFuNSAkKG1hbmRpcikvbWFuOAotQEAgLTM4LDI0ICs0NSwyNyBAQAotIAlybSAtZiBjb3JlICouaW4gKi5AbWFuMWV4dEAgKi5AbWFuNWV4dEAgKi5AbWFuOGV4dEAgKn4KLSAKLSBzcG90bGVzczoKLSsJcm0gLWYgbWFuLmNvbmZpZy5tYW4KLSAKLSBzdWJkaXJzOgotLQlAZm9yIGkgaW4gQGxhbmd1YWdlc0A7IGRvIGlmIHRlc3QgLWQgJCRpOyB0aGVuIGVjaG87IFwKLS0JCWVjaG8gIj09PT0gTWFraW5nIHRoZSBgY2F0ICQkaS50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLS0JCWNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZTsgY2QgLi47IFwKLS0JCWVsc2UgZWNobyAiPT09PSBObyAkJGkgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmk7IGRvbmUKLStzdWJkaXJzOiAkKFNVQkRJUlMpCi0rJChTVUJESVJTKToKLSsJaWYgdGVzdCAtZCAkQDsgdGhlbiBlY2hvOyBcCi0rCQllY2hvICI9PT09IE1ha2luZyB0aGUgYGNhdCAkQC50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLSsJCSQoTUFLRSkgLUMgJEAgLWYgLi4vTWFrZWZpbGUgYWxsOyBcCi0rCQllbHNlIGVjaG8gIj09PT0gTm8gJEAgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmkKLSAKLSBpbnN0YWxsc3ViZGlyczoKLSAJQGZvciBpIGluIEBsYW5ndWFnZXNAOyBkbyBpZiB0ZXN0IC1kICQkaTsgdGhlbiBlY2hvOyBcCi0gCQllY2hvICI9PT09IEluc3RhbGxpbmcgdGhlIGBjYXQgJCRpLnR4dGAgbWFuIHBhZ2VzLiA9PT09IjsgXAotIAkJY2QgJCRpOyBTTEFORz0vJCRpOyBpZiB0ZXN0ICQkU0xBTkcgPSAvZW47IHRoZW4gU0xBTkc9IDsgZmk7IFwKLS0JCWV4cG9ydCBTTEFORzsgbWFrZSAtZiAuLi9NYWtlZmlsZSBpbnN0YWxsOyBjZCAuLjsgXAotKwkJZXhwb3J0IFNMQU5HOyAkKE1BS0UpIC1mIC4uL01ha2VmaWxlIGluc3RhbGw7IGNkIC4uOyBcCi0gCQllbHNlIGVjaG8gIj09PT0gTm8gJCRpIG1hbiBwYWdlcyBmb3VuZC4gPT09PSI7IGZpOyBkb25lCi0gCi0gY2xlYW5zdWJkaXJzOgotLQlAZm9yIGkgaW4gPz87IGRvIGNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgY2QgLi47IGRvbmUKLSsJQGZvciBpIGluID8/OyBkbyAkKE1BS0UpIC1DICQkaSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgZG9uZQotIAlybSAtZiBjb3JlICp+Ci0gCi0gc3BvdGxlc3NzdWJkaXJzOgotLQlmb3IgaSBpbiA/PzsgZG8gY2QgJCRpOyBtYWtlIC1mIC4uL01ha2VmaWxlIHNwb3RsZXNzOyBjZCAuLjsgZG9uZQotKwlmb3IgaSBpbiA/PzsgZG8gJChNQUtFKSAtQyAkJGkgLWYgLi4vTWFrZWZpbGUgc3BvdGxlc3M7IGRvbmUKLSAJcm0gLWYgTWFrZWZpbGUKLQotLS0tIG1hbi0xLjZnL3NyYy9ncmlwZXMuYy5vcmlnCTIwMDYtMTEtMjEgMTE6NTM6NDQuMDAwMDAwMDAwIC0wODAwCi0rKysgbWFuLTEuNmcvc3JjL2dyaXBlcy5jCTIwMTYtMDMtMzAgMTY6MzI6MzEuNjAxMTAzNDg3IC0wNzAwCi1AQCAtNyw4ICs3LDYgQEAKLSAKLSBleHRlcm4gY2hhciAqbXNnW107Ci0gCi0tc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0tCi0gI2lmZGVmIE5PTkxTCi0gCi0gc3RhdGljIGNoYXIgKgotQEAgLTMwLDYgKzI4LDggQEAKLSAjaW5jbHVkZSA8bmxfdHlwZXMuaD4KLSAjaW5jbHVkZSAiLi4vY2F0b3Blbi9jYXRvcGVuLmMiCi0gCi0rc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0rCi0gbmxfY2F0ZCBjYXRmZCA9IChubF9jYXRkKSAtMTsKLSBpbnQgY2F0X2lzX29wZW4gPSAwOwotIAotLS0tIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMub3JpZwkyMDA1LTA4LTIwIDE2OjI2OjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMJMjAxNi0wMy0yOSAwOToxMDoyMS41Mjc4NDEyODUgLTA3MDAKLUBAIC0yOTksNyArMjk5LDcgQEAKLSAJY29uc3QgY2hhciAqKCgqdG9jYXQpKGNvbnN0IGNoYXIgKm1hbl9maWxlbmFtZSwgY29uc3QgY2hhciAqZXh0LAotIAkJCSAgICAgIGludCBmbGFncykpKSB7Ci0gICAgICBjaGFyICoqc2w7Ci0tICAgICBzdHJ1Y3QgbWFucGFnZSAqcmVzOwotKyAgICAgc3RydWN0IG1hbnBhZ2UgKnJlcyA9IDA7Ci0gCi0gICAgICBzdGFuZGFyZHMgPSAoZmxhZ3MgJiAoRkhTIHwgRlNTVE5EIHwgRE9fSFAgfCBET19JUklYKSk7Ci0gICAgICB0b19jYXRfZmlsZW5hbWUgPSB0b2NhdDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDZjYzk4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Vc2UgQlVJTERfQ0MgYW5kIHRhcmdldCBpbmNsdWRlIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIHRlc3RzLgotSWYgY3Jvc3MtY29tcGlsaW5nLCBmb3JjZSBwYXRobmFtZXMgZm9yIGhlbHBlciBwcm9ncmFtcywgc2luY2UKLWF1dG9kaXNjb3ZlcnkgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBub3Qgd29yay4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEJpbGwgUmFuZGxlIDx3aWxsaWFtLmMucmFuZGxlIGF0IGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZnL2NvbmZpZ3VyZS5vcmlnCTIwMTYtMDMtMjggMTc6NDY6MTIuNzM0OTEwOTc2IC0wNzAwCi0rKysgbWFuLTEuNmcvY29uZmlndXJlCTIwMTYtMDMtMzAgMjE6NDc6NDUuMTEwNTcyOTA4IC0wNzAwCi1AQCAtMjE2LDcgKzIxNiw4IEBACi0gSU5DTFVERURJUj0ke0lOQ0xVREVESVItL3Vzci9pbmNsdWRlfQotIAotIHJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKLS1jb21waWxlPSIkQ0MgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0rIyBzaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0YXJnZXQgZmVhdHVyZSBzdXBwb3J0LCB1c2UgdGhhdCBzeXNyb290Ci0rY29tcGlsZT0iJEJVSUxEX0NDIC1pc3lzdGVtLyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0vdXNyL2luY2x1ZGUgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0gCi0gIyBDaGVjayBmb3IgdmFyaW91cyBoZWFkZXIgZmlsZXMuCi0gCi1AQCAtNDU1LDE5ICs0NTYsMjMgQEAKLSAgICAgICBmaQotICAgICBkb25lCi0gICBkb25lCi0tICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLS0gIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmdlcW49L3Vzci9iaW4vZ2VxbgotLSAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotLSAgRmNvbD0vdXNyL2Jpbi9jb2wKLS0gIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0tICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0tICBGbW9yZT0vYmluL21vcmUKLS0gIEZsZXNzPS91c3IvYmluL2xlc3MKLS0gIEZjbXA9L3Vzci9iaW4vY21wCi0tICBGY2F0PS9iaW4vY2F0Ci0tICBGZ2F3az0vYmluL2dhd2sKLSsgIGlmIFsgJEJVSUxEX0NDICE9ICRDQyBdOyB0aGVuCi0rICAgICMgY3Jvc3MgY29tcGlsaW5nID0+IHRhcmdldCBmcyBub3QgYXZhaWxhYmxlLCBzbyBmb3JjZSBkZWZhdWx0cwotKyAgICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgICAgRm5yb2ZmPS91c3IvYmluL25yb2ZmCi0rICAgIEZqbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgICAgRmdlcW49L3Vzci9iaW4vZXFuCi0rICAgIEZnbmVxbj0vdXNyL2Jpbi9uZXFuCi0rICAgIEZndGJsPS91c3IvYmluL3RibAotKyAgICBGY29sPS91c3IvYmluL2NvbAotKyAgICBGZ3JlZmVyPS91c3IvYmluL3JlZmVyCi0rICAgIEZncGljPS91c3IvYmluL3BpYwotKyAgICBGbW9yZT0vYmluL21vcmUKLSsgICAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgICBGY21wPS91c3IvYmluL2NtcAotKyAgICBGY2F0PS9iaW4vY2F0Ci0rICAgIEZnYXdrPS91c3IvYmluL2dhd2sKLSsgIGZpCi0gCi0gCi0gICBmb3IgaSBpbiBlcW4gdGJsIHJlZmVyIHBpYwotQEAgLTUwNyw4ICs1MTIsOCBAQAotICAgICBqbnJvZmY9IiRGam5yb2ZmIC1UdXRmOCAtbWFuZG9jaiIKLSAgIGZpCi0gICBlcW49IiRGZ2VxbiAtVHBzIgotLSAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLS0gIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotKyAgbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0rICBqbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0gICB0Ymw9IiRGZ3RibCIKLSAgIGNvbD0iJEZjb2wiCi0gICB2Z3JpbmQ9IiRGdmdyaW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmE4OGI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSBNYWtlZmlsZSBmb3IgbWFuIGhhcyBhIHJ1bGUgdG8gY3JlYXRlIHR3byBnZW5lcmF0ZWQgdGFyZ2V0cyB3aXRoCi1hIHByb2dyYW0gcnVuIGZyb20gdGhlIHNoZWxsLiBCZWNhdXNlIHRoZSBydWxlIHdhcyBydW4gdHdpY2UsIHdpdGgKLXBhcmFsbGVsIG1ha2UsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgd2VyZSBiZWluZyBvdmVyd3JpdHRlbiBhdCB0aGUgc2FtZQotdGltZSB0aGV5IHdlcmUgYmVpbmcgY29tcGlsZWQuIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSBydWxlIHRvIGJlIHJ1bgotb25seSBvbmNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGUgYXQgaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvc3JjL01ha2VmaWxlLmluLm9yaWcJMjAxMC0xMi0zMSAxMjoyODo0Ni4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zy9zcmMvTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAwOTowOToxNi44NDU0NTg3OTggLTA3MDAKLUBAIC00Myw4ICs0MywxMCBAQAotIG1ha2Vtc2c6Ci0gCSQoQlVJTERfQ0MpIC1vIG1ha2Vtc2cgbWFrZW1zZy5jCi0gCi0tbXNnLmMgZ3JpcGVkZWZzLmg6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0rbXNnLmMgZ3JpcGVkZWZzLmg6IGdlbmZpbGVzLXN0YW1wCi0rZ2VuZmlsZXMtc3RhbXA6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0gCS4vbWFrZW1zZyAuLi9tc2dzL21lc3MuZW4gZ3JpcGVkZWZzLmggbXNnLmMKLSsJdG91Y2ggZ2VuZmlsZXMtc3RhbXAKLSAKLSAjIGdsb2IuYyBkb2VzIG5vdCBoYXZlIHByb3RvdHlwZXMKLSBnbG9iLm86IGdsb2IuYyBuZGlyLmgKLUBAIC0xMTcsNCArMTE5LDQgQEAKLSAKLSBzcG90bGVzczogY2xlYW4KLSAJcm0gLWYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBwYXRocy5oIHZlcnNpb24uaCBtYW4uY29uZgotLQlybSAtZiBncmlwZWRlZnMuaCBtc2cuYyBtZXNzLiouY2F0Ci0rCXJtIC1mIGdyaXBlZGVmcy5oIG1zZy5jIG1lc3MuKi5jYXQgZ2VuZmlsZXMtc3RhbXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzQ0NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1EbyBub3QgdXNlIGFic29sdXRlIHBhdGggZm9yIGF3ayB3aGlsZSBnZXR0aW5nIHRoZSBwYXRoIG9mIGF3awotd2hlbiBydW5uaW5nIG1ha2V3aGF0aXMuCi1UaGlzIGNhbiBhdm9pZCBlcnJvcnMgaWYgcGF0aCBvZiBhd2sgY2hhbmdlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21hbi0xLjZnXQotCi1TaWduZWQtb2ZmLWJ5OiBKaWFuIExpdSA8amlhbi5saXVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtTnVyIG1hbi0xLjZnLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42Zy5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTUtMDItMjUgMTY6MTM6MTIuNjU3NjExNDE5ICswODAwCi0rKysgbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gJMjAxNS0wMi0yNSAxNjoxNDo0OS4zMzQ2OTQ4MTUgKzA4MDAKLUBAIC02Nyw3ICs2Nyw3IEBACi0gIyBidXQgdGhhdCBsZWFkcyB0byBwcm9ibGVtcyBhbmQgYnVncy4KLQotICMgQVdLPS91c3IvYmluL2dhd2sKLS1BV0s9QGF3a0AKLStBV0s9YHdoaWNoIGF3a2AKLQotICMgRmluZCBhIHBsYWNlIGZvciBvdXIgdGVtcG9yYXJ5IGZpbGVzLiBJZiBzZWN1cml0eSBpcyBub3QgYSBjb25jZXJuLCB1c2UKLSAjCVRNUEZJTEU9L3RtcC93aGF0aXMkJDsgVE1QRklMRURJUj1ub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNjgwNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi4xLmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODVhZjgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uNy5negorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxMGJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotIwotIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG1hbi5jb25mLmluIGJ5IHRoZQotIyBjb25maWd1cmUgc2NyaXB0LgotIwotIyBtYW4uY29uZiBmcm9tIG1hbi0xLjVwCi0jCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmlsZSwgc2VlIHRoZSBtYW4gcGFnZXMgbWFuKDEpCi0jIGFuZCBtYW4uY29uZig1KS4KLSMKLSMgVGhpcyBmaWxlIGlzIHJlYWQgYnkgbWFuIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBtYW5wYXRoIChhbHNvIHVzZWQKLSMgd2hlbiBNQU5QQVRIIGNvbnRhaW5zIGFuIGVtcHR5IHN1YnN0cmluZyksIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBjYXQKLSMgcGFnZXMgY29ycmVzcG9uZGluZyB0byBnaXZlbiBtYW4gcGFnZXMgc2hvdWxkIGJlIHN0b3JlZCwKLSMgYW5kIHRvIG1hcCBlYWNoIFBBVEggZWxlbWVudCB0byBhIG1hbnBhdGggZWxlbWVudC4KLSMgSXQgbWF5IGFsc28gcmVjb3JkIHRoZSBwYXRobmFtZSBvZiB0aGUgbWFuIGJpbmFyeS4gW1RoaXMgaXMgdW51c2VkLl0KLSMgVGhlIGZvcm1hdCBpczoKLSMKLSMgTUFOQklOCQlwYXRobmFtZQotIyBNQU5QQVRICQltYW5wYXRoX2VsZW1lbnQJW2NvcnJlc3BvbmRpbmdfY2F0ZGlyXQotIyBNQU5QQVRIX01BUAkJcGF0aF9lbGVtZW50CW1hbnBhdGhfZWxlbWVudAotIwotIyBJZiBubyBjYXRkaXIgaXMgZ2l2ZW4sIGl0IGlzIGFzc3VtZWQgdG8gYmUgZXF1YWwgdG8gdGhlIG1hbmRpcgotIyAoc28gdGhhdCB0aGlzIGRpciBoYXMgYm90aCBtYW4xIGV0Yy4gYW5kIGNhdDEgZXRjLiBzdWJkaXJzKS4KLSMgVGhpcyBpcyB0aGUgdHJhZGl0aW9uYWwgVW5peCBzZXR1cC4KLSMgQ2VydGFpbiB2ZXJzaW9ucyBvZiB0aGUgRlNTVE5EIHJlY29tbWVuZCBwdXR0aW5nIGZvcm1hdHRlZCB2ZXJzaW9ucwotIyBvZiAvdXNyLy4uLi9tYW4vbWFueC9wYWdlLnggaW50byAvdmFyL2NhdG1hbi8uLi4vY2F0eC9wYWdlLnguCi0jIFRoZSBrZXl3b3JkIEZTU1RORCB3aWxsIGNhdXNlIHRoaXMgYmVoYXZpb3VyLgotIyBDZXJ0YWluIHZlcnNpb25zIG9mIHRoZSBGSFMgcmVjb21tZW5kIHB1dHRpbmcgZm9ybWF0dGVkIHZlcnNpb25zIG9mCi0jIC91c3IvLi4uL3NoYXJlL21hbi9bbG9jYWxlL11tYW54L3BhZ2UueCBpbnRvCi0jIC92YXIvY2FjaGUvbWFuLy4uLi9bbG9jYWxlL11jYXR4L3BhZ2UueC4KLSMgVGhlIGtleXdvcmQgRkhTIHdpbGwgY2F1c2UgdGhpcyBiZWhhdmlvdXIgKGFuZCBvdmVycmlkZXMgRlNTVE5EKS4KLSMgRXhwbGljaXRseSBnaXZlbiBjYXRkaXJzIG92ZXJyaWRlLgotIwotIyBGU1NUTkQKLUZIUwotIwotIyBUaGlzIGZpbGUgaXMgYWxzbyByZWFkIGJ5IG1hbiBpbiBvcmRlciB0byBmaW5kIGhvdyB0byBjYWxsIG5yb2ZmLCBsZXNzLCBldGMuLAotIyBhbmQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGV4dGVuc2lvbnMgYW5kIGRlY29tcHJlc3NvcnMuCi0jCi0jIE1BTkJJTgkJL3Vzci9sb2NhbC9iaW4vbWFuCi0jCi0jIEV2ZXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIE1BTlBBVEggaW5jbHVkZXMgdGhlc2UgZmllbGRzCi0jCi1NQU5QQVRICS91c3IvbWFuCi1NQU5QQVRICS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvWDExUjYvbWFuCi0jCi0jIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0jCi0jIE1BTlBBVEgJL29wdC8qL21hbgotIyBNQU5QQVRICS91c3IvbGliLyovbWFuCi0jIE1BTlBBVEgJL3Vzci9zaGFyZS8qL21hbgotIyBNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0jCi0jIFNldCB1cCBQQVRIIHRvIE1BTlBBVEggbWFwcGluZwotIwotIyBJZiBwZW9wbGUgYXNrIGZvciAibWFuIGZvbyIgYW5kIGhhdmUgIi9kaXIvYmluL2ZvbyIgaW4gdGhlaXIgUEFUSAotIyBhbmQgdGhlIGRvY3MgYXJlIGZvdW5kIGluICIvZGlyL21hbiIsIHRoZW4gbm8gbWFwcGluZyBpcyByZXF1aXJlZC4KLSMKLSMgVGhlIGJlbG93IG1hcHBpbmdzIGFyZSBzdXBlcmZsdW91cyB3aGVuIHRoZSByaWdodCBoYW5kIHNpZGUgaXMKLSMgaW4gdGhlIG1hbmRhdG9yeSBtYW5wYXRoIGFscmVhZHksIGJ1dCB3aWxsIGtlZXAgbWFuIGZyb20gc3RhdHRpbmcKLSMgbG90cyBvZiBvdGhlciBuZWFyYnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgotIwotTUFOUEFUSF9NQVAJL2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvc2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3Ivc2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3IvbG9jYWwvYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9sb2NhbC9zYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9YMTFSNi9iaW4JCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9taAkJL3Vzci9zaGFyZS9tYW4KLSMKLSMgTk9BVVRPUEFUSCBrZWVwcyBtYW4gZnJvbSBhdXRvbWF0aWNhbGx5IGFkZGluZyBkaXJlY3RvcmllcyB0aGF0IGxvb2sgbGlrZQotIyBtYW51YWwgcGFnZSBkaXJlY3RvcmllcyB0byB0aGUgcGF0aC4KLSMKLSNOT0FVVE9QQVRICi0jCi0jIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMgKCJjYXQgcGFnZXMiKQotIyAoZ2VuZXJhbGx5IG9uZSBlbmFibGVzL2Rpc2FibGUgY2F0IHBhZ2UgY3JlYXRpb24gYnkgY3JlYXRpbmcvZGVsZXRpbmcKLSMgdGhlIGRpcmVjdG9yeSB0aGV5IHdvdWxkIGxpdmUgaW4gLSBtYW4gbmV2ZXIgZG9lcyBta2RpcikKLSMgCi0jTk9DQUNIRQotIwotIyBVc2VmdWwgcGF0aHMgLSBub3RlIHRoYXQgQ09MIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuCi0jIE5ST0ZGIGlzIGRlZmluZWQgYXMgImdyb2ZmIC1UYXNjaWkiIG9yICJncm9mZiAtVGxhdGluMSI7Ci0jIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgotIyBGb3IgdXNlIHdpdGggdXRmLTgsIE5ST0ZGIHNob3VsZCBiZSAibnJvZmYgLW1hbmRvYyIgd2l0aG91dCAtVCBvcHRpb24uCi0jIChNYXliZSAtIGJ1dCB0b2RheSBJIG5lZWQgLVRsYXRpbjEgdG8gcHJldmVudCBkb3VibGUgY29udmVyc2lvbiB0byB1dGY4LikKLSMKLSMgSWYgeW91IGhhdmUgYSBuZXcgdHJvZmYgKHZlcnNpb24gMS4xOC4xPykgYW5kIGl0cyBjb2xvcmVkIG91dHB1dAotIyBjYXVzZXMgcHJvYmxlbXMsIGFkZCB0aGUgLWMgb3B0aW9uIHRvIFRST0ZGLCBOUk9GRiwgSk5ST0ZGLgotIwotVFJPRkYJCS91c3IvYmluL2dyb2ZmIC1UcHMgLW1hbmRvYwotTlJPRkYJCS91c3IvYmluL25yb2ZmIC1UbGF0aW4xIC1tYW5kb2MKLUpOUk9GRgkJL3Vzci9iaW4vZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oKLUVRTgkJL3Vzci9iaW4vZXFuIC1UcHMKLU5FUU4JCS91c3IvYmluL2VxbiAtVGxhdGluMQotSk5FUU4JCS91c3IvYmluL2VxbiAtVG5pcHBvbgotVEJMCQkvdXNyL2Jpbi90YmwKLSMgQ09MCQkvdXNyL2Jpbi9jb2wKLVJFRkVSCQkvdXNyL2Jpbi9yZWZlcgotUElDCQkvdXNyL2Jpbi9waWMKLVZHUklORAkJCi1HUkFQCQkKLVBBR0VSCQkvdXNyL2Jpbi9sZXNzIC1pc1IKLUNBVAkJL2Jpbi9jYXQKLSMKLSMgVGhlIGNvbW1hbmQgIm1hbiAtYSB4eXp6eSIgd2lsbCBzaG93IGFsbCBtYW4gcGFnZXMgZm9yIHh5enp5LgotIyBXaGVuIENNUCBpcyBkZWZpbmVkIG1hbiB3aWxsIHRyeSB0byBhdm9pZCBzaG93aW5nIHRoZSBzYW1lCi0jIHRleHQgdHdpY2UuIChCdXQgY29tcHJlc3NlZCBwYWdlcyBjb21wYXJlIHVuZXF1YWwuKQotIwotQ01QCQkvdXNyL2Jpbi9jbXAgLXMKLSMKLSMgQ29tcHJlc3MgY2F0IHBhZ2VzCi0jCi1DT01QUkVTUwkvYmluL2J6aXAyCi1DT01QUkVTU19FWFQJLmJ6MgotIwotIyBEZWZhdWx0IG1hbnVhbCBzZWN0aW9ucyAoYW5kIG9yZGVyKSB0byBzZWFyY2ggaWYgLVMgaXMgbm90IHNwZWNpZmllZAotIyBhbmQgdGhlIE1BTlNFQ1QgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KLSMKLU1BTlNFQ1QJCTE6MXA6ODoyOjM6M3A6NDo1OjY6Nzo5OjBwOnRjbDpuOmw6cDpvCi0jCi0jIERlZmF1bHQgb3B0aW9ucyB0byB1c2Ugd2hlbiBtYW4gaXMgaW52b2tlZCB3aXRob3V0IG9wdGlvbnMKLSMgVGhpcyBpcyBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIHRob3NlIHRoYXQgdGhpbmsgLWEgc2hvdWxkIGJlIHRoZSBkZWZhdWx0Ci0jIE5vdGUgdGhhdCBzb21lIHN5c3RlbXMgaGF2ZSAvdXNyL21hbi9hbGxtYW4sIGNhdXNpbmcgcGFnZXMgdG8gYmUgc2hvd24gdHdpY2UuCi0jCi0jTUFOREVGT1BUSU9OUwktYQotIwotIyBEZWNvbXByZXNzIHdpdGggZ2l2ZW4gZGVjb21wcmVzc29yIHdoZW4gaW5wdXQgZmlsZSBoYXMgZ2l2ZW4gZXh0ZW5zaW9uCi0jIFRoZSBjb21tYW5kIGdpdmVuIG11c3QgYWN0IGFzIGEgZmlsdGVyLgotIwotLmd6CQkvYmluL2d1bnppcCAtYwotLmJ6MgkJL3Vzci9iaW4vYnVuemlwMiAtYwotLnh6CQkvdXNyL2Jpbi91bnh6IC1jCi0uegkJCi0uWgkJL2Jpbi96Y2F0Ci0uRgkJCi0uWQkJCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbnBhdGguNS5negpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxMmZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuXzEuNmcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2MDNmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiT25saW5lIGRvY3VtZW50YXRpb24gdG9vbHMiCi1ERVNDUklQVElPTiA9ICJBIHNldCBvZiBkb2N1bWVudGF0aW9uIHRvb2xzOiBtYW4sIGFwcm9wb3MgYW5kIHdoYXRpcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcmltYXRlcy54aW1pYW4uY29tL35mbHVjaWZyZWRpL21hbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotUFIgPSAicjEiCi0KLURFUEVORFMgPSAiZ3JvZmYgbGVzcyIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiAiY29tcHJlc3NfZG9jIiBpbiAoZC5nZXRWYXIoIklOSEVSSVQiKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9sb29rYXNpZGUvcGtncy9tYW4yaHRtbC8ke0JQfS50YXIuZ3ovYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1zb2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXJvX3Vzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItbmV3bGluZS5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotdXRmOC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotbm9jYWNoZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotaTE4bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi4xLmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4uNy5nejt1bnBhY2s9ZmFsc2UgXAotICAgICAgICAgICBmaWxlOi8vbWFuLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbWFucGF0aC41Lmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9zZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctY29tcGlsZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NkY2I4YzNmNGUwMDgwOTIzZDdlODE4ZjBlNGEyMDJkYjI2YzQ2NDE1ZWFlZjM2MTM4N2MyMDk5NWI4OTU5ZiIKLQotQ0ZMQUdTICs9ICItRFNZU1YiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgICAgICR7U30vY29uZmlndXJlIC1kZWZhdWx0IC1jb25mZGlyIC9ldGMgK3NnaWQgK2ZocyArbGFuZyBhbGwKLX0KLQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCl7Ci0JbWtkaXIgLXAgICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW43Ci0JY3AgJHtXT1JLRElSfS9tYW4uY29uZiAke0R9JHtzeXNjb25mZGlyfS9tYW4uY29uZmlnCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjEuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjEvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjcuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjcvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFucGF0aC41Lmd6ICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41LwotfQotCi0KLVJERVBFTkRTXyR7UE59ID0gImxlc3MgZ3JvZmYiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sb2NhbGUgJHtzeXNjb25mZGlyfS9tYW4uY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NGQ0ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gNGQ0NmExMDg2MjliZWI2NmEyOTM2NzJkYjdiNDRmODYzYjY1OThiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBEaWNrZXkgPGRpY2tleUBoaXMuY29tPgotRGF0ZTogRnJpLCAxNCBBcHIgMjAxNyAxNDowNjoxMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBUaWNrZXQgIzM2OTc6ICh0dHlfaW5pdCk6IHVuaWZ5IGN1cnNlcyBpbml0aWFsaXphdGlvbgotCi0uLi5mb3IgdmFyaW91cyBjdXJzZXMgaW1wbGVtZW50YXRpb25zLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9NaWRuaWdodENvbW1hbmRlci9tYy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliL3R0eS90dHktbmN1cnNlcy5jIHwgMjYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYyBiL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotaW5kZXggYTdhMTFmMy4uOGU2OWIzOSAxMDA2NDQKLS0tLSBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotKysrIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCi1AQCAtMTc5LDYgKzE3OSw4IEBAIG1jX3R0eV9ub3JtYWxpemVfbGluZXNfY2hhciAoY29uc3QgY2hhciAqY2gpCi0gdm9pZAotIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotIHsKLSsgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLSsKLSAgICAgaW5pdHNjciAoKTsKLSAKLSAjaWZkZWYgSEFWRV9FU0NERUxBWQotQEAgLTE5NCwyNSArMTk2LDE1IEBAIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotICAgICBFU0NERUxBWSA9IDIwMDsKLSAjZW5kaWYgLyogSEFWRV9FU0NERUxBWSAqLwotIAotLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KLSsgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKLSAgICAgLyogdXNlIEN0cmwtZyB0byBnZW5lcmF0ZSBTSUdJTlQgKi8KLS0gICAgY3VyX3Rlcm0tPk50dHliLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgICAvKiBeZyAqLwotKyAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCi0gICAgIC8qIGRpc2FibGUgU0lHUVVJVCB0byBhbGxvdyB1c2UgQ3RybC1cIGtleSAqLwotLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotLSAgICB0Y3NldGF0dHIgKGN1cl90ZXJtLT5GaWxlZGVzLCBUQ1NBTk9XLCAmY3VyX3Rlcm0tPk50dHliKTsKLS0jZWxzZQotLSAgICAvKiBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb24gKGJzZCBjdXJzZXMsIC4uLikgKi8KLS0gICAgewotLSAgICAgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLS0KLS0gICAgICAgIHRjZ2V0YXR0ciAoU1RESU5fRklMRU5PLCAmbW9kZSk7Ci0tICAgICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLwotLSAgICAgICAgbW9kZS5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAvKiBeZyAqLwotLSAgICAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCi0tICAgICAgICBtb2RlLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKLS0gICAgICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7Ci0tICAgIH0KLS0jZW5kaWYgLyogTkNVUlNFU19WRVJTSU9OICovCi0rICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotKyAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm1vZGUpOwotKwotKyAgICAvKiBjdXJzZXMgcmVtZW1iZXJzIHRoZSAiaW4tcHJvZ3JhbSIgbW9kZXMgYWZ0ZXIgdGhpcyBjYWxsICovCi0rICAgIGRlZl9wcm9nX21vZGUgKCk7Ci0gCi0gICAgIHR0eV9zdGFydF9pbnRlcnJ1cHRfa2V5ICgpOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2ExNTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjQyM2Y1YjZmODBhMWE1YTVmYzUzYjgzMjRjYWI3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMGRkZGZhZTcxNDlmYWM5MDNmNzRlZjU1Y2ZjYjJhMTk4ZTBmNzAwNDM0NmM3YmRlZDQzNjY5ZDYxYmE0MzZmIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jCi0jIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotICAgICAgICAKLSAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGQxYjVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkY2ZjN2FhNjEzYzYyMjkxYTBmNzFmNmI2OThkODI2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDg1ZGFhYTZhYjI2ZTUyNDk0NmRmNDgyM2FjMmY2OTgwMmJjMTZiYzk2Nzc4MWI1ZTI4ZDViODZmYzNiOTc5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjCisjIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCisjCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgorUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorICAgICAgICAKKyAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoCmluZGV4IDU0YmYxZDcuLmRmMjEzOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvZ2NjLTQuOS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2gKQEAgLTcsMTMgKzcsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IG1kYWRtLTMuMy9zdXBlci1pbnRlbC5jCitJbmRleDogbWRhZG0tNC4wL3N1cGVyLWludGVsLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMub3JpZy9zdXBlci1pbnRlbC5jCTIwMTQtMDUtMDIgMTU6MDg6MjEuMTU0MzE5NjUxIC0wNzAwCi0rKysgbWRhZG0tMy4zL3N1cGVyLWludGVsLmMJMjAxNC0wNS0wMiAxNTowOTozMS40NzA5ODU3OTQgLTA3MDAKLUBAIC01MDYwLDcgKzUwNjAsNyBAQAotIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZSwKLSAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSksCistLS0gbWRhZG0tNC4wLm9yaWcvc3VwZXItaW50ZWwuYworKysrIG1kYWRtLTQuMC9zdXBlci1pbnRlbC5jCitAQCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGludCB3cml0ZV9zdXBlcl9pbXNtX3NwYXJlcyhzdHJ1YworIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZTsKKyAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSk7CiAgCiAtCXNucHJpbnRmKChjaGFyICopIHNwYXJlLT5zaWcsIE1BWF9TSUdOQVRVUkVfTEVOR1RILAogKwkodm9pZClzbnByaW50ZigoY2hhciAqKSBzcGFyZS0+c2lnLCBNQVhfU0lHTkFUVVJFX0xFTkdUSCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMy4yX3gzMl9hYmlfdGltZV90LnBhdGNoCmluZGV4IGM2NTZkMDcuLjAwZTY2NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIAotSW5kZXg6IG1kYWRtLTMuMy40L21vbml0b3IuYworSW5kZXg6IG1kYWRtLTQuMC9tb25pdG9yLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMuNC5vcmlnL21vbml0b3IuYwotKysrIG1kYWRtLTMuMy40L21vbml0b3IuYwotQEAgLTI1Nyw5ICsyNTcsMTIgQEAgc3RhdGljIGludCByZWFkX2FuZF9hY3Qoc3RydWN0IGFjdGl2ZV9hcgotIAkJCW1kaS0+Y3Vycl9zdGF0ZSA9IHJlYWRfZGV2X3N0YXRlKG1kaS0+c3RhdGVfZmQpOwotIAkJfQorLS0tIG1kYWRtLTQuMC5vcmlnL21vbml0b3IuYworKysrIG1kYWRtLTQuMC9tb25pdG9yLmMKK0BAIC00NDUsOSArNDQ1LDEyIEBAIHN0YXRpYyBpbnQgcmVhZF9hbmRfYWN0KHN0cnVjdCBhY3RpdmVfYXIKKyAJCWlmIChGRF9JU1NFVChtZGktPmJiX2ZkLCBmZHMpKQorIAkJCWNoZWNrX2Zvcl9jbGVhcmVkX2JiKGEsIG1kaSk7CiAgCX0KIC0KICAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCmluZGV4IDFhMzFhODcuLmU2YWZlMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCkBAIC0yNywzICsyNyw0IEBACiAJZm9yIGQgaW4gZG9jIGV4dHJhcyBtYW4gbGliIHNyYzsgZG8gbWFrZSAtQyAkZCBERVNURElSPSR7RH0gaW5zdGFsbDsgZG9uZQogfQogCitSUkVDT01NRU5EU18ke1BOfSArPSAibHJ6c3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2gKaW5kZXggMTJlZWQxNy4uNzhkYWY2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy0xLjYwLXNjdHAxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgc3RhdGlzdGljcy5jIHwgIDY4ICsrKysrKysrKy0KICAyIGZpbGVzIGNoYW5nZWQsIDQ2NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL25ldHN0YXQuYyBiL25ldHN0YXQuYwotaW5kZXggMWZiOWUwYy4uNWQxYTRhMSAxMDA2NDQKLS0tLSBhL25ldHN0YXQuYwotKysrIGIvbmV0c3RhdC5jCitJbmRleDogbmV0LXRvb2xzLTEuNjAvbmV0c3RhdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXRvb2xzLTEuNjAub3JpZy9uZXRzdGF0LmMKKysrKyBuZXQtdG9vbHMtMS42MC9uZXRzdGF0LmMKIEBAIC01OCw2ICs1OCw3IEBACiAgICoKICAgKjk5MDQyMCB7MS4zOH0gVHVhbiBIb2FuZyAgICAgICAgICAgICAgcmVtb3ZlZCBhIHVzZWxlc3MgYXNzaWdubWVudCBmcm9tIGlnbXBfZG9fb25lKCkKQEAgLTIzLDcgKzIzLDcgQEAKICAgKgogICAqICAgICAgICAgICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKICAgKiAgICAgICAgICAgICAgYW5kL29yICBtb2RpZnkgaXQgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsCi1AQCAtMTA1LDcgKzEwNiw3IEBACitAQCAtMTA2LDcgKzEwNyw3IEBACiAgI2VuZGlmCiAgCiAgLyogcHJvdG90eXBlcyBmb3Igc3RhdGlzdGljcy5jICovCkBAIC0zMiw3ICszMiw3IEBACiAgdm9pZCBpbml0dGFiKHZvaWQpOwogIHZvaWQgcGFyc2Vzbm1wNihpbnQsIGludCwgaW50KTsKICB2b2lkIGluaXR0YWI2KHZvaWQpOwotQEAgLTExOCw2ICsxMTksMjggQEAgdHlwZWRlZiBlbnVtIHsKK0BAIC0xMTksNiArMTIwLDI4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgIFNTX0RJU0NPTk5FQ1RJTkcJCS8qIGluIHByb2Nlc3Mgb2YgZGlzY29ubmVjdGluZyAgKi8KICB9IHNvY2tldF9zdGF0ZTsKICAKQEAgLTYxLDcgKzYxLDcgQEAKICAjZGVmaW5lIFNPX0FDQ0VQVENPTiAgICAoMTw8MTYpCS8qIHBlcmZvcm1lZCBhIGxpc3RlbiAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX1dBSVREQVRBICAgICAoMTw8MTcpCS8qIHdhaXQgZGF0YSB0byByZWFkICAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX05PU1BBQ0UgICAgICAoMTw8MTgpCS8qIG5vIHNwYWNlIHRvIHdyaXRlICAgICAgICAgICAgKi8KLUBAIC0xNDgsNiArMTcxLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKK0BAIC0xNDksNiArMTcyLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKICBpbnQgZmxhZ19yYXcgPSAwOwogIGludCBmbGFnX3RjcCA9IDA7CiAgaW50IGZsYWdfdWRwID0gMDsKQEAgLTY5LDcgKzY5LDcgQEAKICBpbnQgZmxhZ19pZ21wPSAwOwogIGludCBmbGFnX3JvbSA9IDA7CiAgaW50IGZsYWdfZXhwID0gMTsKLUBAIC05OTAsNiArMTAxNCwzNjUgQEAgc3RhdGljIGludCB1ZHBfaW5mbyh2b2lkKQorQEAgLTk5NSw2ICsxMDE5LDM2NSBAQCBzdGF0aWMgaW50IHVkcF9pbmZvKHZvaWQpCiAgCSAgICAgICB1ZHBfZG9fb25lKTsKICB9CiAgCkBAIC00MzUsNyArNDM1LDcgQEAKICBzdGF0aWMgdm9pZCByYXdfZG9fb25lKGludCBsbnIsIGNvbnN0IGNoYXIgKmxpbmUpCiAgewogICAgICBjaGFyIGJ1ZmZlcls4MTkyXSwgbG9jYWxfYWRkcls2NF0sIHJlbV9hZGRyWzY0XTsKLUBAIC0xNTQ5LDcgKzE5MzIsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQorQEAgLTE1NTgsNyArMTk0MSw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgIC1GLCAtLWZpYiAgICAgICAgICAgICAgICBkaXNwbGF5IEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSAoZGVmYXVsdClcbiIpKTsKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgICAgICAgLUMsIC0tY2FjaGUgICAgICAgICAgICAgIGRpc3BsYXkgcm91dGluZyBjYWNoZSBpbnN0ZWFkIG9mIEZJQlxuXG4iKSk7CiAgCkBAIC00NDQsNyArNDQ0LDcgQEAKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgPEFGPj1Vc2UgJy02fC00JyBvciAnLUEgPGFmPicgb3IgJy0tPGFmPic7IGRlZmF1bHQ6ICVzXG4iKSwgREZMVF9BRik7CiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgIExpc3Qgb2YgcG9zc2libGUgYWRkcmVzcyBmYW1pbGllcyAod2hpY2ggc3VwcG9ydCByb3V0aW5nKTpcbiIpKTsKICAgICAgcHJpbnRfYWZsaXN0KDEpOyAvKiAxID0gcm91dGVhYmxlICovCi1AQCAtMTU3NCw2ICsxOTU3LDcgQEAgaW50IG1haW4KK0BAIC0xNTgzLDYgKzE5NjYsNyBAQCBpbnQgbWFpbgogIAl7InByb3RvY29sIiwgMSwgMCwgJ0EnfSwKICAJeyJ0Y3AiLCAwLCAwLCAndCd9LAogIAl7InVkcCIsIDAsIDAsICd1J30sCkBAIC00NTIsNyArNDUyLDcgQEAKICAJeyJyYXciLCAwLCAwLCAndyd9LAogIAl7InVuaXgiLCAwLCAwLCAneCd9LAogIAl7Imxpc3RlbmluZyIsIDAsIDAsICdsJ30sCi1AQCAtMTYwNCw3ICsxOTg4LDcgQEAgaW50IG1haW4KK0BAIC0xNjEzLDcgKzE5OTcsNyBAQCBpbnQgbWFpbgogICAgICBnZXRyb3V0ZV9pbml0KCk7CQkvKiBTZXQgdXAgQUYgcm91dGluZyBzdXBwb3J0ICovCiAgCiAgICAgIGFmbmFtZVswXSA9ICdcMCc7CkBAIC00NjEsNyArNDYxLDcgQEAKICAJc3dpdGNoIChpKSB7CiAgCWNhc2UgLTE6CiAgCSAgICBicmVhazsKLUBAIC0xNjk2LDEwICsyMDgwLDEyIEBAIGludCBtYWluCitAQCAtMTcwNSwxMCArMjA4OSwxMiBAQCBpbnQgbWFpbgogIAljYXNlICd0JzoKICAJICAgIGZsYWdfdGNwKys7CiAgCSAgICBicmVhazsKQEAgLTQ3NSw3ICs0NzUsNyBAQAogIAljYXNlICd3JzoKICAJICAgIGZsYWdfcmF3Kys7CiAgCSAgICBicmVhazsKLUBAIC0xNzE3LDEzICsyMTAzLDEzIEBAIGludCBtYWluCitAQCAtMTcyNiwxMyArMjExMiwxMyBAQCBpbnQgbWFpbgogICAgICBpZiAoZmxhZ19pbnQgKyBmbGFnX3JvdSArIGZsYWdfbWFzICsgZmxhZ19zdGEgPiAxKQogIAl1c2FnZSgpOwogIApAQCAtNDkzLDcgKzQ5Myw3IEBACiAgCSsgZmxhZ19heDI1ICsgZmxhZ19uZXRyb20gKyBmbGFnX2lnbXAgKyBmbGFnX3gyNTsKICAKICAgICAgaWYgKGZsYWdfbWFzKSB7Ci1AQCAtMTc1MSw3ICsyMTM3LDcgQEAgaW50IG1haW4KK0BAIC0xNzYwLDcgKzIxNDYsNyBAQCBpbnQgbWFpbgogICAgICAgICAgY2hhciBidWZbMjU2XTsKICAgICAgICAgIGlmICghYWZuYW1lWzBdKSB7CiAgICAgICAgICAgICAgaW5pdHRhYigpOwpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHNhZmVfc3RybmNweShidWYsIGFmbmFtZSwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgIHRtcDEgPSBidWY7Ci1AQCAtMTgwNCw3ICsyMTkwLDcgQEAgaW50IG1haW4KK0BAIC0xODE1LDcgKzIyMDEsNyBAQCBpbnQgbWFpbgogIAlyZXR1cm4gKGkpOwogICAgICB9CiAgICAgIGZvciAoOzspIHsKQEAgLTUxMSw3ICs1MTEsNyBAQAogICNpZiBIQVZFX0FGSU5FVAogIAkgICAgcHJnX2NhY2hlX2xvYWQoKTsKICAJICAgIHByaW50ZihfKCJBY3RpdmUgSW50ZXJuZXQgY29ubmVjdGlvbnMgIikpOwkvKiB4eHggKi8KLUBAIC0xODQzLDYgKzIyMjksMTEgQEAgaW50IG1haW4KK0BAIC0xODU0LDYgKzIyNDAsMTEgQEAgaW50IG1haW4KICAJICAgIGlmIChpKQogIAkJcmV0dXJuIChpKTsKICAJfQpAQCAtNTIzLDEwICs1MjMsMTAgQEAKICAJaWYgKCFmbGFnX2FyZyB8fCBmbGFnX3JhdykgewogIAkgICAgaSA9IHJhd19pbmZvKCk7CiAgCSAgICBpZiAoaSkKLWRpZmYgLS1naXQgYS9zdGF0aXN0aWNzLmMgYi9zdGF0aXN0aWNzLmMKLWluZGV4IDAzNjAwZDcuLmViOGQ3ZGMgMTAwNjQ0Ci0tLS0gYS9zdGF0aXN0aWNzLmMKLSsrKyBiL3N0YXRpc3RpY3MuYworSW5kZXg6IG5ldC10b29scy0xLjYwL3N0YXRpc3RpY3MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC10b29scy0xLjYwLm9yaWcvc3RhdGlzdGljcy5jCisrKysgbmV0LXRvb2xzLTEuNjAvc3RhdGlzdGljcy5jCiBAQCAtMjEsNyArMjEsNyBAQAogICNkZWZpbmUgVUZXQVJOKHgpCiAgI2VuZGlmCkBAIC01MzcsNyArNTM3LDcgQEAKICBlbnVtIFN0YXRlIHsKICAgICAgbnVtYmVyID0gMCwgb3B0X251bWJlciwgaV9mb3J3YXJkLCBpX2lucF9pY21wLCBpX291dHBfaWNtcCwgaV9ydG9fYWxnLAogQEAgLTI5Nyw2ICsyOTcsMjcgQEAgc3RydWN0IGVudHJ5IFRjcGV4dHRhYltdID0KLSAgICAgeyAiVENQUmVub1JlY292ZXJ5RmFpbCIsIE5fKCIldSBjbGFzc2ljIFJlbm8gZmFzdCByZXRyYW5zbWl0cyBmYWlsZWQiKSwgb3B0X251bWJlciB9LAorICAgICB7ICJUQ1BSZW5vUmVjb3ZlcnlGYWlsIiwgTl8oIiVsbHUgY2xhc3NpYyBSZW5vIGZhc3QgcmV0cmFuc21pdHMgZmFpbGVkIiksIG9wdF9udW1iZXIgfSwKICB9OwogIAogK3N0cnVjdCBlbnRyeSBTY3RwdGFiW10gPQpAQCAtNjE2LDcgKzYxNiw3IEBACiAgICAgIGYgPSBwcm9jX2ZvcGVuKCIvcHJvYy9uZXQvc25tcCIpOwogICAgICBpZiAoIWYpIHsKICAJcGVycm9yKF8oImNhbm5vdCBvcGVuIC9wcm9jL25ldC9zbm1wIikpOwotQEAgLTUzMCw2ICs1ODAsMTYgQEAgdm9pZCBwYXJzZXNubXAoaW50IGZsYWdfcmF3LCBpbnQgZmxhZ190Y3AsIGludCBmbGFnX3VkcCkKK0BAIC01MzAsNiArNTgwLDE2IEBAIHZvaWQgcGFyc2Vzbm1wKGludCBmbGFnX3JhdywgaW50IGZsYWdfdGMKICAgICAgCiAgICAgICAgICBmY2xvc2UoZik7CiAgICAgIH0KQEAgLTYzMyw2ICs2MzMsMyBAQAogICAgICByZXR1cm47CiAgfQogICAgICAKLS0tIAotMS44LjUuMi4yMzMuZzkzMmY3ZTQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoCmluZGV4IDAzMDA3YWEuLjg2Y2MwYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9jcm9zc19hci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2gKQEAgLTE4LDE4ICsxOCwxOSBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KK0luZGV4OiBuZXd0LTAuNTIuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ld3QtMC41Mi4yMC9NYWtlZmlsZS5pbgogQEAgLTcsNiArNyw3IEBAIENGTEFHUyA9IEBDRkxBR1NACiAgTERGTEFHUyA9IEBMREZMQUdTQAotIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NAIAorIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NACiAgR05VX0xEID0gQEdOVV9MREAKICtBUiA9IEBBUkAKICAKICBWRVJTSU9OID0gQFZFUlNJT05ACiAgVEFHID0gciQoc3Vic3QgLiwtLCQoVkVSU0lPTikpCi1AQCAtMTA5LDcgKzExMCw3IEBAIHdoaXB0Y2wuJChTT0VYVCk6ICQoV0hJUFRDTE9CSlMpICQoTElCTkVXVFNIKQorQEAgLTEwOSw3ICsxMTAsNyBAQCB3aGlwdGNsLiQoU09FWFQpOiAkKFdISVBUQ0xPQkpTKSAkKExJQk5FCiAgCSQoQ0MpIC1zaGFyZWQgJChTSENGTEFHUykgJChMREZMQUdTKSAtbyB3aGlwdGNsLiQoU09FWFQpICQoV0hJUFRDTE9CSlMpIC1MLiAtbG5ld3QgICQoTElCVENMKSAtbHBvcHQgJChMSUJTKQogIAogICQoTElCTkVXVCk6ICQoTElCT0JKUykKQEAgLTM4LDEwICszOSwxMCBAQAogIAogIG5ld3QubyAkKFNIQVJFRERJUikvbmV3dC5vOiBuZXd0LmMgTWFrZWZpbGUKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkyZTZkYTguLmNkODNkNTcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IG5ld3QtMC41Mi4yMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9jb25maWd1cmUuYWMKKysrKyBuZXd0LTAuNTIuMjAvY29uZmlndXJlLmFjCiBAQCAtMTUsNiArMTUsMTAgQEAgQUNfUFJPR19JTlNUQUxMCiAgQUNfUFJPR19MTl9TCiAgQUNfUFJPR19HUkVQCkBAIC01MSw4ICs1Miw1IEBACiArQUNfREVGVU4oW0FDX1BST0dfQVJdLCBbQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIDopXSkKICtBQ19QUk9HX0FSCiAgCi0gIyBBcmUgd2UgdXNpbmcgR05VIGxkPwotIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCi0tLSAKLTEuOC4xLjIKLQorIEFDX0NIRUNLX1NJWkVPRihbbG9uZ10pCisgQUNfQ0hFQ0tfU0laRU9GKFtsb25nIGxvbmddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKaW5kZXggZmRlZGU1OS4uOTAwMmZiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCkBAIC04OSw3ICs4OSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBuY3Vyc2VzIFwKICAgICBuZXQtdG9vbHMgXAotICAgIHBheCBcCiAgICAgcG9wdCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXApAQCAtMTQwLDE5ICsxMzksMTMgQEAKICAgICBiemlwMiBcCiAgICAgY3JvbmllIFwKICAgICBkYnVzIFwKLSAgICBkYnVzLWdsaWIgXAogICAgIGVsZnV0aWxzIFwKICAgICBnemlwIFwKICAgICBsZXNzIFwKLSAgICBsaWJjYXAgXAotICAgIGxpYmV2ZW50IFwKICAgICBsb2dyb3RhdGUgXAogICAgIG5mcy11dGlscyBcCiAgICAgcGNpdXRpbHMgXAotICAgIGxpYnBjcmUgXAogICAgIHJwY2JpbmQgXAotICAgIHN5c2ZzdXRpbHMgXAogICAgIHRjcC13cmFwcGVycyBcCiAgICAgdHpkYXRhIFwKICAgICAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCmluZGV4IDViYWFmMzUuLjUzZDEwMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpAQCAtMTQsMTIgKzE0LDE1IEBACiAjIGxpYmdsdSBuZWVkcyB2aXJ0dWFsL2xpYmdsLCB3aGljaCByZXF1aXJlcyBvcGVuZ2wgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKIAorIyBsaWJwYW0sIHBhbS1wbHVnaW4td2hlZWwgcmVxdWlyZXMgcGFtIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJwYW0iCisKICMKICMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgdGhpcyBwYWNrYWdlZ2VvdXAgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCiAjCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSAhPSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCiB9CiAKQEAgLTY4LDcgKzcxLDYgQEAKICAgICBtYy1oZWxwZXJzLXBlcmwgXAogICAgIG1kYWRtIFwKICAgICBtaW5pY29tIFwKLSAgICBuZW9uIFwKICAgICBwYXJ0ZWQgXAogICAgIHF1b3RhIFwKICAgICBzY3JlZW4gXApAQCAtMTU5LDcgKzE2MSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBtc210cCBcCiAgICAgcGF0Y2ggXAotICAgIHBheCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXAogICAgIHNlZCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IGJlNjg3NDUuLjdlZGY2NmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCkBAIC0zLDE4ICszLDIwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0gTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbS5vcmlnCTIwMTEtMDctMTkgMTc6MDA6MDkuNjE5OTgwMDAxICswODAwCi0rKysgTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDExLTA3LTE5IDE2OjU0OjAwLjIyOTk3OTk5OCArMDgwMAotQEAgLTcsNyArNyw3IEBACi0gQU1fTERGTEFHUyA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbSBcCi0gCS1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjIC1scGFtX21pc2MKK0luZGV4OiBMaW51eC1QQU0tMS4zLjAveHRlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTGludXgtUEFNLTEuMy4wLm9yaWcveHRlc3RzL01ha2VmaWxlLmFtCisrKysgTGludXgtUEFNLTEuMy4wL3h0ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTcsNyArNyw3IEBAIEFNX0NGTEFHUyA9IC1ETElCUEFNX0NPTVBJTEUgLUkkKHRvcF9zcmMKKyBMREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWJwYW0vbGlicGFtLmxhIFwKKyAJJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjL2xpYnBhbV9taXNjLmxhCiAgCiAtQ0xFQU5GSUxFUyA9ICp+ICQoWFRFU1RTKQogK0NMRUFORklMRVMgPSAqfgogIAogIEVYVFJBX0RJU1QgPSBydW4teHRlc3RzLnNoIHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCBcCiAgCXRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCBcCi1AQCAtNTEsMyArNTEsMTggQEAKK0BAIC01MSwzICs1MSwxOCBAQCBFWFRSQV9QUk9HUkFNUyA9ICQoWFRFU1RTKQogIAogIHh0ZXN0czogJChYVEVTVFMpIHJ1bi14dGVzdHMuc2gKICAJIiQoc3JjZGlyKSIvcnVuLXh0ZXN0cy5zaCAiJChzcmNkaXIpIiAke1hURVNUU30gJHtOT1NSQ1RFU1RTfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAppbmRleCBmMTgzNGY2Li45YjhkNGMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaApAQCAtNSwxMiArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0gYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KLS0tLSBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQkyMDEzLTA3LTA1IDExOjA4OjIzLjIyNDQ4MzIzNyArMDgwMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCTIwMTMtMDctMDUgMTE6MTU6MjEuMzA0NDg2NDU2ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjMuMC5vcmlnL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorKysrIExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KIEBAIC0yNCw2ICsyNCwxMCBAQCBlbmRpZgogIHNlY3VyZWxpYl9MVExJQlJBUklFUyA9IHBhbV9zZWN1cmV0dHkubGEKLSBwYW1fc2VjdXJldHR5X2xhX0xJQkFERCA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbQorIHBhbV9zZWN1cmV0dHlfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhbS9saWJwYW0ubGEKICAKICtwYW1fc2VjdXJldHR5X2xhX1NPVVJDRVMgPQlcCiArCXBhbV9zZWN1cmV0dHkuYwkJXApAQCAtMTksOSArMjAsMTAgQEAKICBpZiBFTkFCTEVfUkVHRU5FUkFURV9NQU4KICBub2luc3RfREFUQSA9IFJFQURNRQogIFJFQURNRTogcGFtX3NlY3VyZXR0eS44LnhtbAotZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCi0tLS0gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MDc6NTAuMDY0NDgzNTY4ICswODAwCi0rKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MTI6MjMuOTk0NDgzMzQ0ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMaW51eC1QQU0tMS4zLjAub3JpZy9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKIEBAIC0xLDcgKzEsNSBAQAogIC8qIHBhbV9zZWN1cmV0dHkgbW9kdWxlICovCiAgCkBAIC0xMDQsOSArMTA2LDEwIEBACiAgCiAgICAgIGlmIChyZXR2YWwgJiYgIShjdHJsICYgUEFNX05PQ09OU09MRV9BUkcpKSB7CiAgICAgICAgICBGSUxFICpjbWRsaW5lZmlsZTsKLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwotLS0tIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkxOTcwLTAxLTAxIDA4OjMwOjAwLjAwMDAwMDAwMCArMDgzMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkyMDEzLTA3LTA1IDExOjE0OjIxLjUzNDQ4MjkwMCArMDgwMAorSW5kZXg6IExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS90dHlfc2VjdXJlLmMKIEBAIC0wLDAgKzEsOTAgQEAKICsvKgogKyAqIEEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBsaW5lIGlzIGluIC9ldGMvc2VjdXJldHR5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKaW5kZXggOGY3NzUzZC4uOTJhYjcyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpAQCAtMTUxLDExICsxNTEsOCBAQAogCWZpCiB9CiAKLXB5dGhvbiBkb19wYW1fc2FuaXR5ICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGJiLndhcm4oIkJ1aWxkaW5nIGxpYnBhbSBidXQgJ3BhbScgaXNuJ3QgaW4gRElTVFJPX0ZFQVRVUkVTLCBQQU0gd29uJ3Qgd29yayBjb3JyZWN0bHkiKQotfQotYWRkdGFzayBwYW1fc2FuaXR5IGJlZm9yZSBkb19jb25maWd1cmUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayBuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL25vX2NoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKaW5kZXggNThkOGRiNC4uZTZhMjZkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKQEAgLTUsMTIgKzUsMTIgQEAKIAogUlAgLSA0LzExLzA4CiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCitJbmRleDogcGFydGVkLTMuMi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXJ0ZWQtMS45LjAub3JpZy9jb25maWd1cmUuYWMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCTIwMTAtMDItMDIgMTQ6MTM6NTYuMDEzOTA1MDkzICswMDAwCi1AQCAtNDc3LDcgKzQ3Nyw3IEBACi0gQU1fQ09ORElUSU9OQUwoW0JVSUxEX0xJTlVYXSwgW3Rlc3QgIiRPUyIgPSBsaW51eF0pCistLS0gcGFydGVkLTMuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHBhcnRlZC0zLjIvY29uZmlndXJlLmFjCitAQCAtNTU1LDcgKzU1NSw3IEBAIEFDX0NIRUNLX0hFQURFUihbZXhlY2luZm8uaF0sIFsKKyBBTV9DT05ESVRJT05BTChbQ09NUElMRV9GT1JfUzM5MF0sIFt0ZXN0ICIkaG9zdF9jcHUiID0gczM5MCB8fCB0ZXN0ICIkaG9zdF9jcHUiID0gczM5MHhdKQogIAogIGRubCBjaGVjayBmb3IgImNoZWNrIiwgdW5pdCB0ZXN0aW5nIGxpYnJhcnkvaGVhZGVyCiAtUEtHX0NIRUNLX01PRFVMRVMoW0NIRUNLXSwgW2NoZWNrID49IDAuOS4zXSwgaGF2ZV9jaGVjaz15ZXMsIGhhdmVfY2hlY2s9bm8pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9zeXNjYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCmluZGV4IGU5YmJlOWEuLjkzMjA1YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCkBAIC00LDEwICs0LDEwIEBACiAgbGlicGFydGVkL2FyY2gvbGludXguYyB8ICAgMTMgKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYworSW5kZXg6IHBhcnRlZC0zLjIvbGlicGFydGVkL2FyY2gvbGludXguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBhcnRlZC0xLjkuMC5vcmlnL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYwkyMDEwLTAyLTAyIDE0OjE0OjE2LjUyMzkwNDc2OCArMDAwMAorLS0tIHBhcnRlZC0zLjIub3JpZy9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCisrKysgcGFydGVkLTMuMi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCiBAQCAtMTcsNiArMTcsOCBAQAogIAogICNkZWZpbmUgUFJPQ19ERVZJQ0VTX0JVRlNJWiAxNjM4NApAQCAtMTYsOCArMTYsOCBAQAogKwogICNpbmNsdWRlIDxjb25maWcuaD4KICAjaW5jbHVkZSA8YXJjaC9saW51eC5oPgotIAotQEAgLTE0NzcsMTIgKzE0NzksMTQgQEAKKyAjaW5jbHVkZSA8bGludXgvYmxrcGcuaD4KK0BAIC0xNjk2LDEyICsxNjk4LDE0IEBAIGxpbnV4X3JlZnJlc2hfY2xvc2UgKFBlZERldmljZSogZGV2KQogIAogICNpZiBTSVpFT0ZfT0ZGX1QgPCA4CiAgCkBAIC0zMiw3ICszMiw3IEBACiAgCiAgbG9mZl90CiAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCB3aGVuY2UpCi1AQCAtMTQ5MCwxMSArMTQ5NCwyMCBAQAorQEAgLTE3MDksMTEgKzE3MTMsMjAgQEAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICBsb2ZmX3QgcmVzdWx0OwogICAgICAgICAgaW50IHJldHZhbDsKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NmY4NWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGU2N2JiM2RlYmU1ODJmMGU3Nzc3MGI3MTRiZDAxMmJiMTA4MmZjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAxMTozMjowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYSBjb21tZW50IGZvciBmYWxsdGhyb3VnaAotCi1GaXhlcyB3YXJuaW5ncyB3aXRoIGdjYzcgZS5nLgotCi0uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzogSW4gZnVuY3Rpb24gJ3Rhcl9vcHRpb25zJzoKLS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOjcyNTo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCi0gICAgICAgXgotLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzMwOjI6IG5vdGU6IGhlcmUKLSAgY2FzZSAnTyc6Ci0gIF5+fn4KLWNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL29wdGlvbnMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGM2NjNiNGUuLmI4MDgxOWEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtNzI0LDYgKzcyNCw3IEBAIHRhcl9vcHRpb25zIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWNhc2UgJ28nOgotIAkgIGlmIChvcHRfYWRkICgid3JpdGVfb3B0PW5vZGlyIikgPCAwKQotIAkgICAgdGFyX3VzYWdlICgpOwotKwkgIC8qIGZhbGx0aHJ1ICovCi0gCWNhc2UgJ08nOgotIAkgIE9mbGFnID0gMTsKLSAJICBicmVhazsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJmMmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjg3ICswLDAgQEAKLUZyb20gNDdjNGRiOGQzNzI0OGQ5NjhmYWM3ZWU0YTcxY2E2NDM5ODg5MDcyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSmFuIDIwMTYgMTE6NTc6MjEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbAotCi1SZW1vdmUgQlNEaXNtcwotUmVtb3ZlIGZ0cywgYW5kIGxpbmsgdG8gbGliZnRzIHRoYXRzIHByb3ZpZGVkIGV4dGVybmFsbHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW211c2wgc3BlY2lmaWNdCi0KLSBsaWIvTWFrZWZpbGUuYW0gfCAgICA0ICstCi0gbGliL2Z0cy5jICAgICAgIHwgMTAyNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGliL2Z0cy5oICAgICAgIHwgIDEzMSAtLS0tLS0tCi0gbGliL3Zpcy5oICAgICAgIHwgICAxMyArLQotIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSBzcmMvZXh0ZXJuLmggICAgfCAgICAyIC0KLSBzcmMvZmlsZV9zdWJzLmMgfCAgICAyICstCi0gc3JjL3RhYmxlcy5jICAgIHwgICAgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTE2NyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgbGliL2Z0cy5jCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYi9mdHMuaAotCi1kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxlLmFtCi1pbmRleCA1NmQwODU5Li43ZjUwNDVhIDEwMDY0NAotLS0tIGEvbGliL01ha2VmaWxlLmFtCi0rKysgYi9saWIvTWFrZWZpbGUuYW0KLUBAIC04LDggKzgsOCBAQCBBVVRPTUFLRV9PUFRJT05TID0gMS43IGduaXRzCi0gQ0xFQU5GSUxFUyA9ICp+Ci0gCi0gbm9pbnN0X0xJQlJBUklFUyA9IGxpYmJzZGZ1bmMuYQotLW5vaW5zdF9IRUFERVJTID0gdmlzLmggYnNkZnVuYy5oIGZ0cy5oCi0rbm9pbnN0X0hFQURFUlMgPSB2aXMuaCBic2RmdW5jLmgKLSAKLSBBTV9DRkxBR1MgPSBARVhUUkFfQ0ZMQUdTQAotIAotLWxpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYyBmdHMuYwotK2xpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYwotZGlmZiAtLWdpdCBhL2xpYi9mdHMuYyBiL2xpYi9mdHMuYwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA0NWU5MGNhLi4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwMjUgKzAsMCBAQAotLS8qLQotLSAqIENvcHlyaWdodCAoYykgMTk5MCwgMTk5MywgMTk5NAotLSAqICAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tICoKLS0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS0gKiBhcmUgbWV0OgotLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0tICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLS0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLS0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS0gKgotLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0tICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0tICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLS0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0tICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0tICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLS0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0tICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotLSAqIFNVQ0ggREFNQUdFLgotLSAqLwotLQotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxkaXJlbnQuaD4KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZnRzLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0tCi0tLyogTGFyZ2VzdCBhbGlnbm1lbnQgc2l6ZSBuZWVkZWQsIG1pbnVzIG9uZS4KLS0gICBVc3VhbGx5IGxvbmcgZG91YmxlIGlzIHRoZSB3b3JzdCBjYXNlLiAgKi8KLS0jaWZuZGVmIEFMSUdOQllURVMKLS0jZGVmaW5lIEFMSUdOQllURVMJKF9fYWxpZ25vZl9fIChsb25nIGRvdWJsZSkgLSAxKQotLSNlbmRpZgotLS8qIEFsaWduIFAgdG8gdGhhdCBzaXplLiAgKi8KLS0jaWZuZGVmIEFMSUdOCi0tI2RlZmluZQlBTElHTihwKQkoKCh1bnNpZ25lZCBsb25nIGludCkgKHApICsgQUxJR05CWVRFUykgJiB+QUxJR05CWVRFUykKLS0jZW5kaWYKLS0KLS0KLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgKEZUUyAqLCBjb25zdCBjaGFyICosIGludCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIChGVFMgKiwgaW50KTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIChGVFNFTlQgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIChGVFMgKiwgRlRTRU5UICopOwotLXN0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gKGNoYXIgKiBjb25zdCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgKEZUUyAqLCBGVFNFTlQgKik7Ci0tc3RhdGljIGludAkgZnRzX3BhbGxvYyAoRlRTICosIHNpemVfdCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgdV9zaG9ydAkgZnRzX3N0YXQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgaW50ICAgICAgZnRzX3NhZmVfY2hhbmdlZGlyIChGVFMgKiwgRlRTRU5UICosIGludCwgY29uc3QgY2hhciAqKTsKLS0KLS0jaWZuZGVmIE1BWAotLSNkZWZpbmUgTUFYKGEsIGIpCShhID4gYiA/IGEgOiBiKQotLSNlbmRpZgotLQotLSNkZWZpbmUJSVNET1QoYSkJKGFbMF0gPT0gJy4nICYmICghYVsxXSB8fCAoYVsxXSA9PSAnLicgJiYgIWFbMl0pKSkKLS0KLS0jZGVmaW5lIENMUihvcHQpCShzcC0+ZnRzX29wdGlvbnMgJj0gfihvcHQpKQotLSNkZWZpbmUJSVNTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zICYgKG9wdCkpCi0tI2RlZmluZQlTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zIHw9IChvcHQpKQotLQotLSNkZWZpbmUJRkNIRElSKHNwLCBmZCkJKCFJU1NFVChGVFNfTk9DSERJUikgJiYgZmNoZGlyKGZkKSkKLS0KLS0jZGVmaW5lCUJSRUFECQkzCQkvKiBmdHNfcmVhZCAqLwotLQotLUZUUyAqCi0tZnRzX29wZW4oYXJndiwga29wdGlvbnMsIGNvbXBhcikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLQlyZWdpc3RlciBpbnQga29wdGlvbnM7Ci0tCWludCAoKmNvbXBhcikgKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKTsKLS17Ci0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0tCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0tCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotLQlpbnQgbGVuOwotLQotLXRtcCA9IE5VTEw7CS8qIHN0b3AgY29tcGlsZXIgd2hpbmdpbmcgKi8KLS0JLyogT3B0aW9ucyBjaGVjay4gKi8KLS0JaWYgKGtvcHRpb25zICYgfkZUU19PUFRJT05NQVNLKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSB0aGUgc3RyZWFtICovCi0tCWlmICgoc3AgPSBtYWxsb2MoKHVfaW50KXNpemVvZihGVFMpKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCW1lbXNldChzcCwgMCwgc2l6ZW9mKEZUUykpOwotLQlzcC0+ZnRzX2NvbXBhciA9IChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIGNvbXBhcjsKLS0Jc3AtPmZ0c19vcHRpb25zID0ga29wdGlvbnM7Ci0tCi0tCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQkvKgotLQkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLS0JICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotLQkgKi8KLS0jaWZuZGVmIE1BWFBBVEhMRU4KLS0jZGVmaW5lIE1BWFBBVEhMRU4gMTAyNAotLSNlbmRpZgotLQlpZiAoZnRzX3BhbGxvYyhzcCwgTUFYKGZ0c19tYXhhcmdsZW4oYXJndiksIE1BWFBBVEhMRU4pKSkKLS0JCWdvdG8gbWVtMTsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290J3MgcGFyZW50LiAqLwotLQlpZiAoKHBhcmVudCA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0yOwotLQlwYXJlbnQtPmZ0c19sZXZlbCA9IEZUU19ST09UUEFSRU5UTEVWRUw7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdChzKS4gKi8KLS0JZm9yIChyb290ID0gTlVMTCwgbml0ZW1zID0gMDsgKmFyZ3YgIT0gTlVMTDsgKythcmd2LCArK25pdGVtcykgewotLQkJLyogRG9uJ3QgYWxsb3cgemVyby1sZW5ndGggcGF0aHMuICovCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID09IDApIHsKLS0JCQllcnJubyA9IEVOT0VOVDsKLS0JCQlnb3RvIG1lbTM7Ci0tCQl9Ci0tCi0tCQlwID0gZnRzX2FsbG9jKHNwLCAqYXJndiwgbGVuKTsKLS0JCXAtPmZ0c19sZXZlbCA9IEZUU19ST09UTEVWRUw7Ci0tCQlwLT5mdHNfcGFyZW50ID0gcGFyZW50OwotLQkJcC0+ZnRzX2FjY3BhdGggPSBwLT5mdHNfbmFtZTsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIElTU0VUKEZUU19DT01GT0xMT1cpKTsKLS0KLS0JCS8qIENvbW1hbmQtbGluZSAiLiIgYW5kICIuLiIgYXJlIHJlYWwgZGlyZWN0b3JpZXMuICovCi0tCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0RPVCkKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19EOwotLQotLQkJLyoKLS0JCSAqIElmIGNvbXBhcmlzb24gcm91dGluZSBzdXBwbGllZCwgdHJhdmVyc2UgaW4gc29ydGVkCi0tCQkgKiBvcmRlcjsgb3RoZXJ3aXNlIHRyYXZlcnNlIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuCi0tCQkgKi8KLS0JCWlmIChjb21wYXIpIHsKLS0JCQlwLT5mdHNfbGluayA9IHJvb3Q7Ci0tCQkJcm9vdCA9IHA7Ci0tCQl9IGVsc2UgewotLQkJCXAtPmZ0c19saW5rID0gTlVMTDsKLS0JCQlpZiAocm9vdCA9PSBOVUxMKQotLQkJCQl0bXAgPSByb290ID0gcDsKLS0JCQllbHNlIHsKLS0JCQkJdG1wLT5mdHNfbGluayA9IHA7Ci0tCQkJCXRtcCA9IHA7Ci0tCQkJfQotLQkJfQotLQl9Ci0tCWlmIChjb21wYXIgJiYgbml0ZW1zID4gMSkKLS0JCXJvb3QgPSBmdHNfc29ydChzcCwgcm9vdCwgbml0ZW1zKTsKLS0KLS0JLyoKLS0JICogQWxsb2NhdGUgYSBkdW1teSBwb2ludGVyIGFuZCBtYWtlIGZ0c19yZWFkIHRoaW5rIHRoYXQgd2UndmUganVzdAotLQkgKiBmaW5pc2hlZCB0aGUgbm9kZSBiZWZvcmUgdGhlIHJvb3Qocyk7IHNldCBwLT5mdHNfaW5mbyB0byBGVFNfSU5JVAotLQkgKiBzbyB0aGF0IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlICJjdXJyZW50IiBub2RlIGlzIGlnbm9yZWQuCi0tCSAqLwotLQlpZiAoKHNwLT5mdHNfY3VyID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0tCQlnb3RvIG1lbTM7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfbGluayA9IHJvb3Q7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfaW5mbyA9IEZUU19JTklUOwotLQotLQkvKgotLQkgKiBJZiB1c2luZyBjaGRpcigyKSwgZ3JhYiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZyB0byBkb3QgdG8gZW5zdXJlCi0tCSAqIHRoYXQgd2UgY2FuIGdldCBiYWNrIGhlcmU7IHRoaXMgY291bGQgYmUgYXZvaWRlZCBmb3Igc29tZSBwYXRocywKLS0JICogYnV0IGFsbW9zdCBjZXJ0YWlubHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuICBTbGFzaGVzLCBzeW1ib2xpYyBsaW5rcywKLS0JICogYW5kICIuLiIgYXJlIGFsbCBmYWlybHkgbmFzdHkgcHJvYmxlbXMuICBOb3RlLCBpZiB3ZSBjYW4ndCBnZXQgdGhlCi0tCSAqIGRlc2NyaXB0b3Igd2UgcnVuIGFueXdheSwganVzdCBtb3JlIHNsb3dseS4KLS0JICovCi0tCWlmICghSVNTRVQoRlRTX05PQ0hESVIpCi0tCSAgICAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQlyZXR1cm4gKHNwKTsKLS0KLS1tZW0zOglmdHNfbGZyZWUocm9vdCk7Ci0tCWZyZWUocGFyZW50KTsKLS1tZW0yOglmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tbWVtMToJZnJlZShzcCk7Ci0tCXJldHVybiAoTlVMTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZnRzX2xvYWQoc3AsIHApCi0tCUZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS17Ci0tCXJlZ2lzdGVyIGludCBsZW47Ci0tCXJlZ2lzdGVyIGNoYXIgKmNwOwotLQotLQkvKgotLQkgKiBMb2FkIHRoZSBzdHJlYW0gc3RydWN0dXJlIGZvciB0aGUgbmV4dCB0cmF2ZXJzYWwuICBTaW5jZSB3ZSBkb24ndAotLQkgKiBhY3R1YWxseSBlbnRlciB0aGUgZGlyZWN0b3J5IHVudGlsIGFmdGVyIHRoZSBwcmVvcmRlciB2aXNpdCwgc2V0Ci0tCSAqIHRoZSBmdHNfYWNjcGF0aCBmaWVsZCBzcGVjaWFsbHkgc28gdGhlIGNoZGlyIGdldHMgZG9uZSB0byB0aGUgcmlnaHQKLS0JICogcGxhY2UgYW5kIHRoZSB1c2VyIGNhbiBhY2Nlc3MgdGhlIGZpcnN0IG5vZGUuICBGcm9tIGZ0c19vcGVuIGl0J3MKLS0JICoga25vd24gdGhhdCB0aGUgcGF0aCB3aWxsIGZpdC4KLS0JICovCi0tCWxlbiA9IHAtPmZ0c19wYXRobGVuID0gcC0+ZnRzX25hbWVsZW47Ci0tCW1lbW1vdmUoc3AtPmZ0c19wYXRoLCBwLT5mdHNfbmFtZSwgbGVuICsgMSk7Ci0tCWlmICgoY3AgPSBzdHJyY2hyKHAtPmZ0c19uYW1lLCAnLycpKSAmJiAoY3AgIT0gcC0+ZnRzX25hbWUgfHwgY3BbMV0pKSB7Ci0tCQlsZW4gPSBzdHJsZW4oKytjcCk7Ci0tCQltZW1tb3ZlKHAtPmZ0c19uYW1lLCBjcCwgbGVuICsgMSk7Ci0tCQlwLT5mdHNfbmFtZWxlbiA9IGxlbjsKLS0JfQotLQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlzcC0+ZnRzX2RldiA9IHAtPmZ0c19kZXY7Ci0tfQotLQotLWludAotLWZ0c19jbG9zZShzcCkKLS0JRlRTICpzcDsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotLQlpbnQgc2F2ZWRfZXJybm87Ci0tCi0tCS8qCi0tCSAqIFRoaXMgc3RpbGwgd29ya3MgaWYgd2UgaGF2ZW4ndCByZWFkIGFueXRoaW5nIC0tIHRoZSBkdW1teSBzdHJ1Y3R1cmUKLS0JICogcG9pbnRzIHRvIHRoZSByb290IGxpc3QsIHNvIHdlIHN0ZXAgdGhyb3VnaCB0byB0aGUgZW5kIG9mIHRoZSByb290Ci0tCSAqIGxpc3Qgd2hpY2ggaGFzIGEgdmFsaWQgcGFyZW50IHBvaW50ZXIuCi0tCSAqLwotLQlpZiAoc3AtPmZ0c19jdXIpIHsKLS0JCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLS0JCQlmcmVlcCA9IHA7Ci0tCQkJcCA9IHAtPmZ0c19saW5rICE9IE5VTEwgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCQkJZnJlZShmcmVlcCk7Ci0tCQl9Ci0tCQlmcmVlKHApOwotLQl9Ci0tCi0tCS8qIEZyZWUgdXAgY2hpbGQgbGlua2VkIGxpc3QsIHNvcnQgYXJyYXksIHBhdGggYnVmZmVyLiAqLwotLQlpZiAoc3AtPmZ0c19jaGlsZCkKLS0JCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JaWYgKHNwLT5mdHNfYXJyYXkpCi0tCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tCi0tCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotLQkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotLQotLQkJLyogU2V0IGVycm5vIGFuZCByZXR1cm4uICovCi0tCQlpZiAoc2F2ZWRfZXJybm8gIT0gMCkgewotLQkJCS8qIEZyZWUgdXAgdGhlIHN0cmVhbSBwb2ludGVyLiAqLwotLQkJCWZyZWUoc3ApOwotLQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJcmV0dXJuICgtMSk7Ci0tCQl9Ci0tCX0KLS0KLS0JLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0tCWZyZWUoc3ApOwotLQlyZXR1cm4gKDApOwotLX0KLS0KLS0vKgotLSAqIFNwZWNpYWwgY2FzZSBvZiAiLyIgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBzbyB0aGF0IHNsYXNoZXMgYXJlbid0Ci0tICogYXBwZW5kZWQgd2hpY2ggd291bGQgY2F1c2UgcGF0aHMgdG8gYmUgd3JpdHRlbiBhcyAiLi4uLi8vZm9vIi4KLS0gKi8KLS0jZGVmaW5lCU5BUFBFTkQocCkJCQkJCQkJXAotLQkocC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW4gLSAxXSA9PSAnLycJCQkJXAotLQkgICAgPyBwLT5mdHNfcGF0aGxlbiAtIDEgOiBwLT5mdHNfcGF0aGxlbikKLS0KLS1GVFNFTlQgKgotLWZ0c19yZWFkKHNwKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqdG1wOwotLQlyZWdpc3RlciBpbnQgaW5zdHI7Ci0tCXJlZ2lzdGVyIGNoYXIgKnQ7Ci0tCWludCBzYXZlZF9lcnJubzsKLS0KLS0JLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0tCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JcCA9IHNwLT5mdHNfY3VyOwotLQotLQkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLS0JaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0tCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotLQotLQkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotLQlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBwLCAwKTsKLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyoKLS0JICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0tCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0tCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLS0JICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotLQkgKi8KLS0JaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLS0JICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIDEpOwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQlpZiAoKHAtPmZ0c19zeW1mZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotLQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCX0KLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0tCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0tCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLS0JCSAgICAoSVNTRVQoRlRTX1hERVYpICYmIHAtPmZ0c19kZXYgIT0gc3AtPmZ0c19kZXYpKSB7Ci0tCQkJaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpCi0tCQkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCQkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLS0JCQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQkJCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luZm8gPSBGVFNfRFA7Ci0tCQkJcmV0dXJuIChwKTsKLS0JCX0KLS0KLS0JCS8qIFJlYnVpbGQgaWYgb25seSByZWFkIHRoZSBuYW1lcyBhbmQgbm93IHRyYXZlcnNpbmcuICovCi0tCQlpZiAoc3AtPmZ0c19jaGlsZCAhPSBOVUxMICYmIElTU0VUKEZUU19OQU1FT05MWSkpIHsKLS0JCQlDTFIoRlRTX05BTUVPTkxZKTsKLS0JCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogQ2QgdG8gdGhlIHN1YmRpcmVjdG9yeS4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlIGFscmVhZHkgcmVhZCBhbmQgbm93IGZhaWwgdG8gY2hkaXIsIHdoYWNrIHRoZSBsaXN0Ci0tCQkgKiB0byBtYWtlIHRoZSBuYW1lcyBjb21lIG91dCByaWdodCwgYW5kIHNldCB0aGUgcGFyZW50IGVycm5vCi0tCQkgKiBzbyB0aGUgYXBwbGljYXRpb24gd2lsbCBldmVudHVhbGx5IGdldCBhbiBlcnJvciBjb25kaXRpb24uCi0tCQkgKiBTZXQgdGhlIEZUU19ET05UQ0hESVIgZmxhZyBzbyB0aGF0IHdoZW4gd2UgbG9naWNhbGx5IGNoYW5nZQotLQkJICogZGlyZWN0b3JpZXMgYmFjayB0byB0aGUgcGFyZW50IHdlIGRvbid0IGRvIGEgY2hkaXIuCi0tCQkgKgotLQkJICogSWYgaGF2ZW4ndCByZWFkIGRvIHNvLiAgSWYgdGhlIHJlYWQgZmFpbHMsIGZ0c19idWlsZCBzZXRzCi0tCQkgKiBGVFNfU1RPUCBvciB0aGUgZnRzX2luZm8gZmllbGQgb2YgdGhlIG5vZGUuCi0tCQkgKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICE9IE5VTEwpIHsKLS0JCQlpZiAoZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLCAtMSwgcC0+ZnRzX2FjY3BhdGgpKSB7Ci0tCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQkJZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcCAhPSBOVUxMOwotLQkJCQkgICAgIHAgPSBwLT5mdHNfbGluaykKLS0JCQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLS0JCQl9Ci0tCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLS0JCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCXJldHVybiAocCk7Ci0tCQl9Ci0tCQlwID0gc3AtPmZ0c19jaGlsZDsKLS0JCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotLQkJZ290byBuYW1lOwotLQl9Ci0tCi0tCS8qIE1vdmUgdG8gdGhlIG5leHQgbm9kZSBvbiB0aGlzIGxldmVsLiAqLwotLW5leHQ6CXRtcCA9IHA7Ci0tCWlmICgocCA9IHAtPmZ0c19saW5rKSAhPSBOVUxMKSB7Ci0tCQlmcmVlKHRtcCk7Ci0tCi0tCQkvKgotLQkJICogSWYgcmVhY2hlZCB0aGUgdG9wLCByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSAob3IKLS0JCSAqIHRoZSByb290IG9mIHRoZSB0cmVlKSwgYW5kIGxvYWQgdGhlIHBhdGhzIGZvciB0aGUgbmV4dCByb290LgotLQkJICovCi0tCQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQkJU0VUKEZUU19TVE9QKTsKLS0JCQkJcmV0dXJuIChOVUxMKTsKLS0JCQl9Ci0tCQkJZnRzX2xvYWQoc3AsIHApOwotLQkJCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBVc2VyIG1heSBoYXZlIGNhbGxlZCBmdHNfc2V0IG9uIHRoZSBub2RlLiAgSWYgc2tpcHBlZCwKLS0JCSAqIGlnbm9yZS4gIElmIGZvbGxvd2VkLCBnZXQgYSBmaWxlIGRlc2NyaXB0b3Igc28gd2UgY2FuCi0tCQkgKiBnZXQgYmFjayBpZiBuZWNlc3NhcnkuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX1NLSVApCi0tCQkJZ290byBuZXh0OwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfRk9MTE9XKSB7Ci0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMSk7Ci0tCQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotLQkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQkJfSBlbHNlCi0tCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCQl9Ci0tCi0tbmFtZToJCXQgPSBzcC0+ZnRzX3BhdGggKyBOQVBQRU5EKHAtPmZ0c19wYXJlbnQpOwotLQkJKnQrKyA9ICcvJzsKLS0JCW1lbW1vdmUodCwgcC0+ZnRzX25hbWUsIHAtPmZ0c19uYW1lbGVuICsgMSk7Ci0tCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCX0KLS0KLS0JLyogTW92ZSB1cCB0byB0aGUgcGFyZW50IG5vZGUuICovCi0tCXAgPSB0bXAtPmZ0c19wYXJlbnQ7Ci0tCWZyZWUodG1wKTsKLS0KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVFBBUkVOVExFVkVMKSB7Ci0tCQkvKgotLQkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotLQkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLS0JCSAqLwotLQkJZnJlZShwKTsKLS0JCWVycm5vID0gMDsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBOVUxMKTsKLS0JfQotLQotLQkvKiBOVUwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLS0Jc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0tCi0tCS8qCi0tCSAqIFJldHVybiB0byB0aGUgcGFyZW50IGRpcmVjdG9yeS4gIElmIGF0IGEgcm9vdCBub2RlIG9yIGNhbWUgdGhyb3VnaAotLQkgKiBhIHN5bWxpbmssIGdvIGJhY2sgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgT3RoZXJ3aXNlLCBjZCB1cAotLQkgKiBvbmUgZGlyZWN0b3J5LgotLQkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMKSB7Ci0tCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCX0gZWxzZSBpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykgewotLQkJaWYgKEZDSERJUihzcCwgcC0+ZnRzX3N5bWZkKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCX0gZWxzZSBpZiAoIShwLT5mdHNfZmxhZ3MgJiBGVFNfRE9OVENIRElSKSAmJgotLQkJICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLT5mdHNfcGFyZW50LCAtMSwgIi4uIikpIHsKLS0JCVNFVChGVFNfU1RPUCk7Ci0tCQlyZXR1cm4gKE5VTEwpOwotLQl9Ci0tCXAtPmZ0c19pbmZvID0gcC0+ZnRzX2Vycm5vID8gRlRTX0VSUiA6IEZUU19EUDsKLS0JcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLX0KLS0KLS0vKgotLSAqIEZ0c19zZXQgdGFrZXMgdGhlIHN0cmVhbSBhcyBhbiBhcmd1bWVudCBhbHRob3VnaCBpdCdzIG5vdCB1c2VkIGluIHRoaXMKLS0gKiBpbXBsZW1lbnRhdGlvbjsgaXQgd291bGQgYmUgbmVjZXNzYXJ5IGlmIGFueW9uZSB3YW50ZWQgdG8gYWRkIGdsb2JhbAotLSAqIHNlbWFudGljcyB0byBmdHMgdXNpbmcgZnRzX3NldC4gIEFuIGVycm9yIHJldHVybiBpcyBhbGxvd2VkIGZvciBzaW1pbGFyCi0tICogcmVhc29ucy4KLS0gKi8KLS0vKiBBUkdTVVNFRCAqLwotLWludAotLWZ0c19zZXQoc3AsIHAsIGluc3RyKQotLQlGVFMgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpICpzcDsKLS0JRlRTRU5UICpwOwotLQlpbnQgaW5zdHI7Ci0tewotLXNwID0gTlVMTDsJLyogc3RvcCBjb21waWxlciB3aGluZ2luZyAqLwotLQlpZiAoaW5zdHIgIT0gMCAmJiBpbnN0ciAhPSBGVFNfQUdBSU4gJiYgaW5zdHIgIT0gRlRTX0ZPTExPVyAmJgotLQkgICAgaW5zdHIgIT0gRlRTX05PSU5TVFIgJiYgaW5zdHIgIT0gRlRTX1NLSVApIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuICgxKTsKLS0JfQotLQlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLS0JcmV0dXJuICgwKTsKLS19Ci0tCi0tLyoKLS0gKiBUaGlzIGlzIHRoZSB0cmlja3kgcGFydCAtLSBkbyBub3QgY2FzdWFsbHkgY2hhbmdlICphbnl0aGluZyogaW4gaGVyZS4gIFRoZQotLSAqIGlkZWEgaXMgdG8gYnVpbGQgdGhlIGxpbmtlZCBsaXN0IG9mIGVudHJpZXMgdGhhdCBhcmUgdXNlZCBieSBmdHNfY2hpbGRyZW4KLS0gKiBhbmQgZnRzX3JlYWQuICBUaGVyZSBhcmUgbG90cyBvZiBzcGVjaWFsIGNhc2VzLgotLSAqCi0tICogVGhlIHJlYWwgc2xvd2Rvd24gaW4gd2Fsa2luZyB0aGUgdHJlZSBpcyB0aGUgc3RhdCBjYWxscy4gIElmIEZUU19OT1NUQVQgaXMKLS0gKiBzZXQgYW5kIGl0J3MgYSBwaHlzaWNhbCB3YWxrIChzbyB0aGF0IHN5bWJvbGljIGxpbmtzIGNhbid0IGJlIGRpcmVjdG9yaWVzKSwKLS0gKiB3ZSBjYW4gZG8gdGhpbmdzIHF1aWNrbHkuICBGaXJzdCwgaWYgaXQncyBhIDQuNEJTRCBmaWxlIHN5c3RlbSwgdGhlIHR5cGUKLS0gKiBvZiB0aGUgZmlsZSBpcyBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LiAgT3RoZXJ3aXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgbnVtYmVyCi0tICogb2Ygc3ViZGlyZWN0b3JpZXMgaW4gYSBub2RlIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgbGlua3MgdG8gdGhlIHBhcmVudC4KLS0gKiBUaGUgZm9ybWVyIHNraXBzIGFsbCBzdGF0IGNhbGxzLiAgVGhlIGxhdHRlciBza2lwcyBzdGF0IGNhbGxzIGluIGFueSBsZWFmCi0tICogZGlyZWN0b3JpZXMgYW5kIGZvciBhbnkgZmlsZXMgYWZ0ZXIgdGhlIHN1YmRpcmVjdG9yaWVzIGluIHRoZSBkaXJlY3RvcnkgaGF2ZQotLSAqIGJlZW4gZm91bmQsIGN1dHRpbmcgdGhlIHN0YXQgY2FsbHMgYnkgYWJvdXQgMi8zLgotLSAqLwotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19idWlsZChzcCwgdHlwZSkKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JaW50IHR5cGU7Ci0tewotLQlyZWdpc3RlciBzdHJ1Y3QgZGlyZW50ICpkcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqaGVhZDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpjdXIsICp0YWlsOwotLQlESVIgKmRpcnA7Ci0tCXZvaWQgKm9sZGFkZHI7Ci0tCWludCBjZGVycm5vLCBkZXNjZW5kLCBsZW4sIGxldmVsLCBubGlua3MsIHNhdmVkX2Vycm5vLAotLQkgICAgbm9zdGF0LCBkb2FkanVzdDsKLS0Jc2l6ZV90IG1heGxlbjsKLS0JY2hhciAqY3A7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JY3VyID0gc3AtPmZ0c19jdXI7Ci0tCi0tCS8qCi0tCSAqIE9wZW4gdGhlIGRpcmVjdG9yeSBmb3IgcmVhZGluZy4gIElmIHRoaXMgZmFpbHMsIHdlJ3JlIGRvbmUuCi0tCSAqIElmIGJlaW5nIGNhbGxlZCBmcm9tIGZ0c19yZWFkLCBzZXQgdGhlIGZ0c19pbmZvIGZpZWxkLgotLQkgKi8KLS0gICAgICAgaWYgKChkaXJwID0gb3BlbmRpcihjdXItPmZ0c19hY2NwYXRoKSkgPT0gTlVMTCkgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpIHsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0ROUjsKLS0JCQljdXItPmZ0c19lcnJubyA9IGVycm5vOwotLQkJfQotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKgotLQkgKiBObGlua3MgaXMgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBlbnRyaWVzIG9mIHR5cGUgZGlyZWN0b3J5IGluIHRoZQotLQkgKiBkaXJlY3RvcnkgaWYgd2UncmUgY2hlYXRpbmcgb24gc3RhdCBjYWxscywgMCBpZiB3ZSdyZSBub3QgZG9pbmcKLS0JICogYW55IHN0YXQgY2FsbHMgYXQgYWxsLCAtMSBpZiB3ZSdyZSBkb2luZyBzdGF0cyBvbiBldmVyeXRoaW5nLgotLQkgKi8KLS0JbmxpbmtzID0gLTE7Ci0tCW5vc3RhdCA9IDA7Ci0tCi0tCS8qCi0tCSAqIElmIHdlJ3JlIGdvaW5nIHRvIG5lZWQgdG8gc3RhdCBhbnl0aGluZyBvciB3ZSB3YW50IHRvIGRlc2NlbmQKLS0JICogYW5kIHN0YXkgaW4gdGhlIGRpcmVjdG9yeSwgY2hkaXIuICBJZiB0aGlzIGZhaWxzIHdlIGtlZXAgZ29pbmcsCi0tCSAqIGJ1dCBzZXQgYSBmbGFnIHNvIHdlIGRvbid0IGNoZGlyIGFmdGVyIHRoZSBwb3N0LW9yZGVyIHZpc2l0LgotLQkgKiBXZSB3b24ndCBiZSBhYmxlIHRvIHN0YXQgYW55dGhpbmcsIGJ1dCB3ZSBjYW4gc3RpbGwgcmV0dXJuIHRoZQotLQkgKiBuYW1lcyB0aGVtc2VsdmVzLiAgTm90ZSwgdGhhdCBzaW5jZSBmdHNfcmVhZCB3b24ndCBiZSBhYmxlIHRvCi0tCSAqIGNoZGlyIGludG8gdGhlIGRpcmVjdG9yeSwgaXQgd2lsbCBoYXZlIHRvIHJldHVybiBkaWZmZXJlbnQgcGF0aAotLQkgKiBuYW1lcyB0aGFuIGJlZm9yZSwgaS5lLiAiYS9iIiBpbnN0ZWFkIG9mICJiIi4gIFNpbmNlIHRoZSBub2RlCi0tCSAqIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZCBpbiBwcmUtb3JkZXIsIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUKLS0JICogcG9zdC1vcmRlciB2aXNpdCB0byByZXR1cm4gdGhlIGVycm9yLiAgVGhlcmUgaXMgYSBzcGVjaWFsIGNhc2UKLS0JICogaGVyZSwgaWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gc3RhdCB0aGVuIGl0J3Mgbm90IGFuIGVycm9yIHRvCi0tCSAqIG5vdCBiZSBhYmxlIHRvIHN0YXQuICBUaGlzIGlzIGFsbCBmYWlybHkgbmFzdHkuICBJZiBhIHByb2dyYW0KLS0JICogbmVlZGVkIHNvcnRlZCBlbnRyaWVzIG9yIHN0YXQgaW5mb3JtYXRpb24sIHRoZXkgaGFkIGJldHRlciBiZQotLQkgKiBjaGVja2luZyBGVFNfTlMgb24gdGhlIHJldHVybmVkIG5vZGVzLgotLQkgKi8KLS0JY2RlcnJubyA9IDA7Ci0tCWlmIChubGlua3MgfHwgdHlwZSA9PSBCUkVBRCkgewotLQkJaWYgKGZ0c19zYWZlX2NoYW5nZWRpcihzcCwgY3VyLCBkaXJmZChkaXJwKSwgTlVMTCkpIHsKLS0JCQlpZiAobmxpbmtzICYmIHR5cGUgPT0gQlJFQUQpCi0tCQkJCWN1ci0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJY3VyLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQlkZXNjZW5kID0gMDsKLS0JCQljZGVycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJZGlycCA9IE5VTEw7Ci0tCQl9IGVsc2UKLS0JCQlkZXNjZW5kID0gMTsKLS0JfSBlbHNlCi0tCQlkZXNjZW5kID0gMDsKLS0KLS0JLyoKLS0JICogRmlndXJlIG91dCB0aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGggdGhhdCBjYW4gYmUgc3RvcmVkIGluIHRoZQotLQkgKiBjdXJyZW50IHBhdGggLS0gdGhlIGlubmVyIGxvb3AgYWxsb2NhdGVzIG1vcmUgcGF0aCBhcyBuZWNlc3NhcnkuCi0tCSAqIFdlIHJlYWxseSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoZSBtYXhsZW4gY2FsY3VsYXRpb25zIGhlcmUsIHdlCi0tCSAqIGNvdWxkIGRvIHRoZW0gaW4gZnRzX3JlYWQgYmVmb3JlIHJldHVybmluZyB0aGUgcGF0aCwgYnV0IGl0J3MgYQotLQkgKiBsb3QgZWFzaWVyIGhlcmUgc2luY2UgdGhlIGxlbmd0aCBpcyBwYXJ0IG9mIHRoZSBkaXJlbnQgc3RydWN0dXJlLgotLQkgKgotLQkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMgc2V0IGEgcG9pbnRlciBzbyB0aGF0IGNhbiBqdXN0IGFwcGVuZAotLQkgKiBlYWNoIG5ldyBuYW1lIGludG8gdGhlIHBhdGguCi0tCSAqLwotLQlsZW4gPSBOQVBQRU5EKGN1cik7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCWNwID0gc3AtPmZ0c19wYXRoICsgbGVuOwotLQkJKmNwKysgPSAnLyc7Ci0tCX0gZWxzZSB7Ci0tCQkvKiBHQ0MsIHlvdSdyZSB0b28gdmVyYm9zZS4gKi8KLS0JCWNwID0gTlVMTDsKLS0JfQotLQlsZW4rKzsKLS0JbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gbGVuOwotLQotLQlsZXZlbCA9IGN1ci0+ZnRzX2xldmVsICsgMTsKLS0KLS0JLyogUmVhZCB0aGUgZGlyZWN0b3J5LCBhdHRhY2hpbmcgZWFjaCBlbnRyeSB0byB0aGUgYGxpbmsnIHBvaW50ZXIuICovCi0tCWRvYWRqdXN0ID0gMDsKLS0JZm9yIChoZWFkID0gdGFpbCA9IE5VTEwsIG5pdGVtcyA9IDA7IGRpcnAgJiYgKGRwID0gcmVhZGRpcihkaXJwKSk7KSB7Ci0tCQlpZiAoIUlTU0VUKEZUU19TRUVET1QpICYmIElTRE9UKGRwLT5kX25hbWUpKQotLQkJCWNvbnRpbnVlOwotLQotLQkJaWYgKChwID0gZnRzX2FsbG9jKHNwLCBkcC0+ZF9uYW1lLCAoaW50KV9EX0VYQUNUX05BTUxFTiAoZHApKSkgPT0gTlVMTCkKLS0JCQlnb3RvIG1lbTE7Ci0tCQlpZiAoX0RfRVhBQ1RfTkFNTEVOIChkcCkgPj0gbWF4bGVuKSB7LyogaW5jbHVkZSBzcGFjZSBmb3IgTlVMICovCi0tCQkJb2xkYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0JCQlpZiAoZnRzX3BhbGxvYyhzcCwgX0RfRVhBQ1RfTkFNTEVOIChkcCkgKyBsZW4gKyAxKSkgewotLQkJCQkvKgotLQkJCQkgKiBObyBtb3JlIG1lbW9yeSBmb3IgcGF0aCBvciBzdHJ1Y3R1cmVzLiAgU2F2ZQotLQkJCQkgKiBlcnJubywgZnJlZSB1cCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIHRoZQotLQkJCQkgKiBzdHJ1Y3R1cmVzIGFscmVhZHkgYWxsb2NhdGVkLgotLQkJCQkgKi8KLS1tZW0xOgkJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotLQkJCQlpZiAocCkKLS0JCQkJCWZyZWUocCk7Ci0tCQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCQlTRVQoRlRTX1NUT1ApOwotLQkJCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCX0KLS0JCQkvKiBEaWQgcmVhbGxvYygpIGNoYW5nZSB0aGUgcG9pbnRlcj8gKi8KLS0JCQlpZiAob2xkYWRkciAhPSBzcC0+ZnRzX3BhdGgpIHsKLS0JCQkJZG9hZGp1c3QgPSAxOwotLQkJCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJCQkJY3AgPSBzcC0+ZnRzX3BhdGggKyBsZW47Ci0tCQkJfQotLQkJCW1heGxlbiA9IHNwLT5mdHNfcGF0aGxlbiAtIGxlbjsKLS0JCX0KLS0KLS0JCWlmIChsZW4gKyBfRF9FWEFDVF9OQU1MRU4gKGRwKSA+PSAweDEwMDAwKSB7Ci0tCQkJLyoKLS0JCQkgKiBJbiBhbiBGVFNFTlQsIGZ0c19wYXRobGVuIGlzIGEgdV9zaG9ydCBzbyBpdCBpcwotLQkJCSAqIHBvc3NpYmxlIHRvIHdyYXBhcm91bmQgaGVyZS4gIElmIHdlIGRvLCBmcmVlIHVwCi0tCQkJICogdGhlIGN1cnJlbnQgc3RydWN0dXJlIGFuZCB0aGUgc3RydWN0dXJlcyBhbHJlYWR5Ci0tCQkJICogYWxsb2NhdGVkLCB0aGVuIGVycm9yIG91dCB3aXRoIEVOQU1FVE9PTE9ORy4KLS0JCQkgKi8KLS0JCQlmcmVlKHApOwotLQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCWVycm5vID0gRU5BTUVUT09MT05HOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCQlwLT5mdHNfbGV2ZWwgPSBsZXZlbDsKLS0JCXAtPmZ0c19wYXJlbnQgPSBzcC0+ZnRzX2N1cjsKLS0JCXAtPmZ0c19wYXRobGVuID0gbGVuICsgX0RfRVhBQ1RfTkFNTEVOIChkcCk7Ci0tCi0tI2lmIGRlZmluZWQgRlRTX1dISVRFT1VUICYmIDAKLS0JCWlmIChkcC0+ZF90eXBlID09IERUX1dIVCkKLS0JCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0lTVzsKLS0jZW5kaWYKLS0KLS0JCWlmIChjZGVycm5vKSB7Ci0tCQkJaWYgKG5saW5rcykgewotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19OUzsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gY2RlcnJubzsKLS0JCQl9IGVsc2UKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfTlNPSzsKLS0JCQlwLT5mdHNfYWNjcGF0aCA9IGN1ci0+ZnRzX2FjY3BhdGg7Ci0tCQl9IGVsc2UgaWYgKG5saW5rcyA9PSAwCi0tI2lmIGRlZmluZWQgRFRfRElSICYmIGRlZmluZWQgX0RJUkVOVF9IQVZFX0RfVFlQRQotLQkJCSAgIHx8IChub3N0YXQgJiYKLS0JCQkgICAgICAgZHAtPmRfdHlwZSAhPSBEVF9ESVIgJiYgZHAtPmRfdHlwZSAhPSBEVF9VTktOT1dOKQotLSNlbmRpZgotLQkJICAgICkgewotLQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkgICAgSVNTRVQoRlRTX05PQ0hESVIpID8gcC0+ZnRzX3BhdGggOiBwLT5mdHNfbmFtZTsKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19OU09LOwotLQkJfSBlbHNlIHsKLS0JCQkvKiBCdWlsZCBhIGZpbGUgbmFtZSBmb3IgZnRzX3N0YXQgdG8gc3RhdC4gKi8KLS0JCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQkJCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX3BhdGg7Ci0tCQkJCW1lbW1vdmUoY3AsIHAtPmZ0c19uYW1lLCBwLT5mdHNfbmFtZWxlbiArIDEpOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotLQkJCS8qIFN0YXQgaXQuICovCi0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMCk7Ci0tCi0tCQkJLyogRGVjcmVtZW50IGxpbmsgY291bnQgaWYgYXBwbGljYWJsZS4gKi8KLS0JCQlpZiAobmxpbmtzID4gMCAmJiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgfHwKLS0JCQkgICAgcC0+ZnRzX2luZm8gPT0gRlRTX0RDIHx8IHAtPmZ0c19pbmZvID09IEZUU19ET1QpKQotLQkJCQktLW5saW5rczsKLS0JCX0KLS0KLS0JCS8qIFdlIHdhbGsgaW4gZGlyZWN0b3J5IG9yZGVyIHNvICJscyAtZiIgZG9lc24ndCBnZXQgdXBzZXQuICovCi0tCQlwLT5mdHNfbGluayA9IE5VTEw7Ci0tCQlpZiAoaGVhZCA9PSBOVUxMKQotLQkJCWhlYWQgPSB0YWlsID0gcDsKLS0JCWVsc2UgewotLQkJCXRhaWwtPmZ0c19saW5rID0gcDsKLS0JCQl0YWlsID0gcDsKLS0JCX0KLS0JCSsrbml0ZW1zOwotLQl9Ci0tCWlmIChkaXJwKQotLQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCi0tCS8qCi0tCSAqIElmIHJlYWxsb2MoKSBjaGFuZ2VkIHRoZSBhZGRyZXNzIG9mIHRoZSBwYXRoLCBhZGp1c3QgdGhlCi0tCSAqIGFkZHJlc3NlcyBmb3IgdGhlIHJlc3Qgb2YgdGhlIHRyZWUgYW5kIHRoZSBkaXIgbGlzdC4KLS0JICovCi0tCWlmIChkb2FkanVzdCkKLS0JCWZ0c19wYWRqdXN0KHNwLCBoZWFkKTsKLS0KLS0JLyoKLS0JICogSWYgbm90IGNoYW5naW5nIGRpcmVjdG9yaWVzLCByZXNldCB0aGUgcGF0aCBiYWNrIHRvIG9yaWdpbmFsCi0tCSAqIHN0YXRlLgotLQkgKi8KLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotLQkJaWYgKGxlbiA9PSBzcC0+ZnRzX3BhdGhsZW4gfHwgbml0ZW1zID09IDApCi0tCQkJLS1jcDsKLS0JCSpjcCA9ICdcMCc7Ci0tCX0KLS0KLS0JLyoKLS0JICogSWYgZGVzY2VuZGVkIGFmdGVyIGNhbGxlZCBmcm9tIGZ0c19jaGlsZHJlbiBvciBhZnRlciBjYWxsZWQgZnJvbQotLQkgKiBmdHNfcmVhZCBhbmQgbm90aGluZyBmb3VuZCwgZ2V0IGJhY2suICBBdCB0aGUgcm9vdCBsZXZlbCB3ZSB1c2UKLS0JICogdGhlIHNhdmVkIGZkOyBpZiBvbmUgb2YgZnRzX29wZW4oKSdzIGFyZ3VtZW50cyBpcyBhIHJlbGF0aXZlIHBhdGgKLS0JICogdG8gYW4gZW1wdHkgZGlyZWN0b3J5LCB3ZSB3aW5kIHVwIGhlcmUgd2l0aCBubyBvdGhlciB3YXkgYmFjay4gIElmCi0tCSAqIGNhbid0IGdldCBiYWNrLCB3ZSdyZSBkb25lLgotLQkgKi8KLS0JaWYgKGRlc2NlbmQgJiYgbml0ZW1zID09IDAgJiYKLS0JICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLS0JICAgICBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSA6Ci0tCSAgICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBjdXItPmZ0c19wYXJlbnQsIC0xLCAiLi4iKSkpIHsKLS0JCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJU0VUKEZUU19TVE9QKTsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogSWYgZGlkbid0IGZpbmQgYW55dGhpbmcsIHJldHVybiBOVUxMLiAqLwotLQlpZiAoIW5pdGVtcykgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpCi0tCQkJY3VyLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogU29ydCB0aGUgZW50cmllcy4gKi8KLS0JaWYgKHNwLT5mdHNfY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQloZWFkID0gZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcyk7Ci0tCXJldHVybiAoaGVhZCk7Ci0tfQotLQotLXN0YXRpYyB1X3Nob3J0Ci0tZnRzX3N0YXQoc3AsIHAsIGZvbGxvdykKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlpbnQgZm9sbG93OwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICp0OwotLQlyZWdpc3RlciBkZXZfdCBkZXY7Ci0tCXJlZ2lzdGVyIGlub190IGlubzsKLS0Jc3RydWN0IHN0YXQgKnNicDsKLS0JaW50IHNhdmVkX2Vycm5vOwotLQotLQkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0tCXNicCA9IHAtPmZ0c19zdGF0cDsKLS0KLS0jaWYgZGVmaW5lZCBGVFNfV0hJVEVPVVQgJiYgMAotLQkvKiBjaGVjayBmb3Igd2hpdGVvdXQgKi8KLS0JaWYgKHAtPmZ0c19mbGFncyAmIEZUU19JU1cpIHsKLS0JCWlmIChzYnAgIT0gJnNiKSB7Ci0tCQkJbWVtc2V0KHNicCwgJ1wwJywgc2l6ZW9mICgqc2JwKSk7Ci0tCQkJc2JwLT5zdF9tb2RlID0gU19JRldIVDsKLS0JCX0KLS0JCXJldHVybiAoRlRTX1cpOwotLSAgICAgICB9Ci0tI2VuZGlmCi0tCi0tCS8qCi0tCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLS0JICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotLQkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLS0JICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0tCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCQllcnJubyA9IDA7Ci0tCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0tCQkJfQotLQkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCWdvdG8gZXJyOwotLQkJfQotLQl9IGVsc2UgaWYgKGxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS1lcnI6CQltZW1zZXQoc2JwLCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKLS0JCXJldHVybiAoRlRTX05TKTsKLS0JfQotLQotLQlpZiAoU19JU0RJUihzYnAtPnN0X21vZGUpKSB7Ci0tCQkvKgotLQkJICogU2V0IHRoZSBkZXZpY2UvaW5vZGUuICBVc2VkIHRvIGZpbmQgY3ljbGVzIGFuZCBjaGVjayBmb3IKLS0JCSAqIGNyb3NzaW5nIG1vdW50IHBvaW50cy4gIEFsc28gcmVtZW1iZXIgdGhlIGxpbmsgY291bnQsIHVzZWQKLS0JCSAqIGluIGZ0c19idWlsZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN0YXQgY2FsbHMuICBJdCBpcwotLQkJICogdW5kZXJzdG9vZCB0aGF0IHRoZXNlIGZpZWxkcyBhcmUgb25seSByZWZlcmVuY2VkIGlmIGZ0c19pbmZvCi0tCQkgKiBpcyBzZXQgdG8gRlRTX0QuCi0tCQkgKi8KLS0JCWRldiA9IHAtPmZ0c19kZXYgPSBzYnAtPnN0X2RldjsKLS0JCWlubyA9IHAtPmZ0c19pbm8gPSBzYnAtPnN0X2lubzsKLS0JCXAtPmZ0c19ubGluayA9IHNicC0+c3Rfbmxpbms7Ci0tCi0tCQlpZiAoSVNET1QocC0+ZnRzX25hbWUpKQotLQkJCXJldHVybiAoRlRTX0RPVCk7Ci0tCi0tCQkvKgotLQkJICogQ3ljbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgYnJ1dGUgZm9yY2Ugd2hlbiB0aGUgZGlyZWN0b3J5Ci0tCQkgKiBpcyBmaXJzdCBlbmNvdW50ZXJlZC4gIElmIHRoZSB0cmVlIGdldHMgZGVlcCBlbm91Z2ggb3IgdGhlCi0tCQkgKiBudW1iZXIgb2Ygc3ltYm9saWMgbGlua3MgdG8gZGlyZWN0b3JpZXMgaXMgaGlnaCBlbm91Z2gsCi0tCQkgKiBzb21ldGhpbmcgZmFzdGVyIG1pZ2h0IGJlIHdvcnRod2hpbGUuCi0tCQkgKi8KLS0JCWZvciAodCA9IHAtPmZ0c19wYXJlbnQ7Ci0tCQkgICAgdC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7IHQgPSB0LT5mdHNfcGFyZW50KQotLQkJCWlmIChpbm8gPT0gdC0+ZnRzX2lubyAmJiBkZXYgPT0gdC0+ZnRzX2RldikgewotLQkJCQlwLT5mdHNfY3ljbGUgPSB0OwotLQkJCQlyZXR1cm4gKEZUU19EQyk7Ci0tCQkJfQotLQkJcmV0dXJuIChGVFNfRCk7Ci0tCX0KLS0JaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX1NMKTsKLS0JaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX0YpOwotLQlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcykKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICoqYXAsICpwOwotLQotLQkvKgotLQkgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN0cnVjdHVyZXMgYW5kIGNhbGwgcXNvcnQoMykuCi0tCSAqIFJlYXNzZW1ibGUgdGhlIGFycmF5IGluIHRoZSBvcmRlciByZXR1cm5lZCBieSBxc29ydC4gIElmIHVuYWJsZSB0bwotLQkgKiBzb3J0IGZvciBtZW1vcnkgcmVhc29ucywgcmV0dXJuIHRoZSBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGVpcgotLQkgKiBjdXJyZW50IG9yZGVyLiAgQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCBuZWVkcyBwbHVzCi0tCSAqIDQwIHNvIGRvbid0IHJlYWxsb2Mgb25lIGVudHJ5IGF0IGEgdGltZS4KLS0JICovCi0tCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotLQkJc3RydWN0IF9mdHNlbnQgKiphOwotLQotLQkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLS0JCWlmICgoYSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLS0gCQkgICAgKHNpemVfdCkoc3AtPmZ0c19uaXRlbXMgKiBzaXplb2YoRlRTRU5UICopKSkpID09IE5VTEwpIHsKLS0JCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQkJCXNwLT5mdHNfYXJyYXkgPSBOVUxMOwotLQkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLS0JCQlyZXR1cm4gKGhlYWQpOwotLQkJfQotLQkJc3AtPmZ0c19hcnJheSA9IGE7Ci0tCX0KLS0JZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkqYXArKyA9IHA7Ci0tCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0tCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0tCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLS0JYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLS0JcmV0dXJuIChoZWFkKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX2FsbG9jKHNwLCBuYW1lLCBuYW1lbGVuKQotLQlGVFMgKnNwOwotLQljb25zdCBjaGFyICpuYW1lOwotLQlyZWdpc3RlciBpbnQgbmFtZWxlbjsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS0Jc2l6ZV90IGxlbjsKLS0KLS0JLyoKLS0JICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLS0JICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0tCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0tCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0tCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLS0JICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLS0JICovCi0tCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLS0JbGVuICs9IHNpemVvZihzdHJ1Y3Qgc3RhdCkgKyBBTElHTkJZVEVTOwotLQlpZiAoKHAgPSBtYWxsb2MobGVuKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIENvcHkgdGhlIG5hbWUgYW5kIGd1YXJhbnRlZSBOVUwgdGVybWluYXRpb24uICovCi0tCW1lbW1vdmUocC0+ZnRzX25hbWUsIG5hbWUsIG5hbWVsZW4pOwotLQlwLT5mdHNfbmFtZVtuYW1lbGVuXSA9ICdcMCc7Ci0tCi0tCXAtPmZ0c19zdGF0cCA9IChzdHJ1Y3Qgc3RhdCAqKUFMSUdOKHAtPmZ0c19uYW1lICsgbmFtZWxlbiArIDIpOwotLQlwLT5mdHNfbmFtZWxlbiA9IG5hbWVsZW47Ci0tCXAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlwLT5mdHNfZXJybm8gPSAwOwotLQlwLT5mdHNfZmxhZ3MgPSAwOwotLQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JcC0+ZnRzX251bWJlciA9IDA7Ci0tCXAtPmZ0c19wb2ludGVyID0gTlVMTDsKLS0JcmV0dXJuIChwKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1mdHNfbGZyZWUoaGVhZCkKLS0JcmVnaXN0ZXIgRlRTRU5UICpoZWFkOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQotLQkvKiBGcmVlIGEgbGlua2VkIGxpc3Qgb2Ygc3RydWN0dXJlcy4gKi8KLS0Jd2hpbGUgKChwID0gaGVhZCkpIHsKLS0JCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLS0JCWZyZWUocCk7Ci0tCX0KLS19Ci0tCi0tLyoKLS0gKiBBbGxvdyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQgcGF0aHM7IGZpbmQsIHJtLCBscyBzaG91bGQgYWxsIHdvcmsgb24gYW55IHRyZWUuCi0tICogTW9zdCBzeXN0ZW1zIHdpbGwgYWxsb3cgY3JlYXRpb24gb2YgcGF0aHMgbXVjaCBsb25nZXIgdGhhbiBNQVhQQVRITEVOLCBldmVuCi0tICogdGhvdWdoIHRoZSBrZXJuZWwgd29uJ3QgcmVzb2x2ZSB0aGVtLiAgQWRkIHRoZSBzaXplIChub3QganVzdCB3aGF0J3MgbmVlZGVkKQotLSAqIHBsdXMgMjU2IGJ5dGVzIHNvIGRvbid0IHJlYWxsb2MgdGhlIHBhdGggMiBieXRlcyBhdCBhIHRpbWUuCi0tICovCi0tc3RhdGljIGludAotLWZ0c19wYWxsb2Moc3AsIG1vcmUpCi0tCUZUUyAqc3A7Ci0tCXNpemVfdCBtb3JlOwotLXsKLS0JY2hhciAqcDsKLS0KLS0Jc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0tCS8qCi0tCSAqIENoZWNrIGZvciBwb3NzaWJsZSB3cmFwYXJvdW5kLiAgSW4gYW4gRlRTLCBmdHNfcGF0aGxlbiBpcwotLQkgKiBhIHNpZ25lZCBpbnQgYnV0IGluIGFuIEZUU0VOVCBpdCBpcyBhbiB1bnNpZ25lZCBzaG9ydC4KLS0JICogV2UgbGltaXQgZnRzX3BhdGhsZW4gdG8gVVNIUlRfTUFYIHRvIGJlIHNhZmUgaW4gYm90aCBjYXNlcy4KLS0JICovCi0tCWlmIChzcC0+ZnRzX3BhdGhsZW4gPCAwIHx8IHNwLT5mdHNfcGF0aGxlbiA+PSAweDEwMDAwKSB7Ci0tCQlpZiAoc3AtPmZ0c19wYXRoKSB7Ci0tCQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJCXNwLT5mdHNfcGF0aCA9IE5VTEw7Ci0tCQl9Ci0tCQlzcC0+ZnRzX3BhdGggPSBOVUxMOwotLQkJZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tCQlyZXR1cm4gKDEpOwotLQl9Ci0tCXAgPSByZWFsbG9jKHNwLT5mdHNfcGF0aCwgc3AtPmZ0c19wYXRobGVuKTsKLS0JaWYgKHAgPT0gTlVMTCkgewotLQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJc3AtPmZ0c19wYXRoID0gTlVMTDsKLS0JCXJldHVybiAxOwotLQl9Ci0tCXNwLT5mdHNfcGF0aCA9IHA7Ci0tCXJldHVybiAwOwotLX0KLS0KLS0vKgotLSAqIFdoZW4gdGhlIHBhdGggaXMgcmVhbGxvYydkLCBoYXZlIHRvIGZpeCBhbGwgb2YgdGhlIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMKLS0gKiBhbHJlYWR5IHJldHVybmVkLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tZnRzX3BhZGp1c3Qoc3AsIGhlYWQpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqaGVhZDsKLS17Ci0tCUZUU0VOVCAqcDsKLS0JY2hhciAqYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0KLS0jZGVmaW5lCUFESlVTVChwKSBkbyB7CQkJCQkJCVwKLS0JaWYgKChwKS0+ZnRzX2FjY3BhdGggIT0gKHApLT5mdHNfbmFtZSkgewkJCVwKLS0JCShwKS0+ZnRzX2FjY3BhdGggPQkJCQkJXAotLQkJICAgIChjaGFyICopYWRkciArICgocCktPmZ0c19hY2NwYXRoIC0gKHApLT5mdHNfcGF0aCk7CVwKLS0JfQkJCQkJCQkJXAotLQkocCktPmZ0c19wYXRoID0gYWRkcjsJCQkJCQlcCi0tfSB3aGlsZSAoMCkKLS0JLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJQURKVVNUKHApOwotLQotLQkvKiBBZGp1c3QgdGhlIHJlc3Qgb2YgdGhlIHRyZWUsIGluY2x1ZGluZyB0aGUgY3VycmVudCBsZXZlbC4gKi8KLS0JZm9yIChwID0gaGVhZDsgcC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7KSB7Ci0tCQlBREpVU1QocCk7Ci0tCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCX0KLS19Ci0tCi0tc3RhdGljIHNpemVfdAotLWZ0c19tYXhhcmdsZW4oYXJndikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLXsKLS0Jc2l6ZV90IGxlbiwgbWF4OwotLQotLQlmb3IgKG1heCA9IDA7ICphcmd2OyArK2FyZ3YpCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID4gbWF4KQotLQkJCW1heCA9IGxlbjsKLS0JcmV0dXJuIChtYXggKyAxKTsKLS19Ci0tCi0tLyoKLS0gKiBDaGFuZ2UgdG8gZGlyIHNwZWNpZmllZCBieSBmZCBvciBwLT5mdHNfYWNjcGF0aCB3aXRob3V0IGdldHRpbmcKLS0gKiB0cmlja2VkIGJ5IHNvbWVvbmUgY2hhbmdpbmcgdGhlIHdvcmxkIG91dCBmcm9tIHVuZGVybmVhdGggdXMuCi0tICogQXNzdW1lcyBwLT5mdHNfZGV2IGFuZCBwLT5mdHNfaW5vIGFyZSBmaWxsZWQgaW4uCi0tICovCi0tc3RhdGljIGludAotLWZ0c19zYWZlX2NoYW5nZWRpcihzcCwgcCwgZmQsIHBhdGgpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqcDsKLS0JaW50IGZkOwotLQljb25zdCBjaGFyICpwYXRoOwotLXsKLS0JaW50IHJldCwgb2Vycm5vLCBuZXdmZDsKLS0Jc3RydWN0IHN0YXQgc2I7Ci0tCi0tCW5ld2ZkID0gZmQ7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpCi0tCQlyZXR1cm4gKDApOwotLQlpZiAoZmQgPCAwICYmIChuZXdmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFksIDApKSA8IDApCi0tCQlyZXR1cm4gKC0xKTsKLS0JaWYgKGZzdGF0KG5ld2ZkLCAmc2IpKSB7Ci0tCQlyZXQgPSAtMTsKLS0JCWdvdG8gYmFpbDsKLS0JfQotLQlpZiAocC0+ZnRzX2RldiAhPSBzYi5zdF9kZXYgfHwgcC0+ZnRzX2lubyAhPSBzYi5zdF9pbm8pIHsKLS0JCWVycm5vID0gRU5PRU5UOwkJLyogZGlzaW5mb3JtYXRpb24gKi8KLS0JCXJldCA9IC0xOwotLQkJZ290byBiYWlsOwotLQl9Ci0tCXJldCA9IGZjaGRpcihuZXdmZCk7Ci0tYmFpbDoKLS0Jb2Vycm5vID0gZXJybm87Ci0tCWlmIChmZCA8IDApCi0tCQkodm9pZCljbG9zZShuZXdmZCk7Ci0tCWVycm5vID0gb2Vycm5vOwotLQlyZXR1cm4gKHJldCk7Ci0tfQotZGlmZiAtLWdpdCBhL2xpYi9mdHMuaCBiL2xpYi9mdHMuaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1ODg0NmI5Li4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEzMSArMCwwIEBACi0tLyoKLS0gKiBDb3B5cmlnaHQgKGMpIDE5ODksIDE5OTMKLS0gKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0gKgotLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLSAqIGFyZSBtZXQ6Ci0tICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0tICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLSAqCi0tICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0tICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLS0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLS0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0tICogU1VDSCBEQU1BR0UuCi0tICoKLS0gKglAKCMpZnRzLmgJOC4zIChCZXJrZWxleSkgOC8xNC85NAotLSAqLwotLQotLSNpZm5kZWYJX0ZUU19ICi0tI2RlZmluZQlfRlRTX0ggMQotLQotLSNpbmNsdWRlIDxmZWF0dXJlcy5oPgotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS10eXBlZGVmIHN0cnVjdCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3VyOwkvKiBjdXJyZW50IG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19jaGlsZDsJLyogbGlua2VkIGxpc3Qgb2YgY2hpbGRyZW4gKi8KLS0Jc3RydWN0IF9mdHNlbnQgKipmdHNfYXJyYXk7CS8qIHNvcnQgYXJyYXkgKi8KLS0JZGV2X3QgZnRzX2RldjsJCQkvKiBzdGFydGluZyBkZXZpY2UgIyAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiBwYXRoIGZvciB0aGlzIGRlc2NlbnQgKi8KLS0JaW50IGZ0c19yZmQ7CQkJLyogZmQgZm9yIHJvb3QgKi8KLS0JaW50IGZ0c19wYXRobGVuOwkJLyogc2l6ZW9mKHBhdGgpICovCi0tCWludCBmdHNfbml0ZW1zOwkJCS8qIGVsZW1lbnRzIGluIHRoZSBzb3J0IGFycmF5ICovCi0tCWludCAoKmZ0c19jb21wYXIpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7IC8qIGNvbXBhcmUgZm4gKi8KLS0KLS0jZGVmaW5lCUZUU19DT01GT0xMT1cJMHgwMDAxCQkvKiBmb2xsb3cgY29tbWFuZCBsaW5lIHN5bWxpbmtzICovCi0tI2RlZmluZQlGVFNfTE9HSUNBTAkweDAwMDIJCS8qIGxvZ2ljYWwgd2FsayAqLwotLSNkZWZpbmUJRlRTX05PQ0hESVIJMHgwMDA0CQkvKiBkb24ndCBjaGFuZ2UgZGlyZWN0b3JpZXMgKi8KLS0jZGVmaW5lCUZUU19OT1NUQVQJMHgwMDA4CQkvKiBkb24ndCBnZXQgc3RhdCBpbmZvICovCi0tI2RlZmluZQlGVFNfUEhZU0lDQUwJMHgwMDEwCQkvKiBwaHlzaWNhbCB3YWxrICovCi0tI2RlZmluZQlGVFNfU0VFRE9UCTB4MDAyMAkJLyogcmV0dXJuIGRvdCBhbmQgZG90LWRvdCAqLwotLSNkZWZpbmUJRlRTX1hERVYJMHgwMDQwCQkvKiBkb24ndCBjcm9zcyBkZXZpY2VzICovCi0tI2RlZmluZSBGVFNfV0hJVEVPVVQJMHgwMDgwCQkvKiByZXR1cm4gd2hpdGVvdXQgaW5mb3JtYXRpb24gKi8KLS0jZGVmaW5lCUZUU19PUFRJT05NQVNLCTB4MDBmZgkJLyogdmFsaWQgdXNlciBvcHRpb24gbWFzayAqLwotLQotLSNkZWZpbmUJRlRTX05BTUVPTkxZCTB4MDEwMAkJLyogKHByaXZhdGUpIGNoaWxkIG5hbWVzIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19TVE9QCTB4MDIwMAkJLyogKHByaXZhdGUpIHVucmVjb3ZlcmFibGUgZXJyb3IgKi8KLS0JaW50IGZ0c19vcHRpb25zOwkJLyogZnRzX29wZW4gb3B0aW9ucywgZ2xvYmFsIGZsYWdzICovCi0tfSBGVFM7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgX2Z0c2VudCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3ljbGU7CS8qIGN5Y2xlIG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19wYXJlbnQ7CS8qIHBhcmVudCBkaXJlY3RvcnkgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19saW5rOwkvKiBuZXh0IGZpbGUgaW4gZGlyZWN0b3J5ICovCi0tCWxvbmcgZnRzX251bWJlcjsJICAgICAgICAvKiBsb2NhbCBudW1lcmljIHZhbHVlICovCi0tCXZvaWQgKmZ0c19wb2ludGVyOwkgICAgICAgIC8qIGxvY2FsIGFkZHJlc3MgdmFsdWUgKi8KLS0JY2hhciAqZnRzX2FjY3BhdGg7CQkvKiBhY2Nlc3MgcGF0aCAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiByb290IHBhdGggKi8KLS0JaW50IGZ0c19lcnJubzsJCQkvKiBlcnJubyBmb3IgdGhpcyBub2RlICovCi0tCWludCBmdHNfc3ltZmQ7CQkJLyogZmQgZm9yIHN5bWxpbmsgKi8KLS0JdV9zaG9ydCBmdHNfcGF0aGxlbjsJCS8qIHN0cmxlbihmdHNfcGF0aCkgKi8KLS0JdV9zaG9ydCBmdHNfbmFtZWxlbjsJCS8qIHN0cmxlbihmdHNfbmFtZSkgKi8KLS0KLS0JaW5vX3QgZnRzX2lubzsJCQkvKiBpbm9kZSAqLwotLQlkZXZfdCBmdHNfZGV2OwkJCS8qIGRldmljZSAqLwotLQlubGlua190IGZ0c19ubGluazsJCS8qIGxpbmsgY291bnQgKi8KLS0KLS0jZGVmaW5lCUZUU19ST09UUEFSRU5UTEVWRUwJLTEKLS0jZGVmaW5lCUZUU19ST09UTEVWRUwJCSAwCi0tCXNob3J0IGZ0c19sZXZlbDsJCS8qIGRlcHRoICgtMSB0byBOKSAqLwotLQotLSNkZWZpbmUJRlRTX0QJCSAxCQkvKiBwcmVvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19EQwkJIDIJCS8qIGRpcmVjdG9yeSB0aGF0IGNhdXNlcyBjeWNsZXMgKi8KLS0jZGVmaW5lCUZUU19ERUZBVUxUCSAzCQkvKiBub25lIG9mIHRoZSBhYm92ZSAqLwotLSNkZWZpbmUJRlRTX0ROUgkJIDQJCS8qIHVucmVhZGFibGUgZGlyZWN0b3J5ICovCi0tI2RlZmluZQlGVFNfRE9UCQkgNQkJLyogZG90IG9yIGRvdC1kb3QgKi8KLS0jZGVmaW5lCUZUU19EUAkJIDYJCS8qIHBvc3RvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19FUlIJCSA3CQkvKiBlcnJvcjsgZXJybm8gaXMgc2V0ICovCi0tI2RlZmluZQlGVFNfRgkJIDgJCS8qIHJlZ3VsYXIgZmlsZSAqLwotLSNkZWZpbmUJRlRTX0lOSVQJIDkJCS8qIGluaXRpYWxpemVkIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19OUwkJMTAJCS8qIHN0YXQoMikgZmFpbGVkICovCi0tI2RlZmluZQlGVFNfTlNPSwkxMQkJLyogbm8gc3RhdCgyKSByZXF1ZXN0ZWQgKi8KLS0jZGVmaW5lCUZUU19TTAkJMTIJCS8qIHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19TTE5PTkUJMTMJCS8qIHN5bWJvbGljIGxpbmsgd2l0aG91dCB0YXJnZXQgKi8KLS0jZGVmaW5lIEZUU19XCQkxNAkJLyogd2hpdGVvdXQgb2JqZWN0ICovCi0tCXVfc2hvcnQgZnRzX2luZm87CQkvKiB1c2VyIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfRE9OVENIRElSCSAweDAxCQkvKiBkb24ndCBjaGRpciAuLiB0byB0aGUgcGFyZW50ICovCi0tI2RlZmluZQlGVFNfU1lNRk9MTE9XCSAweDAyCQkvKiBmb2xsb3dlZCBhIHN5bWxpbmsgdG8gZ2V0IGhlcmUgKi8KLS0JdV9zaG9ydCBmdHNfZmxhZ3M7CQkvKiBwcml2YXRlIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfQUdBSU4JIDEJCS8qIHJlYWQgbm9kZSBhZ2FpbiAqLwotLSNkZWZpbmUJRlRTX0ZPTExPVwkgMgkJLyogZm9sbG93IHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19OT0lOU1RSCSAzCQkvKiBubyBpbnN0cnVjdGlvbnMgKi8KLS0jZGVmaW5lCUZUU19TS0lQCSA0CQkvKiBkaXNjYXJkIG5vZGUgKi8KLS0JdV9zaG9ydCBmdHNfaW5zdHI7CQkvKiBmdHNfc2V0KCkgaW5zdHJ1Y3Rpb25zICovCi0tCi0tCXN0cnVjdCBzdGF0ICpmdHNfc3RhdHA7CQkvKiBzdGF0KDIpIGluZm9ybWF0aW9uICovCi0tCWNoYXIgZnRzX25hbWVbMV07CQkvKiBmaWxlIG5hbWUgKi8KLS19IEZUU0VOVDsKLS0KLS1fX0JFR0lOX0RFQ0xTCi0tCi0tI2RlZmluZSBmdHNfY2hpbGRyZW4gcGF4X2Z0c19jaGlsZHJlbgotLSNkZWZpbmUgZnRzX2Nsb3NlIHBheF9mdHNfY2xvc2UKLS0jZGVmaW5lIGZ0c19vcGVuIHBheF9mdHNfb3BlbgotLSNkZWZpbmUgZnRzX3JlYWQgcGF4X2Z0c19yZWFkCi0tI2RlZmluZSBmdHNfc2V0IHBheF9mdHNfc2V0Ci0tCi0tRlRTRU5UCSpmdHNfY2hpbGRyZW4gKEZUUyAqLCBpbnQpOwotLWludAkgZnRzX2Nsb3NlIChGVFMgKik7Ci0tRlRTCSpmdHNfb3BlbiAoY2hhciAqIGNvbnN0ICosIGludCwKLS0JCSAgIGludCAoKikoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopKTsKLS1GVFNFTlQJKmZ0c19yZWFkIChGVFMgKik7Ci0taW50CSBmdHNfc2V0IChGVFMgKiwgRlRTRU5UICosIGludCkgX19USFJPVzsKLS1fX0VORF9ERUNMUwotLQotLSNlbmRpZiAvKiBmdHMuaCAqLwotZGlmZiAtLWdpdCBhL2xpYi92aXMuaCBiL2xpYi92aXMuaAotaW5kZXggZDM0ZDM0Mi4uNzFmYTVmNCAxMDA2NDQKLS0tLSBhL2xpYi92aXMuaAotKysrIGIvbGliL3Zpcy5oCi1AQCAtNzMsMTQgKzczLDE5IEBACi0gICovCi0gI2RlZmluZQlVTlZJU19FTkQJMQkvKiBubyBtb3JlIGNoYXJhY3RlcnMgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0rI2lmbmRlZiBfX1AKLSsjZGVmaW5lIF9fUCh4KSB4Ci0rI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNoYXIJKnZpcyBfX1AoKGNoYXIgKiwgaW50LCBpbnQsIGludCkpOwotIGludAlzdHJ2aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KSk7Ci0gaW50CXN0cnZpc3ggX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpKTsKLSBpbnQJc3RydW52aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKikpOwotIGludAl1bnZpcyBfX1AoKGNoYXIgKiwgY2hhciwgaW50ICosIGludCkpOwotLV9fRU5EX0RFQ0xTCi0tCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZiAvKiAhX1ZJU19IXyAqLwotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggNWVmNTJhMy4uMjI3Y2RlZiAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjIsNCArMjIsNCBAQCBwYXhfU09VUkNFUyA9IGFyX2lvLmMgYXJfc3Vicy5jIGJ1Zl9zdWJzLmMgY2FjaGUuYyBjcGlvLmNcCi0gCWZpbGVfc3Vicy5jIGZ0cmVlLmMgZ2VuX3N1YnMuYyBnZXRvbGRvcHQuYyBvcHRpb25zLmNcCi0gCXBhdF9yZXAuYyBwYXguYyBzZWxfc3Vicy5jIHRhYmxlcy5jIHRhci5jIHR0eV9zdWJzLmMKLSAKLS1wYXhfTERBREQgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmJzZGZ1bmMuYQotK3BheF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliYnNkZnVuYy5hIC1sZnRzCi1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCAzNjFmYTgxLi4zZWQzNjVkIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC0zNyw4ICszNyw2IEBACi0gICogRXh0ZXJuYWwgcmVmZXJlbmNlcyBmcm9tIGVhY2ggc291cmNlIGZpbGUKLSAgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tCi0gLyoKLSAgKiBhcl9pby5jCi0gICovCi1kaWZmIC0tZ2l0IGEvc3JjL2ZpbGVfc3Vicy5jIGIvc3JjL2ZpbGVfc3Vicy5jCi1pbmRleCA1NTkwZmYxLi4xNWJjMzM5IDEwMDY0NAotLS0tIGEvc3JjL2ZpbGVfc3Vicy5jCi0rKysgYi9zcmMvZmlsZV9zdWJzLmMKLUBAIC01Miw3ICs1Miw3IEBACi0gI2luY2x1ZGUgImV4dGVybi5oIgotIAotIHN0YXRpYyBpbnQKLS1ta19saW5rIF9fUCgocmVnaXN0ZXIgY2hhciAqLHJlZ2lzdGVyIHN0cnVjdCBzdGF0ICoscmVnaXN0ZXIgY2hhciAqLCBpbnQpKTsKLStta19saW5rIChyZWdpc3RlciBjaGFyICoscmVnaXN0ZXIgc3RydWN0IHN0YXQgKixyZWdpc3RlciBjaGFyICosIGludCk7Ci0gCi0gLyoKLSAgKiByb3V0aW5lcyB0aGF0IGRlYWwgd2l0aCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhczogY3JlYXRpbmcsIHJlbW92aW5nOwotZGlmZiAtLWdpdCBhL3NyYy90YWJsZXMuYyBiL3NyYy90YWJsZXMuYwotaW5kZXggMjI3NWJmNy4uOGZkZGNhNCAxMDA2NDQKLS0tLSBhL3NyYy90YWJsZXMuYwotKysrIGIvc3JjL3RhYmxlcy5jCi1AQCAtMzksNyArMzksNyBAQAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLS0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDk2OWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gN2Y0ZjM3OWY4MzQzYzBjZTkyYWEzMGYzZjkwMzcyODhhMDg5YTkwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE4IERlYyAyMDE2IDA4OjI0OjU2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb25zCi0KLWdsaWJjIDIuMjUgd2lsbCBlcnJvciBvdXQgaWYgdGhlIGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0aW5nCi10aGlzIHRvIGNvbWUgZnJvbSBzeXMvdHlwZXMuaCwgaXQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tCi10aGVyZS4KLQotRml4ZXMKLQotZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWlub3IiIGlzIGRlZmluZWQKLXwgIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LiBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcwotfCAgY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotfCAgcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtaW5vciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLXwgIGRpcmVjdGx5LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8KLXwgICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotfCAgICAgICAgdWxfb2N0ICgodV9sb25nKSBNSU5PUiAoYXJjbi0+c2Iuc3RfcmRldiksIGhkLT5kZXZtaW5vciwKLXwgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2NwaW8uYyAgICAgfCAyICstCi0gc3JjL2dlbl9zdWJzLmMgfCAyICstCi0gc3JjL3Rhci5jICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBwYXgtMy40L3NyYy9jcGlvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL2NwaW8uYwotKysrIHBheC0zLjQvc3JjL2NwaW8uYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1JbmRleDogcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvZ2VuX3N1YnMuYwotKysrIHBheC0zLjQvc3JjL2dlbl9zdWJzLmMKLUBAIC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotSW5kZXg6IHBheC0zLjQvc3JjL3Rhci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy90YXIuYwotKysrIHBheC0zLjQvc3JjL3Rhci5jCi1AQCAtMzcsNiArMzcsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWM5Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGIxZjUwMzIwMzMyYzljOTBmYTMzYWIxMzZlZjBlYzJkMTJjZGE0NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEphbiAyMDE2IDEyOjMwOjUyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBzdHJ0b2xsIGluc3RlYWQgb2Ygc3RydG9xCi0KLVVzZSBMTE9OR19NQVggaW5zdGVhZCBvZiBMT05HX0xPTkdfTUFYCi1MT05HX0xPTkdfTUFYIGlzIEdOVSBzcGVjaWZpYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9vcHRpb25zLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGRhOGI0Y2YuLmM2NjNiNGUgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtMTU0Nyw4ICsxNTQ3LDggQEAgc3RyX29mZnQgKGNoYXIgKnZhbCkKLSAKLSAjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSAgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotLSAgbnVtID0gc3RydG9xICh2YWwsICZleHByLCAwKTsKLS0gIGlmICgobnVtID09IExPTkdfTE9OR19NQVgpIHx8IChudW0gPD0gMCkgfHwgKGV4cHIgPT0gdmFsKSkKLSsgIG51bSA9IHN0cnRvbGwgKHZhbCwgJmV4cHIsIDApOwotKyAgaWYgKChudW0gPT0gTExPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCi0gI2Vsc2UKLSAgIG51bSA9IHN0cnRvbCAodmFsLCAmZXhwciwgMCk7Ci0gICBpZiAoKG51bSA9PSBMT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg3NzljMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBjb21waWxlciBlcnJvciB3aXRoIGdjYyA0LjYuMAotCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA1LzA4Ci0KLXwgZnRzLmM6IEluIGZ1bmN0aW9uICdwYXhfZnRzX3NldCc6Ci18IGZ0cy5jOjQ2OTo3OiBlcnJvcjogcGFyYW1ldGVyICdzcCcgc2V0IGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtYnV0LXNldC1wYXJhbWV0ZXJdCi18IGNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi18IAotfCBtYWtlWzJdOiAqKiogW2Z0cy5vXSBFcnJvciAxCi0KLUluZGV4OiBwYXgtMy40L2xpYi9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9saWIvZnRzLmMKLSsrKyBwYXgtMy40L2xpYi9mdHMuYwotQEAgLTQ2Niw3ICs0NjYsNyBAQCBuYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzCi0gLyogQVJHU1VTRUQgKi8KLSBpbnQKLSBmdHNfc2V0KHNwLCBwLCBpbnN0cikKLS0JRlRTICpzcDsKLSsJRlRTIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSAqc3A7Ci0gCUZUU0VOVCAqcDsKLSAJaW50IGluc3RyOwotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZGJkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgVHVlIERlYyA2IDEwOjM0OjUzIDIwMTEgLTA4MDAKLQotICAgIEZpeCBwYXgtMy40IGJ1aWxkIGZvciB4MzIKLSAgICAKLSAgICBvZmZfdCBpcyA4Ynl0ZSBmb3IgeDMyLiAgV2UgbmVlZCB0byBjaGVjayBib3RoIF9GSUxFX09GRlNFVF9CSVRTIGFuZAotICAgIHNpemUgb2Ygb2ZmX3QgdG8gc2VlIGlmIGZpbGUgb2Zmc2V0IGlzIDY0Yml0LiAgVGhpcyBwYXRjaCBhZGRzCi0gICAgQUNfQ0hFQ0tfU0laRU9GKG9mZl90KSBhbmQgY2hlY2tzIFNJWkVPRl9PRkZfVCA9PSA4LgotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA2Ci0KLUluZGV4OiBwYXgtMy40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBwYXgtMy40L2NvbmZpZ3VyZS5pbgotQEAgLTMzLDQgKzMzLDcgQEAgZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLSAKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0rQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0rCi0gQUNfT1VUUFVUKFtNYWtlZmlsZSBsaWIvTWFrZWZpbGUgc3JjL01ha2VmaWxlXSkKLUluZGV4OiBwYXgtMy40L3NyYy9hcl9pby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9hcl9pby5jCi0rKysgcGF4LTMuNC9zcmMvYXJfaW8uYwotQEAgLTM3OCw3ICszNzgsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkgKiBjb3VsZCBoYXZlIHdyaXR0ZW4gYW55dGhpbmcgeWV0LgotIAkgKi8KLSAJaWYgKGZybXQgPT0gTlVMTCkgewotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gCQkodm9pZClmcHJpbnRmKGxpc3RmLCAiJXM6IHVua25vd24gZm9ybWF0LCAlcXUgYnl0ZXMgc2tpcHBlZC5cbiIsCi0gI2Vsc2UKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsICIlczogdW5rbm93biBmb3JtYXQsICVsdSBieXRlcyBza2lwcGVkLlxuIiwKLUBAIC0zOTEsNyArMzkyLDggQEAgYXJfY2xvc2Uodm9pZCkKLSAKLSAJaWYgKHN0cmNtcChOTV9DUElPLCBhcmd2MCkgPT0gMCkKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsCi0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCSAgICAiJXF1IGJsb2Nrc1xuIiwKLSAjZWxzZQotIAkJICAgICIlbHUgYmxvY2tzXG4iLAotQEAgLTM5OSw3ICs0MDEsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkJCShyZGNudCA/IHJkY250IDogd3JjbnQpIC8gNTEyMCk7Ci0gCWVsc2UgaWYgKHN0cmNtcChOTV9UQVIsIGFyZ3YwKSAhPSAwKQotIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIAkJICAgICIlczogJXMgdm9sICVkLCAlbHUgZmlsZXMsICVxdSBieXRlcyByZWFkLCAlcXUgYnl0ZXMgd3JpdHRlbi5cbiIsCi0gI2Vsc2UKLSAJCSAgICAiJXM6ICVzIHZvbCAlZCwgJWx1IGZpbGVzLCAlbHUgYnl0ZXMgcmVhZCwgJWx1IGJ5dGVzIHdyaXR0ZW4uXG4iLAotSW5kZXg6IHBheC0zLjQvc3JjL2NwaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvY3Bpby5jCi0rKysgcGF4LTMuNC9zcmMvY3Bpby5jCi1AQCAtMjE4LDcgKzIxOCw4IEBAIHJkX2xuX25tIChBUkNIRCAqYXJjbikKLSAJICovCi0gCWlmICgoYXJjbi0+c2Iuc3Rfc2l6ZSA9PSAwKSB8fAotIAkgICAgKGFyY24tPnNiLnN0X3NpemUgPj0gKG9mZl90KSBzaXplb2YoYXJjbi0+bG5fbmFtZSkpKSB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCXBheHdhcm4gKDEsICJDcGlvIGxpbmsgbmFtZSBsZW5ndGggaXMgaW52YWxpZDogJXF1IiwKLSAJCQkgYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0gI2Vsc2UKLUluZGV4OiBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9nZW5fc3Vicy5jCi0rKysgcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotQEAgLTEzMyw3ICsxMzMsOCBAQCBsc19saXN0IChBUkNIRCAqYXJjbiwgdGltZV90IG5vdywgRklMRSAqCi0gICAgKiBwcmludCBkZXZpY2UgaWQncyBmb3IgZGV2aWNlcywgb3Igc2l6ZXMgZm9yIG90aGVyIG5vZGVzCi0gICAgKi8KLSAgIGlmICgoYXJjbi0+dHlwZSA9PSBQQVhfQ0hSKSB8fCAoYXJjbi0+dHlwZSA9PSBQQVhfQkxLKSkKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlNGx1LCU0bHUgIiwgKHVuc2lnbmVkIGxvbmcpIE1BSk9SIChzYnAtPnN0X3JkZXYpLAotIAkJICAgICh1bnNpZ25lZCBsb25nKSBNSU5PUiAoc2JwLT5zdF9yZGV2KSk7Ci0gI2Vsc2UKLUBAIC0xNDIsNyArMTQzLDggQEAgbHNfbGlzdCAoQVJDSEQgKmFyY24sIHRpbWVfdCBub3csIEZJTEUgKgotICNlbmRpZgotICAgZWxzZQotICAgICB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOXF1ICIsIHNicC0+c3Rfc2l6ZSk7Ci0gI2Vsc2UKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOWx1ICIsIHNicC0+c3Rfc2l6ZSk7Ci1AQCAtMzM0LDcgKzMzNiw4IEBAIHVsX2FzYyAodV9sb25nIHZhbCwgY2hhciAqc3RyLCBpbnQgbGVuLCAKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gLyoKLSAgKiBhc2NfdXFkKCkKLSAgKgljb252ZXJ0IGhleC9vY3RhbCBjaGFyYWN0ZXIgc3RyaW5nIGludG8gYSB1X3F1YWRfdC4gV2UgZG8gbm90IGhhdmUgdG8KLUluZGV4OiBwYXgtMy40L3NyYy9vcHRpb25zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL29wdGlvbnMuYwotKysrIHBheC0zLjQvc3JjL29wdGlvbnMuYwotQEAgLTE1NDUsNyArMTU0NSw4IEBAIHN0cl9vZmZ0IChjaGFyICp2YWwpCi0gICBjaGFyICpleHByOwotICAgb2ZmX3QgbnVtLCB0OwotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBudW0gPSBzdHJ0b3EgKHZhbCwgJmV4cHIsIDApOwotICAgaWYgKChudW0gPT0gTE9OR19MT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotICNlbHNlCi1JbmRleDogcGF4LTMuNC9zcmMvdGFyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL3Rhci5jCi0rKysgcGF4LTMuNC9zcmMvdGFyLmMKLUBAIC01OCw3ICs1OCw4IEBACi0gc3RhdGljIHVuc2lnbmVkIGxvbmcgdGFyX2Noa3NtIChjaGFyICosIGludCk7Ci0gc3RhdGljIGNoYXIgKm5hbWVfc3BsaXQgKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgaW50IHVsX29jdCAodV9sb25nLCBjaGFyICosIGludCwgaW50KTsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIHN0YXRpYyBpbnQgdXFkX29jdCAodV9xdWFkX3QsIGNoYXIgKiwgaW50LCBpbnQpOwotICNlbmRpZgotIAotQEAgLTE5Niw3ICsxOTcsOCBAQCB1bF9vY3QgKHVfbG9uZyB2YWwsIHJlZ2lzdGVyIGNoYXIgKnN0ciwgCi0gICByZXR1cm4gKDApOwotIH0KLSAKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIC8qCi0gICogdXFkX29jdCgpCi0gICoJY29udmVydCBhbiB1X3F1YWRfdCB0byBhbiBvY3RhbCBzdHJpbmcuIG9uZSBvZiBtYW55IG9kZGJhbGwgZmllbGQKLUBAIC00MjcsNyArNDI5LDggQEAgdGFyX3JkIChBUkNIRCAqYXJjbiwgY2hhciAqYnVmKQotIAkJCSAgICAgICAweGZmZik7Ci0gICBhcmNuLT5zYi5zdF91aWQgPSAodWlkX3QpIGFzY191bCAoaGQtPnVpZCwgc2l6ZW9mIChoZC0+dWlkKSwgT0NUKTsKLSAgIGFyY24tPnNiLnN0X2dpZCA9IChnaWRfdCkgYXNjX3VsIChoZC0+Z2lkLCBzaXplb2YgKGhkLT5naWQpLCBPQ1QpOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBhcmNuLT5zYi5zdF9zaXplID0gKG9mZl90KSBhc2NfdXFkIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci0gI2Vsc2UKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191bCAoaGQtPnNpemUsIHNpemVvZiAoaGQtPnNpemUpLCBPQ1QpOwotQEAgLTY1OSw3ICs2NjIsOCBAQCB0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICAgKiBkYXRhIGZvbGxvd3MgdGhpcyBmaWxlLCBzbyBzZXQgdGhlIHBhZAotICAgICAgICAqLwotICAgICAgIGhkLT5saW5rZmxhZyA9IEFSRUdUWVBFOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICAgICAgaWYgKHVxZF9vY3QgKCh1X3F1YWRfdCkgYXJjbi0+c2Iuc3Rfc2l6ZSwgaGQtPnNpemUsCi0gCQkgICBzaXplb2YgKGhkLT5zaXplKSwgMSkpCi0gI2Vsc2UKLUBAIC04MzQsNyArODM4LDggQEAgdXN0YXJfcmQgKEFSQ0hEICphcmNuLCBjaGFyICpidWYpCi0gICAgKi8KLSAgIGFyY24tPnNiLnN0X21vZGUgPSAobW9kZV90KSAoYXNjX3VsIChoZC0+bW9kZSwgc2l6ZW9mIChoZC0+bW9kZSksIE9DVCkgJgotIAkJCSAgICAgICAweGZmZik7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191cWQgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKLSAjZWxzZQotICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VsIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci1AQCAtMTA4MSw3ICsxMDg2LDggQEAgdXN0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICBlbHNlCi0gCWhkLT50eXBlZmxhZyA9IFJFR1RZUEU7Ci0gICAgICAgYXJjbi0+cGFkID0gVEFSX1BBRCAoYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICBpZiAodXFkX29jdCAoKHVfcXVhZF90KSBhcmNuLT5zYi5zdF9zaXplLCBoZC0+c2l6ZSwKLSAJCSAgIHNpemVvZiAoaGQtPnNpemUpLCAzKSkKLSAJewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZjlhODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSIKLURFU0NSSVBUSU9OID0gInBheCAoUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSkgaXMgdGhlIFBPU0lYIHN0YW5kYXJkIGFyY2hpdmUgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL2Jpbi9wYXgvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5ic2Qub3JnL3F1ZXJ5LXByLmh0bWwiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGIwYjY3NGRmZGM1NmRhYTM4MzJkNDA2OWI4MjBlYTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BheC5oO2VuZGxpbmU9NDA7bWQ1PTMwOWQzZTI0MWMxZDgyMDY5MjI4ZTVhNTFlOWI4ZDYwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jcGlvLmg7ZW5kbGluZT00MDttZDU9YzNiNGJiZmY2MTMzYTgzMzg3OTY4NjE3YmJhZThhYzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3Zpcy5oO2VuZGxpbmU9NDA7bWQ1PWIyODNmNzU5YWJkNGE1YWQ3ZTAxNGI4MGY1MWZjMDUzIgotCi1TRUNUSU9OID0gImJhc2UiCi1QUiA9ICJyMiIKLQotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmJ6Mi9mYmQ5MDIzYjU5MGI0NWFjM2FkZTk1ODcwNzAyYTBkNi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjM2MwNjA0OGUwMjgyODA3N2NmNzc1N2QzZDE0MjI0MTQyOTIzODg5M2I5MWQ1MjlhZjI5YTJlOGNjNTYyM2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliY29udmVydC1hc24xLXBlcmxfMC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCmluZGV4IDE3MGU3ZWMuLjY0NGQ4MjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9Db252ZXJ0LUFTTjEtJHtQVn0iCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgppbmRleCA0Mjc2MTNjLi44ZTE0NjFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKQEAgLTksNyArOSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9UaW1lRGF0ZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKaW5kZXggMzQ5OGEyOC4uZmE5Zjk5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCkBAIC02LDE4ICs2LDIyIEBACiAKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1QUiA9ICJyMyIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTIyO2VuZGxpbmU9MjI7bWQ1PTljYTFhNGE5NDE0OTZlN2ZlZWRhYzcyYzRmYjhiMTM3IgorU1JDTkFNRSA9ICJYTUwtTmFtZXNwYWNlU3VwcG9ydCIKIAotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9LnRhci5neiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM5ZDhhMTE3ZTc2MjBiNWFkZjhkNjljMjk2MTNjZWFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhODkxNmM2ZDA5NWJjZjA3M2UxMTA4YWYwMmU3OGM5NyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2U5OTU4NTlmOGRkMDQxM2FhM2YyMmQzNTBjNGE2MmRhNjUyZTg1NDI2N2FhMDU4NmFlNTQ0YWUyYmFlNWVmIgogCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJYTUxcLU5hbWVzcGFjZVN1cHBvcnRcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgogCi1TID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtdGVzdC1tb3JlIgogCiBCQkNMQVNTRVhURU5EPSJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKaW5kZXggY2QzYTU4MC4uYjNlMDFlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKQEAgLTE5LDYgKzE5LDYgQEAKIAogUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgppbmRleCBhZDMxYjljLi5jZGNiZWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCkBAIC0yMyw2ICsyMywxMSBAQAogCiBTID0gIiR7V09SS0RJUn0vWE1MLVNBWC0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7Qn0vdGVzdGZpbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RmaWxlcworfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4ZjkwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnei5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKLURFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCi1mdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAotbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAotQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgotCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgKz0gImd6aXAtbmF0aXZlIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBJbnN0YWxsIGZpbGVzIGludG8gL2JpbiAoRkhTKSwgd2hpY2ggaXMgdHlwaWNhbCBwbGFjZSBmb3IgZ3ppcAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaW5zdGFsbCAke0J9L3BpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3BpZ3oKLQlsbiAtbnNmIHBpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3VucGlnegotCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnemNhdAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgJHtCfS9waWd6ICR7RH0ke2JpbmRpcn0vZ3ppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L2d1bnppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L3pjYXQKLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJndW56aXAgZ3ppcCB6Y2F0IgotQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtndW56aXBdID0gIiR7YmFzZV9iaW5kaXJ9L2d1bnppcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnemlwXSA9ICIke2Jhc2VfYmluZGlyfS9nemlwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3pjYXRdID0gIiR7YmFzZV9iaW5kaXJ9L3pjYXQiCi1BTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtiYXNlX2JpbmRpcn0vcGlneiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ODMyZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHBpZ3ouaW5jCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waWd6LmM7YmVnaW5saW5lPTc7ZW5kbGluZT0yMTttZDU9YTIxZDQwNzVjYjAwYWI0Y2ExN2ZjZTVlNzUzNGNhOTUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vemxpYi5uZXQvJHtCUE59LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBpZ3otKD9QPHB2ZXI+LiopXC50YXIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYWRsZXIvcGlnei9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzEwOTA1NzA1MGIxNWVkZjNlYjliYjRkMDgwNTIzNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzYzZjJmZGIyMDNhYTBiN2I2NDBlNjMzODVlMzhlNWRkNGU1YWFhMDQxYmM4ZTQyYWE5NmYyZWYxNTZiMDZlOCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2ZGE5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuNC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKK0RFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCitmdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAorbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAorQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCitIT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGlnei5jO21kNT05YWU2ZGVlOGNlYmE5NjEwNTk2ZWQwYWRhNDkzZDE0MjtiZWdpbmxpbmU9NztlbmRsaW5lPTIxIgorCitTUkNfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vZm9zc2lscy8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZGVmMmY2ZTE5ZDlkODIzMTQ0NWFkYzEzNDlkMzQ2ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTRmODE2MjIyYTdiNDI2OWJkMjMyNjgwNTkwYjU3OWNjYzcyNTkxZjFiYjVhZGFmY2Q3MjA4Y2E3N2UxNGY3MyIKKyMgUG9pbnQgdGhpcyBhdCB0aGUgaG9tZXBhZ2UgaW4gY2FzZSAvZm9zc2lscy8gaXNuJ3QgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGlnei0oP1A8cHZlcj4uKilcLnRhciIKKworREVQRU5EUyA9ICJ6bGliIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9faW5zdGFsbCgpIHsKKwkjIEluc3RhbGwgZmlsZXMgaW50byAvYmluIChGSFMpLCB3aGljaCBpcyB0eXBpY2FsIHBsYWNlIGZvciBnemlwCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlpbnN0YWxsICR7Qn0vcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnegorCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vdW5waWd6CisJbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6Y2F0Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCmluZGV4IGFkYWJkNzUuLmVjZjIxNWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgogREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAogdGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdG9yaW91cy5vcmcvcHJvY3BzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXApAQCAtMjMsOCArMjMsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCiAKLUNQUEZMQUdTICs9ICItSSR7U30iCi0KIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQogCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQpAQCAtNDQsNyArNDIsNyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKIAotYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUiCitiaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSB3IgogYmFzZV9iaW5kaXJfcHJvZ3MgKz0gImtpbGwgcGlkb2YgcHMgd2F0Y2giCiBiYXNlX3NiaW5kaXJfcHJvZ3MgKz0gInN5c2N0bCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdkNjBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDEtVHlwby1pbi1mdXNlci1tYWtlcy1NLW9uLWFsbC10aGUtdGltZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMzYzOGNjNTViNGQwODg1MWZhYmE0NjYzNWQ3MzdiMjRkMDE2NjY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJyYWQgSm9yc2NoIDxhbm9taWVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogRnJpLCAyOCBGZWIgMjAxNCAyMTo1NTowMiArMTEwMAotU3ViamVjdDogW1BBVENIXSBUeXBvIGluIGZ1c2VyIG1ha2VzIC1NIG9uIGFsbCB0aGUgdGltZQotCi1CcmFkIGZvdW5kIHRoYXQgZnVzZXIgaGFkIHRoZSAtTSBvcHRpb24gb24gYWxsIHRoZSB0aW1lLgotQSBzaW1wbGUgYnV0IHNpZ25pZmljYW50IHR5cG8gY2F1c2VkIHRoaXMsIHRoYW5rcyB0aGUgdGhlIHBhdGNoLgotCi1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc0MDI3NQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENyYWlnIFNtYWxsIDxjc21hbGxAZW5jLmNvbS5hdT4KLS0tLQotIENoYW5nZUxvZyAgIHwgNCArKysrCi0gc3JjL2Z1c2VyLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZmQxY2NjZi4uZTVmNzg0YyAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDcgQEAKLStDaGFuZ2VzIGluIDIyLjIyCi0rPT09PT09PT09PT09PT09PQotKwkqIEZpeGVkIHR5cG8gaW4gZnVzZXIgd2hpY2ggaGFzIC1NIG9uIERlYmlhbiAjNzQwMjc1Ci0rCi0gQ2hhbmdlcyBpbiAyMi4yMQotID09PT09PT09PT09PT09PT0KLSAJKiBNaXNzaW5nIGNvbW1hIGluIGZ1c2VyKDEpIGFkZGVkIERlYmlhbiAjNzAyMzkxCi1kaWZmIC0tZ2l0IGEvc3JjL2Z1c2VyLmMgYi9zcmMvZnVzZXIuYwotaW5kZXggYjQ4NWY2NS4uMzg5YjMwMiAxMDA2NDQKLS0tLSBhL3NyYy9mdXNlci5jCi0rKysgYi9zcmMvZnVzZXIuYwotQEAgLTExNzQsNyArMTE3NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQl1c2FnZShfKCJObyBwcm9jZXNzIHNwZWNpZmljYXRpb24gZ2l2ZW4iKSk7Ci0gCi0gCS8qIENoZWNrIGlmIC1NIGZsYWcgd2FzIHVzZWQgYW5kIGlmIHNvIGNoZWNrIG1vdW50cyAqLwotLQlpZiAob3B0cyAqIE9QVF9JU01PVU5UUE9JTlQpIHsKLSsJaWYgKG9wdHMgJiBPUFRfSVNNT1VOVFBPSU5UKSB7Ci0gCSAgICBjaGVja19tb3VudHBvaW50cygmbW91bnRzLCAmbmFtZXNfaGVhZCwgJm5hbWVzX3RhaWwpOwotIAl9Ci0gCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YWZjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gYWE2NmFmZWNkOGJhOWNjNDEzOWYyNWFiMTVlYzMxNTE3MzQxM2E3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+Ci1EYXRlOiBXZWQsIDIwIEF1ZyAyMDE0IDEwOjMxOjM3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgPGxpbWl0cy5oPiBmb3IgUEFUSF9NQVgKLQotV2hlbiBidWlsZGluZyBhZ2FpbnN0IG11c2wgbGliYywgUEFUSF9NQVggaXMgZGVmaW5lZCBpbiA8bGltaXRzLmg+LgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGF1bEBwYXVsYmFya2VyLm1lLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIChTaG91bGQgYmUgaW4gbmV4dCByZWxlYXNlIGFmdGVyIDIyLjIxKQotLS0tCi0gc3JjL3BzdHJlZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvcHN0cmVlLmMgYi9zcmMvcHN0cmVlLmMKLWluZGV4IDA3MWU2YzQuLjBkMjgyNjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHN0cmVlLmMKLSsrKyBiL3NyYy9wc3RyZWUuYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAiaTE4bi5oIgotICNpbmNsdWRlICJjb21tLmgiCi0tLSAKLTIuMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCmluZGV4IDY2YTc4NGIuLjgyZWY5NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtMTYsNiArMTYsMTUgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkgCisjIGRvbid0IHNoaXAgYSBwby9QT1RGSUxFUy5pbiAod2hpY2ggaXMgc2lsbHkpLiAgV2l0aG91dCB0aGF0IGZpbGUgZ2V0dGV4dCAKKyMgZG9lc24ndCBiZWxpZXZlIHBvLyBpcyBhIGdldHRleHQgZGlyZWN0b3J5IGFuZCB3b24ndCBnZW5lcmF0ZSBwby9NYWtlZmlsZS4KK0VYVFJBX0FVVE9SRUNPTkZfcmVtb3ZlID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDQ0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMjg1ODc3Yjc3NjFkNzQ3MzZhY2EyNjg3ZWQ5YmVmMmY3OGI4MmMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQorIHRoZXJlCisKK090aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5ZjYxYWI0Li5iNGNlZDdmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNzksNyArNzksNyBAQCBFWFRSQV9ESVNUID0gc3JjL3NpZ25hbWVzLmMgUkVBRE1FLm1kCisgQ0xFQU5GSUxFUyA9IHNyYy9zaWduYW1lcy5oCisgCisgc3JjL3NpZ25hbWVzLmg6IHNyYy9zaWduYW1lcy5jIE1ha2VmaWxlCistCQlleHBvcnQgTENfQUxMPUMgOyBcCisrCQlleHBvcnQgTENfQUxMPUMgOyBta2RpciAtcCBzcmMgOyBcCisgCQlAQ1BQQCAtZE0gJDwgfFwKKyAJCXRyIC1zICdcdCAnICcgJyB8IHNvcnQgLW4gLWsgMyB8IHNlZCBcCisgCSdzOiNkZWZpbmUgU0lHXChbQS1aXVtBLVpdKlswLTldKlwpIFwoWzAtOV1bMC05XSpcKS4qJFw6e1wgXDIsIlwxIiB9LDpwO2QnIHwgXAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzY0NzNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcHNtaXNjLmluYwotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTM1YzBmZDZlYjIwODI4ODI2MmIzODVmYTY1NmYxYmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTczMjNjYWQ2MTkyMTA4NDViNjk2ZDdkNzIyYzM4Mzg1MmIyYWNiNWM0OWI1YjA4NTJjNGYyOWM3N2E4MTQ1YSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHNtaXNjL3BzbWlzYy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBwc21pc2MuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wc21pc2MvcHNtaXNjLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2jCoFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjY3YjFkYTI2OGY0YzBjZTY4NTk5ODBlM2RmY2ZhZWM1YjI0NDhlODAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkZDQ3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNzc2NzU3YTIzZTk5MzA1ODg5NTBjN2ZjYmM3ODI3ZWM3YTNlNTFjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Ub209QzM9QTE9QzU9QTE9MjBDaHY9QzM9QTF0YWw/PSA8dGNodmF0YWxAc3VzZS5jb20+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6NDg6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGFjY2lkZW50YWx5IG92ZXJyaWRlIGNvbW1hbmRsaW5lIHBhc3NlZCBDRkxBR1MuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVG9tw6HFoSBDaHbDoXRhbCA8dGNodmF0YWxAc3VzZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDNiYTEzODYuLjE1NTJjMTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUzLDcgKzUzLDcgQEAgQVNfSUYoW3Rlc3QgIngke3ByZWZpeH0iID0gInhOT05FIl0sIFsKLSAjID09PT09PT09PT09PT09PT0KLSAjIENoZWNrIGZvciBjZmxhZ3MKLSAjID09PT09PT09PT09PT09PT0KLS1DRkxBR1M9Ii1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0rQ0ZMQUdTPSIkQ0ZMQUdTIC1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0gQUNfQVJHX0VOQUJMRShbd2Vycm9yXSwKLSAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS13ZXJyb3JdLCBbVHJlYXQgYWxsIHdhcm5pbmdzIGFzIGVycm9ycywgdXNlZnVsIGZvciBkZXZlbG9wbWVudF0pXSwKLSAgICAgW2VuYWJsZV93ZXJyb3I9IiRlbmFibGV2YWwiXSwKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLUZpeC1idWlsZC13aXRoLWRpc2FibGVkLWxkYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc5ZTQ3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLUZyb20gMzlmZDMwY2U1N2UzYzM0YzM2NDk4NjZiZjkzNDVhNzFmMGI3ODY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6MTA6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggZGlzYWJsZWQgbGRhcAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBUb21hcyBDaHZhdGFsIDx0Y2h2YXRhbEBzdXNlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHdhcm5xdW90YS5jIHwgMzYgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvd2FybnF1b3RhLmMgYi93YXJucXVvdGEuYwotaW5kZXggMzczNGYwZS4uZTk4NjhjMSAxMDA2NDQKLS0tLSBhL3dhcm5xdW90YS5jCi0rKysgYi93YXJucXVvdGEuYwotQEAgLTEwOSwxMyArMTA5LDEzIEBAIHN0cnVjdCBjb25maWdwYXJhbXMgewotIAljaGFyICp1c2VyX3NpZ25hdHVyZTsKLSAJY2hhciAqZ3JvdXBfbWVzc2FnZTsKLSAJY2hhciAqZ3JvdXBfc2lnbmF0dXJlOwotKwl0aW1lX3QgY2NfYmVmb3JlOwotKyNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAlpbnQgdXNlX2xkYXBfbWFpbDsgLyogMCAqLwotKwlpbnQgbGRhcF9pc19zZXR1cDsgLyogMCAqLwotIAlpbnQgbGRhcF9zdGFydHRsczsgLyogMCAqLwotIAlpbnQgbGRhcF90bHM7IC8qIExEQVBfT1BUX1hfVExTX05FVkVSICovCi0gCWludCBsZGFwX3ZlcnM7IC8qIExEQVBfVkVSU0lPTjMgKi8KLS0JdGltZV90IGNjX2JlZm9yZTsKLS0jaWZkZWYgVVNFX0xEQVBfTUFJTF9MT09LVVAKLS0JaW50IGxkYXBfaXNfc2V0dXA7IC8qIDAgKi8KLSAJY2hhciBsZGFwX2hvc3RbQ05GX0JVRkZFUl07Ci0gCWludCBsZGFwX3BvcnQ7Ci0gCWNoYXIgbGRhcF91cmlbQ05GX0JVRkZFUl07Ci1AQCAtNzI5LDEzICs3MjksMTMgQEAgc3RhdGljIGludCByZWFkY29uZmlnZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGNvbmZpZ3BhcmFtcyAqY29uZmlnKQotIAl9Ci0gCW1haWxkZXZbMF0gPSAwOwotIAljb25maWctPnVzZXJfc2lnbmF0dXJlID0gY29uZmlnLT51c2VyX21lc3NhZ2UgPSBjb25maWctPmdyb3VwX3NpZ25hdHVyZSA9IGNvbmZpZy0+Z3JvdXBfbWVzc2FnZSA9IE5VTEw7Ci0rCWNvbmZpZy0+Y2NfYmVmb3JlID0gLTE7Ci0rCi0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCWNvbmZpZy0+dXNlX2xkYXBfbWFpbCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9zdGFydHRscyA9IDA7Ci0gCWNvbmZpZy0+bGRhcF90bHMgPSBMREFQX09QVF9YX1RMU19ORVZFUjsKLSAJY29uZmlnLT5sZGFwX3ZlcnMgPSBMREFQX1ZFUlNJT04zOwotLQljb25maWctPmNjX2JlZm9yZSA9IC0xOwotLQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAljb25maWctPmxkYXBfcG9ydCA9IGNvbmZpZy0+bGRhcF9pc19zZXR1cCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9ob3N0WzBdID0gMDsKLSAJY29uZmlnLT5sZGFwX3VyaVswXSA9IDA7Ci1AQCAtODIwLDYgKzgyMCwxOCBAQCBzdGF0aWMgaW50IHJlYWRjb25maWdmaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgY29uZmlncGFyYW1zICpjb25maWcpCi0gCQkJCWNyZWF0ZV9lb2xuKGNvbmZpZy0+Z3JvdXBfc2lnbmF0dXJlKTsKLSAJCQkJdmVyaWZ5X2Zvcm1hdChjb25maWctPmdyb3VwX3NpZ25hdHVyZSwgIkdST1VQX1NJR05BVFVSRSIpOwotIAkJCX0KLSsJCQllbHNlIGlmICghc3RyY21wKHZhciwgIkNDX0JFRk9SRSIpKSB7Ci0rCQkJCWludCBudW07Ci0rCQkJCWNoYXIgdW5pdFsxMF07Ci0rCi0rCQkJCWlmIChzc2NhbmYodmFsdWUsICIlZCVzIiwgJm51bSwgdW5pdCkgIT0gMikKLSsJCQkJCWdvdG8gY2NfcGFyc2VfZXJyOwotKwkJCQlpZiAoc3RyMnRpbWV1bml0cyhudW0sIHVuaXQsICZjb25maWctPmNjX2JlZm9yZSkgPCAwKSB7Ci0rY2NfcGFyc2VfZXJyOgotKwkJCQkJZGllKDEsIF8oIkNhbm5vdCBwYXJzZSB0aW1lIGF0IENDX0JFRk9SRSB2YXJpYWJsZSAobGluZSAlZCkuXG4iKSwgbGluZSk7Ci0rCQkJCX0KLSsJCQl9Ci0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX01BSUwiKSkgewotIAkJCQlpZihzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpID09IDApIAotIAkJCQkJY29uZmlnLT51c2VfbGRhcF9tYWlsID0gMTsKLUBAIC04NDYsMTggKzg1OCw2IEBAIHN0YXRpYyBpbnQgcmVhZGNvbmZpZ2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBjb25maWdwYXJhbXMgKmNvbmZpZykKLSAJCQkJZWxzZQotIAkJCQkJY29uZmlnLT5sZGFwX3N0YXJ0dGxzID0gMDsKLSAJCQl9Ci0tCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJDQ19CRUZPUkUiKSkgewotLQkJCQlpbnQgbnVtOwotLQkJCQljaGFyIHVuaXRbMTBdOwotLQotLQkJCQlpZiAoc3NjYW5mKHZhbHVlLCAiJWQlcyIsICZudW0sIHVuaXQpICE9IDIpCi0tCQkJCQlnb3RvIGNjX3BhcnNlX2VycjsKLS0JCQkJaWYgKHN0cjJ0aW1ldW5pdHMobnVtLCB1bml0LCAmY29uZmlnLT5jY19iZWZvcmUpIDwgMCkgewotLWNjX3BhcnNlX2VycjoKLS0JCQkJCWRpZSgxLCBfKCJDYW5ub3QgcGFyc2UgdGltZSBhdCBDQ19CRUZPUkUgdmFyaWFibGUgKGxpbmUgJWQpLlxuIiksIGxpbmUpOwotLQkJCQl9Ci0tCQkJfQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAkJCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiTERBUF9IT1NUIikpCi0gCQkJCXNzdHJuY3B5KGNvbmZpZy0+bGRhcF9ob3N0LCB2YWx1ZSwgQ05GX0JVRkZFUik7Ci0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX1BPUlQiKSkKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiMmRhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gZmVjYTZkMmU1NWQ5OTJiYmUxNzZlZThmYWE3MzRjMTA1ZWIxYjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIwOjQ4OjA1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBOR1JPVVBTX01BWCBpbnN0ZWFkIG9mIE5HUk9VUFMKLQotTkdSUk9VUFNfTUFYIGlzIHdoYXQgaXMgZGVmaW5lZCBieSBTdVN2MzsgTkdST1VQUyBpcyBub3QgZ3VhcmFudGVlZCBieQotYW55IHN0YW5kYXJkLCBidXQgaXMganVzdCBhbiBhbmNpZW50IEJTRCdpc20uICBTaW5jZSBBbmRyb2lkJ3MgYmlvbmljCi1saWJjIGhhcyB0aGUgZm9ybWVyIGJ1dCBub3QgdGhlIGxhdHRlciwgbGV0J3MgdXNlIE5HUk9VUFNfTUFYIGluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotLS0tCi0gcXVvdGEuYyAgICB8IDUgKysrLS0KLSBxdW90YW9wcy5jIHwgNSArKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcXVvdGEuYyBiL3F1b3RhLmMKLWluZGV4IDA0OWRhYzQuLmUxOTVlYWQgMTAwNjQ0Ci0tLS0gYS9xdW90YS5jCi0rKysgYi9xdW90YS5jCi1AQCAtNDgsNiArNDgsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpZmRlZiBSUEMKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC0yOTYsNyArMjk3LDcgQEAgc3RhdGljIGludCBzaG93cXVvdGFzKGludCB0eXBlLCBxaWRfdCBpZCwgaW50IG1udGNudCwgY2hhciAqKm1udCkKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gewotIAlpbnQgbmdyb3VwczsKLS0JZ2lkX3QgZ2lkc2V0W05HUk9VUFNdLCAqZ2lkc2V0cDsKLSsJZ2lkX3QgZ2lkc2V0W05HUk9VUFNfTUFYXSwgKmdpZHNldHA7Ci0gCWludCBpLCByZXQ7Ci0gCXN0cnVjdCBvcHRpb24gbG9uZ19vcHRzW10gPSB7Ci0gCQl7ICJoZWxwIiwgMCwgTlVMTCwgJ2gnIH0sCi1AQCAtNDA1LDcgKzQwNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlyZXQgfD0gc2hvd3F1b3RhcyhVU1JRVU9UQSwgZ2V0dWlkKCksIGFyZ2MsIGFyZ3YpOwotIAkJaWYgKGZsYWdzICYgRkxfR1JPVVApIHsKLSAJCQluZ3JvdXBzID0gc3lzY29uZihfU0NfTkdST1VQU19NQVgpOwotLQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCWlmIChuZ3JvdXBzID4gTkdST1VQU19NQVgpIHsKLSAJCQkJZ2lkc2V0cCA9IG1hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7Ci0gCQkJCWlmICghZ2lkc2V0cCkKLSAJCQkJCWRpZSgxLCBfKCJHaWQgc2V0IGFsbG9jYXRpb24gKCVkKTogJXNcbiIpLCBuZ3JvdXBzLCBzdHJlcnJvcihlcnJubykpOwotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCAxMzZhZWMzLi41OTBkYzFiIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUxLDYgKzUxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC05Nyw3ICs5OCw3IEBAIHN0cnVjdCBkcXVvdCAqZ2V0cHJpdnMocWlkX3QgaWQsIHN0cnVjdCBxdW90YV9oYW5kbGUgKipoYW5kbGVzLCBpbnQgcXVpZXQpCi0gI2lmIGRlZmluZWQoQlNEX0JFSEFWSU9VUikKLSAJaW50IGosIG5ncm91cHM7Ci0gCXVpZF90IGV1aWQ7Ci0tCWdpZF90IGdpZHNldFtOR1JPVVBTXSwgKmdpZHNldHA7Ci0rCWdpZF90IGdpZHNldFtOR1JPVVBTX01BWF0sICpnaWRzZXRwOwotICNlbmRpZgotIAotIAlmb3IgKGkgPSAwOyBoYW5kbGVzW2ldOyBpKyspIHsKLUBAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0IGRxdW90ICpnZXRwcml2cyhxaWRfdCBpZCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqKmhhbmRsZXMsIGludCBxdWlldCkKLSAJCQkJaWYgKGdldGV1aWQoKSA9PSAwKQotIAkJCQkJYnJlYWs7Ci0gCQkJCW5ncm91cHMgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7Ci0tCQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCQlpZiAobmdyb3VwcyA+IE5HUk9VUFNfTUFYKSB7Ci0gCQkJCQlnaWRzZXRwID0gbWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKLSAJCQkJCWlmICghZ2lkc2V0cCkgewotIAkJCQkJCWdpZDJncm91cChpZCwgbmFtZSk7Ci0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZWE1NDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBmMzBlMWFkYTgzMjY0NjNjYzBhZjA0OGFmYTA1OGJjMmYxZGM5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFR1ZSwgMjkgTWFyIDIwMTYgMjA6NDg6MDQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgYnVpbGRpbmcgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIHJwYyBoZWFkZXIgZmlsZXMKLQotQW5kcm9pZCdzIGJpb25pYyBDIGxpYnJhcnkgZG9lc24ndCBoYXZlIFN1biBSUEMgc3VwcG9ydC4KLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDMwICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHF1b3Rhb3BzLmMgIHwgIDIgKysKLSBzZXRxdW90YS5jICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDZkN2VhMGUuLjgyZGI5OWYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNSBAQAotIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0gCi0tQlVJTFRfU09VUkNFUyA9IHJxdW90YS5oIHJxdW90YS5jIHJxdW90YV9jbG50LmMKLS0KLSBkb2NkaXIgPSAkKGRhdGFkaXIpL2RvYy9AUEFDS0FHRUAKLSBkb2NfREFUQSA9IFwKLSAJUkVBRE1FLm1haWxzZXJ2ZXIgXAotQEAgLTEyLDExICsxMCw2IEBAIGRvY19EQVRBID0gXAotIAlkb2MvcXVvdGFzLnByZWZvcm1hdGVkIFwKLSAJZG9jL3F1b3Rhcy0xLmVwcwotIAotLXJwY3N2Y2RpciA9ICQoaW5jbHVkZWRpcikvcnBjc3ZjCi0tcnBjc3ZjX0RBVEEgPSBcCi0tCXJxdW90YS5oIFwKLS0JcnF1b3RhLngKLS0KLSBzeXNjb25mX0RBVEEgPSBcCi0gCXdhcm5xdW90YS5jb25mIFwKLSAJcXVvdGF0YWIgXAotQEAgLTM1LDE1ICsyOCwxMiBAQCBtYW5fTUFOUyA9IFwKLSAJcXVvdGEuMSBcCi0gCXF1b3QuOCBcCi0gCXJlcHF1b3RhLjggXAotLQlycGMucnF1b3RhZC44IFwKLSAJcnF1b3RhLjMgXAotIAlzZXRxdW90YS44IFwKLSAJd2FybnF1b3RhLmNvbmYuNSBcCi0gCXdhcm5xdW90YS44IFwKLSAJeHFtc3RhdHMuOAotIAotLUNMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0tCi0gU1VCRElSUyA9IHBvCi0gCi0gRVhUUkFfRElTVCA9IFwKLUBAIC01NSw5ICs0NSwxNSBAQCBFWFRSQV9ESVNUID0gXAotIAlDaGFuZ2Vsb2cgXAotIAlsZGFwLXNjcmlwdHMKLSAKLS1ub2luc3RfTElCUkFSSUVTID0gXAotLQlsaWJxdW90YS5hIFwKLS0JbGlicnBjY2xpZW50LmEKLStub2luc3RfTElCUkFSSUVTID0gbGlicXVvdGEuYQotKwotK2lmIFdJVEhfUlBDCi0rcnBjc3ZjZGlyID0gJChpbmNsdWRlZGlyKS9ycGNzdmMKLStycGNzdmNfREFUQSA9IFwKLSsJcnF1b3RhLmggXAotKwlycXVvdGEueAotKwotK25vaW5zdF9MSUJSQVJJRVMgKz0gbGlicnBjY2xpZW50LmEKLSAKLSBsaWJycGNjbGllbnRfYV9TT1VSQ0VTID0gXAotIAlycXVvdGEuYyBcCi1AQCAtNjcsOCArNjMsMTAgQEAgbGlicnBjY2xpZW50X2FfU09VUkNFUyA9IFwKLSAJcnF1b3RhX2NsbnQuYwotIGxpYnJwY2NsaWVudF9hX0NGTEFHUyA9IC1Xbm8tdW51c2VkCi0gCi0taWYgV0lUSF9SUEMKLSBSUENMSUJTID0gbGlicnBjY2xpZW50LmEKLStCVUlMVF9TT1VSQ0VTID0gcnF1b3RhLmggcnF1b3RhLmMgcnF1b3RhX2NsbnQuYwotK0NMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0rbWFuX01BTlMgKz0gcnBjLnJxdW90YWQuOAotIGVuZGlmCi0gCi0gbGlicXVvdGFfYV9TT1VSQ0VTID0gXAotQEAgLTIxNyw2ICsyMTUsNyBAQCBjb252ZXJ0cXVvdGFfTERBREQgPSBcCi0gCWxpYnF1b3RhLmEgXAotIAkkKFJQQ0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSBycGNfcnF1b3RhZF9TT1VSQ0VTID0gXAotIAlycXVvdGFfc2VydmVyLmMgXAotIAlycXVvdGFfc3ZjLmMgXAotQEAgLTIyNSw2ICsyMjQsNyBAQCBycGNfcnF1b3RhZF9MREFERCA9IFwKLSAJbGlicXVvdGEuYSBcCi0gCSQoV1JBUF9MSUJTKSBcCi0gCSQoUlBDTElCUykKLStlbmRpZgotIAotIHF1b3RhX25sZF9TT1VSQ0VTID0gcXVvdGFfbmxkLmMKLSBxdW90YV9ubGRfQ0ZMQUdTID0gXAotQEAgLTIzNiw2ICsyMzYsNyBAQCBxdW90YV9ubGRfTERBREQgPSBcCi0gCSQoREJVU19MSUJTKSBcCi0gCSQoTElCTkwzX0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLQotICMgUnBjZ2VuIGNvbnZlcnNpb25zCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0KLUBAIC0yNTAsNiArMjUxLDcgQEAgcXVvdGFfbmxkX0xEQUREID0gXAotIHJxdW90YV9jbG50LmM6IHJxdW90YS54Ci0gCUBybSAtZiAkQAotIAlAJChSUENHRU4pIC1sIC1vICRAICQ8Ci0rZW5kaWYKLSAKLSAjIC0tLS0tLS0tCi0gIyBRdW90YW9mZgotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA0N2VmOWE3Li4xMzZhZWMzIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTM0LDcgKzM0LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotZGlmZiAtLWdpdCBhL3NldHF1b3RhLmMgYi9zZXRxdW90YS5jCi1pbmRleCA1MWQ3YjNjLi44ZWNkOWMzIDEwMDY0NAotLS0tIGEvc2V0cXVvdGEuYwotKysrIGIvc2V0cXVvdGEuYwotQEAgLTcsNyArNyw5IEBACi0gCi0gI2luY2x1ZGUgImNvbmZpZy5oIgotIAotKyNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAzLURvbi10LWJ1aWxkLXJwYy5ycXVvdGFkLXdoZW4tZGlzYWJsZS1ycGMtd2FzLXJlcXVlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1NTM4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzdhNzYyMzdlN2E1MWE2OWQwMjM2ZWJmYzE5MWU0NjJmODA1Y2Y0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExhcnMgV2VuZGxlciA8cG9seW5vbWlhbC1jQGdlbnRvby5vcmc+Ci1EYXRlOiBNb24sIDE1IEZlYiAyMDE2IDE0OjQyOjE0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIHJwYy5ycXVvdGFkIHdoZW4gLS1kaXNhYmxlLXJwYyB3YXMgcmVxdWVzdGVkLgotCi1UaGlzIGZpeGVzIGEgYnVjaCBvZiB1bmRlZmluZWQgcmVmZXJlbmNlczoKLQoteDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgIC1tYXJjaD1uYXRpdmUgLW10dW5lPW5hdGl2ZSAtTzIgLXBpcGUgLURfR05VX1NPVVJDRSAtV2EKLWxsIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1mUElDIC1waWUgLVdsLC1PMSAtV2wsLS1oYXNoLXN0Ci15bGU9Z251IC1XbCwtLXNvcnQtY29tbW9uIC1XbCwtLWFzLW5lZWRlZCAtbyBycGMucnF1b3RhZCBycXVvdGFfc2VydmVyLm8gcnF1b3RhXwotc3ZjLm8gc3ZjX3NvY2tldC5vIGxpYnF1b3RhLmEKLXJxdW90YV9zdmMubzogSW4gZnVuY3Rpb24gYHJxdW90YXByb2dfMic6Ci1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWQzKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWRhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiOSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHgyZmYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzMDYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X2dldHF1b3RhX2FyZ3MnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzFhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzIxKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9nZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5vOiBJbiBmdW5jdGlvbiBgcnF1b3RhcHJvZ18xJzoKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZjMpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZmEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDkpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MWYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MjYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1M2EpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1NDEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotTWFrZWZpbGU6OTAxOiByZWNpcGUgZm9yIHRhcmdldCAncnBjLnJxdW90YWQnIGZhaWxlZAotCi1TaWduZWQtb2ZmLWJ5OiBMYXJzIFdlbmRsZXIgPHBvbHlub21pYWwtY0BnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIE1ha2VmaWxlLmFtIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDc3Zjg0MDAuLjZkN2VhMGUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xMTYsOCArMTE2LDExIEBAIHNiaW5fUFJPR1JBTVMgPSBcCi0gCXhxbXN0YXRzIFwKLSAJZWRxdW90YSBcCi0gCXNldHF1b3RhIFwKLS0JY29udmVydHF1b3RhIFwKLSsJY29udmVydHF1b3RhCi0raWYgV0lUSF9SUEMKLStzYmluX1BST0dSQU1TICs9IFwKLSAJcnBjLnJxdW90YWQKLStlbmRpZgotIGlmIFdJVEhfTkVUTElOSwotIHNiaW5fUFJPR1JBTVMgKz0gXAotIAlxdW90YV9ubGQKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwNC1GaXgtd2FybmluZ3MtZHVlLXRvLW1pc3Npbmctc3RkbGliLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjRjZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzRiNTZlZTU4YjliNzZkMjU5ODUzNWNmNjEwOWEyN2IyMmU2MGFiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDE2IDEwOjIxOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyBkdWUgdG8gbWlzc2luZyBzdGRsaWIuaAotCi1XaGVuIGNvbXBpbGluZyB3aXRob3V0IFJQQywgd2UgZG8gbm90IGdldCBzdGRsaWIuaCBhdXRvbWF0aWNhbGx5Ci1pbmNsdWRlZCB2aWEgb3RoZXIgaW5jbHVkZXMgYW5kIHRodXMgbWlzcyBzb21lIGZ1bmN0aW9uIGRlZmluaXRpb25zLgotSW5jbHVkZSBzdGRsaWIuaCBleHBsaWNpdGVseS4KLQotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIHF1b3Rhb3BzLmMgfCAxICsKLSBzZXRxdW90YS5jIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA1OTBkYzFiLi41NmNmNjIyIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUyLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLWRpZmYgLS1naXQgYS9zZXRxdW90YS5jIGIvc2V0cXVvdGEuYwotaW5kZXggOGVjZDljMy4uNDIxNjMxZSAxMDA2NDQKLS0tLSBhL3NldHF1b3RhLmMKLSsrKyBiL3NldHF1b3RhLmMKLUBAIC0xNyw2ICsxNyw3IEBACi0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotICNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSAicnF1b3RhLmgiCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKaW5kZXggOWNhMmZmYy4uNDY4N2NhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKQEAgLTEsMjAgKzEsMzIgQEAKLVJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCitGcm9tIGEzODA4ZmQxNjU4NDcyOThkMDI1OTcxZWIzYzdiZTdkMTFjYWJhOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA4IE5vdiAyMDE3IDExOjU2OjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCisKIG11c2wgYW5kIHVjbGliYyBkb250IGltcGxlbWVudCBpdAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBxdW90YS10b29scy9zdmNfc29ja2V0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBxdW90YS10b29scy5vcmlnL3N2Y19zb2NrZXQuYwotKysrIHF1b3RhLXRvb2xzL3N2Y19zb2NrZXQuYwotQEAgLTU1LDcgKzU1LDggQEAgc3RhdGljIGludCBzdmNfc29ja2V0ICh1X2xvbmcgbnVtYmVyLCBpbgotIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBzdmNfc29ja2V0LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N2Y19zb2NrZXQuYyBiL3N2Y19zb2NrZXQuYworaW5kZXggOGE0NDYwNC4uNWJkYWFhMCAxMDA2NDQKKy0tLSBhL3N2Y19zb2NrZXQuYworKysrIGIvc3ZjX3NvY2tldC5jCitAQCAtMzYsNyArMzYsOCBAQCBzdGF0aWMgaW50IGdldF9zZXJ2aWNlX3BvcnQodV9sb25nIG51bWJlciwgY29uc3QgY2hhciAqcHJvdG8pCisgCXN0cnVjdCBzZXJ2ZW50IHNlcnZidWYsICpzZXJ2cCA9IE5VTEw7CisgCWludCByZXQ7CiAgCi0gCWlmICghcG9ydCkgewotLQkJcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOwotKwkJcnBjcCA9IGdldHJwY2J5bnVtYmVyKG51bWJlcik7Ci0rCQlyZXQgPSAwOwotIAkJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgewotIAkJCS8qIEZpcnN0IHRyeSBuYW1lICovCi0gCQkJcmV0ID0gZ2V0c2VydmJ5bmFtZV9yKHJwY3AtPnJfbmFtZSwgcHJvdG8sICZzZXJ2YnVmLCBzZXJ2ZGF0YSwKKy0JcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOworKyAgICBycGNwID0gZ2V0cnBjYnludW1iZXIobnVtYmVyKTsKKysgICAgcmV0ID0gMDsKKyAJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgeworIAkJLyogRmlyc3QgdHJ5IG5hbWUgKi8KKyAJCXJldCA9IGdldHNlcnZieW5hbWVfcihycGNwLT5yX25hbWUsIHByb3RvLCAmc2VydmJ1Ziwgc2VydmRhdGEsCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhiMzg1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBtb25pdG9yaW5nICYgbGltaXRpbmcgdXNlciBkaXNrIHVzYWdlIHBlciBmaWxlc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODEzNiZhdGlkPTExODEzNiIKLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcXVvdGEuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMzO21kNT0zMzFjN2Q3Nzc0NGJmZTBhZDI0MDI3ZjA2NTEwMjhlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ycXVvdGFfc2VydmVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU3ZTBkN2UxMWM2ZjgyMGY4ZmE2MmE1YWY3MTIzMGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3ZjX3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTI0ZDVhODc5MmRhNDU5MTA3ODZlZWFjNzUwYmU4Y2ViIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xpbnV4cXVvdGEvcXVvdGEtdG9vbHMvJHtQVn0vcXVvdGEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmIwOWY5YzkzNTE1YzI1YTUyOGJlNTc1NGNkZmI2ZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM2YzRkOWFlN2JmMzA1MDZkZDJhYTNkODA1NmM0ZmYyZjhkMDg3OTMwZDdjNzIxNjE2ZjVjMDkzYmRjNjc0YiIKLQotQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKLQotQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCi1MREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCi1BU05FRURFRCA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKLVBBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCi0KLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKLVBBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKLVBBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2YzNzYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjA0LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1vbml0b3JpbmcgJiBsaW1pdGluZyB1c2VyIGRpc2sgdXNhZ2UgcGVyIGZpbGVzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MTM2JmF0aWQ9MTE4MTM2IgorTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9xdW90YS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzM7bWQ1PTMzMWM3ZDc3NzQ0YmZlMGFkMjQwMjdmMDY1MTAyOGVjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JxdW90YV9zZXJ2ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTdlMGQ3ZTExYzZmODIwZjhmYTYyYTVhZjcxMjMwZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdmNfc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MjRkNWE4NzkyZGE0NTkxMDc4NmVlYWM3NTBiZThjZWIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbGludXhxdW90YS9xdW90YS10b29scy8ke1BWfS9xdW90YS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ2ZjNiMGI1MTQxZjAzMmYyNTY4NDAwNWRhYzQ5ZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM1YmUxODg3ZTdmNTFmNTQxNjVlNzc4YWU0M2ZjODU5YzA0ZTQ0ZDg4ODM0ZWNiMmY0NzBlOTFkNGVmOGVkZiIKKworQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKKworQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCitMREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCitBU05FRURFRCA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKK1BBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCisKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKK1BBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKK1BBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzIzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYzQ5YTdlYTYzOWViNzAwODIzZTE3NGZkNjA1YmJiZTE4M2UyMjlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNyBNYXkgMjAxNyAxMDo1MjoyNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBwbWFwcHJvY19kdW1wOiBGaXhlZCB0eXBvIGluIG1lbW9yeSBsZWFrIHBhdGNoCisKK2NvbW1pdCA3ZWEzNmVlZSBpbnRyb2R1Y2UgYSB0eXBvIHRoYXQgY2F1c2VkCitOSVMgKGFrYSB5cGJpbmQpIHRvIGZhaWwuCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcG1hcF9zdmMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IHJwY2JpbmQtMC4yLjQvc3JjL3BtYXBfc3ZjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycGNiaW5kLTAuMi40Lm9yaWcvc3JjL3BtYXBfc3ZjLmMKKysrKyBycGNiaW5kLTAuMi40L3NyYy9wbWFwX3N2Yy5jCitAQCAtMzg0LDcgKzM4NCw3IEBAIHBtYXBwcm9jX2R1bXAoc3RydWN0IHN2Y19yZXEgKnJxc3RwIC8qX18KKyAJfQorIAorIGRvbmU6CistCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl9wbWFwLCAoY2hhciAqKU5VTEwpKSB7CisrCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl92b2lkLCAoY2hhciAqKU5VTEwpKSB7CisgCQlpZiAoZGVidWdnaW5nKSB7CisgCQkJLyoodm9pZCkgeGxvZyhMT0dfREVCVUcsICJ1bmFibGUgdG8gZnJlZSBhcmd1bWVudHNcbiIpOyovCisgCQkJaWYgKGRvYWJvcnQpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMDAwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDdjNzU5MGFkNTM2YzBlMjRiZWY3OTBjYjFlNjU3MDJmYzU0ZGI1NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTE6Mjc6MjIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnBjYnByb2NfY2FsbGl0X2NvbTogU3RvcCBmcmVlaW5nIGEgc3RhdGljIHBvaW50ZXIKKworY29tbWl0IDdlYTM2ZWUgaW50cm9kdWNlZCBhIHN2Y19mcmVlYXJncygpIGNhbGwKK3RoYXQgZW5kZWQgdXAgZnJlZWluZyBzdGF0aWMgcG9pbnRlci4KKworSXQgdHVybnMgb3V0IHRoZSBhbGxvY2F0aW9ucyBmb3IgdGhlIHJtdF9hcmdzCitpcyBub3QgbmVjZXNzYXJ5IC4gVGhlIHhkciByb3V0aW5lcyAoeGRyX2J5dGVzKSB3aWxsCitoYW5kbGUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUgbGFyZ2VzdAorcG9zc2libGUgbWVzc2FnZSBzaXplIGlzIFVEUE1TR1NJWkUgKGR1ZSB0byBVRFAgb25seSkKK3doaWNoIGlzIHNtYWxsZXIgdGhhbiBSUENfQlVGX01BWAorCitTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JwY2Jfc3ZjX2NvbS5jIHwgMzkgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfY29tLmMgYi9zcmMvcnBjYl9zdmNfY29tLmMKK2luZGV4IGNiNjNhZmQuLjFmYzIyMjkgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9zdmNfY29tLmMKKysrKyBiL3NyYy9ycGNiX3N2Y19jb20uYworQEAgLTYxMiw5ICs2MTIsOSBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAlzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZjsKKyAJc3RydWN0IG5ldGJ1ZiAqY2FsbGVyOworIAlzdHJ1Y3Qgcl9ybXRjYWxsX2FyZ3MgYTsKKy0JY2hhciAqYnVmX2FsbG9jID0gTlVMTCwgKm91dGJ1ZnA7CisrCWNoYXIgKm91dGJ1ZnA7CisgCWNoYXIgKm91dGJ1Zl9hbGxvYyA9IE5VTEw7CistCWNoYXIgYnVmW1JQQ19CVUZfTUFYXSwgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKysJY2hhciAgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKyAJc3RydWN0IG5ldGJ1ZiAqbmEgPSAoc3RydWN0IG5ldGJ1ZiAqKSBOVUxMOworIAlzdHJ1Y3QgcnBjX21zZyBjYWxsX21zZzsKKyAJaW50IG91dGxlbjsKK0BAIC02MzUsMzYgKzYzNSwxMCBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAl9CisgCWlmIChzaS5zaV9zb2NrdHlwZSAhPSBTT0NLX0RHUkFNKQorIAkJcmV0dXJuOwkvKiBPbmx5IGRhdGFncmFtIHR5cGUgYWNjZXB0ZWQgKi8KKy0Jc2VuZHN6ID0gX19ycGNfZ2V0X3Rfc2l6ZShzaS5zaV9hZiwgc2kuc2lfcHJvdG8sIFVEUE1TR1NJWkUpOworLQlpZiAoc2VuZHN6ID09IDApIHsJLyogZGF0YSB0cmFuc2ZlciBub3Qgc3VwcG9ydGVkICovCistCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQlzdmNlcnJfc3lzdGVtZXJyKHRyYW5zcCk7CistCQlyZXR1cm47CistCX0KKy0JLyoKKy0JICogU2hvdWxkIGJlIG11bHRpcGxlIG9mIDQgZm9yIFhEUi4KKy0JICovCistCXNlbmRzeiA9ICgoc2VuZHN6ICsgMykgLyA0KSAqIDQ7CistCWlmIChzZW5kc3ogPiBSUENfQlVGX01BWCkgeworLSNpZmRlZglub3R5ZXQKKy0JCWJ1Zl9hbGxvYyA9IGFsbG9jYShzZW5kc3opOwkJLyogbm90IGluIElEUjI/ICovCistI2Vsc2UKKy0JCWJ1Zl9hbGxvYyA9IG1hbGxvYyhzZW5kc3opOworLSNlbmRpZgkvKiBub3R5ZXQgKi8KKy0JCWlmIChidWZfYWxsb2MgPT0gTlVMTCkgeworLQkJCWlmIChkZWJ1Z2dpbmcpCistCQkJCXhsb2coTE9HX0RFQlVHLAorLQkJCQkJInJwY2Jwcm9jX2NhbGxpdF9jb206ICBObyBNZW1vcnkhXG4iKTsKKy0JCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQkJc3ZjZXJyX3N5c3RlbWVycih0cmFuc3ApOworLQkJCXJldHVybjsKKy0JCX0KKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1Zl9hbGxvYzsKKy0JfSBlbHNlIHsKKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1ZjsKKy0JfQorKwlzZW5kc3ogPSBVRFBNU0dTSVpFOworIAorIAljYWxsX21zZy5ybV94aWQgPSAwOwkvKiBGb3IgZXJyb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KKysJbWVtc2V0KCZhLCAwLCBzaXplb2YoYSkpOyAvKiBaZXJvIG91dCB0aGUgaW5wdXQgYnVmZmVyICovCisgCWlmICghc3ZjX2dldGFyZ3ModHJhbnNwLCAoeGRycHJvY190KSB4ZHJfcm10Y2FsbF9hcmdzLCAoY2hhciAqKSAmYSkpIHsKKyAJCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorIAkJCXN2Y2Vycl9kZWNvZGUodHJhbnNwKTsKK0BAIC03MDQsNyArNjc4LDggQEAgcnBjYnByb2NfY2FsbGl0X2NvbShzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAsIFNWQ1hQUlQgKnRyYW5zcCwKKyAJaWYgKHJibCA9PSAocnBjYmxpc3RfcHRyKU5VTEwpIHsKKyAjaWZkZWYgUlBDQklORF9ERUJVRworIAkJaWYgKGRlYnVnZ2luZykKKy0JCQl4bG9nKExPR19ERUJVRywgIm5vdCBmb3VuZFxuIik7CisrCQkJeGxvZyhMT0dfREVCVUcsICJwcm9nICVsdSB2ZXJzICVsdTogbm90IGZvdW5kXG4iLCAKKysJCQkJYS5ybXRfcHJvZywgYS5ybXRfdmVycyk7CisgI2VuZGlmCisgCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKyAJCQlzdmNlcnJfbm9wcm9nKHRyYW5zcCk7CitAQCAtOTM3LDggKzkxMiw2IEBAIG91dDoKKyAJfQorIAlpZiAobG9jYWxfdWFkZHIpCisgCQlmcmVlKGxvY2FsX3VhZGRyKTsKKy0JaWYgKGJ1Zl9hbGxvYykKKy0JCWZyZWUoYnVmX2FsbG9jKTsKKyAJaWYgKG91dGJ1Zl9hbGxvYykKKyAJCWZyZWUob3V0YnVmX2FsbG9jKTsKKyAJaWYgKG5hKSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKaW5kZXggNjBlNDZlZC4uZGNkZWU2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKQEAgLTE2LDYgKzE2LDggQEAKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwY2JpbmQtcGFpci1hbGwtc3ZjX2dldGFyZ3MtY2FsbHMtd2l0aC1zdmNfZnJlZWFyZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZjEwY2Q0MWVkODIyOGZjNTRjMzE2MTkxYzFmMDdmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRhOWE1MzBkYzdjMTFlMGQ5MDVhYTU5YmNiMDg0N2MwMDkzMTNmMDJlOThkM2Q3OThhYTk1NjhmNDE0YzY2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKaW5kZXggZThkYjEyYy4uMTI3NGIyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCkBAIC05LDcgKzksOCBAQAogV2UgcmFyZWx5IHVzZSAieWVzOyIgdG8gbmFtZSBidWlsZCBkaXIsIHNvIHMveWVzL3llczsvZwogY291bGQgZml4IHRoZSBpc3N1ZQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKK2h0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9zY3JlZW4uZ2l0L2NvbW1pdC8/aD1zY3JlZW4tdjQmaWQ9OGMyYjQwNjFkMTY3NTZlZTJlZDM3ZjA4ZGIwNjNiODIxNTY1Njk0MwogCiBTaWduZWQtb2ZmLWJ5OiBKaWFuIEthbmcgPGppYW4ua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaAppbmRleCBiNWQ3MWNjLi5hMDFkYzI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2gKQEAgLTE1LDE5ICsxNSwxNiBAQAogIHNyYy9NYWtlZmlsZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgotaW5kZXggZTc5MWU3OS4uZDRmN2MwYiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMyw3ICsxMTMsNyBAQCB0ZXJtLmg6IHRlcm0uYyB0ZXJtLnNoCi0gCi0ga21hcGRlZi5jOiB0ZXJtLmgKK0luZGV4OiBzY3JlZW4tNC42LjEvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3JlZW4tNC42LjEub3JpZy9NYWtlZmlsZS5pbgorKysrIHNjcmVlbi00LjYuMS9NYWtlZmlsZS5pbgorQEAgLTEzMyw3ICsxMzMsNyBAQCBrbWFwZGVmLmM6IHRlcm0uaAorIHR0eS5jOgl0dHkuc2ggCisgCXNoICQoc3JjZGlyKS90dHkuc2ggdHR5LmMKICAKIC1jb21tLmg6IGNvbW0uYyBjb21tLnNoIGNvbmZpZy5oCiArY29tbS5oOiBjb21tLmMgY29tbS5zaCBjb25maWcuaCB0ZXJtLmgKICAJQVdLPSQoQVdLKSBDQz0iJChDQykgJChDRkxBR1MpIiBzcmNkaXI9JHtzcmNkaXJ9IHNoICQoc3JjZGlyKS9jb21tLnNoCiAgCi0gZG9jczoKLS0tIAotMi40LjEKLQorIG9zZGVmLmg6IG9zZGVmLnNoIGNvbmZpZy5oIG9zZGVmLmguaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkODNhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyBcCi0gICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEzMmM4OTNhYWJmYWYyMDIwMDc0NzkwMjE1YzhjYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiYTlhZjY2Y2I2MjYxNTVkNmFiY2U0NzAzZjQ1Y2NlMGUzMGE1MTE0YTM2OGJkNjM4N2M5NjZjYmJiYjdjNjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTMzYzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCit0aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKK3Byb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKKworREVQRU5EUyA9ICJuY3Vyc2VzIFwKKyAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmNTI5ZDMzMzNiMTI4ZGZhYTMyNGQ5NzhiYTczYTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI2OTIyNTIwZTZhMGNlNWUyODc2OGQ2MjBiMGY2NDBhNjYzMTM5N2Y5NWNjYjA0M2I3MGI5MWJiNTAzZmEzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgorCWZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK3BrZ19wb3N0cm1fJHtQTn0gKCkgeworCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCmluZGV4IGUzMWJlYzIuLmYxMGUzNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKQEAgLTQyLDYgKzQyLDEyIEBACiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCiB9CiAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwppbmRleCBjYzE4OTY0Li42NzMyMDdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTYsOCArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDgwZmYxYzJiNDA4NDNjZjU3NjhlNTIyOWNmMTZlNSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGFzc3dkLmM7YmVnaW5saW5lPTg7ZW5kbGluZT0zMDttZDU9ZDgzODg4ZWExNGFlNjE5NTE5ODJkNzcxMjU5NDc2NjEiCiAKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK0RFUEVORFMgPSAidmlydHVhbC9jcnlwdCIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGtnLXNoYWRvdy5hbGlvdGguZGViaWFuLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCkBAIC0xOTAsNyArMTg5LDcgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L25vbG9naW4uOCIKIAogUEFDS0FHRV9XUklURV9ERVBTICs9ICJzaGFkb3ctbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKK3BrZ19wb3N0aW5zdF8ke1BOfV9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KIAkgIHJvb3Rhcmc9Ii0tcm9vdCAkRCIKIAllbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTg1YzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgotCi1ERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCi1TLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKLWEgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKLVRoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKLWV4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCi10byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzUyMzUzMTMwNDJlZDBlNzFlYzcwOGY3Yjg1ZWMyNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmMGMzMDA3ZmRlOTE4MDM5YzA1ODk2NWRmZmRmZDZjNWFlYzBiYWQwZjQyMjcxOTJjYzQ4NjAyMWYwOGMzNiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgotUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgotIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAotIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCi1FWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNkICR7U30vYXV0b2NvbmYKLSAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5Ci0gICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQotICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgotICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCi0gICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCi0gICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCi0gICAgY2QgJHtCfQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYwotCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbwotCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0JZG9uZQotCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAotCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKLQotCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LwotCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKLQotCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0Jc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdmZDQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgorCitERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCitTLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKK2EgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKK1RoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKK2V4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCit0byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkNWE3YWEwMjQ2NjI3ZGE0OTBiZTRlMzk5Yzg3Y2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmM5ZTNiMGZjNGY2N2MzYzFmNmQ0M2M5MGMxNmE1YzQyZDExN2I4ZTI4NDU3YzViNDY4MzFiOGI1ZDNhZTMxYSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgorUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgorIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAorIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCitFWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNkICR7U30vYXV0b2NvbmYKKyAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5CisgICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQorICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgorICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCisgICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCisgICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCisgICAgY2QgJHtCfQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYworCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbworCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJZG9uZQorCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAorCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKworCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKKworCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1lcnJvci1yZXR1cm4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyOTk1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVRoaXMgcGF0Y2ggZml4aWVzIHRoZSB3cm9uZyByZXR1cm4gY29kZSBvZiBzdGF0IC1oLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFpoYW5nbGUgWWFuZyA8emhhbmdsZS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBzdGF0LTMuMy9zdGF0LmMub3JpZwkyMDEzLTA4LTIyIDEwOjQ5OjQ1LjAwMDAwMDAwMCArMDgwMAotKysrIHN0YXQtMy4zL3N0YXQuYwkyMDEzLTA4LTIyIDEwOjUwOjMxLjAwMDAwMDAwMCArMDgwMAotQEAgLTg0NSw3ICs4NDUsNyBAQAotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJVMgLSBTZWN1cml0eSBJRCBpbiBTRS1MaW51eFxuIik7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdCUlQyAtIFNlY3VyaXR5IGNvbnRleHQgaW4gU0UtTGludXhcbiIpOwotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJWQgLSBGcmVlIGZpbGUgbm9kZXMgaW4gZmlsZSBzeXN0ZW1cbiIpOwotLSAgICBleGl0KDEpOwotKyAgICBleGl0KDApOwotIH0KLSAgIAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMWVkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXN0YXQ6IEZpeGluZyBzZWN1cml0eSBmb3JtYXR0aW5nIGlzc3VlcwotCi1GaXggc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMgcmVsYXRlZCB0byBwcmludGYgd2l0aG91dCBOVUxMIGFyZ3VtZW50IAotCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl9hY2Nlc3MnOgotc3RhdC5jOjI5MjoxMzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgIHByaW50ZiAoYWNjZXNzKTsKLSAgICAgICAgICAgICBeCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl90aW1lJzoKLXN0YXQuYzoyOTk6NTc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgaWYgKHN0cmZ0aW1lKHN0ciwgNDAsICIlYyIsIGxvY2FsdGltZSh0KSkgPiAwKSBwcmludGYoc3RyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXN0YXQuYzogSW4gZnVuY3Rpb24gJ3ByaW50X2l0JzoKLXN0YXQuYzo2MTM6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgICBwcmludGYoYik7Ci0gICAgICBeCi1zdGF0LmM6NjQyOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgICAgcHJpbnRmKGIpOwotICAgICAgXgotCi1bWU9DVE8gIzk1NTBdCi1baHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3N0YXQuYyBiL3N0YXQuYwotaW5kZXggMWVkMDdhOS4uMmJlNmY2MiAxMDA2NDQKLS0tLSBhL3N0YXQuYwotKysrIGIvc3RhdC5jCi1AQCAtMjg5LDE1ICsyODksMTUgQEAgdm9pZCBwcmludF9odW1hbl9hY2Nlc3Moc3RydWN0IHN0YXQgKnN0YXRidWYpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWNjZXNzWzBdID0gJz8nOwotICAgICB9Ci0tICAgIHByaW50ZiAoYWNjZXNzKTsKLSsgICAgZnB1dHMoYWNjZXNzLHN0ZG91dCk7Ci0gfQotIAotIHZvaWQgcHJpbnRfaHVtYW5fdGltZSh0aW1lX3QgKnQpCi0gewotICAgY2hhciBzdHJbNDBdOwotICAgCi0tICBpZiAoc3RyZnRpbWUoc3RyLCA0MCwgIiVjIiwgbG9jYWx0aW1lKHQpKSA+IDApIHByaW50ZihzdHIpOwotLSAgZWxzZSBwcmludGYoIkNhbm5vdCBjYWxjdWxhdGUgaHVtYW4gcmVhZGFibGUgdGltZSwgc29ycnkiKTsKLSsgIGlmIChzdHJmdGltZShzdHIsIDQwLCAiJWMiLCBsb2NhbHRpbWUodCkpID4gMCkgZnB1dHMoc3RyLHN0ZG91dCk7Ci0rICBlbHNlIGZwdXRzKCJDYW5ub3QgY2FsY3VsYXRlIGh1bWFuIHJlYWRhYmxlIHRpbWUsIHNvcnJ5IixzdGRvdXQpOwotIH0KLSAKLSAvKiBwcmludCBzdGF0ZnMgaW5mbyAqLwotQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIHByaW50X2l0KGNoYXIgKm1hc3RlcmZvcm1hdCwgY2hhciAqZmlsZW5hbWUsCi0gCXsKLSAJICAgIHN0cmNweSAocGZvcm1hdCwgIiUiKTsKLSAJICAgICptKysgPSAnXDAnOwotLQkgICAgcHJpbnRmKGIpOwotKwkgICAgZnB1dHMoYixzdGRvdXQpOwotIAotIAkgICAgLyogY29weSBhbGwgZm9ybWF0IHNwZWNpZmllcnMgdG8gb3VyIGZvcm1hdCBzdHJpbmcgKi8KLSAJICAgIHdoaWxlIChpc2RpZ2l0KCptKSB8fCBzdHJjaHIoIiMwLSsuIEkiLCAqbSkpCi1AQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgcHJpbnRfaXQoY2hhciAqbWFzdGVyZm9ybWF0LCBjaGFyICpmaWxlbmFtZSwKLSAJfQotIAllbHNlCi0gCXsKLS0JICAgIHByaW50ZihiKTsKLSsJICAgIGZwdXRzKGIsc3Rkb3V0KTsKLSAJICAgIGIgPSBOVUxMOwotIAl9Ci0gICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjOGU4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSBmaWxlIHN0YXR1cyBkaXNwbGF5IHV0aWxpdHkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC91dGlscy9maWxlLyIKLURFU0NSSVBUSU9OID0gIkRpc3BsYXlzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUgdGhhdCB0aGUgc3RhdCgpIGNhbGwgcHJvdmlkZXMgYW5kIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGVzeXN0ZW0gdGhhdCBzdGF0ZnMoKSBwcm92aWRlcy4iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOTg4NmIwNzdmZDA3MmU4NzZlNWM0YzE2MzEwYjYzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWVycm9yLXJldHVybi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM3ZTI0N2U4ZTQwMGFkOTIwNWYxYjA1MDBiNzI4ZmQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwNzFmMDM4NGE0MjNhOTM4ZGQ1NDJjMWYwODU0N2EwMjgyNGY2MzU5YWNkM2VmM2Y5NDRiMmM0YzJkMWVlMDkiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQotCWluc3RhbGwgLW0gNzU1IHN0YXQgJHtEfSR7YmFzZV9iaW5kaXJ9L3N0YXQuc3RhdAotCWluc3RhbGwgLW0gNjQ0IHN0YXQuMSAke0R9JHttYW5kaXJ9L21hbjEKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInN0YXQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtzdGF0XSA9ICIyMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3RhdCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtzdGF0XSA9ICIke2Jhc2VfYmluZGlyfS9zdGF0LnN0YXQiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzdGF0LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggODBlYzBhZS4uMzYyYmQzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwpAQCAtNCw4ICs0LDggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02NTJmYjQzMzRjMTNiNTExNTk3ZDc5NDBlZjhiMzMyMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT1jZmU0MTExMmY5NmMxOWEwNzQ5MzRkMTI4ZjQ1YzY5MyBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9Nzc2NWEzZDc4N2NiNGZlZDNjY2MzYzljZWUwMzBhZjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9ODA1NzgyYTg0NjY5NzU3MTZmODM3NmIyYmU5YWVkZGUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT01O2VuZGxpbmU9Mjc7bWQ1PTQ0OWFmNGNjNTdmYzdkNDZmNDIwOTA2MDhiYTNlNjgxIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMjRiM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNkYThlNzExY2FjYTZmZDkzZTU3NzUxYmZiNzRhZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ0MmFlMTA1OWU5MzVmNzk1YzY5ZWE5N2IzZGUwOWZlOTQxMGE1OGE3NGI1ZDVlNjgzNmViNTA2N2E0NDVkOSIKLQotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAotICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKLQlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1MDE3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjRhYmRlYTQ4ZGI0YzVhYmNkNDEwMTY3YzgwMWNjOGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI1NmNiMjdjMjA4ODNiMTQzNjBlZGRiZDE3Zjk4OTIyMDczZDEwNGIyMTRjZjY1YWVhY2YxZDljOWI5ZmQwMiIKKworREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKaW5kZXggMDBmYmE3MS4uZDQyNmM4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1JbmRleDogc3lza2xvZ2QtMS41L01ha2VmaWxlCitJbmRleDogc3lza2xvZ2QtMS41LjEvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAyOjQxLjAwMDAwMDAwMCArMDIwMAotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAzOjA2LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNyw4ICsxMjcsOCBAQAorLS0tIHN5c2tsb2dkLTEuNS4xLm9yaWcvTWFrZWZpbGUKKysrKyBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQorQEAgLTEyNyw4ICsxMjcsOCBAQCBjbG9iYmVyOiBjbGVhbgogIAlybSAtZiBzeXNsb2dkIGtsb2dkIGtzeW0gc3lzbG9nX3RzdCBvb3BzX3Rlc3QgVEFHUyB0c3lzbG9nZCB0a2xvZ2QKICAKICBpbnN0YWxsX2V4ZWM6IHN5c2xvZ2Qga2xvZ2QKQEAgLTE0LDQgKzE0LDQgQEAKICsJJHtJTlNUQUxMfSAtbSA1MDAga2xvZ2QgJHtCSU5ESVJ9L2tsb2dkCiAgCiAgaW5zdGFsbF9tYW46Ci0gCSR7SU5TVEFMTH0gLW0gJHtNQU5fUEVSTVN9IHN5c2tsb2dkLjggJHtNQU5ESVJ9L21hbjgvc3lza2xvZ2QuOAorIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmluZGV4IGMxMjY1MjMuLjFiNjMyOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCkBAIC0yMSwxMCArMjEsMTAgQEAKICBzYV9jb21tb24uYyB8IDEgKwogIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb21tb24uYyBiL2NvbW1vbi5jCi1pbmRleCBhMjMxNTViLi5hZDg2NDQ2IDEwMDY0NAotLS0tIGEvY29tbW9uLmMKLSsrKyBiL2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC0zMiwxMSArMzIsMTEgQEAKICsjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotZGlmZiAtLWdpdCBhL2lvY29uZi5jIGIvaW9jb25mLmMKLWluZGV4IDdkODhjNWQuLjZkNjc2OTEgMTAwNjQ0Ci0tLS0gYS9pb2NvbmYuYwotKysrIGIvaW9jb25mLmMKKyAjaW5jbHVkZSA8c3RkYXJnLmg+CitJbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCisrKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKIEBAIC0yNyw2ICsyNyw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGRpcmVudC5oPgpAQCAtNDUsMTAgKzQ1LDEwIEBACiAgCiAgI2luY2x1ZGUgImlvY29uZi5oIgogICNpbmNsdWRlICJjb21tb24uaCIKLWRpZmYgLS1naXQgYS9zYV9jb21tb24uYyBiL3NhX2NvbW1vbi5jCi1pbmRleCBiNzM1MWQ5Li5jOWUzMjk5IDEwMDY0NAotLS0tIGEvc2FfY29tbW9uLmMKLSsrKyBiL3NhX2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL3NhX2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC01Niw3ICs1Niw0IEBACiArI2luY2x1ZGUgPGxpbWl0cy5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLS0tIAotMi41LjIKLQorICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJhZjkzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhmNGE1ZDBkZTI5ZjEwNTYxNTNlMjVlN2E5YzUxOGQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMzhlZmFhMGNhODVlZTU0ODRkMDQ2YmQ0MjcwMTI5NzkyNjRmZWYxN2YwN2ZkNzg1NTg2MGU1OTI4MTk0ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MzhlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImJkY2RhN2M5MDQ4YzdjMjJmYjFmMzBmNzUyODVkMTNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwM2E1OTViMWFmMDMzMGIxODNhMGYxZmViZmNjZjg5ZjE4M2I5NTc1YWUwNTYyYjkxZmRiODc2ZjNlZjFmZWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvQ1ZFLTIwMTYtNjMyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDM1YmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSA3MzQwZjY3Yjk4NjBlYTA1MzFjMTQ1MGU1YWEyNjFjNTBmNjcxNjVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBQZW5ndWluLkNTLlVDTEEuRURVPgotRGF0ZTogU2F0LCAyOSBPY3QgMjAxNiAyMTowNDo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBXaGVuIGV4dHJhY3RpbmcsIHNraXAgIi4uIiBtZW1iZXJzCi0KLSogTkVXUzogRG9jdW1lbnQgdGhpcy4KLSogc3JjL2V4dHJhY3QuYyAoZXh0cmFjdF9hcmNoaXZlKTogU2tpcCBtZW1iZXJzIHdob3NlIG5hbWVzCi1jb250YWluICIuLiIuCi0KLUNWRTogQ1ZFLTIwMTYtNjMyMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DaGVycnkgcGlja2VkIGZyb20gY29tbWl0OiA3MzQwZjY3IFdoZW4gZXh0cmFjdGluZywgc2tpcCAiLi4iIG1lbWJlcnMKLQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBORVdTICAgICAgICAgIHwgOCArKysrKysrLQotIHNyYy9leHRyYWN0LmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwotaW5kZXggNTAxMTY0YS4uZmM5N2NmYyAxMDA2NDQKLS0tLSBhL05FV1MKLSsrKyBiL05FV1MKLUBAIC0xLDYgKzEsMTIgQEAKLS1HTlUgdGFyIE5FV1MgLSBVc2VyIHZpc2libGUgY2hhbmdlcy4gMjAxNi0wNS0xNgotK0dOVSB0YXIgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2VzLiAyMDE2LTEwLTI5Ci0gUGxlYXNlIHNlbmQgR05VIHRhciBidWcgcmVwb3J0cyB0byA8YnVnLXRhckBnbnUub3JnPgotIAotKyogTWVtYmVyIG5hbWVzIGNvbnRhaW5pbmcgJy4uJyBjb21wb25lbnRzIGFyZSBub3cgc2tpcHBlZCB3aGVuIGV4dHJhY3RpbmcuCi0rCi0rVGhpcyBmaXhlcyB0YXIncyBiZWhhdmlvciB0byBtYXRjaCBpdHMgZG9jdW1lbnRhdGlvbiwgYW5kIGlzIGEgYml0Ci0rc2FmZXIgd2hlbiBleHRyYWN0aW5nIHVudHJ1c3RlZCBhcmNoaXZlcyBvdmVyIG9sZCBmaWxlcyAoYW4gdW5zYWZlCi0rcHJhY3RpY2UgdGhhdCB0aGUgdGFyIG1hbnVhbCBoYXMgbG9uZyByZWNvbW1lbmRlZCBhZ2FpbnN0KS4KLSsKLSAMCi0gdmVyc2lvbiAxLjI5IC0gU2VyZ2V5IFBvem55YWtvZmYsIDIwMTYtMDUtMTYKLSAKLWRpZmYgLS1naXQgYS9zcmMvZXh0cmFjdC5jIGIvc3JjL2V4dHJhY3QuYwotaW5kZXggZjk4MjQzMy4uNzkwNDE0OCAxMDA2NDQKLS0tLSBhL3NyYy9leHRyYWN0LmMKLSsrKyBiL3NyYy9leHRyYWN0LmMKLUBAIC0xNjI5LDEyICsxNjI5LDIwIEBAIGV4dHJhY3RfYXJjaGl2ZSAodm9pZCkKLSB7Ci0gICBjaGFyIHR5cGVmbGFnOwotICAgdGFyX2V4dHJhY3Rvcl90IGZ1bjsKLSsgIGJvb2wgc2tpcF9kb3Rkb3RfbmFtZTsKLSAKLSAgIGZhdGFsX2V4aXRfaG9vayA9IGV4dHJhY3RfZmluaXNoOwotIAotICAgc2V0X25leHRfYmxvY2tfYWZ0ZXIgKGN1cnJlbnRfaGVhZGVyKTsKLSAKLSsgIHNraXBfZG90ZG90X25hbWUgPSAoIWFic29sdXRlX25hbWVzX29wdGlvbgotKwkJICAgICAgJiYgY29udGFpbnNfZG90X2RvdCAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKTsKLSsgIGlmIChza2lwX2RvdGRvdF9uYW1lKQotKyAgICBFUlJPUiAoKDAsIDAsIF8oIiVzOiBNZW1iZXIgbmFtZSBjb250YWlucyAnLi4nIiksCi0rCSAgICBxdW90ZWFyZ19jb2xvbiAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKSk7Ci0rCi0gICBpZiAoIWN1cnJlbnRfc3RhdF9pbmZvLmZpbGVfbmFtZVswXQotKyAgICAgIHx8IHNraXBfZG90ZG90X25hbWUKLSAgICAgICB8fCAoaW50ZXJhY3RpdmVfb3B0aW9uCi0gCSAgJiYgIWNvbmZpcm0gKCJleHRyYWN0IiwgY3VycmVudF9zdGF0X2luZm8uZmlsZV9uYW1lKSkpCi0gICAgIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoCmluZGV4IGIwZGMxNmMuLjJkOThlZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9tdXNsX2RpcmVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvbXVzbF9kaXJlbnQucGF0Y2gKQEAgLTE0LDYgKzE0LDYgQEAKIC0gICAgICAgICAgICAgIGxpbnV4Ki1nbnUqKSBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyB5ZXMiIDs7CiArICAgICAgICAgICAgICBsaW51eCotZ251KnxsaW51eCotbXVzbCopCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3Mgbm8gb24gbmF0aXZlIFdpbmRvd3MuCisgICAgICAgICAgICAgICBtaW5ndyopICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgotICAgICAgICAgICAgICAgKikgICAgICAgICAgIGdsX2N2X3N0cnVjdF9kaXJlbnRfZF9pbm89Imd1ZXNzaW5nIG5vIiA7OwotICAgICAgICAgICAgIGVzYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMmQ5YzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHRhci5pbmMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjMyMS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NTVjZDUzMzk1NWFjYjE4MDRiODNmZDcwMjE4ZGE1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzZiMTExOTBjMGEzYTY4ODViZGI4ZDYxNDI0ZjJiMzZhNTg3Mjg2OWFhM2Y3ZjY5NWRlYTRiNDg0M2FlMmYyIgotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm1kaXIgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzQzYTZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB0YXIuaW5jCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLXBvc2l4LWFjbHMsIC0td2l0aG91dC1wb3NpeC1hY2xzLCBhY2wsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbXVzbF9kaXJlbnQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODQwNGU0YzFmYzVhMzAwMDIyOGFiMmI4YWQ2NzRhNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc1OTJiODZjYjAzN2M1NTQzNzVmNTg2OGJkZDNjYzU3NzQ4YWVmMzhkNmNiNzQxYzgxMDY1ZjBiZWFjNjNiNyIKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtZGlyICR7RH0ke2xpYmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDFlMDVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gN2Y4ODc4YWMxYWFmNGExOTk5MmQzOTM3OTc5N2MxNTEzMDFiZWRiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDA4OjI5OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIGNsYW5nCisKK0ZpeCAiZXJyb3I6IG5vbi12b2lkIGZ1bmN0aW9uICdmaXhfb3B0aW9ucycgc2hvdWxkIHJldHVybiBhIHZhbHVlIi4KK0FkZCBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGNwZC5jIGFuZCBtaXNjZC5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CistLS0KKyB2MiAtIGFkZCBmdW5jdGlvbiBwcm90b3R5cGVzCisKKyBmaXhfb3B0aW9ucy5jIHwgMiArLQorIG1pc2NkLmMgICAgICAgfCA0ICsrKysKKyB0Y3BkLmMgICAgICAgIHwgNCArKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ZpeF9vcHRpb25zLmMgYi9maXhfb3B0aW9ucy5jCitpbmRleCBiNWU4MWI4Li45OTU4ZmY0IDEwMDY0NAorLS0tIGEvZml4X29wdGlvbnMuYworKysrIGIvZml4X29wdGlvbnMuYworQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBmaXhfb3B0aW9ucy5jIDEuNiA5Ny8wNC8wOCAwMjoyOToxOSI7CisgCisgLyogZml4X29wdGlvbnMgLSBnZXQgcmlkIG9mIElQLWxldmVsIHNvY2tldCBvcHRpb25zICovCisgCistZml4X29wdGlvbnMocmVxdWVzdCkKKyt2b2lkIGZpeF9vcHRpb25zKHJlcXVlc3QpCisgc3RydWN0IHJlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyB7CisgI2lmZGVmIElQX09QVElPTlMKK2RpZmYgLS1naXQgYS9taXNjZC5jIGIvbWlzY2QuYworaW5kZXggMWFiODM1Yy4uNzIzYjgzYSAxMDA2NDQKKy0tLSBhL21pc2NkLmMKKysrKyBiL21pc2NkLmMKK0BAIC00MCw2ICs0MCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIG1pc2NkLmMgMS4xMCA5Ni8wMi8xMSAxNzowMTozMCI7CisgI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorKyNpZmRlZiBLSUxMX0lQX09QVElPTlMKKyt2b2lkIGZpeF9vcHRpb25zKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CisrI2VuZGlmCisrCisgaW50ICAgICBhbGxvd19zZXZlcml0eSA9IFNFVkVSSVRZOwkvKiBydW4tdGltZSBhZGp1c3RhYmxlICovCisgaW50ICAgICBkZW55X3NldmVyaXR5ID0gTE9HX1dBUk5JTkc7CS8qIGRpdHRvICovCisgCitkaWZmIC0tZ2l0IGEvdGNwZC5jIGIvdGNwZC5jCitpbmRleCBkODY1YjljLi5hMTc5ODkxIDEwMDY0NAorLS0tIGEvdGNwZC5jCisrKysgYi90Y3BkLmMKK0BAIC0zOCw2ICszOCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIHRjcGQuYyAxLjEwIDk2LzAyLzExIDE3OjAxOjMyIjsKKyAjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgorICNpbmNsdWRlICJ0Y3BkLmgiCisgCisrI2lmZGVmIEtJTExfSVBfT1BUSU9OUworK3ZvaWQgZml4X29wdGlvbnMoc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsKKysjZW5kaWYKKysKKyBpbnQgICAgIGFsbG93X3NldmVyaXR5ID0gU0VWRVJJVFk7CS8qIHJ1bi10aW1lIGFkanVzdGFibGUgKi8KKyBpbnQgICAgIGRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsJLyogZGl0dG8gKi8KKyAKKy0tIAorMi4xMC4zLmRpcnR5CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTJfbWFrZWZpbGVfY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKaW5kZXggZTgyODllNC4uZDQ3M2ZiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCi1kaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL01ha2VmaWxlIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKLS0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUJMjAwMy0wOC0yMSAwMTo0MzozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCTIwMDMtMDgtMjEgMDE6NDM6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtNDUsNyArNDUsNyBAQAorSW5kZXg6IHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCitAQCAtNDUsNyArNDUsNyBAQCB3aGF0OgogICMKICAjIFN5c1YuNCBTb2xhcmlzIDIueCBPU0YgQUlYCiAgI1JFQUxfREFFTU9OX0RJUj0vdXNyL3NiaW4KQEAgLTEyLDcgKzEzLDcgQEAKICAjIEJTRCA0LjQKICAjUkVBTF9EQUVNT05fRElSPS91c3IvbGliZXhlYwogICMKLUBAIC01MTIsNiArNTE5LDcgQEAKK0BAIC01MTMsNiArNTEzLDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIChleGFtcGxlczogYWxsb3csIGRlbnksIGJhbm5lcnMsIHR3aXN0IGFuZCBzcGF3bikuCiAgIyAKICAjU1RZTEUJPSAtRFBST0NFU1NfT1BUSU9OUwkjIEVuYWJsZSBsYW5ndWFnZSBleHRlbnNpb25zLgpAQCAtMjAsNyArMjEsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIE9wdGlvbmFsOiBDaGFuZ2luZyB0aGUgZGVmYXVsdCBkaXNwb3NpdGlvbiBvZiBsb2dmaWxlIHJlY29yZHMKLUBAIC01MzUsNiArNTQzLDcgQEAKK0BAIC01MzYsNiArNTM3LDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIFRoZSBMT0dfWFhYIG5hbWVzIGJlbG93IGFyZSB0YWtlbiBmcm9tIHRoZSAvdXNyL2luY2x1ZGUvc3lzbG9nLmggZmlsZS4KICAKICBGQUNJTElUWT0gTE9HX01BSUwJIyBMT0dfTUFJTCBpcyB3aGF0IG1vc3Qgc2VuZG1haWwgZGFlbW9ucyB1c2UKQEAgLTI4LDcgKzI5LDcgQEAKICAKICAjIFRoZSBzeXNsb2cgcHJpb3JpdHkgYXQgd2hpY2ggc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBhcmUgbG9nZ2VkLgogIAotQEAgLTYzMSw2ICs2NDAsNyBAQAorQEAgLTYzMiw2ICs2MzQsNyBAQCBUQUJMRVMJPSAtREhPU1RTX0RFTlk9XCIvZXRjL2hvc3RzLmRlbnlcCiAgIyBsb29rdXBzIGFsdG9nZXRoZXIsIHNlZSB0aGUgbmV4dCBzZWN0aW9uLgogIAogIFBBUkFOT0lEPSAtRFBBUkFOT0lECkBAIC0zNiw3ICszNyw3IEBACiAgCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IHR1cm5pbmcgb2ZmIGhvc3RuYW1lIGxvb2t1cHMKLUBAIC02NDQsNiArNjU0LDcgQEAKK0BAIC02NDUsNiArNjQ4LDcgQEAgUEFSQU5PSUQ9IC1EUEFSQU5PSUQKICAjIG1vZGUgKHNlZSBwcmV2aW91cyBzZWN0aW9uKSBhbmQgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uLgogIAogIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQpAQCAtNDQsNyArNDUsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IFR1cm5pbmcgb24gaG9zdCBBRERSRVNTIGNoZWNraW5nCi1AQCAtNjcwLDYgKzY4MSw3IEBACitAQCAtNjcxLDYgKzY3NSw3IEBAIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQogICMgU29sYXJpcyAyLngsIGFuZCBMaW51eC4gU2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgIwogICMgS0lMTF9PUFQ9IC1ES0lMTF9JUF9PUFRJT05TCkBAIC01Miw3ICs1Myw3IEBACiAgCiAgIyMgRW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUBAIC02NzcsOSArNjg5LDEwIEBACitAQCAtNjc4LDkgKzY4MywxMCBAQCBIT1NUTkFNRT0gLURBTFdBWVNfSE9TVE5BTUUKICAjIFByb3RlY3Rpb24gYWdhaW5zdCB3ZWlyZCBzaGVsbHMgb3Igd2VpcmQgbWFrZSBwcm9ncmFtcy4KICAKICBTSEVMTAk9IC9iaW4vc2gKQEAgLTY1LDcgKzY2LDcgQEAKICAJJChCVUdTKSAkKFNZU1RZUEUpICQoQVVUSCkgJChVTUFTSykgXAogIAktRFJFQUxfREFFTU9OX0RJUj1cIiQoUkVBTF9EQUVNT05fRElSKVwiICQoU1RZTEUpICQoS0lMTF9PUFQpIFwKICAJLURTRVZFUklUWT0kKFNFVkVSSVRZKSAtRFJGQzkzMV9USU1FT1VUPSQoUkZDOTMxX1RJTUVPVVQpIFwKLUBAIC03MTIsMTAgKzcyNSwxMSBAQAorQEAgLTcxMywxMSArNzE5LDEyIEBAIGFsbCBvdGhlcjogY29uZmlnLWNoZWNrIHRjcGQgdGNwZG1hdGNoIHQKICAKICBjb25maWctY2hlY2s6CiAgCUBzZXQgK2U7IHRlc3QgLW4gIiQoUkVBTF9EQUVNT05fRElSKSIgfHwgeyBtYWtlOyBleGl0IDE7IH0KQEAgLTgxLDMgKzgyLDQgQEAKICsJQGlmIFsgISAtZCBzaGFyZWQgXTsgdGhlbiBta2RpciBzaGFyZWQ7IGZpCiAgCiAgJChMSUIpOgkkKExJQl9PQkopCisgCXJtIC1mICQoTElCKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggMWVmZmVmMS4uM2VjZThjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCkBAIC00NSw2ICs0NSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9zYWZlX2Zpbmdlci44IFwKICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tdXNsLWRlY2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4ZGY5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1TVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKLURFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAotb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAotR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1ERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgotCi1UQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCi1UQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAke1RBUkdFVF9QQVRDSH0gXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjliMDhkYWNhOWJmOGVjY2FlOWIwZjg4NGFiYTQxZjllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwMGE2YmE0OTU4YzJkZDRhNmQ1Y2U2MGYwYTMzNWRhZjdlMzc5ZjUzNzRmMjc2ZjZiYTMxYTIyMWYwMmY2MDYiCi0KLXRleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCi0JIyB1cGRhdGUgcG9fZG9jdW1lbnQuCi0JY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlpZiBbIC1kIHRvb2xzIF07dGhlbgotCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCi0KLUZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKLUZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCi0gICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgotRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAotICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgotCi0jIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKLSMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCi0jIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQotIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgotUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTY2NDU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgorREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCitvbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCitHTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NvbXByZXNzX2RvYycsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCisKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1RBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKK1RBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRlOGY3MTQ5ODc2NzkzMDMwZTU1MThkZDhkNmU5NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM0MjcyZTQwNDJjNDYxODZkZGNkNjZiZDVkOTgwYzBjYTE0ZmY3MzQ0NDQ2ODZjY2Y4MTMxZjZlYzhiMTQyNyIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCisJIyB1cGRhdGUgcG9fZG9jdW1lbnQuCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlpZiBbIC1kIHRvb2xzIF07dGhlbgorCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCisKK0ZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKK0ZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAorICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgorCisjIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKKyMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCisjIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQorIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS0xLjcvZGViaWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2VhMGUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tIHRpbWUtMS43Lm9yaWcvY29uZmlndXJlLmluCi0rKysgdGltZS0xLjcvY29uZmlndXJlLmluCi1AQCAtMSwxMSArMSw4IEBACi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVCh0aW1lLmMpCi0tVkVSU0lPTj0xLjcKLS1BQ19TVUJTVChWRVJTSU9OKQotLVBBQ0tBR0U9dGltZQotLUFDX1NVQlNUKFBBQ0tBR0UpCi0rQU1fSU5JVF9BVVRPTUFLRSh0aW1lLCAxLjcpCi0gCi0tQUNfQVJHX1BST0dSQU0KLStBTV9NQUlOVEFJTkVSX01PREUKLSAKLSBkbmwgQ2hlY2tzIGZvciBwcm9ncmFtcy4KLSBBQ19QUk9HX0NDCi1AQCAtMTUsNyArMTIsNyBAQAotIGRubCBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KLSBBQ19IRUFERVJfU1REQwotIEFDX0hFQURFUl9TWVNfV0FJVAotLUFDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oKQotK0FDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oIHN5cy9yZXNvdXJjZS5oKQotIAotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLS0tLSB0aW1lLTEuNy5vcmlnL3ZlcnNpb24udGV4aQotKysrIHRpbWUtMS43L3ZlcnNpb24udGV4aQotQEAgLTEsMyArMSwzIEBACi0tQHNldCBVUERBVEVEIDEyIEp1bmUgMTk5NgotK0BzZXQgVVBEQVRFRCA5IE1heSAyMDAyCi0gQHNldCBFRElUSU9OIDEuNwotIEBzZXQgVkVSU0lPTiAxLjcKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUuYwotKysrIHRpbWUtMS43L3RpbWUuYwotQEAgLTE0Nyw2ICsxNDcsMTAgQEAKLSAgIE5VTEwKLSB9OwotIAwKLSsKLSsvKiBJZiB0cnVlLCBkbyBub3Qgc2hvdyB0aGUgZXhpdCBtZXNzYWdlICovCi0rc3RhdGljIGJvb2xlYW4gcXVpZXQ7Ci0rCi0gLyogSWYgdHJ1ZSwgc2hvdyBhbiBFbmdsaXNoIGRlc2NyaXB0aW9uIG5leHQgdG8gZWFjaCBzdGF0aXN0aWMuICAqLwotIHN0YXRpYyBib29sZWFuIHZlcmJvc2U7Ci0gCi1AQCAtMTcyLDYgKzE3Niw3IEBACi0gICB7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnfSwKLSAgIHsib3V0cHV0LWZpbGUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ28nfSwKLSAgIHsicG9ydGFiaWxpdHkiLCBub19hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsgIHsicXVpZXQiLCBub19hcmd1bWVudCxOVUxMLCAncSd9LAotICAgeyJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsIE5VTEwsICd2J30sCi0gICB7InZlcnNpb24iLCBub19hcmd1bWVudCwgTlVMTCwgJ1YnfSwKLSAgIHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KLUBAIC0zMzMsNyArMzM4LDggQEAKLSAgIGVsc2UgaWYgKFdJRlNJR05BTEVEIChyZXNwLT53YWl0c3RhdHVzKSkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkXG4iLAotIAkgICAgIFdURVJNU0lHIChyZXNwLT53YWl0c3RhdHVzKSk7Ci0tICBlbHNlIGlmIChXSUZFWElURUQgKHJlc3AtPndhaXRzdGF0dXMpICYmIFdFWElUU1RBVFVTIChyZXNwLT53YWl0c3RhdHVzKSkKLSsgIGVsc2UgaWYgKFdJRkVYSVRFRCAocmVzcC0+d2FpdHN0YXR1cykgJiYgV0VYSVRTVEFUVVMgKHJlc3AtPndhaXRzdGF0dXMpCi0rCSAgICYmICFxdWlldCkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIGV4aXRlZCB3aXRoIG5vbi16ZXJvIHN0YXR1cyAlZFxuIiwKLSAJICAgICBXRVhJVFNUQVRVUyAocmVzcC0+d2FpdHN0YXR1cykpOwotIAotQEAgLTUyMyw2ICs1MjksNyBAQAotICAgY2hhciAqZm9ybWF0OwkJCS8qIEZvcm1hdCBmb3VuZCBpbiBlbnZpcm9ubWVudC4gICovCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBvcHRpb24gZmxhZ3MuICAqLwotKyAgcXVpZXQgPSBmYWxzZTsKLSAgIHZlcmJvc2UgPSBmYWxzZTsKLSAgIG91dGZpbGUgPSBOVUxMOwotICAgb3V0ZnAgPSBzdGRlcnI7Ci1AQCAtNTM2LDcgKzU0Myw3IEBACi0gICBpZiAoZm9ybWF0KQotICAgICBvdXRwdXRfZm9ybWF0ID0gZm9ybWF0OwotIAotLSAgd2hpbGUgKChvcHRjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICIrYWY6bzpwdlYiLCBsb25nb3B0cywgKGludCAqKSAwKSkKLSsgIHdoaWxlICgob3B0YyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiK2FmOm86cHF2ViIsIGxvbmdvcHRzLCAoaW50ICopIDApKQotIAkgIT0gRU9GKQotICAgICB7Ci0gICAgICAgc3dpdGNoIChvcHRjKQotQEAgLTU1NSw2ICs1NjIsOSBAQAotIAljYXNlICdwJzoKLSAJICBvdXRwdXRfZm9ybWF0ID0gcG9zaXhfZm9ybWF0OwotIAkgIGJyZWFrOwotKwljYXNlICdxJzoKLSsJICBxdWlldCA9IHRydWU7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgJ3YnOgotIAkgIHZlcmJvc2UgPSB0cnVlOwotIAkgIGJyZWFrOwotQEAgLTY0Miw5ICs2NTIsOSBAQAotICAgZmZsdXNoIChvdXRmcCk7Ci0gCi0gICBpZiAoV0lGU1RPUFBFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXU1RPUFNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1NUT1BTSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZTSUdOQUxFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXVEVSTVNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1RFUk1TSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZFWElURUQgKHJlcy53YWl0c3RhdHVzKSkKLSAgICAgZXhpdCAoV0VYSVRTVEFUVVMgKHJlcy53YWl0c3RhdHVzKSk7Ci0gfQotQEAgLTY1Nyw3ICs2NjcsNyBAQAotICAgZnByaW50ZiAoc3RyZWFtLCAiXAotIFVzYWdlOiAlcyBbLWFwdlZdIFstZiBmb3JtYXRdIFstbyBmaWxlXSBbLS1hcHBlbmRdIFstLXZlcmJvc2VdXG5cCi0gICAgICAgIFstLXBvcnRhYmlsaXR5XSBbLS1mb3JtYXQ9Zm9ybWF0XSBbLS1vdXRwdXQ9ZmlsZV0gWy0tdmVyc2lvbl1cblwKLS0gICAgICAgWy0taGVscF0gY29tbWFuZCBbYXJnLi4uXVxuIiwKLSsgICAgICAgWy0tcXVpZXRdIFstLWhlbHBdIGNvbW1hbmQgW2FyZy4uLl1cbiIsCi0gCSAgIHByb2dyYW1fbmFtZSk7Ci0gICBleGl0IChzdGF0dXMpOwotIH0KLS0tLSB0aW1lLTEuNy5vcmlnL3Jlc3VzZS5oCi0rKysgdGltZS0xLjcvcmVzdXNlLmgKLUBAIC0zNiwxOSArMzYsOCBAQAotICMgaW5jbHVkZSA8c3lzL3J1c2FnZS5oPgotICNlbHNlCi0gIyBkZWZpbmUgVFZfTVNFQyB0dl91c2VjIC8gMTAwMAotLSMgaWYgSEFWRV9XQUlUMwotKyMgaWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAotICMgIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotLSMgZWxzZQotLS8qIFByb2Nlc3MgcmVzb3VyY2UgdXNhZ2Ugc3RydWN0dXJlLiAgKi8KLS1zdHJ1Y3QgcnVzYWdlCi0tewotLSAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CS8qIFVzZXIgdGltZSB1c2VkLiAgKi8KLS0gIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwkvKiBTeXN0ZW0gdGltZSB1c2VkLiAgKi8KLS0gIGludCBydV9tYXhyc3MsIHJ1X2l4cnNzLCBydV9pZHJzcywgcnVfaXNyc3MsCi0tICBydV9taW5mbHQsIHJ1X21hamZsdCwgcnVfbnN3YXAsIHJ1X2luYmxvY2ssIAotLSAgcnVfb3VibG9jaywgcnVfbXNnc25kLCBydV9tc2dyY3YsIHJ1X25zaWduYWxzLAotLSAgcnVfbnZjc3csIHJ1X25pdmNzdzsKLS19OwotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUudGV4aQotKysrIHRpbWUtMS43L3RpbWUudGV4aQotQEAgLTExLDYgKzExLDEyIEBACi0gQGZpbmFsb3V0Ci0gQGVuZCBpZnRleAotIAotK0BkaXJjYXRlZ29yeSBJbmRpdmlkdWFsIHV0aWxpdGllcwotK0BkaXJlbnRyeQotKyogdGltZTogKHRpbWUpLiAgICAgICAgICAgICAgICAgICAgIFJ1biBwcm9ncmFtcyBhbmQgc3VtbWFyaXplCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHJlc291cmNlIHVzYWdlLgotK0BlbmQgZGlyZW50cnkKLSsKLSBAaWZpbmZvCi0gVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdGhlIEdOVSBAY29kZXt0aW1lfSBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTE4NSw2ICsxOTEsMTAgQEAKLSBzeXMgJVMKLSBAZW5kIGV4YW1wbGUKLSAKLStAaXRlbSAtcQotK0BpdGVteCAtLXF1aWV0Ci0rU3VwcHJlc3Mgbm9uLXplcm8gZXJyb3IgY29kZSBmcm9tIHRoZSBleGVjdXRlZCBwcm9ncmFtLgotKwotIEBpdGVtIC12Ci0gQGl0ZW14IC0tdmVyYm9zZQotIEBjaW5kZXggZm9ybWF0Ci0tLS0gdGltZS0xLjcub3JpZy90aW1lLmluZm8KLSsrKyB0aW1lLTEuNy90aW1lLmluZm8KLUBAIC0xLDUgKzEsMTAgQEAKLS1UaGlzIGlzIEluZm8gZmlsZSAuL3RpbWUuaW5mbywgcHJvZHVjZWQgYnkgTWFrZWluZm8tMS41NSBmcm9tIHRoZSBpbnB1dAotLWZpbGUgdGltZS50ZXhpLgotK1RoaXMgaXMgdGltZS5pbmZvLCBwcm9kdWNlZCBieSBtYWtlaW5mbyB2ZXJzaW9uIDQuMSBmcm9tIHRpbWUudGV4aS4KLSsKLStJTkZPLURJUi1TRUNUSU9OIEluZGl2aWR1YWwgdXRpbGl0aWVzCi0rU1RBUlQtSU5GTy1ESVItRU5UUlkKLSsqIHRpbWU6ICh0aW1lKS4gICAgICAgICAgICAgICAgICAgICBSdW4gcHJvZ3JhbXMgYW5kIHN1bW1hcml6ZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSByZXNvdXJjZSB1c2FnZS4KLStFTkQtSU5GTy1ESVItRU5UUlkKLSAKLSAgICBUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB0aGUgR05VIGB0aW1lJyBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTMxLDcgKzM2LDcgQEAKLSAKLSAqIFJlc291cmNlIE1lYXN1cmVtZW50OjogIE1lYXN1cmluZyBwcm9ncmFtIHJlc291cmNlIHVzZS4KLSAKLS0gLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLQotKyAtLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLS0KLSAKLSBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSAKLUBAIC01OCwxNCArNjMsMTQgQEAKLSAgICBUaGUgYHRpbWUnIGNvbW1hbmQgcnVucyBhbm90aGVyIHByb2dyYW0sIHRoZW4gZGlzcGxheXMgaW5mb3JtYXRpb24KLSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhhdCBwcm9ncmFtLCBjb2xsZWN0ZWQgYnkgdGhlIHN5c3RlbSB3aGlsZQotIHRoZSBwcm9ncmFtIHdhcyBydW5uaW5nLiAgWW91IGNhbiBzZWxlY3Qgd2hpY2ggaW5mb3JtYXRpb24gaXMgcmVwb3J0ZWQKLS1hbmQgdGhlIGZvcm1hdCBpbiB3aGljaCBpdCBpcyBzaG93biAoKm5vdGUgU2V0dGluZyBGb3JtYXQ6Oi4pLCBvciBoYXZlCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKCpub3RlIFNldHRpbmcgRm9ybWF0OjopLCBvciBoYXZlCi0gYHRpbWUnIHNhdmUgdGhlIGluZm9ybWF0aW9uIGluIGEgZmlsZSBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgaXQgb24gdGhlCi0tc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6LikuCi0rc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6KS4KLSAKLSAgICBUaGUgcmVzb3VyY2VzIHRoYXQgYHRpbWUnIGNhbiByZXBvcnQgb24gZmFsbCBpbnRvIHRoZSBnZW5lcmFsCi0gY2F0ZWdvcmllcyBvZiB0aW1lLCBtZW1vcnksIGFuZCBJL08gYW5kIElQQyBjYWxscy4gIFNvbWUgc3lzdGVtcyBkbyBub3QKLSBwcm92aWRlIG11Y2ggaW5mb3JtYXRpb24gYWJvdXQgcHJvZ3JhbSByZXNvdXJjZSB1c2U7IGB0aW1lJyByZXBvcnRzCi0tdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKCpub3RlIEFjY3VyYWN5OjouKS4KLSt1bmF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhcyB6ZXJvIHZhbHVlcyAoKm5vdGUgQWNjdXJhY3k6OikuCi0gCi0gICAgVGhlIGZvcm1hdCBvZiB0aGUgYHRpbWUnIGNvbW1hbmQgaXM6Ci0gCi1AQCAtMTMyLDYgKzEzNywxMCBAQAotICAgICAgICAgICB1c2VyICVVCi0gICAgICAgICAgIHN5cyAlUwotIAotK2AtcScKLStgLS1xdWlldCcKLSsgICAgIFN1cHByZXNzIG5vbi16ZXJvIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbS4KLSsKLSBgLXYnCi0gYC0tdmVyYm9zZScKLSAgICAgIFVzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlCi1AQCAtMTc0LDcgKzE4Myw3IEBACi0gICAgVGhlIHJlc291cmNlIHNwZWNpZmllcnMsIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRob3NlIHJlY29nbml6ZWQgYnkKLSB0aGUgYHRjc2gnIGJ1aWx0aW4gYHRpbWUnIGNvbW1hbmQsIGFyZSBsaXN0ZWQgYmVsb3cuICBOb3QgYWxsIHJlc291cmNlcwotIGFyZSBtZWFzdXJlZCBieSBhbGwgdmVyc2lvbnMgb2YgVW5peCwgc28gc29tZSBvZiB0aGUgdmFsdWVzIG1pZ2h0IGJlCi0tcmVwb3J0ZWQgYXMgemVybyAoKm5vdGUgQWNjdXJhY3k6Oi4pLgotK3JlcG9ydGVkIGFzIHplcm8gKCpub3RlIEFjY3VyYWN5OjopLgotIAotICogTWVudToKLSAKLUBAIC0zMDgsMTEgKzMxNywxMSBAQAotIGAtbyBGSUxFJwotIGAtLW91dHB1dD1GSUxFJwotICAgICAgV3JpdGUgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIEZJTEUuICBCeSBkZWZhdWx0LCB0aGlzCi0tICAgICAqb3ZlcndyaXRlcyogdGhlIGZpbGUsIGRlc3Ryb3lpbmcgdGhlIGZpbGUncyBwcmV2aW91cyBjb250ZW50cy4KLSsgICAgIF9vdmVyd3JpdGVzXyB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGAtbycgb3IKLSAgICAgIGAtLW91dHB1dCcgb3B0aW9uLgotIAotQEAgLTQzNyw3ICs0NDYsNyBAQAotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4KLSAKLSBgLWYgRk9STUFUJwotQEAgLTQ2MiwxNyArNDcxLDE3IEBACi0gCi0gHwotIFRhZyBUYWJsZToKLS1Ob2RlOiBUb3B/OTM0Ci0tTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTcyNQotLU5vZGU6IFNldHRpbmcgRm9ybWF0fzM2NzgKLS1Ob2RlOiBGb3JtYXQgU3RyaW5nfzQ5MDcKLS1Ob2RlOiBUaW1lIFJlc291cmNlc382MjE0Ci0tTm9kZTogTWVtb3J5IFJlc291cmNlc382ODQ0Ci0tTm9kZTogSS9PIFJlc291cmNlc383NTQ5Ci0tTm9kZTogQ29tbWFuZCBJbmZvfzg3NDcKLS1Ob2RlOiBSZWRpcmVjdGluZ384OTY0Ci0tTm9kZTogRXhhbXBsZXN/OTc1NAotLU5vZGU6IEFjY3VyYWN5fzEyMDY0Ci0tTm9kZTogSW52b2tpbmcgdGltZX8xMzU4NgotK05vZGU6IFRvcH8xMTE1Ci0rTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTkwOAotK05vZGU6IFNldHRpbmcgRm9ybWF0fzM4NTgKLStOb2RlOiBGb3JtYXQgU3RyaW5nfzUxNjQKLStOb2RlOiBUaW1lIFJlc291cmNlc382NDcwCi0rTm9kZTogTWVtb3J5IFJlc291cmNlc383MTAwCi0rTm9kZTogSS9PIFJlc291cmNlc383ODA1Ci0rTm9kZTogQ29tbWFuZCBJbmZvfzkwMDMKLStOb2RlOiBSZWRpcmVjdGluZ385MjIwCi0rTm9kZTogRXhhbXBsZXN/MTAwMTAKLStOb2RlOiBBY2N1cmFjeX8xMjMyMAotK05vZGU6IEludm9raW5nIHRpbWV/MTM4NDIKLSAfCi0gRW5kIFRhZyBUYWJsZQotLS0tIHRpbWUtMS43Lm9yaWcvdGltZS5odG1sCi0rKysgdGltZS0xLjcvdGltZS5odG1sCi1AQCAtMCwwICsxLDEwMjEgQEAKLSs8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgotKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwL2xvb3NlLmR0ZCI+Ci0rPEhUTUw+Ci0rPCEtLSBDcmVhdGVkIG9uIFNlcHRlbWJlciwgMSAyMDAzIGJ5IHRleGkyaHRtbCAxLjY2IC0tPgotKzwhLS0KLStXcml0dGVuIGJ5OiBMaW9uZWwgQ29ucyA8TGlvbmVsLkNvbnNAY2Vybi5jaD4gKG9yaWdpbmFsIGF1dGhvcikKLSsgICAgICAgICAgICBLYXJsIEJlcnJ5ICA8a2FybEBmcmVlZnJpZW5kcy5vcmc+Ci0rICAgICAgICAgICAgT2xhZiBCYWNobWFubiA8b2JhY2htYW5AbWF0aGVtYXRpay51bmkta2wuZGU+Ci0rICAgICAgICAgICAgYW5kIG1hbnkgb3RoZXJzLgotK01haW50YWluZWQgYnk6IE1hbnkgY3JlYXRpdmUgcGVvcGxlIDxkZXZAdGV4aTJodG1sLmN2c2hvbWUub3JnPgotK1NlbmQgYnVncyBhbmQgc3VnZ2VzdGlvbnMgdG8gPHVzZXJzQHRleGkyaHRtbC5jdnNob21lLm9yZz4KLSsKLSstLT4KLSs8SEVBRD4KLSs8VElUTEU+TWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9USVRMRT4KLSsKLSs8TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci0rPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotKzxNRVRBIE5BTUU9IkdlbmVyYXRvciIgQ09OVEVOVD0idGV4aTJodG1sIDEuNjYiPgotKwotKzwvSEVBRD4KLSsKLSs8Qk9EWSBMQU5HPSJlbiIgQkdDT0xPUj0iI0ZGRkZGRiIgVEVYVD0iIzAwMDAwMCIgTElOSz0iIzAwMDBGRiIgVkxJTks9IiM4MDAwODAiIEFMSU5LPSIjRkYwMDAwIj4KLSsKLSs8QSBOQU1FPSJTRUNfVG9wIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0gxPgotKwotKzxQPgotKwotK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHRoZSBHTlUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBmb3IgcnVubmluZyBwcm9ncmFtcwotK2FuZCBzdW1tYXJpemluZyB0aGUgc3lzdGVtIHJlc291cmNlcyB0aGV5IHVzZS4KLStUaGlzIGlzIGVkaXRpb24gMS43LCBmb3IgdmVyc2lvbiAxLjcuCi0rPC9QPgotKzxQPgotKwotKzwvUD4KLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgcHJvZ3JhbSByZXNvdXJjZSB1c2UuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPiAtLSBUaGUgRGV0YWlsZWQgTm9kZSBMaXN0aW5nIC0tLQotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+Ci0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U2VsZWN0aW5nIHRoZSBpbmZvcm1hdGlvbiByZXBvcnRlZCBieSA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5UaGUgaW5mb3JtYXRpb24gPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydC48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+V3JpdGluZyB0aGUgaW5mb3JtYXRpb24gdG8gYSBmaWxlLjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkV4YW1wbGVzIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5MaW1pdGF0aW9ucyBvbiB0aGUgYWNjdXJhY3kgb2YgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgdG8gdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBGb3JtYXQgU3RyaW5nCi0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9MT4KLSs8QSBOQU1FPSJTRUMxIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZsdDsmbHQ7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxBIE5BTUU9IlJlc291cmNlIE1lYXN1cmVtZW50Ij48L0E+Ci0rPEgxPiAxLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UgPC9IMT4KLSs8IS0tZG9jaWQ6OlNFQzE6Oi0tPgotKzxQPgotKwotK1RoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIHJ1bnMgYW5vdGhlciBwcm9ncmFtLCB0aGVuIGRpc3BsYXlzIGluZm9ybWF0aW9uCi0rYWJvdXQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoYXQgcHJvZ3JhbSwgY29sbGVjdGVkIGJ5IHRoZSBzeXN0ZW0gd2hpbGUKLSt0aGUgcHJvZ3JhbSB3YXMgcnVubmluZy4gIFlvdSBjYW4gc2VsZWN0IHdoaWNoIGluZm9ybWF0aW9uIGlzIHJlcG9ydGVkCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4pLCBvciBoYXZlCi0rPENPREU+dGltZTwvQ09ERT4gc2F2ZSB0aGUgaW5mb3JtYXRpb24gaW4gYSBmaWxlIGluc3RlYWQgb2YgZGlzcGxheWluZyBpdCBvbiB0aGUKLStzY3JlZW4gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZXMgdGhhdCA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0IG9uIGZhbGwgaW50byB0aGUgZ2VuZXJhbAotK2NhdGVnb3JpZXMgb2YgdGltZSwgbWVtb3J5LCBhbmQgSS9PIGFuZCBJUEMgY2FsbHMuICBTb21lIHN5c3RlbXMgZG8gbm90Ci0rcHJvdmlkZSBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHByb2dyYW0gcmVzb3VyY2UgdXNlOyA8Q09ERT50aW1lPC9DT0RFPgotK3JlcG9ydHMgdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYMSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+IHRvIG1lYXN1cmUgdGhlIHRpbWUgYW5kIG90aGVyCi0rcmVzb3VyY2VzIHVzZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSA8Q09ERT5ncmVwPC9DT0RFPjoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIGdyZXAgbm9ib2R5IC9ldGMvYWxpYXNlcwotK25vYm9keTovZGV2L251bGwKLStldGMtZmlsZXM6bm9ib2R5Ci0rbWlzYy1ncm91cDpub2JvZHkKLSswLjA3dXNlciAwLjUwc3lzdGVtIDA6MDYuNjllbGFwc2VkIDglQ1BVICgwYXZndGV4dCs0ODlhdmdkYXRhIDMyNG1heHJlc2lkZW50KWsKLSs0NmlucHV0cys3b3V0cHV0cyAoNDNtYWpvcisyNTFtaW5vcilwYWdlZmF1bHRzIDBzd2FwcwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK01haWwgc3VnZ2VzdGlvbnMgYW5kIGJ1ZyByZXBvcnRzIGZvciBHTlUgPENPREU+dGltZTwvQ09ERT4gdG8KLSs8Q09ERT5idWctZ251LXV0aWxzQHByZXAuYWkubWl0LmVkdTwvQ09ERT4uICBQbGVhc2UgaW5jbHVkZSB0aGUgdmVyc2lvbiBvZgotKzxDT0RFPnRpbWU8L0NPREU+LCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIGA8U0FNUD50aW1lIC0tdmVyc2lvbjwvU0FNUD4nLCBhbmQgdGhlCi0rb3BlcmF0aW5nIHN5c3RlbSBhbmQgQyBjb21waWxlciB5b3UgdXNlZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TZWxlY3RpbmcgdGhlIGluZm9ybWF0aW9uIHJlcG9ydGVkIGJ5IDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBpbmZvcm1hdGlvbiA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5Xcml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byBhIGZpbGUuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+MS40IEV4YW1wbGVzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+RXhhbXBsZXMgb2YgdXNpbmcgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkxpbWl0YXRpb25zIG9uIHRoZSBhY2N1cmFjeSBvZiA8Q09ERT50aW1lPC9DT0RFPiBvdXRwdXQuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPjEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZC48L1REPjwvVFI+Ci0rPC9UQUJMRT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJTZXR0aW5nIEZvcm1hdCI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMyIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMjo6LS0+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gdXNlcyBhIDxFTT5mb3JtYXQgc3RyaW5nPC9FTT4gdG8gZGV0ZXJtaW5lIHdoaWNoIGluZm9ybWF0aW9uIHRvCi0rZGlzcGxheSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGNvbW1hbmQgaXQgcnVucy4gIFNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+LCBmb3IgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBmb3JtYXQgc3RyaW5nIGNvbnRlbnRzLgotKzwvUD4KLSs8UD4KLSsKLStZb3UgY2FuIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGxpc3RlZAotK2JlbG93LiAgSWYgbm8gZm9ybWF0IGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBidXQgdGhlCi0rPENPREU+VElNRTwvQ09ERT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCBpdHMgdmFsdWUgaXMgdXNlZCBhcyB0aGUgZm9ybWF0Ci0rc3RyaW5nLiAgT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBmb3JtYXQgYnVpbHQgaW50byA8Q09ERT50aW1lPC9DT0RFPiBpcyB1c2VkOgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+JVV1c2VyICVTc3lzdGVtICVFZWxhcHNlZCAlUENQVSAoJVh0ZXh0KyVEZGF0YSAlTW1heClrCi0rJUlpbnB1dHMrJU9vdXRwdXRzICglRm1ham9yKyVSbWlub3IpcGFnZWZhdWx0cyAlV3N3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rVGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHNldCB0aGUgZm9ybWF0IGFyZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tZiA8VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tZm9ybWF0PTxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgotKzxERD5Vc2UgPFZBUj5mb3JtYXQ8L1ZBUj4gYXMgdGhlIGZvcm1hdCBzdHJpbmcuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tcDwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tcG9ydGFiaWxpdHk8L0NPREU+Ci0rPEREPlVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCBzdHJpbmcsIGZvciBjb25mb3JtYW5jZSB3aXRoIFBPU0lYIHN0YW5kYXJkCi0rMTAwMy4yOgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5yZWFsICVlCi0rdXNlciAlVQotK3N5cyAlUwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXF1aWV0PC9DT0RFPgotKzxERD5TdXBwcmVzcyBub24temVybyBlcnJvciBjb2RlIGZyb20gdGhlIGV4ZWN1dGVkIHByb2dyYW0uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tdjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tdmVyYm9zZTwvQ09ERT4KLSs8REQ+PEEgTkFNRT0iSURYMiI+PC9BPgotK1VzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlIHBpZWNlIG9mCi0raW5mb3JtYXRpb24gb24gdGhlIHByb2dyYW0ncyByZXNvdXJjZSB1c2Ugb24gaXRzIG93biBsaW5lLCB3aXRoIGFuCi0rRW5nbGlzaCBkZXNjcmlwdGlvbiBvZiBpdHMgbWVhbmluZy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkZvcm1hdCBTdHJpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDMyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4yIFRoZSBGb3JtYXQgU3RyaW5nIDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMzOjotLT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJJRFgzIj48L0E+Ci0rPEEgTkFNRT0iSURYNCI+PC9BPgotK1RoZSA8RU0+Zm9ybWF0IHN0cmluZzwvRU0+IGNvbnRyb2xzIHRoZSBjb250ZW50cyBvZiB0aGUgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LgotK0l0IGNvbnNpc3RzIG9mIDxFTT5yZXNvdXJjZSBzcGVjaWZpZXJzPC9FTT4gYW5kIDxFTT5lc2NhcGVzPC9FTT4sIGludGVyc3BlcnNlZAotK3dpdGggcGxhaW4gdGV4dC4KLSs8L1A+Ci0rPFA+Ci0rCi0rQSBiYWNrc2xhc2ggaW50cm9kdWNlcyBhbiA8RU0+ZXNjYXBlPC9FTT4sIHdoaWNoIGlzIHRyYW5zbGF0ZWQKLStpbnRvIGEgc2luZ2xlIHByaW50aW5nIGNoYXJhY3RlciB1cG9uIG91dHB1dC4gIFRoZSB2YWxpZCBlc2NhcGVzIGFyZQotK2xpc3RlZCBiZWxvdy4gIEFuIGludmFsaWQgZXNjYXBlIGlzIG91dHB1dCBhcyBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQKLStieSBhIGJhY2tzbGFzaC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5cdDwvQ09ERT4KLSs8REQ+YSB0YWIgY2hhcmFjdGVyCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cbjwvQ09ERT4KLSs8REQ+YSBuZXdsaW5lCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cXDwvQ09ERT4KLSs8REQ+YSBsaXRlcmFsIGJhY2tzbGFzaAotKzwvREw+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gYWx3YXlzIHByaW50cyBhIG5ld2xpbmUgYWZ0ZXIgcHJpbnRpbmcgdGhlIHJlc291cmNlIHVzZQotK2luZm9ybWF0aW9uLCBzbyBub3JtYWxseSBmb3JtYXQgc3RyaW5ncyBkbyBub3QgZW5kIHdpdGggYSBuZXdsaW5lCi0rY2hhcmFjdGVyIChvciBgPFNBTVA+XG48L1NBTVA+JykuCi0rPC9QPgotKzxQPgotKwotK0EgcmVzb3VyY2Ugc3BlY2lmaWVyIGNvbnNpc3RzIG9mIGEgcGVyY2VudCBzaWduIGZvbGxvd2VkIGJ5IGFub3RoZXIKLStjaGFyYWN0ZXIuICBBbiBpbnZhbGlkIHJlc291cmNlIHNwZWNpZmllciBpcyBvdXRwdXQgYXMgYSBxdWVzdGlvbiBtYXJrCi0rZm9sbG93ZWQgYnkgdGhlIGludmFsaWQgY2hhcmFjdGVyLiAgVXNlIGA8U0FNUD4lJTwvU0FNUD4nIHRvIG91dHB1dCBhIGxpdGVyYWwKLStwZXJjZW50IHNpZ24uCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZSBzcGVjaWZpZXJzLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aG9zZSByZWNvZ25pemVkIGJ5IHRoZQotKzxDT0RFPnRjc2g8L0NPREU+IGJ1aWx0aW4gPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCwgYXJlIGxpc3RlZCBiZWxvdy4gIE5vdCBhbGwKLStyZXNvdXJjZXMgYXJlIG1lYXN1cmVkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBVbml4LCBzbyBzb21lIG9mIHRoZSB2YWx1ZXMKLSttaWdodCBiZSByZXBvcnRlZCBhcyB6ZXJvIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT4pLgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iVGltZSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjEgVGltZSBSZXNvdXJjZXMgPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzQ6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+RTwvQ09ERT4KLSs8REQ+RWxhcHNlZCByZWFsICh3YWxsIGNsb2NrKSB0aW1lIHVzZWQgYnkgdGhlIHByb2Nlc3MsIGluCi0rW2hvdXJzOl1taW51dGVzOnNlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5lPC9DT0RFPgotKzxERD5FbGFwc2VkIHJlYWwgKHdhbGwgY2xvY2spIHRpbWUgdXNlZCBieSB0aGUgcHJvY2VzcywgaW4KLStzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UzwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHVzZWQgYnkgdGhlIHN5c3RlbSBvbiBiZWhhbGYgb2YgdGhlIHByb2Nlc3MKLSsoaW4ga2VybmVsIG1vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+VTwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHRoYXQgdGhlIHByb2Nlc3MgdXNlZCBkaXJlY3RseSAoaW4gdXNlcgotK21vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UDwvQ09ERT4KLSs8REQ+UGVyY2VudGFnZSBvZiB0aGUgQ1BVIHRoYXQgdGhpcyBqb2IgZ290LiAgVGhpcyBpcyBqdXN0IHVzZXIgKyBzeXN0ZW0KLSt0aW1lcyBkaXZpZWQgYnkgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9Ik1lbW9yeSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjIgTWVtb3J5IFJlc291cmNlcyA8L0gzPgotKzwhLS1kb2NpZDo6U0VDNTo6LS0+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5NPC9DT0RFPgotKzxERD5NYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIG9mIHRoZSBwcm9jZXNzIGR1cmluZyBpdHMgbGlmZXRpbWUsIGluCi0rS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+dDwvQ09ERT4KLSs8REQ+QXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcywgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+SzwvQ09ERT4KLSs8REQ+QXZlcmFnZSB0b3RhbCAoZGF0YStzdGFjayt0ZXh0KSBtZW1vcnkgdXNlIG9mIHRoZSBwcm9jZXNzLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5EPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyB1bnNoYXJlZCBkYXRhIGFyZWEsIGluIEtpbG9ieXRlcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnA8L0NPREU+Ci0rPEREPkF2ZXJhZ2Ugc2l6ZSBvZiB0aGUgcHJvY2VzcydzIHVuc2hhcmVkIHN0YWNrLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5YPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyBzaGFyZWQgdGV4dCwgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+WjwvQ09ERT4KLSs8REQ+U3lzdGVtJ3MgcGFnZSBzaXplLCBpbiBieXRlcy4gIFRoaXMgaXMgYSBwZXItc3lzdGVtIGNvbnN0YW50LCBidXQKLSt2YXJpZXMgYmV0d2VlbiBzeXN0ZW1zLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSS9PIFJlc291cmNlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM2Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuMyBJL08gUmVzb3VyY2VzIDwvSDM+Ci0rPCEtLWRvY2lkOjpTRUM2OjotLT4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPkY8L0NPREU+Ci0rPEREPk51bWJlciBvZiBtYWpvciwgb3IgSS9PLXJlcXVpcmluZywgcGFnZSBmYXVsdHMgdGhhdCBvY2N1cnJlZCB3aGlsZSB0aGUKLStwcm9jZXNzIHdhcyBydW5uaW5nLiAgVGhlc2UgYXJlIGZhdWx0cyB3aGVyZSB0aGUgcGFnZSBoYXMgYWN0dWFsbHkKLSttaWdyYXRlZCBvdXQgb2YgcHJpbWFyeSBtZW1vcnkuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5SPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgbWlub3IsIG9yIHJlY292ZXJhYmxlLCBwYWdlIGZhdWx0cy4gIFRoZXNlIGFyZSBwYWdlcyB0aGF0IGFyZQotK25vdCB2YWxpZCAoc28gdGhleSBmYXVsdCkgYnV0IHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGNsYWltZWQgYnkgb3RoZXIKLSt2aXJ0dWFsIHBhZ2VzLiAgVGh1cyB0aGUgZGF0YSBpbiB0aGUgcGFnZSBpcyBzdGlsbCB2YWxpZCBidXQgdGhlIHN5c3RlbQotK3RhYmxlcyBtdXN0IGJlIHVwZGF0ZWQuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5XPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgdGltZXMgdGhlIHByb2Nlc3Mgd2FzIHN3YXBwZWQgb3V0IG9mIG1haW4gbWVtb3J5LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+YzwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9jZXNzIHdhcyBjb250ZXh0LXN3aXRjaGVkIGludm9sdW50YXJpbHkgKGJlY2F1c2UKLSt0aGUgdGltZSBzbGljZSBleHBpcmVkKS4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnc8L0NPREU+Ci0rPEREPk51bWJlciBvZiB0aW1lcyB0aGF0IHRoZSBwcm9ncmFtIHdhcyBjb250ZXh0LXN3aXRjaGVkIHZvbHVudGFyaWx5LCBmb3IKLStpbnN0YW5jZSB3aGlsZSB3YWl0aW5nIGZvciBhbiBJL08gb3BlcmF0aW9uIHRvIGNvbXBsZXRlLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+STwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIGZpbGUgc3lzdGVtIGlucHV0cyBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPk88L0NPREU+Ci0rPEREPk51bWJlciBvZiBmaWxlIHN5c3RlbSBvdXRwdXRzIGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+cjwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHNvY2tldCBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnM8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzb2NrZXQgbWVzc2FnZXMgc2VudCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPms8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzaWduYWxzIGRlbGl2ZXJlZCB0byB0aGUgcHJvY2Vzcy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkNvbW1hbmQgSW5mbyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM3Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuNCBDb21tYW5kIEluZm8gPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzc6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+QzwvQ09ERT4KLSs8REQ+TmFtZSBhbmQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvZiB0aGUgY29tbWFuZCBiZWluZyB0aW1lZC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPng8L0NPREU+Ci0rPEREPkV4aXQgc3RhdHVzIG9mIHRoZSBjb21tYW5kLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iUmVkaXJlY3RpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4zIFJlZGlyZWN0aW5nIE91dHB1dCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDODo6LS0+Ci0rPFA+Ci0rCi0rQnkgZGVmYXVsdCwgPENPREU+dGltZTwvQ09ERT4gd3JpdGVzIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byB0aGUKLStzdGFuZGFyZCBlcnJvciBzdHJlYW0uICBUaGUgb3B0aW9ucyBiZWxvdyBtYWtlIGl0IHdyaXRlIHRoZSBzdGF0aXN0aWNzCi0rdG8gYSBmaWxlIGluc3RlYWQuICBEb2luZyB0aGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHByb2dyYW0geW91J3JlCi0rcnVubmluZyB3cml0ZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIG9yIHlvdSdyZSBydW5uaW5nIDxDT0RFPnRpbWU8L0NPREU+Ci0rbm9uaW50ZXJhY3RpdmVseSBvciBpbiB0aGUgYmFja2dyb3VuZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uICBCeSBkZWZhdWx0LCB0aGlzCi0rPEVNPm92ZXJ3cml0ZXM8L0VNPiB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWFwcGVuZDwvQ09ERT4KLSs8REQ+PEVNPkFwcGVuZDwvRU0+IHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLStvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGA8U0FNUD4tbzwvU0FNUD4nIG9yCi0rYDxTQU1QPi0tb3V0cHV0PC9TQU1QPicgb3B0aW9uLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iRXhhbXBsZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDI+IDEuNCBFeGFtcGxlcyA8L0gyPgotKzwhLS1kb2NpZDo6U0VDOTo6LS0+Ci0rPFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD53YyAvZXRjL2hvc3RzPC9TQU1QPicgYW5kIHNob3cgdGhlIGRlZmF1bHQgaW5mb3JtYXRpb246Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSB3YyAvZXRjL2hvc3RzCi0rICAgICAgMzUgICAgIDExMSAgICAxMTM0IC9ldGMvaG9zdHMKLSswLjAwdXNlciAwLjAxc3lzdGVtIDA6MDAuMDRlbGFwc2VkIDI1JUNQVSAoMGF2Z3RleHQrMGF2Z2RhdGEgMG1heHJlc2lkZW50KWsKLSsxaW5wdXRzKzFvdXRwdXRzICgwbWFqb3IrMG1pbm9yKXBhZ2VmYXVsdHMgMHN3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD5scyAtRnM8L1NBTVA+JyBhbmQgc2hvdyBqdXN0IHRoZSB1c2VyLCBzeXN0ZW0sIGFuZAotK3dhbGwtY2xvY2sgdGltZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIC1mICZxdW90O1x0JUUgcmVhbCxcdCVVIHVzZXIsXHQlUyBzeXMmcXVvdDsgbHMgLUZzCi0rdG90YWwgMTYKLSsxIGFjY291bnQvICAgICAgMSBkYi8gICAgICAgICAgIDEgbWFpbC8gICAgICAgICAxIHJ1bi8KLSsxIGJhY2t1cHMvICAgICAgMSBlbWFjcy8gICAgICAgIDEgbXNncy8gICAgICAgICAxIHJ3aG8vCi0rMSBjcmFzaC8gICAgICAgIDEgZ2FtZXMvICAgICAgICAxIHByZXNlcnZlLyAgICAgMSBzcG9vbC8KLSsxIGNyb24vICAgICAgICAgMSBsb2cvICAgICAgICAgIDEgcXVvdGFzLyAgICAgICAxIHRtcC8KLSsgICAgICAgIDA6MDAuMDMgcmVhbCwgICAwLjAwIHVzZXIsICAgICAgMC4wMSBzeXMKLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLStFZGl0IHRoZSBmaWxlIGA8VFQ+LmJhc2hyYzwvVFQ+JyBhbmQgaGF2ZSA8Q09ERT50aW1lPC9DT0RFPiBhcHBlbmQgdGhlIGVsYXBzZWQgdGltZQotK2FuZCBudW1iZXIgb2Ygc2lnbmFscyB0byB0aGUgZmlsZSBgPFRUPmxvZzwvVFQ+JywgcmVhZGluZyB0aGUgZm9ybWF0IHN0cmluZwotK2Zyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxDT0RFPlRJTUU8L0NPREU+OgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIGV4cG9ydCBUSU1FPSZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGJhc2ggb3Iga3NoCi0rZWckIHNldGVudiBUSU1FICZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGNzaCBvciB0Y3NoCi0rZWckIHRpbWUgLWEgLW8gbG9nIGVtYWNzIC5iYXNocmMKLStlZyQgY2F0IGxvZwotKyAgICAgICAgMDoxNi41NSwgICAgICAgIDcyNgotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK1J1biB0aGUgY29tbWFuZCBgPFNBTVA+c2xlZXAgNDwvU0FNUD4nIGFuZCBzaG93IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgaXQKLSt2ZXJib3NlbHk6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSAtdiBzbGVlcCA0Ci0rICAgICAgICBDb21tYW5kIGJlaW5nIHRpbWVkOiAmcXVvdDtzbGVlcCA0JnF1b3Q7Ci0rICAgICAgICBVc2VyIHRpbWUgKHNlY29uZHMpOiAwLjAwCi0rICAgICAgICBTeXN0ZW0gdGltZSAoc2Vjb25kcyk6IDAuMDUKLSsgICAgICAgIFBlcmNlbnQgb2YgQ1BVIHRoaXMgam9iIGdvdDogMSUKLSsgICAgICAgIEVsYXBzZWQgKHdhbGwgY2xvY2spIHRpbWUgKGg6bW06c3Mgb3IgbTpzcyk6IDA6MDQuMjYKLSsgICAgICAgIEF2ZXJhZ2Ugc2hhcmVkIHRleHQgc2l6ZSAoa2J5dGVzKTogMzYKLSsgICAgICAgIEF2ZXJhZ2UgdW5zaGFyZWQgZGF0YSBzaXplIChrYnl0ZXMpOiAyNAotKyAgICAgICAgQXZlcmFnZSBzdGFjayBzaXplIChrYnl0ZXMpOiAwCi0rICAgICAgICBBdmVyYWdlIHRvdGFsIHNpemUgKGtieXRlcyk6IDYwCi0rICAgICAgICBNYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAzMgotKyAgICAgICAgQXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSAoa2J5dGVzKTogMjQKLSsgICAgICAgIE1ham9yIChyZXF1aXJpbmcgSS9PKSBwYWdlIGZhdWx0czogMwotKyAgICAgICAgTWlub3IgKHJlY2xhaW1pbmcgYSBmcmFtZSkgcGFnZSBmYXVsdHM6IDAKLSsgICAgICAgIFZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAxMQotKyAgICAgICAgSW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlczogMAotKyAgICAgICAgU3dhcHM6IDAKLSsgICAgICAgIEZpbGUgc3lzdGVtIGlucHV0czogMwotKyAgICAgICAgRmlsZSBzeXN0ZW0gb3V0cHV0czogMQotKyAgICAgICAgU29ja2V0IG1lc3NhZ2VzIHNlbnQ6IDAKLSsgICAgICAgIFNvY2tldCBtZXNzYWdlcyByZWNlaXZlZDogMAotKyAgICAgICAgU2lnbmFscyBkZWxpdmVyZWQ6IDEKLSsgICAgICAgIFBhZ2Ugc2l6ZSAoYnl0ZXMpOiA0MDk2Ci0rICAgICAgICBFeGl0IHN0YXR1czogMAotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzxBIE5BTUU9IkFjY3VyYWN5Ij48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzEwIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS41IEFjY3VyYWN5IDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMxMDo6LS0+Ci0rPFA+Ci0rCi0rVGhlIGVsYXBzZWQgdGltZSBpcyBub3QgY29sbGVjdGVkIGF0b21pY2FsbHkgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIHRoZQotK3Byb2dyYW07IGFzIGEgcmVzdWx0LCBpbiBiaXphcnJlIGNpcmN1bXN0YW5jZXMgKGlmIHRoZSA8Q09ERT50aW1lPC9DT0RFPgotK2NvbW1hbmQgZ2V0cyBzdG9wcGVkIG9yIHN3YXBwZWQgb3V0IGluIGJldHdlZW4gd2hlbiB0aGUgcHJvZ3JhbSBiZWluZwotK3RpbWVkIGV4aXRzIGFuZCB3aGVuIDxDT0RFPnRpbWU8L0NPREU+IGNhbGN1bGF0ZXMgaG93IGxvbmcgaXQgdG9vayB0byBydW4pLCBpdAotK2NvdWxkIGJlIG11Y2ggbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBleGVjdXRpb24gdGltZS4KLSs8L1A+Ci0rPFA+Ci0rCi0rV2hlbiB0aGUgcnVubmluZyB0aW1lIG9mIGEgY29tbWFuZCBpcyB2ZXJ5IG5lYXJseSB6ZXJvLCBzb21lIHZhbHVlcwotKyhlLmcuLCB0aGUgcGVyY2VudGFnZSBvZiBDUFUgdXNlZCkgbWF5IGJlIHJlcG9ydGVkIGFzIGVpdGhlciB6ZXJvICh3aGljaAotK2lzIHdyb25nKSBvciBhIHF1ZXN0aW9uIG1hcmsuCi0rPC9QPgotKzxQPgotKwotK01vc3QgaW5mb3JtYXRpb24gc2hvd24gYnkgPENPREU+dGltZTwvQ09ERT4gaXMgZGVyaXZlZCBmcm9tIHRoZSA8Q09ERT53YWl0MzwvQ09ERT4KLStzeXN0ZW0gY2FsbC4gIFRoZSBudW1iZXJzIGFyZSBvbmx5IGFzIGdvb2QgYXMgdGhvc2UgcmV0dXJuZWQgYnkKLSs8Q09ERT53YWl0MzwvQ09ERT4uICBNYW55IHN5c3RlbXMgZG8gbm90IG1lYXN1cmUgYWxsIG9mIHRoZSByZXNvdXJjZXMgdGhhdAotKzxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQgb247IHRob3NlIHJlc291cmNlcyBhcmUgcmVwb3J0ZWQgYXMgemVyby4gIFRoZQotK3N5c3RlbXMgdGhhdCBtZWFzdXJlIG1vc3Qgb3IgYWxsIG9mIHRoZSByZXNvdXJjZXMgYXJlIGJhc2VkIG9uIDQuMiBvcgotKzQuM0JTRC4gIExhdGVyIEJTRCByZWxlYXNlcyB1c2UgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdAotK21lYXN1cmVzIGZld2VyIHJlc291cmNlcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rT24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgPENPREU+d2FpdDM8L0NPREU+IGNhbGwgdGhhdCByZXR1cm5zIHN0YXR1cwotK2luZm9ybWF0aW9uLCB0aGUgPENPREU+dGltZXM8L0NPREU+IHN5c3RlbSBjYWxsIGlzIHVzZWQgaW5zdGVhZC4gIEl0IHByb3ZpZGVzCi0rbXVjaCBsZXNzIGluZm9ybWF0aW9uIHRoYW4gPENPREU+d2FpdDM8L0NPREU+LCBzbyBvbiB0aG9zZSBzeXN0ZW1zIDxDT0RFPnRpbWU8L0NPREU+Ci0rcmVwb3J0cyBtb3N0IG9mIHRoZSByZXNvdXJjZXMgYXMgemVyby4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyB2YWx1ZXMgYXJlIGFsbGVnZWRseSBvbmx5ICZxdW90O3JlYWwmcXVvdDsgaW5wdXQKLSthbmQgb3V0cHV0IGFuZCBkbyBub3QgaW5jbHVkZSB0aG9zZSBzdXBwbGllZCBieSBjYWNoaW5nIGRldmljZXMuICBUaGUKLSttZWFuaW5nIG9mICZxdW90O3JlYWwmcXVvdDsgSS9PIHJlcG9ydGVkIGJ5IGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyBtYXkgYmUKLSttdWRkbGVkIGZvciB3b3Jrc3RhdGlvbnMsIGVzcGVjaWFsbHkgZGlza2xlc3Mgb25lcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSW52b2tpbmcgdGltZSI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMxMSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMTE6Oi0tPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYNSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPiAob24gdGhlIHN0YW5kYXJkIGVycm9yCi0rb3V0cHV0LCBieSBkZWZhdWx0KS4gIElmIDxWQVI+Y29tbWFuZDwvVkFSPiBleGl0cyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBvciBpcwotK3Rlcm1pbmF0ZWQgYnkgYSBzaWduYWwsIDxDT0RFPnRpbWU8L0NPREU+IGRpc3BsYXlzIGEgd2FybmluZyBtZXNzYWdlIGFuZCB0aGUKLStleGl0IHN0YXR1cyBvciBzaWduYWwgbnVtYmVyLgotKzwvUD4KLSs8UD4KLSsKLStPcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IG11c3QgYXBwZWFyIG9uIHRoZSBjb21tYW5kIGxpbmUgYmVmb3JlCi0rPFZBUj5jb21tYW5kPC9WQVI+LiAgQW55dGhpbmcgb24gdGhlIGNvbW1hbmQgbGluZSBhZnRlciA8VkFSPmNvbW1hbmQ8L1ZBUj4gaXMKLStwYXNzZWQgYXMgYXJndW1lbnRzIHRvIDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tYTwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tYXBwZW5kPC9DT0RFPgotKzxERD48RU0+QXBwZW5kPC9FTT4gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAotK29mIG92ZXJ3cml0aW5nIGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWYgPFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWZvcm1hdD08VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+VXNlIDxWQVI+Zm9ybWF0PC9WQVI+IGFzIHRoZSBmb3JtYXQgc3RyaW5nLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LS1oZWxwPC9DT0RFPgotKzxERD5QcmludCBhIHN1bW1hcnkgb2YgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXA8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXBvcnRhYmlsaXR5PC9DT0RFPgotKzxERD5Vc2UgdGhlIFBPU0lYIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi12PC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJib3NlPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg2Ij48L0E+Ci0rVXNlIHRoZSBidWlsdC1pbiB2ZXJib3NlIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi1WPC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJzaW9uPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg3Ij48L0E+Ci0rUHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzwvREw+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQ19Db250ZW50cyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+VGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzIiIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMyIgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT4KLSs8QlI+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DNCIgSFJFRj0idGltZS5odG1sI1NFQzQiPjEuMi4xIFRpbWUgUmVzb3VyY2VzPC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0M1IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+MS4yLjIgTWVtb3J5IFJlc291cmNlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DNiIgSFJFRj0idGltZS5odG1sI1NFQzYiPjEuMi4zIEkvTyBSZXNvdXJjZXM8L0E+Ci0rPEJSPgotKzxBIE5BTUU9IlRPQzciIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4xLjIuNCBDb21tYW5kIEluZm88L0E+Ci0rPEJSPgotKzwvQkxPQ0tRVU9URT4KLSs8QSBOQU1FPSJUT0M4IiBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DOSIgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMTAiIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0MxMSIgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT4KLSs8QlI+Ci0rPC9CTE9DS1FVT1RFPgotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19PVkVSVklFVyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+U2hvcnQgVGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKwotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19BYm91dCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+QWJvdXQgdGhpcyBkb2N1bWVudDwvSDE+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgCi0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8UD48L1A+Ci0rVGhlIGJ1dHRvbnMgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWxzIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOgotKzxQPjwvUD4KLSs8dGFibGUgYm9yZGVyID0gIjEiPgotKzxUUj4KLSs8VEg+IEJ1dHRvbiA8L1RIPgotKzxUSD4gTmFtZSA8L1RIPgotKzxUSD4gR28gdG8gPC9USD4KLSs8VEg+IEZyb20gMS4yLjMgZ28gdG88L1RIPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyAmbHQ7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rQmFjawotKzwvVEQ+Ci0rPFREPgotK3ByZXZpb3VzIHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi4yCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmd0OyBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0ZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi40Ci0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmx0OyZsdDsgXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStGYXN0QmFjawotKzwvVEQ+Ci0rPFREPgotK2JlZ2lubmluZyBvZiB0aGlzIGNoYXB0ZXIgb3IgcHJldmlvdXMgY2hhcHRlcgotKzwvVEQ+Ci0rPFREPgotKzEKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyBVcCBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1VwCi0rPC9URD4KLSs8VEQ+Ci0rdXAgc2VjdGlvbgotKzwvVEQ+Ci0rPFREPgotKzEuMgotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbICZndDsmZ3Q7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rRmFzdEZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IGNoYXB0ZXIKLSs8L1REPgotKzxURD4KLSsyCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFtUb3BdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1RvcAotKzwvVEQ+Ci0rPFREPgotK2NvdmVyICh0b3ApIG9mIGRvY3VtZW50Ci0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0NvbnRlbnRzXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStDb250ZW50cwotKzwvVEQ+Ci0rPFREPgotK3RhYmxlIG9mIGNvbnRlbnRzCi0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0luZGV4XSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStJbmRleAotKzwvVEQ+Ci0rPFREPgotK2NvbmNlcHQgaW5kZXgKLSs8L1REPgotKzxURD4KLSsgJm5ic3A7IAotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbID8gXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStBYm91dAotKzwvVEQ+Ci0rPFREPgotK3RoaXMgcGFnZQotKzwvVEQ+Ci0rPFREPgotKyAmbmJzcDsgCi0rPC9URD4KLSs8L1RSPgotKzwvVEFCTEU+Ci0rICAgIDxQPgotKyAgICAgIHdoZXJlIHRoZSA8U1RST05HPiBFeGFtcGxlIDwvU1RST05HPiBhc3N1bWVzIHRoYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24KLSsgICAgICBpcyBhdCA8U1RST05HPiBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tVGhyZWUgPC9TVFJPTkc+IG9mIGEgZG9jdW1lbnQgb2YKLSsgICAgICB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L1A+Ci0rICAgIDxVTD4KLSsgICAgICA8TEk+IDEuIFNlY3Rpb24gT25lCi0rICAgICAgICA8VUw+Ci0rICAgICAgICAgIDxMST4xLjEgU3Vic2VjdGlvbiBPbmUtT25lCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPExJPjEuMiBTdWJzZWN0aW9uIE9uZS1Ud28KLSsgICAgICAgICAgICA8VUw+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjEgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLU9uZTwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjIgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVR3bzwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjMgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVRocmVlICZuYnNwOyAmbmJzcDsKLSsgICAgICAgICAgICAgICAgPFNUUk9ORz4mbHQ7PT0gQ3VycmVudCBQb3NpdGlvbiA8L1NUUk9ORz48L0xJPgotKyAgICAgICAgICAgICAgPExJPjEuMi40IFN1YnN1YnNlY3Rpb24gT25lLVR3by1Gb3VyPC9MST4KLSsgICAgICAgICAgICA8L1VMPgotKyAgICAgICAgICA8L0xJPgotKyAgICAgICAgICA8TEk+MS4zIFN1YnNlY3Rpb24gT25lLVRocmVlCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPC9MST4KLSsgICAgICAgICAgPExJPjEuNCBTdWJzZWN0aW9uIE9uZS1Gb3VyPC9MST4KLSsgICAgICAgIDwvVUw+Ci0rICAgICAgPC9MST4KLSsgICAgPC9VTD4KLSsKLSs8SFIgU0laRT0xPgotKzxCUj4KLSs8Rk9OVCBTSVpFPSItMSI+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgPEk+cm9vdDwvST4gb24gPEk+U2VwdGVtYmVyLCAxIDIwMDM8L0k+Ci0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8L0ZPTlQ+Ci0rCi0rPC9CT0RZPgotKzwvSFRNTD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyMGQ3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgotREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKLW1lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgotU0VDVElPTiA9ICJ1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCi0KLWluaGVyaXQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInRpbWUiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjNTM1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHRpbWUuaW5jCi0KLVBSID0gInIyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL2RlYmlhbi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImUzOGQyYjhiMzRiMWNhMjU5Y2Y3YjA1M2NhYWMzMmIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzN2VhNzlhMjUzYmY4NWE4NWFkYTJmN2M2MzJjMTRlNDgxYTVmZDI2MmEzNjJmNmY0ZmQ1OGU2ODYwMTQ5NmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzMTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgorREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKK21lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgorU0VDVElPTiA9ICJ1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRlMDBkY2I4YzNhYjExYzdjZjVhMGQ2OTg4MjhhYzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmY1NDAxNTU5NjFhMzViYTliODRhZWM1ZTc3ZTNhZTM2Yzc0Y2VjYjQ0ODRkYjQ1NTk2MDYwMWI3YTJlMWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAxLUZpeC1NYWtlZmlsZS1xdW90aW5nLWJ1Zy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDlmYTA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLUZyb20gYjUyMGQyMGI4MTIyYTc4M2Y5OWYwODg3NThiNzhkOTI4ZjcwZWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBNYWtlZmlsZSBxdW90aW5nIGJ1ZwotCi1Qcm9ibGVtIHdpdGggSU5TVEFMTEFSR1MgcmVwb3J0ZWQgYnkgWmVmcmFtIGluOgotaHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjAuaHRtbAotRml4IHNpbWlsYXIgcHJvYmxlbXMgdG9vLgotKiBNYWtlZmlsZSAoWklDX0lOU1RBTEwsIFZBTElEQVRFX0VOViwgQ0MsIGluc3RhbGwpCi0oSU5TVEFMTCwgdmVyc2lvbiwgSU5TVEFMTEFSR1MsIHJpZ2h0X3Bvc2l4LCBwb3NpeF9yaWdodCkKLShjaGVja19wdWJsaWMpOiBVc2UgYXBvc3Ryb3BoZXMgdG8gcHJldmVudCB1bmRlc2lyYWJsZQotaW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgYnkgdGhlIHNoZWxsLiAgV2Ugc3RpbGwgZG8gbm90IHN1cHBvcnQKLWRpcmVjdG9yeSBuYW1lcyBjb250YWluaW5nIGFwb3N0cm9waGVzIG9yIG5ld2xpbmVzLCBidXQgdGhpcyBpcwotZ29vZCBlbm91Z2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0qIE5FV1M6IE1lbnRpb24gdGhpcy4KLS0tLQotIE1ha2VmaWxlIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIE5FV1MgICAgIHwgIDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYzkyZWRjMC4uOTc2NDljYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTMxMyw3ICszMTMsNyBAQCBaRkxBR1M9Ci0gCi0gIyBIb3cgdG8gdXNlIHppYyB0byBpbnN0YWxsIHR6IGJpbmFyeSBmaWxlcy4KLSAKLS1aSUNfSU5TVEFMTD0JJChaSUMpIC1kICQoREVTVERJUikkKFRaRElSKSAkKExFQVBTRUNPTkRTKQotK1pJQ19JTlNUQUxMPQkkKFpJQykgLWQgJyQoREVTVERJUikkKFRaRElSKScgJChMRUFQU0VDT05EUykKLSAKLSAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29tcGxpYW50ICdhd2snIG9uIHlvdXIgc3lzdGVtLgotIEFXSz0JCWF3awotQEAgLTM0MSw4ICszNDEsOCBAQCBTR01MX0NBVEFMT0dfRklMRVM9IFwKLSBWQUxJREFURSA9IG5zZ21scwotIFZBTElEQVRFX0ZMQUdTID0gLXMgLUIgLXdhbGwgLXduby11bnVzZWQtcGFyYW0KLSBWQUxJREFURV9FTlYgPSBcCi0tICBTR01MX0NBVEFMT0dfRklMRVM9JChTR01MX0NBVEFMT0dfRklMRVMpIFwKLS0gIFNHTUxfU0VBUkNIX1BBVEg9JChTR01MX1NFQVJDSF9QQVRIKSBcCi0rICBTR01MX0NBVEFMT0dfRklMRVM9JyQoU0dNTF9DQVRBTE9HX0ZJTEVTKScgXAotKyAgU0dNTF9TRUFSQ0hfUEFUSD0nJChTR01MX1NFQVJDSF9QQVRIKScgXAotICAgU1BfQ0hBUlNFVF9GSVhFRD1ZRVMgXAotICAgU1BfRU5DT0RJTkc9VVRGLTgKLSAKLUBAIC0zOTYsNyArMzk2LDcgQEAgR1pJUEZMQUdTPQktOW4KLSAjTUFLRT0JCW1ha2UKLSAKLSBjYz0JCWNjCi0tQ0M9CQkkKGNjKSAtRFRaRElSPVwiJChUWkRJUilcIgotK0NDPQkJJChjYykgLURUWkRJUj0nIiQoVFpESVIpIicKLSAKLSBBUj0JCWFyCi0gCi1AQCAtNDczLDI5ICs0NzMsMjkgQEAgYWxsOgkJdHpzZWxlY3QgeWVhcmlzdHlwZSB6aWMgemR1bXAgbGlidHouYSAkKFRBQkRBVEEpCi0gQUxMOgkJYWxsIGRhdGUgJChFTkNISUxBREEpCi0gCi0gaW5zdGFsbDoJYWxsICQoREFUQSkgJChSRURPKSAkKE1BTlMpCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChFVENESVIpICQoREVTVERJUikkKFRaRElSKSBcCi0tCQkJJChERVNURElSKSQoTElCRElSKSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW4zICQoREVTVERJUikkKE1BTkRJUikvbWFuNSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW44Ci0rCQlta2RpciAtcCAnJChERVNURElSKSQoRVRDRElSKScgJyQoREVTVERJUikkKFRaRElSKScgXAotKwkJCSckKERFU1RESVIpJChMSUJESVIpJyBcCi0rCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuMycgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNScgXAotKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjgnCi0gCQkkKFpJQ19JTlNUQUxMKSAtbCAkKExPQ0FMVElNRSkgLXAgJChQT1NJWFJVTEVTKQotLQkJY3AgLWYgJChUQUJEQVRBKSAkKERFU1RESVIpJChUWkRJUikvLgotLQkJY3AgdHpzZWxlY3QgemljIHpkdW1wICQoREVTVERJUikkKEVUQ0RJUikvLgotLQkJY3AgbGlidHouYSAkKERFU1RESVIpJChMSUJESVIpLy4KLS0JCSQoUkFOTElCKSAkKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEKLS0JCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjMvLgotLQkJY3AgLWYgdHpmaWxlLjUgJChERVNURElSKSQoTUFORElSKS9tYW41Ly4KLS0JCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvLgotKwkJY3AgLWYgJChUQUJEQVRBKSAnJChERVNURElSKSQoVFpESVIpLy4nCi0rCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJyQoREVTVERJUikkKEVUQ0RJUikvLicKLSsJCWNwIGxpYnR6LmEgJyQoREVTVERJUikkKExJQkRJUikvLicKLSsJCSQoUkFOTElCKSAnJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hJwotKwkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICckKERFU1RESVIpJChNQU5ESVIpL21hbjMvLicKLSsJCWNwIC1mIHR6ZmlsZS41ICckKERFU1RESVIpJChNQU5ESVIpL21hbjUvLicKLSsJCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAnJChERVNURElSKSQoTUFORElSKS9tYW44Ly4nCi0gCi0gSU5TVEFMTDoJQUxMIGluc3RhbGwgZGF0ZS4xCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuMQotLQkJY3AgZGF0ZSAkKERFU1RESVIpJChCSU5ESVIpLy4KLS0JCWNwIC1mIGRhdGUuMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvLgotKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEJJTkRJUiknICckKERFU1RESVIpJChNQU5ESVIpL21hbjEnCi0rCQljcCBkYXRlICckKERFU1RESVIpJChCSU5ESVIpLy4nCi0rCQljcCAtZiBkYXRlLjEgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uJwotIAotIHZlcnNpb246CSQoVkVSU0lPTl9ERVBTKQotIAkJeyAodHlwZSBnaXQpID4vZGV2L251bGwgMj4mMSAmJiBcCi0gCQkgIFY9YGdpdCBkZXNjcmliZSAtLW1hdGNoICdbMC05XVswLTldWzAtOV1bMC05XVthLXpdKicgXAotIAkJCQktLWFiYnJldj03IC0tZGlydHlgIHx8IFwKLS0JCSAgVj0kKFZFUlNJT04pOyB9ICYmIFwKLSsJCSAgVj0nJChWRVJTSU9OKSc7IH0gJiYgXAotIAkJcHJpbnRmICclc1xuJyAiJCRWIiA+JEAub3V0Ci0gCQltdiAkQC5vdXQgJEAKLSAKLUBAIC01MjksMTIgKzUyOSwxMiBAQCBsZWFwc2Vjb25kczoJJChMRUFQX0RFUFMpCi0gIyBBcmd1bWVudHMgdG8gcGFzcyB0byBzdWJtYWtlcyBvZiBpbnN0YWxsX2RhdGEuCi0gIyBUaGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGxhdGVyIHN1Ym1ha2UgYXJndW1lbnRzLgotIElOU1RBTExBUkdTID0gXAotLSBCQUNLV0FSRD0kKEJBQ0tXQVJEKSBcCi0tIERFU1RESVI9JChERVNURElSKSBcCi0rIEJBQ0tXQVJEPSckKEJBQ0tXQVJEKScgXAotKyBERVNURElSPSckKERFU1RESVIpJyBcCi0gIExFQVBTRUNPTkRTPSckKExFQVBTRUNPTkRTKScgXAotICBQQUNLUkFUREFUQT0nJChQQUNLUkFUREFUQSknIFwKLS0gVFpESVI9JChUWkRJUikgXAotLSBZRUFSSVNUWVBFPSQoWUVBUklTVFlQRSkgXAotKyBUWkRJUj0nJChUWkRJUiknIFwKLSsgWUVBUklTVFlQRT0nJChZRUFSSVNUWVBFKScgXAotICBaSUM9JyQoWklDKScKLSAKLSAjICdtYWtlIGluc3RhbGxfZGF0YScgaW5zdGFsbHMgb25lIHNldCBvZiB0eiBiaW5hcnkgZmlsZXMuCi1AQCAtNTU4LDE2ICs1NTgsMTYgQEAgcmlnaHRfb25seToKLSAjIFlvdSBtdXN0IHJlcGxhY2UgYWxsIG9mICQoVFpESVIpIHRvIHN3aXRjaCBmcm9tIG5vdCB1c2luZyBsZWFwIHNlY29uZHMKLSAjIHRvIHVzaW5nIHRoZW0sIG9yIHZpY2UgdmVyc2EuCi0gcmlnaHRfcG9zaXg6CXJpZ2h0X29ubHkKLS0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktbGVhcHMKLS0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1sZWFwcyB8fCBcCi0tCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQotLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0rCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycKLSsJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycgfHwgXAotKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKLSAKLSBwb3NpeF9yaWdodDoJcG9zaXhfb25seQotLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1wb3NpeAotLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLXBvc2l4IHx8IFwKLS0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0tCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKLSsJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JwotKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JyB8fCBcCi0rCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5Ci0rCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotIAotICMgVGhpcyBvYnNvbGVzY2VudCBydWxlIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKLSAjIHR6IHJlbGVhc2VzIDIwMTRnIHRocm91Z2ggMjAxNWcuICBJdCBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5LgotQEAgLTc2NCw3ICs3NjQsNyBAQCBzZXQtdGltZXN0YW1wcy5vdXQ6ICQoRU5DSElMQURBKQotIAotIGNoZWNrX3B1YmxpYzoKLSAJCSQoTUFLRSkgbWFpbnRhaW5lci1jbGVhbgotLQkJJChNQUtFKSAiQ0ZMQUdTPSQoR0NDX0RFQlVHX0ZMQUdTKSIgQUxMCi0rCQkkKE1BS0UpIENGTEFHUz0nJChHQ0NfREVCVUdfRkxBR1MpJyBBTEwKLSAJCW1rZGlyIC1wIHB1YmxpYy5kaXIKLSAJCWZvciBpIGluICQoVERBVEEpIHR6ZGF0YS56aTsgZG8gXAotIAkJICAkKHppYykgLXYgLWQgcHVibGljLmRpciAkJGkgMj4mMSB8fCBleGl0OyBcCi1kaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKLWluZGV4IGJkMmJlYzIuLjc1YWIwOTUgMTAwNjQ0Ci0tLS0gYS9ORVdTCi0rKysgYi9ORVdTCi1AQCAtMSw1ICsxLDEzIEBACi0gTmV3cyBmb3IgdGhlIHR6IGRhdGFiYXNlCi0gCi0rVW5yZWxlYXNlZCwgZXhwZXJpbWVudGFsIGNoYW5nZXMKLSsKLSsgIENoYW5nZXMgdG8gYnVpbGQgcHJvY2VkdXJlCi0rCi0rICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KLSsgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCi0rCi0rCi0gUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKLSAKLSAgIEJyaWVmbHk6Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2FmZTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotRnJvbSBlMjMxZGE0ZmIyYmViMTdjNjBiNGIxYTVjMjc2MzY2ZDZhNmU0MzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTc6NTg6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUG9ydCB6ZHVtcCB0byBDOTAgKyBzbnByaW50ZgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IEpvbiBTa2VldCBpbjoKLWh0dHBzOi8vbW0uaWNhbm4ub3JnL3BpcGVybWFpbC90ei8yMDE3LU9jdG9iZXIvMDI1MzYyLmh0bWwKLSogTkVXUzogTWVudGlvbiB0aGlzLgotKiB6ZHVtcC5jIChteV9zbnByaW50Zik6IE5ldyBtYWNybyBvciBmdW5jdGlvbi4gIElmIGEgbWFjcm8sIGl0IGlzCi1qdXN0IHNucHJpbnRmLiAgSWYgYSBmdW5jdGlvbiwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBzbnByaW50Zgotc3RhdGljIGZ1bmN0aW9uLCB3aXRoIGFuIEFUVFJJQlVURV9GT1JNQVQgdG8gcGFjaWZ5IG1vZGVybiBHQ0MuCi1BbGwgdXNlcyBvZiBzbnByaW50ZiBjaGFuZ2VkIHRvIHVzZSBteV9zbnByaW50Zi4gIFRoaXMgd2F5LAotaW5zdGFsbGVycyBkb27igJl0IG5lZWQgdG8gc3BlY2lmeSAtREhBVkVfU05QUklOVEYgaWYgdGhleSBhcmUgdXNpbmcKLWEgcHJlLUM5OSBjb21waWxlciB3aXRoIGEgbGlicmFyeSB0aGF0IGhhcyBzbnByaW50Zi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIE5FV1MgICAgfCAgNCArKysrCi0gemR1bXAuYyB8IDI5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA3NWFiMDk1Li5kZWEwOGI4IDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTcsNiArNywxMCBAQCBVbnJlbGVhc2VkLCBleHBlcmltZW50YWwgY2hhbmdlcwotICAgICBUaGUgTWFrZWZpbGUgbm93IHF1b3RlcyB2YWx1ZXMgbGlrZSBCQUNLV0FSRCBtb3JlIGNhcmVmdWxseSB3aGVuCi0gICAgIHBhc3NpbmcgdGhlbSB0byB0aGUgc2hlbGwuICAoUHJvYmxlbSByZXBvcnRlZCBieSBaZWZyYW0uKQotIAotKyAgICBCdWlsZGVycyBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBvbiBwbGF0Zm9ybXMKLSsgICAgdGhhdCBoYXZlIHNucHJpbnRmIGFuZCB1c2UgcHJlLUM5OSBjb21waWxlcnMuICAoUHJvYmxlbSByZXBvcnRlZAotKyAgICBieSBKb24gU2tlZXQuKQotKwotIAotIFJlbGVhc2UgMjAxN2MgLSAyMDE3LTEwLTIwIDE0OjQ5OjM0IC0wNzAwCi0gCi1kaWZmIC0tZ2l0IGEvemR1bXAuYyBiL3pkdW1wLmMKLWluZGV4IDhlM2JmM2UuLmQ0ZTYwODQgMTAwNjQ0Ci0tLS0gYS96ZHVtcC5jCi0rKysgYi96ZHVtcC5jCi1AQCAtNzk1LDEyICs3OTUsMTQgQEAgc2hvdyh0aW1lem9uZV90IHR6LCBjaGFyICp6b25lLCB0aW1lX3QgdCwgYm9vbCB2KQotIAkJYWJicm9rKGFiYnIodG1wKSwgem9uZSk7Ci0gfQotIAotLSNpZiAhSEFWRV9TTlBSSU5URgotKyNpZiBIQVZFX1NOUFJJTlRGCi0rIyBkZWZpbmUgbXlfc25wcmludGYgc25wcmludGYKLSsjZWxzZQotICMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0gCi0gLyogQSBzdWJzdGl0dXRlIGZvciBzbnByaW50ZiB0aGF0IGlzIGdvb2QgZW5vdWdoIGZvciB6ZHVtcC4gICovCi0tc3RhdGljIGludAotLXNucHJpbnRmKGNoYXIgKnMsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpmb3JtYXQsIC4uLikKLStzdGF0aWMgaW50IEFUVFJJQlVURV9GT1JNQVQoKHByaW50ZiwgMywgNCkpCi0rbXlfc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQotIHsKLSAgIGludCBuOwotICAgdmFfbGlzdCBhcmdzOwotQEAgLTgzOSwxMCArODQxLDEwIEBAIGZvcm1hdF9sb2NhbF90aW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0pCi0gewotICAgaW50IHNzID0gdG0tPnRtX3NlYywgbW0gPSB0bS0+dG1fbWluLCBoaCA9IHRtLT50bV9ob3VyOwotICAgcmV0dXJuIChzcwotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQ6JTAyZCIsIGhoLCBtbSkKLS0JICA6IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQiLCBoaCkpOwotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQotKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7Ci0gfQotIAotIC8qIFN0b3JlIGludG8gQlVGLCBvZiBzaXplIFNJWkUsIGEgZm9ybWF0dGVkIFVUQyBvZmZzZXQgZm9yIHRoZQotQEAgLTg3NywxMCArODc5LDEwIEBAIGZvcm1hdF91dGNfb2Zmc2V0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0sIHRpbWVfdCB0KQotICAgbW0gPSBvZmYgLyA2MCAlIDYwOwotICAgaGggPSBvZmYgLyA2MCAvIDYwOwotICAgcmV0dXJuIChzcyB8fCAxMDAgPD0gaGgKLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCi0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCUwMmQiLCBzaWduLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQotLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7Ci0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCIsIHNpZ24sIGhoLCBtbSkKLSsJICA6IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQiLCBzaWduLCBoaCkpOwotIH0KLSAKLSAvKiBTdG9yZSBpbnRvIEJVRiAob2Ygc2l6ZSBTSVpFKSBhIHF1b3RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgUC4KLUBAIC05ODMsMTUgKzk4NSwxNiBAQCBpc3RyZnRpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqdGltZV9mbXQsCi0gCSAgICBmb3IgKGFicCA9IGFiOyBpc19hbHBoYSgqYWJwKTsgYWJwKyspCi0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgbGVuID0gKCEqYWJwICYmICphYgotLQkJICAgPyBzbnByaW50ZihiLCBzLCAiJXMiLCBhYikKLSsJCSAgID8gbXlfc25wcmludGYoYiwgcywgIiVzIiwgYWIpCi0gCQkgICA6IGZvcm1hdF9xdW90ZWRfc3RyaW5nKGIsIHMsIGFiKSk7Ci0gCSAgICBpZiAocyA8PSBsZW4pCi0gCSAgICAgIHJldHVybiBmYWxzZTsKLSAJICAgIGIgKz0gbGVuLCBzIC09IGxlbjsKLSAJICB9Ci0tCSAgZm9ybWF0dGVkX2xlbiA9ICh0bS0+dG1faXNkc3QKLS0JCQkgICA/IHNucHJpbnRmKGIsIHMsICYiXHRcdCVkIltzaG93X2FiYnJdLCB0bS0+dG1faXNkc3QpCi0tCQkJICAgOiAwKTsKLSsJICBmb3JtYXR0ZWRfbGVuCi0rCSAgICA9ICh0bS0+dG1faXNkc3QKLSsJICAgICAgID8gbXlfc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKLSsJICAgICAgIDogMCk7Ci0gCX0KLSAJYnJlYWs7Ci0gICAgICAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Yy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVlOWI3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgotIwotU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLVNSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImU2ZTBkNGIyY2UzZmE2OTA2ZjMwMzE1N2JlZDI2MTJlIgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIzMWZhN2ZjMGY5NGE2ZmYyZDZiYzg3OGMwYTM1ZThhYjhiNWFhMGU4YjAxNDQ1YTFkNGE4ZjE0Nzc3ZDBlNjY1IgotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJjNDEyYjE1MzFhZGVmMWJlN2E2NDVhYjczNGY4NmFjYyIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMjgyNWMzZTRiN2VmNTIwZjI0ZDM5M2JjYzAyOTQyZjk3NjJmZmQzZTdmYzliMjM4NTA3ODllZDhmMjI5MzNmNiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4ZC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkzM2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gIjk2NjEyYjRmNWQ3ZTg4MDRmZDlhMDk4MWMwMjFiZTkwIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI3ZGU0NGU4NWJhYWQ3NDhkMjE3ZTNmZDYwNzA2ZjU5OWY5YWVjNjhiY2U2MzU2YjE2M2Y1MmIwZGJkNDBhOGQ5IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI4NzFhN2VmODA4ZWI0MmViYzU1MWFjZGIzZDY2MTU1NCIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiNTEwNmVkZGNlYjVmMWFlM2E5MWRiZDM5NjBlMWI4YjExYmEwZGMwODU3OWEzMWNmMDcyNGE3NjkxYjEwYzA1NCIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjVlYzFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Yy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImM0MTJiMTUzMWFkZWYxYmU3YTY0NWFiNzM0Zjg2YWNjIgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIyODI1YzNlNGI3ZWY1MjBmMjRkMzkzYmNjMDI5NDJmOTc2MmZmZDNlN2ZjOWIyMzg1MDc4OWVkOGYyMjkzM2Y2IgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZmNlODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGQuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiODcxYTdlZjgwOGViNDJlYmM1NTFhY2RiM2Q2NjE1NTQiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjUxMDZlZGRjZWI1ZjFhZTNhOTFkYmQzOTYwZTFiOGIxMWJhMGRjMDg1NzlhMzFjZjA3MjRhNzY5MWIxMGMwNTQiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFuZ2tvayAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzEwLWN2ZS0yMDE0LTgxNDAtdGVzdC1jb21wci1lYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCmluZGV4IGM5ODlkZjEuLmNhNGFhYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCkBAIC05LDkgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9leHRyYWN0LmMKLSsrKyBiL2V4dHJhY3QuYwotQEAgLTIyMzIsMTAgKzIyMzIsMTcgQEAKK0luZGV4OiB1bnppcDYwL2V4dHJhY3QuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHVuemlwNjAub3JpZy9leHRyYWN0LmMKKysrKyB1bnppcDYwL2V4dHJhY3QuYworQEAgLTIyMzMsMTAgKzIyMzMsMTcgQEAgc3RhdGljIGludCB0ZXN0X2NvbXByX2ViKF9fR19fIGViLCBlYl9zaQogICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90IGNvbXByZXNzZWQ6ICovCiAgICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KICAKQEAgLTMwLDUgKzMyLDUgQEAKICsgICAgICgoZWJfdWNzaXplID4gMEwpICYmIChlYl9zaXplIDw9IChjb21wcl9vZmZzZXQgKyBFQl9DTVBSSEVBRExFTikpKSkKICsgICAgICAgIHJldHVybiBJWl9FRl9UUlVOQzsgICAgICAgICAgICAgLyogbm8vYmFkIGNvbXByZXNzZWQgZGF0YSEgKi8KICAKLSAgICAgaWYgKAotICNpZmRlZiBJTlRfMTZCSVQKKyAgICAgbWV0aG9kID0gbWFrZXdvcmQoZWIgKyAoRUJfSEVBRFNJWkUgKyBjb21wcl9vZmZzZXQpKTsKKyAgICAgaWYgKChtZXRob2QgPT0gU1RPUkVEKSAmJgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhlMGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBjMWZlMTRmYTViZDE2ODI5MmNjNDY3MDAzNGJjNDhiOTU0ZTlkYWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTMgTWFyIDIwMTggMTQ6NDk6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2F0Y2hkb2c6IHJlbW92ZSBpbnRlcmRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQKKyB3ZF9rZWVwYWxpdmUgc2VydmljZXMKKworU2luY2Ugd2F0Y2hkb2cgYW5kIHdhdGNoZG9nLWtlZXBhbGl2ZSBwYWNrYWdlcyBjYW4ndCBiZSBpbnN0YWxsZWQKK3RvZ2V0aGVyLCByZW1vdmUgdGhlIGludGVyLWRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQgd2Rfa2VlcGFsaXZlCitzZXJ2aWNlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGRlYmlhbi93YXRjaGRvZy5zZXJ2aWNlICAgICB8ICA5ICsrKy0tLS0tLQorIGRlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitpbmRleCA3YTJmYzM2Li5mMzFkMWZlIDEwMDY0NAorLS0tIGEvZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UKKysrKyBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitAQCAtMSwxNiArMSwxMyBAQAorIFtVbml0XQorIERlc2NyaXB0aW9uPXdhdGNoZG9nIGRhZW1vbgorLUNvbmZsaWN0cz13ZF9rZWVwYWxpdmUuc2VydmljZQorIEFmdGVyPW11bHRpLXVzZXIudGFyZ2V0CistT25GYWlsdXJlPXdkX2tlZXBhbGl2ZS5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93YXRjaGRvZyAhPSAxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93ZF9rZWVwYWxpdmUgIT0gMSBdIHx8IGZhbHNlJworK0V4ZWNTdGFydD0vYmluL3NoIC1jICdbIHgkcnVuX3dhdGNoZG9nICE9IHgxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCisrUElERmlsZT0vdmFyL3J1bi93YXRjaGRvZy5waWQKKyAKKyBbSW5zdGFsbF0KKy1XYW50ZWRCeT1kZWZhdWx0LnRhcmdldAorLQorK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitkaWZmIC0tZ2l0IGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlIGIvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCitpbmRleCA0NWIwMThlLi43ZjhiMWRjIDEwMDY0NAorLS0tIGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCisrKysgYi9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UKK0BAIC0xLDEzICsxLDEzIEBACisgW1VuaXRdCisgRGVzY3JpcHRpb249d2F0Y2hkb2cga2VlcGFsaXZlIGRhZW1vbgorLUJlZm9yZT13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorLUNvbmZsaWN0cz13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorK0FmdGVyPW11bHRpLXVzZXIudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0UHJlPS0vYmluL3N5c3RlbWN0bCByZXNldC1mYWlsZWQgd2F0Y2hkb2cuc2VydmljZQorIEV4ZWNTdGFydD0vdXNyL3NiaW4vd2Rfa2VlcGFsaXZlICR3YXRjaGRvZ19vcHRpb25zCistRXhlY1N0YXJ0UG9zdD0vYmluL3NoIC1jICdsbiAtcyAvdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ3JtIC1mIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCisrUElERmlsZT0vdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkCisrCisrW0luc3RhbGxdCisrV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCmluZGV4IGU2OGFkNTQuLmVjNDRjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2gKQEAgLTEsMTQgKzEsMTYgQEAKIFNpZ25lZC1vZmYtYnk6IERpZWdvIFJvbmRpbmkgPGRpZWdvLm1sQHpvaG8uY29tPgogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLS0tLSB3YXRjaGRvZy01LjEzLm9yaWcvd2F0Y2hkb2cuY29uZgkyMDEzLTAyLTAxIDEyOjE1OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIHdhdGNoZG9nLTUuMTMvd2F0Y2hkb2cuY29uZgkyMDE0LTExLTEzIDEwOjU5OjQzLjIzMzk0MzAwMCArMDEwMAotQEAgLTIwLDcgKzIwLDcgQEAKLSAjdGVzdC1iaW5hcnkJCT0gCi0gI3Rlc3QtdGltZW91dAkJPSAKK0luZGV4OiB3YXRjaGRvZy01LjE1L3dhdGNoZG9nLmNvbmYKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXRjaGRvZy01LjE1Lm9yaWcvd2F0Y2hkb2cuY29uZgorKysrIHdhdGNoZG9nLTUuMTUvd2F0Y2hkb2cuY29uZgorQEAgLTI4LDcgKzI4LDcgQEAKKyAjcmV0cnktdGltZW91dAkJPSA2MAorICNyZXBhaXItbWF4aW11bQkJPSAxCiAgCiAtI3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKICt3YXRjaGRvZy1kZXZpY2UJPSAvZGV2L3dhdGNoZG9nCiAgCiAgIyBEZWZhdWx0cyBjb21waWxlZCBpbnRvIHRoZSBiaW5hcnkKLSAjdGVtcGVyYXR1cmUtZGV2aWNlCT0KKyAjdGVtcGVyYXR1cmUtc2Vuc29yCT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgppbmRleCAzZDBiNzJlLi4zN2IzN2FlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCkBAIC0xMCw2ICsxMCw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dhdGNoZG9nL3dhdGNoZG9nLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1pbml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vd2Rfa2VlcGFsaXZlLmluaXQgXApAQCAtMzYsNyArMzcsOSBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUiCiBJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndhdGNoZG9nLnNlcnZpY2Ugd2Rfa2VlcGFsaXZlLnNlcnZpY2UiCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWtlZXBhbGl2ZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3YXRjaGRvZy5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUuc2VydmljZSIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQpAQCAtNTQsNiArNTcsNyBAQAogCiBGSUxFU18ke1BOfS1rZWVwYWxpdmUgPSAiIFwKICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93ZF9rZWVwYWxpdmUgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgXAogICAgICR7c2JpbmRpcn0vd2Rfa2VlcGFsaXZlIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCmluZGV4IDEyOTllZGIuLjNjZmY2NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMKQEAgLTIsNyArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3dnZXQvIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSIKIERFUEVORFMgPSAiZ251dGxzIHpsaWIgbGlicGNyZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCkBAIC0xMCw2ICsxMCw5IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNzbD1nbnV0bHMgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1pcmkgXAogICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJnbnV0bHMtcHJlZml4IGFjX2N2X2hlYWRlcl91dWlkX3V1aWRfaD1ubyIKIAorRVhUUkFfT0VNQUtFICs9ICdUT09MQ0hBSU5fT1BUSU9OUz0iJHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAgICAgICAgICAgICAgREVCVUdfUFJFRklYX01BUD0iJHtERUJVR19QUkVGSVhfTUFQfSInCisKIEFMVEVSTkFUSVZFXyR7UE59ID0gIndnZXQiCiBBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvMDAwMi1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4MWRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA3ZjEzNTc1MjlkMjNiMzU2YjQ1ZmJiMGRkNzM4ODU4ODE2MmU0Y2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBKYW4gMjAxOCAxNDo0MzoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcmMvTWFrZWZpbGUuYW06IGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5CisKK1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB0aGUgaW50ZXJuYWxseQorZ2VuZXJhdGVkIGZpbGUgdmVyc2lvbi5jLiBUaGUgcmVmZXJlbmNlcyBnZXQgY29tcGlsZWQgaW50bworZXhlY3V0YWJsZXMsIHdoaWNoIGxlYWRzIHRvIG5vbi1yZXByb2R1Y2libGUgYnVpbGRzLgorVGhlIHJlbW92ZWQgcmVmZXJlbmNlcyAoLS1zeXNyb290LCAtZmRlYnVnLXByZWZpeC1tYXApIHdlcmUKK29ubHkgdXNlZCBhcyBwYXJ0IG9mIHRoZSBgd2dldCAtLXZlcnNpb24nIHdoaWNoIGRvIG5vdCBoYXZlCitzaWRlIGVmZmVjdC4KKworLi4uCiskIHdnZXQgLS12ZXJzaW9uCitHTlUgV2dldCAxLjE0IGJ1aWx0IG9uIGxpbnV4LWdudS4KKworK2RpZ2VzdCAraHR0cHMgK2lwdjYgK2lyaSArbGFyZ2UtZmlsZSArbmxzICtudGxtICtvcGllICtzc2wvb3BlbnNzbAorCitXZ2V0cmM6CisgICAgL2V0Yy93Z2V0cmMgKHN5c3RlbSkKK0xvY2FsZTogL3Vzci9zaGFyZS9sb2NhbGUKK0NvbXBpbGU6IGdjYyAtREhBVkVfQ09ORklHX0ggLURTWVNURU1fV0dFVFJDPSIvZXRjL3dnZXRyYyIKKyAgICAtRExPQ0FMRURJUj0iL3Vzci9zaGFyZS9sb2NhbGUiIC1JLiAtSS4uL2xpYiAtSS4uL2xpYiAtTzIgLWcgLXBpcGUKKyAgICAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nCisgICAgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMgLW02NCAtbXR1bmU9Z2VuZXJpYworTGluazogZ2NjIC1PMiAtZyAtcGlwZSAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMKKyAgICAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NAorICAgIC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtbTY0IC1tdHVuZT1nZW5lcmljIC1sc3NsIC1sY3J5cHRvCisgICAgL3Vzci9saWI2NC9saWJzc2wuc28gL3Vzci9saWI2NC9saWJjcnlwdG8uc28gL3Vzci9saWI2NC9saWJ6LnNvCisgICAgLWxkbCAtbHogLWx6IC1saWRuIC1sdXVpZCAtbHBjcmUgZnRwLW9waWUubyBvcGVuc3NsLm8gaHR0cC1udGxtLm8KKyAgICAuLi9saWIvbGliZ251LmEKKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMjhjMGJlMi4uNDQwODRhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtODcsOSArODcsMTMgQEAgdmVyc2lvbi5jOiAgJCh3Z2V0X1NPVVJDRVMpIC4uL2xpYi9saWJnbnUuYQorIAllY2hvICcjaW5jbHVkZSAidmVyc2lvbi5oIicgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqdmVyc2lvbl9zdHJpbmcgPSAiQFZFUlNJT05AIjsnID4+ICRACisgCWVjaG8gJ2NvbnN0IGNoYXIgKmNvbXBpbGF0aW9uX3N0cmluZyA9ICInJChDT01QSUxFKSciOycgXAorKwkgICAgfCBzZWQgLWUgInMsJChUT09MQ0hBSU5fT1BUSU9OUyksLGciIFwKKysJICAgICAgICAgIC1lICJzLCQoREVCVUdfUFJFRklYX01BUCksLGciIFwKKyAJICAgIHwgJChFU0NBUEVRVU9URSkgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqbGlua19zdHJpbmcgPSAiJyQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisgCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAkKExJQlMpICQod2dldF9MREFERCknIjsnIFwKKysJICAgIHwgc2VkIC1lICJzLCQoVE9PTENIQUlOX09QVElPTlMpLCxnIiBcCisrCSAgICAgICAgICAtZSAicywkKERFQlVHX1BSRUZJWF9NQVApLCxnIiBcCisgCSAgICB8ICQoRVNDQVBFUVVPVEUpID4+ICRACisgCisgY3NzLmM6ICQoc3JjZGlyKS9jc3MubAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC9DVkUtMjAxNy02NTA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWMyOTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDRkNzI5ZTMyMmZhZTM1OWExYWVmYWFmZWMxMTQ0NzY0YTU0ZThhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDEwOjA0OjIyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBDUkxGIGluamVjdGlvbiBpbiBXZ2V0IGhvc3QgcGFydAotCi0qIHNyYy91cmwuYyAodXJsX3BhcnNlKTogUmVqZWN0IGNvbnRyb2wgY2hhcmFjdGVycyBpbiBob3N0IHBhcnQgb2YgVVJMCi0KLVJlcG9ydGVkLWJ5OiBPcmFuZ2UgVHNhaQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvd2dldC5naXQvY29tbWl0Lz9pZD00ZDcyOWUzMjJmYWUzNTlhMWFlZmFhZmVjMTE0NDc2NGE1NGU4YWQ0XQotCi1DVkU6IENWRS0yMDE3LTY1MDgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VybC5jIHwgMTEgKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VybC5jIGIvc3JjL3VybC5jCi1pbmRleCA4ZjhmZjBiLi43ZDM2YjI3IDEwMDY0NAotLS0tIGEvc3JjL3VybC5jCi0rKysgYi9zcmMvdXJsLmMKLUBAIC05MjUsNiArOTI1LDE3IEBAIHVybF9wYXJzZSAoY29uc3QgY2hhciAqdXJsLCBpbnQgKmVycm9yLCBzdHJ1Y3QgaXJpICppcmksIGJvb2wgcGVyY2VudF9lbmNvZGUpCi0gICAgICAgdXJsX3VuZXNjYXBlICh1LT5ob3N0KTsKLSAgICAgICBob3N0X21vZGlmaWVkID0gdHJ1ZTsKLSAKLSsgICAgICAvKiBjaGVjayBmb3IgaW52YWxpZCBjb250cm9sIGNoYXJhY3RlcnMgaW4gaG9zdCBuYW1lICovCi0rICAgICAgZm9yIChwID0gdS0+aG9zdDsgKnA7IHArKykKLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKGNfaXNjbnRybCgqcCkpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgdXJsX2ZyZWUodSk7Ci0rICAgICAgICAgICAgICBlcnJvcl9jb2RlID0gUEVfSU5WQUxJRF9IT1NUX05BTUU7Ci0rICAgICAgICAgICAgICBnb3RvIGVycm9yOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSAgICAgICAvKiBBcHBseSBJRE5BIHJlZ2FyZGxlc3Mgb2YgaXJpLT51dGY4X2VuY29kZSBzdGF0dXMgKi8KLSAgICAgICBpZiAob3B0LmVuYWJsZV9pcmkgJiYgaXJpKQotICAgICAgICAgewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YmRlOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY1MDgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3Y2VhMzZiNzE2MWZkNDNlM2ZkNTFhNGU4Yjg5Njg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNGYxMmRhMzhjYzYxNjdkMDc1MmQ5MzRhYmUyN2M3YjE1OTlhOWFmMjk0ZTczODI5YmU3YWM3YjViNGRhNDAiCi0KLXJlcXVpcmUgd2dldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzdkOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS41LmJiCkBAIC0wLDAgKzEsOSBAQAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3dnZXQvd2dldC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGI2ZjAzZDY1NTA0MWY4MmViNjRiOGM4YTFmYTdkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzkyMTJhYmUxYTczZjJiMjhmNGM2Y2IyMjNjNzM4NTU5Y2FhYzkxZDZlNDE2YTZkOTFkNGI5ZDU1YzlmYWVlIgorCityZXF1aXJlIHdnZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjhkMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3hkZy11dGlscy8iCi1ERVNDUklQVElPTiA9ICJUaGUgeGRnLXV0aWxzIHBhY2thZ2UgaXMgYSBzZXQgb2Ygc2ltcGxlIHNjcmlwdHMgdGhhdCBwcm92aWRlIGJhc2ljIFwKLWRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIGZvciBhbnkgRnJlZSBEZXNrdG9wLCBzdWNoIGFzIExpbnV4LiBcCi1UaGV5IGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGEgc2V0IG9mIGRlZmFjdG8gc3RhbmRhcmRzLiBcCi1UaGUgZm9sbG93aW5nIHNjcmlwdHMgYXJlIHByb3ZpZGVkIGF0IHRoaXMgdGltZTogXAoteGRnLWRlc2t0b3AtaWNvbiBcCi14ZGctZGVza3RvcC1tZW51IFwKLXhkZy1lbWFpbCBcCi14ZGctaWNvbi1yZXNvdXJjZSBcCi14ZGctbWltZSBcCi14ZGctb3BlbiBcCi14ZGctc2NyZWVuc2F2ZXIgXAoteGRnLXRlcm1pbmFsIFwKLSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdGhlLWluLXNjcmlwdC1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJkMGFlYzYwMzc3NjlhNWYxMzhmZjQwNGIxYmI0YjE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZGQ2M2EyNTc2ZTBiYjE2ZjFhYTc4ZDZkZGY3ZDY3ODQ3ODRhMDk4ZDRkZjE3MTYxY2Q2YTE3YzdiYzQxMjUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZy11dGlscy0oP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKChyY3xhbHBoYXxiZXRhKVxkKyk/KVwuKHRhclwuZ3p8dGd6KSIKLQotIyBOZWVkcyBicm9rZW5zZXAgYXMgdGhpcyBkb2Vzbid0IHVzZSBhdXRvbWFrZQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSB4cHJvcCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJ4cHJvcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzM5Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQmFzaWMgZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgorREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCitkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAorVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXAorVGhlIGZvbGxvd2luZyBzY3JpcHRzIGFyZSBwcm92aWRlZCBhdCB0aGlzIHRpbWU6IFwKK3hkZy1kZXNrdG9wLWljb24gXAoreGRnLWRlc2t0b3AtbWVudSBcCit4ZGctZW1haWwgXAoreGRnLWljb24tcmVzb3VyY2UgXAoreGRnLW1pbWUgXAoreGRnLW9wZW4gXAoreGRnLXNjcmVlbnNhdmVyIFwKK3hkZy10ZXJtaW5hbCBcCisiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTUzNjdhOTA5MzQwOThkNmIwNWFmM2I3NDY0MDUwMTQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjFlNzVlYjc2Yzk0ZDE5ZjZmNGYzMzBkOGVlNjI2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTE5NTJlMmM2YmIyMTIxNGUwYmI1NGUwZGZmYTA1N2QzMGY1NTYzMzAwMjI1YzI0YzE2ZmJhODQ2MjU4YmNjIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGctdXRpbHMtKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSgocmN8YWxwaGF8YmV0YSlcZCspPylcLih0YXJcLmd6fHRneikiCisKKyMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyA9ICJ4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAieHByb3AiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA3ZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAotCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAotCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjMDIyMWFlYzZhMDg5MzVlNjg1NGVhYTlkZTk0NTFlZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZlZjUxNjc2MzEwZDlmMzdlMThjOWIyZDc3ODI1NDIzMmViMTdjY2NkOTg4YzJkMWVjZjQyYzdiMjk2M2ExNTQiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1kaXN0cmlidXRvci1uYW1lPSR7RElTVFJPfSAtLWVuYWJsZS1kZWJ1Zz1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjUwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODQ0OTk2ODM2NmE2ZjlhYWZmM2FjMjI4ZGRmYzdjNjYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwMWIxNmFhNTVkMzEyYWUwZjE3ZDMxMzZmOTBkOGM2OGFjNzQ4NzE1ZjExOTQxMmZiMTkxNzAyM2M2ZjYzMGE4IgorCitFWFRSQV9PRU1FU09OICs9ICIgLURkaXN0cmlidXRvcl9uYW1lPSR7RElTVFJPfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkY2QzOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLWJvb2ttYXJrcy1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLWZyZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhYTIxNzZiZTMyZWVkMjU3OGRhODJmMzRkMzExNDhmOTM0YzExYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MDM6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYm9va21hcmtzOiBDaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIGZyZWFkKCkKLQotRml4ZXMgYmVsb3cgY29tcGlsZXIgZXJyb3IKLWlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnZnJlYWQnLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotaW5kZXggZmYwMjM5Yi4uODYzM2NlNCAxMDA2NDQKLS0tLSBhL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCi0rKysgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotQEAgLTIxNyw3ICsyMTcsOCBAQCBlcGh5X2Jvb2ttYXJrX2luaXQgKEVwaHlCb29rbWFyayAqc2VsZikKLSAgIGJ5dGVzID0gZ19tYWxsb2MgKG51bV9ieXRlcyk7Ci0gCi0gICBmcCA9IGZvcGVuICgiL2Rldi91cmFuZG9tIiwgInIiKTsKLS0gIGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKTsKLSsgIGlmIChmcmVhZCAoYnl0ZXMsIHNpemVvZiAoZ3VpbnQ4KSwgbnVtX2J5dGVzLCBmcCkgIT0gbnVtX2J5dGVzKQotKyAgICBnX3dhcm5pbmcoIlVuYWJsZSB0byByZWFkIGRhdGEgZnJvbSAvZGV2L3VyYW5kb21cbiIpOwotIAotICAgc2VsZi0+aWQgPSBnX21hbGxvYzAgKElEX0xFTiArIDEpOwotICAgZm9yIChnc2l6ZSBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTg1ZDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAzMGYwM2EyNTZlZmUzNzVhNGQ1YzNhMjRiZjQxNjhlYmYzODBlM2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMwIEp1bCAyMDE1IDE1OjEzOjIzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHllbHAubTQ6IGRyb3AgdGhlIGNoZWNrIGZvciBpdHN0b29sCi0KLUl0IGlzbid0IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZCwgc28gdGhlcmUncyBubyBuZWVkIHRvIHByb3ZpZGUKLWl0IGFzIGEgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3RhcmJhbGwtc3BlY2lmaWMgaXNzdWVdCi0tLS0KLSBtNC95ZWxwLm00IHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L3llbHAubTQgYi9tNC95ZWxwLm00Ci1pbmRleCA1ZGI4NDdmLi4xYjZlZGU0IDEwMDY0NAotLS0tIGEvbTQveWVscC5tNAotKysrIGIvbTQveWVscC5tNAotQEAgLTI3LDEyICsyNyw2IEBAIEFDX0FSR19XSVRIKFtoZWxwLWRpcl0sCi0gSEVMUF9ESVI9IiR3aXRoX2hlbHBfZGlyIgotIEFDX1NVQlNUKEhFTFBfRElSKQotIAotLUFDX0FSR19WQVIoW0lUU1RPT0xdLCBbUGF0aCB0byB0aGUgYGl0c3Rvb2xgIGNvbW1hbmRdKQotLUFDX0NIRUNLX1BST0coW0lUU1RPT0xdLCBbaXRzdG9vbF0sIFtpdHN0b29sXSkKLS1pZiB0ZXN0IHgiJElUU1RPT0wiID0geDsgdGhlbgotLSAgQUNfTVNHX0VSUk9SKFtpdHN0b29sIG5vdCBmb3VuZF0pCi0tZmkKLS0KLSBBQ19BUkdfVkFSKFtYTUxMSU5UXSwgW1BhdGggdG8gdGhlIGB4bWxsaW50YCBjb21tYW5kXSkKLSBBQ19DSEVDS19QUk9HKFtYTUxMSU5UXSwgW3htbGxpbnRdLCBbeG1sbGludF0pCi0gaWYgdGVzdCB4IiRYTUxMSU5UIiA9IHg7IHRoZW4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDk1MTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBmYzMxNGZjM2E2NmM5MmZlNzNlMWEwY2VhNGY0OWQxMWIyOWUxZjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE1OjUwOjM4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBoZWxwL21lc29uLmJ1aWxkOiBkaXNhYmxlIHRoZSB1c2Ugb2YgeWVscAorCitJbiBwYXJ0aWN1bGFyIHRoaXMgYXZvaWRzIGNhbGxpbmcgaXRzdG9vbCB3aGljaCBvZS1jb3JlIGRvZXNuJ3QgcHJvdmlkZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBoZWxwL21lc29uLmJ1aWxkIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxwL21lc29uLmJ1aWxkIGIvaGVscC9tZXNvbi5idWlsZAoraW5kZXggZjcyMGFkZC4uY2JmZWIxZSAxMDA2NDQKKy0tLSBhL2hlbHAvbWVzb24uYnVpbGQKKysrKyBiL2hlbHAvbWVzb24uYnVpbGQKK0BAIC00Niw4ICs0Niw4IEBAIGhlbHBfbGluZ3VhcyA9IFsKKyAgICdzdicKKyBdCisgCistZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKy0gIHNvdXJjZXM6IGhlbHBfZmlsZXMsCistICBtZWRpYTogaGVscF9tZWRpYSwKKy0gIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorLSkKKysjZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKysjICBzb3VyY2VzOiBoZWxwX2ZpbGVzLAorKyMgIG1lZGlhOiBoZWxwX21lZGlhLAorKyMgIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorKyMpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgppbmRleCA0NDUwZTE1Li5hNjhlMGY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKQEAgLTgsNyArOCw3IEBACiBERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNTRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA0NjBiZWZjOTkyYWRiMzI0MzRiMDQwOGI0NTNiZTM5YTY4NjZjY2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtLXdpdGhvdXQtbGlidGlmZiBub3QgaGF2aW5nIGFuIGVmZmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg3NzBdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzE1ZTBjYy4uOThlNzgwYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjc2LDcgKzY3Niw3IEBAIGlmIHRlc3QgeCRnaW9fY2FuX3NuaWZmID0geDsgdGhlbgorICAgQUNfREVGSU5FKEdES19QSVhCVUZfVVNFX0dJT19NSU1FLCAxLCBbRGVmaW5lIGlmIGdpbyBjYW4gc25pZmYgaW1hZ2UgZGF0YV0pCisgZmkKKyAKKy1BTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geCkKKytBTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geG5vKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JExJQlBORyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkTElCSlBFRyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pBU1BFUiwgdGVzdCAieCRMSUJKQVNQRVIiICE9IHgpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTIxNDE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSAxMDQ5ZmJkODg3ZTUyZjk0YWZlYjAzZmM3OTQyYzAxYzE0M2ViZGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOSBKdW4gMjAxNyAxMjowMToyNSArMDMwMAotU3ViamVjdDogW1BBVENIXSBxdWVyeWxvYWRlcnM6IE1ha2Ugb3V0cHV0IG1vcmUgcmVwcm9kdWNpYmxlCi0KLVJlcHJvZHVjaWJsZSBidWlsZHMgYXJlIGdvb2Q6IFNvcnQgdGhlIG91dHB1dCBieSBtb2R1bGUgbmFtZSBzbyB0aGF0Ci1zYW1lIGlucHV0IGFsd2F5cyBsZWFkcyB0byBzYW1lIG91dHB1dC4KLQotVGhpcyBzaG91bGQgYWxzbyBtYWtlIGdkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBvdXRwdXQgYW5kCi1nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIHJlcHJvZHVjaWJsZS4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzU5MgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGdkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCAzOTU2NzRhLi40YWM5YjI4IDEwMDY0NAotLS0tIGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotKysrIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotQEAgLTM0Niw2ICszNDYsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNpZmRlZiBVU0VfR01PRFVMRQotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRoOwotICAgICAgICAgICAgICAgICBHRGlyICpkaXI7Ci0rICAgICAgICAgICAgICAgIEdMaXN0ICpsLCAqbW9kdWxlcyA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAgICAgIHBhdGggPSBnX2dldGVudiAoIkdES19QSVhCVUZfTU9EVUxFRElSIik7Ci0gI2lmZGVmIEdfT1NfV0lOMzIKLUBAIC0zNjUsMTIgKzM2NiwxOSBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBsZW4gPSBzdHJsZW4gKGRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IFNPRVhUX0xFTiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNtcCAoZGVudCArIGxlbiAtIFNPRVhUX0xFTiwgU09FWFQpID09IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9wcmVwZW5kIChtb2R1bGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChkZW50KSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgZGVudCkpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBnX2Rpcl9jbG9zZSAoZGlyKTsKLSAgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3NvcnQgKG1vZHVsZXMsIChHQ29tcGFyZUZ1bmMpc3RyY21wKTsKLSsgICAgICAgICAgICAgICAgZm9yIChsID0gbW9kdWxlczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGwtPmRhdGEpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotKwotKyAgICAgICAgICAgICAgICBnX2xpc3RfZnJlZV9mdWxsIChtb2R1bGVzLCBnX2ZyZWUpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKGNvbnRlbnRzLCAiIyBkeW5hbWljIGxvYWRpbmcgb2YgbW9kdWxlcyBub3Qgc3VwcG9ydGVkXG4iKTsKLSAjZW5kaWYKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoCmluZGV4IDcwMTQ2YzYuLjdkMGQ1NGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL2ZhdGFsLWxvYWRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9mYXRhbC1sb2FkZXIucGF0Y2gKQEAgLTEsMTEgKzEsMjAgQEAKK0Zyb20gYjZhN2IzMDUyMjQ1NWNhYjM5YTBiOWVhODQ2MzMxMzM4MDE0NmU3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDEgQXByIDIwMTQgMTc6MjM6MzYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGdkay1waXhidWY6IGFkZCBhbiBvcHRpb24gc28gdGhhdCBsb2FkZXIgZXJyb3JzIGFyZSBmYXRhbAorCiBJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzcGVjaWZpZWQgc2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluKCkgdG8KIG5vbi16ZXJvIGlmIHRoZSBsb2FkZXIgaGFkIGVycm9ycyAobWlzc2luZyBsaWJyYXJpZXMsIGdlbmVyYWxseSkuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorLS0tCisgZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyB8IDE5ICsrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCBhOWNhMDE1Li4zOTU2NzRhIDEwMDY0NAoraW5kZXggYTgxYzgwNC4uMzUwYmVjOCAxMDA2NDQKIC0tLSBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKICsrKyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKIEBAIC0xNDYsNyArMTQ2LDcgQEAgd3JpdGVfbG9hZGVyX2luZm8gKEdTdHJpbmcgKmNvbnRlbnRzLCBjb25zdCBjaGFyICpwYXRoLCBHZGtQaXhidWZGb3JtYXQgKmluZm8pCkBAIC00NywxNyArNTYsMTggQEAKICAKICAjaWZkZWYgR19PU19XSU4zMgogICAgICAgICAgZ2NoYXIgKmxpYmRpcjsKLUBAIC0zNjAsNyArMzY1LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGVuID0gc3RybGVuIChkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBTT0VYVF9MRU4gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAgKGRlbnQgKyBsZW4gLSBTT0VYVF9MRU4sIFNPRVhUKSA9PSAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ19kaXJfY2xvc2UgKGRpcik7Ci1AQCAtMzc4LDcgKzM4NCw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMzcwLDcgKzM3NSw5IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9zb3J0IChtb2R1bGVzLCAoR0NvbXBhcmVGdW5jKXN0cmNtcCk7CisgICAgICAgICAgICAgICAgIGZvciAobCA9IG1vZHVsZXM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpCistICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgbC0+ZGF0YSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKysKKyAgICAgICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobW9kdWxlcywgZ19mcmVlKTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChjb250ZW50cywgIiMgZHluYW1pYyBsb2FkaW5nIG9mIG1vZHVsZXMgbm90IHN1cHBvcnRlZFxuIik7CitAQCAtMzg1LDcgKzM5Miw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maWxlbmFtZSA9IGdfbG9jYWxlX3RvX3V0ZjggKGluZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAjZW5kaWYKQEAgLTY3LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBnX2ZyZWUgKGN3ZCk7CiAgICAgICAgICB9Ci1AQCAtMzk0LDUgKzQwMSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtNDAxLDUgKzQwOSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGdfcHJpbnQgKCIlc1xuIiwgY29udGVudHMtPnN0cik7CiAgCkBAIC03NywzICs4Nyw2IEBACiArICAgICAgICBlbHNlCiArICAgICAgICAgICAgICAgIHJldHVybiAwOwogIH0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5Yzg0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCkBAIC0wLDAgKzEsMTAyIEBACitTVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTg0ZTU0ODVjMTdjZTdjMjVkZjc3ZmU3NmViMmQ2YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTYyYWI4NzI1MDQxMzE1NmVkNzJlZjc1NjM0N2IxMDIwOGMwMGU3NmIyMjJkODJkOWVkMzYxZWQ5ZGRlMmYzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgorCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKKyAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCisKKyAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKKyAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KKyAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKKwkjIGluIG11bHRpbGliIGJ1aWxkcy4KKwltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMzNTkwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSBzaGFyZWQtbWltZS1pbmZvIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMGFhYTAwNjFlYjEyNjY3YjMyYjI3NDcyMjMwYjk2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDY4ZTUyODNjZGMwYmY5YmRhOTljM2U2YTFkNTJhZDA3YTAzMzY0ZmExODZiNmMyNmNmYzg2ZmNkMzk2YTE5IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKLQotTElCViA9ICIyLjEwLjAiCi0KLUdES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14bGliIgotCi0jIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZwotUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gOWRmYWRhMDZmOGQyZTAyZDdhMDRmNzkzYmE2ZTFkNGEyYWE1ZmZiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDE0OjU0OjE3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbGlic2VjY29tcCAoc3ljYWxsIGZpbHRlcmluZyBtZWNoYW5pc20pCisKK1Vwc3RyZWFtIGZvcmdvdCB0byBtYWtlIGl0IG9wdGlvbmFsLCBhbmQgaXQgaXMgbm90IGN1cnJlbnRseSB1c2VkIGluIFlvY3RvCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDg2YmNmMWYuLjg5MTFmMTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1NywxNyArMTU3LDYgQEAgZWxzZQorIGZpCisgCisgU0VDQ09NUF9QS0c9IiIKKy1kbmwgQ2hlY2sgZm9yIGJ1YmJsZXdyYXAgY29tcGF0aWJsZSBwbGF0Zm9ybQorLWNhc2UgJGhvc3Rfb3MgaW4KKy0gIGxpbnV4KikKKy0gICAgUEtHX0NIRUNLX01PRFVMRVMoTElCU0VDQ09NUCwgW2xpYnNlY2NvbXBdKQorLSAgICBTRUNDT01QX1BLRz0ibGlic2VjY29tcCIKKy0gICAgQUNfREVGSU5FX1VOUVVPVEVEKF9HTlVfU09VUkNFLCAxLCBbRGVmaW5lIHRvIGluY2x1ZGUgR05VIGV4dGVuc2lvbnNdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CV1JBUCwgMSwgW0RlZmluZSB0byAxIGlmIEJ1YmJsZXdyYXAgc3VwcG9ydCBpcyBhdmFpbGFibGVdKQorLSAgICBBQ19ERUZJTkUoW0VOQUJMRV9TRUNDT01QXSwgWzFdLCBbRGVmaW5lIGlmIHVzaW5nIHNlY2NvbXBdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSU5TVEFMTF9QUkVGSVgsICIkcHJlZml4IiwgW1BhdGggdG8gbGlicmFyeSBpbnN0YWxsIHByZWZpeF0pCistICAgIDs7CistZXNhYworIAorIGRubCBwa2ctY29uZmlnIGRlcGVuZGVuY3kgY2hlY2tzCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNjMTUyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDkwNDg5MzliNzZiM2JkMTA3ODNhZGI3OWVkMGFhZjZjZDEzODk1Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAyMDozOTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZ25vbWUtZGVza3RvcC10aHVtYm5haWw6IGRvbid0IGNvbnZlcnQgdGltZV90IHRvIGxvbmcKKworRXhwbGljaXRseSB1c2Ugc3RyZnRpbWUrc3RycHRpbWUgcmF0aGVyIHRoYW4gc25wcmludGYrYXRvbC4gVGhpcyBmaXhlcyB0aGUKK2J1aWxkIGZvciBYMzIsIHdoZXJlIGxvbmcncyBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aW1lX3QuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworCitNb2RpZnkgcGF0Y2ggZGVzY3JpYmVkIGFib3ZlIHRvIGVsaW1pbmF0ZSByZXBsYWNlbWVudCBvZgorCitnX3NucHJpbnRmIChtdGltZV9zdHIsIDIxLCAiJSIgR19HSU5UNjRfRk9STUFULCAoZ2ludDY0KSBtdGltZSkKKword2hpY2ggaXMgbm90IG5lY2Vzc2FyeS4gIFJldGFpbiByZXBsYWNlbWVudCBvZiBhdG9sKCkuCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIHwgMTYgKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIGIvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCitpbmRleCBlNTZjM2Q3Li41ZDk2YmYzIDEwMDY0NAorLS0tIGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCisrKysgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKK0BAIC0xMjAsNiArMTIwLDggQEAKKyAgKiBTaW5jZTogMi4yCisgICovCisgCisrI2RlZmluZSBfWE9QRU5fU09VUkNFCisrCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxnbGliLmg+CitAQCAtMTMxOSw2ICsxMzI2LDcgQEAgZ25vbWVfZGVza3RvcF90aHVtYm5haWxfaXNfdmFsaWQgKEdka1BpeGJ1ZiAgICAgICAgICAqcGl4YnVmLAorIHsKKyAgIGNvbnN0IGNoYXIgKnRodW1iX3VyaSwgKnRodW1iX210aW1lX3N0cjsKKyAgIHRpbWVfdCB0aHVtYl9tdGltZTsKKysgIHN0cnVjdCB0bSB0bXBfbXRpbWU7CisgCisgICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKKyAgIGlmIChnX3N0cmNtcDAgKHVyaSwgdGh1bWJfdXJpKSAhPSAwKQorQEAgLTEzMjcsNyArMTMzNSwxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCisgICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOworICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCisgICAgIHJldHVybiBGQUxTRTsKKy0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKKysgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCisrICAgIHJldHVybiBGQUxTRTsKKysgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKKysgIGlmICghdGh1bWJfbXRpbWUpCisrICAgIHJldHVybiBGQUxTRTsKKyAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKKyAgICAgcmV0dXJuIEZBTFNFOworIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YTA2OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gYWRmYTBjOGY5ZmVjMWZhYWM0YmVhNmE5NGQ5NDdlYTMyZTU4NTkyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDIwOjM5OjUxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdub21lLWRlc2t0b3AtdGh1bWJuYWlsOiBkb24ndCBjb252ZXJ0IHRpbWVfdCB0byBsb25nCi0KLUV4cGxpY2l0bHkgdXNlIHN0cmZ0aW1lK3N0cnB0aW1lIHJhdGhlciB0aGFuIHNucHJpbnRmK2F0b2wuIFRoaXMgZml4ZXMgdGhlCi1idWlsZCBmb3IgWDMyLCB3aGVyZSBsb25nJ3Mgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoYXQgb2YgdGltZV90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0tLS0KLSBsaWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgfCAxNiArKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLWluZGV4IDM5NDYzMDkuLmI3NTYzMzMgMTAwNjQ0Ci0tLS0gYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLSsrKyBiL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYwotQEAgLTEyNiw2ICsxMjYsOCBAQAotICAqIFNpbmNlOiAyLjIKLSAgKi8KLSAKLSsjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKLSsKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTE0ODMsNiArMTQ4NSw3IEBAIHNhdmVfdGh1bWJuYWlsIChHZGtQaXhidWYgICpwaXhidWYsCi0gICBjaGFyICp0bXBfcGF0aCA9IE5VTEw7Ci0gICBpbnQgdG1wX2ZkOwotICAgY2hhciBtdGltZV9zdHJbMjFdOwotKyAgc3RydWN0IHRtICp0bXBfbXRpbWUgPSBOVUxMOwotICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0gICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgIGNvbnN0IGNoYXIgKndpZHRoLCAqaGVpZ2h0OwotQEAgLTE1MDIsNyArMTUwNSwxMSBAQCBzYXZlX3RodW1ibmFpbCAoR2RrUGl4YnVmICAqcGl4YnVmLAotICAgICBnb3RvIG91dDsKLSAgIGNsb3NlICh0bXBfZmQpOwotIAotLSAgZ19zbnByaW50ZiAobXRpbWVfc3RyLCAyMSwgIiVsZCIsICBtdGltZSk7Ci0rICB0bXBfbXRpbWUgPSBsb2NhbHRpbWUgKCZtdGltZSk7Ci0rICBpZiAoIXRtcF9tdGltZSkKLSsgICAgZ290byBvdXQ7Ci0rICBzdHJmdGltZSAobXRpbWVfc3RyLCAyMSwgIiVzIiwgdG1wX210aW1lKTsKLSsgIGZyZWUgKHRtcF9tdGltZSk7Ci0gICB3aWR0aCA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6OkltYWdlOjpXaWR0aCIpOwotICAgaGVpZ2h0ID0gZ2RrX3BpeGJ1Zl9nZXRfb3B0aW9uIChwaXhidWYsICJ0RVh0OjpUaHVtYjo6SW1hZ2U6OkhlaWdodCIpOwotIAotQEAgLTE2OTUsNiArMTcwMiw3IEBAIGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX2lzX3ZhbGlkIChHZGtQaXhidWYgICAgICAgICAgKnBpeGJ1ZiwKLSB7Ci0gICBjb25zdCBjaGFyICp0aHVtYl91cmksICp0aHVtYl9tdGltZV9zdHI7Ci0gICB0aW1lX3QgdGh1bWJfbXRpbWU7Ci0rICBzdHJ1Y3QgdG0gdG1wX210aW1lOwotICAgCi0gICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKLSAgIGlmICghdGh1bWJfdXJpKQotQEAgLTE3MDUsNyArMTcxMywxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCi0gICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOwotICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCi0gICAgIHJldHVybiBGQUxTRTsKLS0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKLSsgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCi0rICAgIHJldHVybiBGQUxTRTsKLSsgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKLSsgIGlmICghdGh1bWJfbXRpbWUpCi0rICAgIHJldHVybiBGQUxTRTsKLSAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgCi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFjMjEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhZjdjNmEyNDNkZjdhMzM1YTAxMGJkYzA1YjM0Y2E5MyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhmYTFkZTY2YTZhNzU5NjNiZmZjNzliMDFhNjA0MzRjNzEyMzdkNDRjNTFiZWNhMDljMGY3MTRhMDMyZDc4NWUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCi0KLVBBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCi0KLVJSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5ZGM5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitCUE4gPSAiZ25vbWUtZGVza3RvcCIKKworaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmNlZTJlY2Q2NzdkODdlYWEwZWI1ZWJmYTdiNDVmYjMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmNzU2MWE3YTMxM2ZjNDc0YjJjMzkwY2Q5Njk2ZGYxZjVjMWUxNTU2MDgwZTQzZjRhZmUwNDJiMTA2MGU1ZjJhIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtYXNzdW1lLXRpbWVfdC1pcy1sb25nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgorCitQQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCitGSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgorCitSUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggZTdhYzk3Yi4uOTZlYzk2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTEsMjkgKzEsMjcgQEAKLUZyb20gZDJiOWFkOGE4MGJmOTMyMGZlMzVjOWFlZThmNTJlNTVlYmQ0MGUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODhlZDk5NmNjOWUyYjI5NmNhY2ZkYmVlY2U0YmUyOGE5MGJhYjUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDMwIE1heSAyMDE3IDE0OjU1OjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHVzZSBBQ19DQU5PTklDQUxfSE9TVAorU3ViamVjdDogW1BBVENIIDEvMl0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCiAKIFRoaXMgd29uJ3Qgd29yayB3aGVuIGJ1aWxkaW5nIGFsbGFyY2ggKGFuZCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQgaWYKIHRhcmdldCBpcyB3aW5kb3dzKS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ4NTViN2EuLjY5MDhmNTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjYuMV0sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKICBBQ19DT05GSUdfU1JDRElSKFtpbmRleC50aGVtZS5pbl0pCiAgCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0MDUzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjY2FjMGQ2MDBmZmM5MzZkMmFkZmI4MGU5MjQ1YmM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZjc5ZmYzYmQzNDAyNTQ3MzdjZTRkMjhiODdmMGNjZWU0YjMzNThjZDNjZDVjZDExZGM3YjQyZjQxYjI3MmEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgotICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KLQlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCi0JICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi0KLUZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCi1GSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAotICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAotICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzN2Q1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNlZjg3ZTc4OTcxMWU1MTMwNzkyZDRiNTM2NmMwMDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4YmE3MzkyYzc3NjE5OTZlZmQ3ODA3NzkxNjdlYTZjOTQwZWVkZmIxYmYzN2NmZTliY2NiNzAyMWY1NGQ3OWQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgorICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KKwlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCisJICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCit9CisKK1BBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCisKK1JSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCisKK0ZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCitGSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAorICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCitGSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAorICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDcyZTczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW4gc29tZSBjaXJjdW1zdGFuY2VzLCBnY29uZiBpc24ndCBhYmxlIHRvIHNhdmUgY29uZmlndXJhdGlvbnMKK2JlY2F1c2Ugfi8uY29uZmlnIGZvbGRlciBha2Egcm9vdF9kaXIgZG9lc24ndCBleGlzdC4KK1RoaXMgaXNzdWUgd2FzIG5vdCBzZWVuIGJlZm9yZSBiZWNhdXNlIH4vLmNvbmZpZyBkaXJlY3RvcnkgaXMgc2hhcmVkCitiZXR3ZWVuIHNldmVyYWwgcGFja2FnZXMgYW5kIG9uZSBvZiB0aG9zZSBwYWNrYWdlcyB1c3VhbGx5IGNyZWF0ZXMgaXQKK2J5IHRoZSB0aW1lIGdjb25mIHdhbnRzIHRvIHVzZSBpdC4KKworVGhpcyBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgZ2NvbmYgY3JlYXRlcyB0aGUgLmNvbmZpZyBkaXJlY3RvcnkgaWYgaXQKK2RvZXNuJ3QgZXhpc3QsIGFsb25nIHdpdGggdGhlIGdjb25mIGRpcmVjdG9yeSBpbnNpZGUgaXQuCisKK1NpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyQHhpbGlueC5jb20+CisKKworSW5kZXg6IEdDb25mLTMuMi42L2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBHQ29uZi0zLjIuNi5vcmlnL2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKysrKyBHQ29uZi0zLjIuNi9iYWNrZW5kcy9tYXJrdXAtYmFja2VuZC5jCitAQCAtMjc2LDcgKzI3Niw3IEBAIHJlc29sdmVfYWRkcmVzcyAoY29uc3QgY2hhciAqYWRkcmVzcywKKyAgICAgICAvKiBkaXJfbW9kZSB3aXRob3V0IHNlYXJjaCBiaXRzICovCisgICAgICAgZmlsZV9tb2RlID0gZGlyX21vZGUgJiAofjAxMTEpOworICAgICB9CistICBlbHNlIGlmIChnX21rZGlyIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKysgIGVsc2UgaWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKyAgICAgeworICAgICAgIC8qIEVycm9yIG91dCBldmVuIG9uIEVFWElTVCAtIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5ICovCisgICAgICAgZ2NvbmZfc2V0X2Vycm9yIChlcnIsIEdDT05GX0VSUk9SX0ZBSUxFRCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCmluZGV4IDkyZmQxMmMuLjEyMGFlM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vR0NvbmYvJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9HQ29uZi0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovL3JlbW92ZV9wbHVzX2Zyb21faW52YWxpZF9jaGFyYWN0ZXJzX2xpc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdW5hYmxlLWNvbm5lY3QtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaCBcCiAiCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJiMTY5OTZkMGU0YjExMjg1NmVlNWM1OTEzMGU4MjJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWM1MjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBlNDhmMWUxOGY1ZWE0MTY1NmYwYmExMGZlNjFkNjlkMjYwNGIwMDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMgSmFuIDIwMTggMTc6MDI6MDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgYSAtLWxpYi1kaXJzLWVudnZhciBvcHRpb24KKworQnkgZGVmYXVsdCBMRF9MSUJSQVJZX1BBVEggaXMgc2V0IHRvIHRoZSBsaXN0IG9mIHRhcmdldCBsaWJyYXJ5IHBhdGhzOwordGhpcyBicmVha3MgZG93biBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudCwgYXMgd2UgbmVlZCB0byBydW4gYQorbmF0aXZlIGVtdWxhdGlvbiB3cmFwcGVyIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQgYmluYXJ5IGl0c2VsZi4gVGhpcyBwYXRjaAorYWxsb3dzIGV4cG9ydGluZyB0aG9zZSBwYXRocyB0byBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZQord2hpY2ggY2FuIGJlIHBpY2tlZCB1cCBhbmQgdXNlZCBieSB0aGUgd3JhcHBlci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgZ2lzY2FubmVyL2Njb21waWxlci5weSAgIHwgNCArKy0tCisgZ2lzY2FubmVyL2R1bXBlci5weSAgICAgIHwgMyArKy0KKyBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAzICsrKworIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2Njb21waWxlci5weSBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKK2luZGV4IDI5ZGUwZWUuLjkyOGVhZTggMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CisrKysgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CitAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorIAorICAgICAgICAgICAgIHNlbGYuX2NmbGFnc19ub19kZXByZWNhdGlvbl93YXJuaW5ncyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorIAorLSAgICBkZWYgZ2V0X2ludGVybmFsX2xpbmtfZmxhZ3Moc2VsZiwgYXJncywgbGlidG9vbCwgbGlicmFyaWVzLCBleHRyYV9saWJyYXJpZXMsIGxpYnBhdGhzKToKKysgICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocywgbGliX2RpcnNfZW52dmFyKToKKyAgICAgICAgICMgQW4gImludGVybmFsIiBsaW5rIGlzIHdoZXJlIHRoZSBsaWJyYXJ5IHRvIGJlIGludHJvc3BlY3RlZAorICAgICAgICAgIyBpcyBiZWluZyBidWlsdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgCitAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorICAgICAgICAgaWYgc2VsZi5jaGVja19pc19tc3ZjKCk6CisgICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTElCJywgJ1BBVEgnXQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnXQorKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQorICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAorICAgICAgICAgICAgICMgKFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIG5vciBuZWVkZWQgZm9yIFZpc3VhbCBDKyspCisgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1MLicpCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2R1bXBlci5weSBiL2dpc2Nhbm5lci9kdW1wZXIucHkKK2luZGV4IDdmNzdiZDIuLmRiOTZkZjYgMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvZHVtcGVyLnB5CisrKysgYi9naXNjYW5uZXIvZHVtcGVyLnB5CitAQCAtMjU5LDcgKzI1OSw4IEBAIGNsYXNzIER1bXBDb21waWxlcihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnRvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRyYV9saWJyYXJpZXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGlicmFyeV9wYXRocywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYl9kaXJzX2VudnZhcikKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChwa2dfY29uZmlnX2xpYnMpCisgCisgICAgICAgICBlbHNlOgorZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQoraW5kZXggMzhhNDVjMS4uYjYwMzg1MCAxMDA3NTUKKy0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQorKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CitAQCAtMTMwLDYgKzEzMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKKyAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQorKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbGliLWRpcnMtZW52dmFyIiwKKysgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxpYl9kaXJzX2VudnZhciIsIGRlZmF1bHQ9Tm9uZSwKKysgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gd3JpdGUgYSBsaXN0IG9mIGxpYnJhcnkgZGlyZWN0b3JpZXMgdG8gKGZvciBydW5uaW5nIHRoZSB0cmFuc2llbnQgYmluYXJ5KSwgaW5zdGVhZCBvZiBzdGFuZGFyZCBMRF9MSUJSQVJZX1BBVEgiKQorICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCmluZGV4IDQ4YTBjODUuLmM2ODJiNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApAQCAtMzIsMTAgKzMyLDEwIEBACiAgdGVzdHMvTWFrZWZpbGUuYW0gfCAgNSArKysrLQogIDQgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYjA4MGE4OS4uY2U4ZDI5YiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL01ha2VmaWxlLmFtCiBAQCAtMjEsNyArMjEsOSBAQCBpbmNsdWRlIE1ha2VmaWxlLWNtcGguYW0KICBpbmNsdWRlIE1ha2VmaWxlLWdpcmVwb3NpdG9yeS5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lzY2FubmVyLmFtCkBAIC00NiwxMCArNDYsMTAgQEAKICBpbmNsdWRlIE1ha2VmaWxlLXRvb2xzLmFtCiAgaW5jbHVkZSBNYWtlZmlsZS1tc3ZjcHJvai5hbQogIAotZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5tawotaW5kZXggZTI2YzYzNy4uOWYzYTY1ZiAxMDA2NDQKLS0tLSBhL2NvbW1vbi5tawotKysrIGIvY29tbW9uLm1rCitJbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvY29tbW9uLm1rCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKIEBAIC02LDYgKzYsMTUgQEAKICAjIG1vZHVsZSBpdHNlbGYuCiAgIwpAQCAtMTMwLDEzICsxMzAsMTMgQEAKICAKICBJTlRST1NQRUNUSU9OX0RPQ1RPT0xfQVJHUyA9IFwKICAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQoc3JjZGlyKSBcCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2YzkxZmE1Li4yMTM0MGE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNjAsNiArMzYwLDQ4IEBAIGZpCi0gCi0gQUNfU1VCU1QoRVhUUkFfTElOS19GTEFHUykKK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworQEAgLTM2Niw2ICszNjYsNDggQEAgZG5sCisgQU1fQ09ORElUSU9OQUwoTVNWQ19CQVNFX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfQkFTRV9UT09MU0VUID0geF0pCisgQU1fQ09ORElUSU9OQUwoTVNWQ19OT19UT09MU0VUX1NFVCwgW3Rlc3QgeCRNU1ZDX1RPT0xTRVQgPSB4XSkKICAKICtBQ19BUkdfRU5BQkxFKFtob3N0LWdpXSwKICtbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWhvc3QtZ2ldLFtVc2UgZ29iamVjdCBpbnRyb3NwZWN0aW9uIHRvb2xzIGluc3RhbGxlZCBpbiB0aGUgaG9zdCBzeXN0ZW0gKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyldKV0sCkBAIC0xODMsMTAgKzE4MywxMCBAQAogIEFDX0NPTkZJR19GSUxFUyhbCiAgTWFrZWZpbGUKICB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGJkZDBmYTcuLjc1ZGQzYzkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL3Rlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNiArMSw5IEBACiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi5tawogIApAQCAtMTk4LDYgKzE5OCwzIEBACiAgCiAgRVhUUkFfRElTVD0KICBCVUlMVF9TT1VSQ0VTPQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlNzFhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS41Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzQxNTcwNzM5OTFmOWVlYjBlZDk1MzM1MWI2NWViNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkMGMzOGQ1MmZlMWFhNmZjNGRlZjBjODY4ZmU0ODFjYjg3YjUzMmZjNjk0NzU2YjI2ZDZjZmFiMjlmYWZmNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCi0KLSMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCi0jIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KLQllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKLQllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQljaG1vZCA3NTUgJGRlc3QKLX0KLQotIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCi1naV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7Ci0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM4MDAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpAQCAtMCwwICsxLDE5MCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjU0LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEyNmMyOWU0ZDU0YWRiZWQyZWQ0ZTJiMDQ0ODNkZTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OGRlZDVlNWYwNjRhYjU4YTkzYWFkZWNkNmQ1OGRiMmVjOWQ5NzA2NDg1MzRjNjM4MDdkNGY5YTdiYjg3N2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgorICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCiske1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0CisgICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitwcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorCisgICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCisjIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgorIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCisgICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCisgICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQorICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicworfQorCisjIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCisKKyMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCisjIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCitnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59CisJZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0CisJZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJY2htb2QgNzU1ICRkZXN0Cit9CisKKyMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgorZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRhNGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1YjkwNTZhYjZlZmY0MmEwMTE3ZjI5MTJlZGZmNWYyMCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjBmMDZjN2JhMzRjM2E5OWU0ZDU4YjEwODg5NDk2MTMzYzlhYWFkNjY5OGVhMmQ4NDA1ZDQ4MWM3ZjFhN2VhZTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxZmQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNzk2YjZhYzFlZmY0NTAyNjFlZGQ1MjFiNzJlN2ZlNmQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NmEzZmEzMDlmOWRlNjA3NGQ2Njg0ODk4NzIxNGYwYjEyODEyNGJhNzE4NGM5NThjMTVhYzc4YThhYzdlZWE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysvaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAppbmRleCAxYWU3MjhlLi45ZWI3ZjZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaApAQCAtMywxOSArMywyMCBAQAogVXBkYXRlZCB0byBhcHBseSB0byBndGsrLTIuMjQuMTUKIAogU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmQgZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYyBndGsrLTIuMjQuMTUvY29uZmlndXJlLmFjCi0tLS0gZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYwkyMDEzLTAxLTEyIDIwOjUyOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGd0aystMi4yNC4xNS9jb25maWd1cmUuYWMJMjAxMy0wMi0xMiAyMTozMzozMC42ODk5MjU5NjcgKzAyMDAKLUBAIC00MTUsNyArNDE1LDcgQEAKK0luZGV4OiBndGsrLTIuMjQuMzEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrKy0yLjI0LjMxLm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3RrKy0yLjI0LjMxL2NvbmZpZ3VyZS5hYworQEAgLTQxNSw3ICs0MTUsNyBAQCBBQ19NU0dfQ0hFQ0tJTkcoW1doZXRoZXIgdG8gd3JpdGUgZGVwZW5kCiAgY2FzZSAkZW5hYmxlX2V4cGxpY2l0X2RlcHMgaW4KICAgIGF1dG8pCiAgICAgIGV4cG9ydCBTRUQKIC0gICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguL2xpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICsgICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguLyRob3N0X2FsaWFzLWxpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICAgICAgaWYgdGVzdCAieCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJyE9JyB4cGFzc19hbGwgfHwgdGVzdCAieCRlbmFibGVfc3RhdGljIiA9IHh5ZXMgOyB0aGVuCi0gICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzCisgICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzICAKICAgICAgZWxzZQotQEAgLTc3NCw3ICs3NzQsNyBAQAorQEAgLTc3Miw3ICs3NzIsNyBAQCBlbHNlCiAgICAgIGRubCBOb3cgd2UgY2hlY2sgdG8gc2VlIGlmIG91ciBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWIgZGVwcwogICAgICBkbmwgKGluIGEgcmF0aGVyIHVnbHkgd2F5IGV2ZW4pCiAgICAgIGlmICRkeW53b3JrczsgdGhlbgpAQCAtMjQsNyArMjUsNyBAQAogICAgICAgICAgbW9kdWxlX2RlcGxpYnNfY2hlY2s9YCRtb2R1bGVfbGlidG9vbF9jb25maWcgfCBcCiAgICAgICAgICAgICAgZ3JlcCAnXltbYS16X11dKmNoZWNrW1thLXpfXV0qX21ldGhvZD1bWydcJyciXV0nIHwgXAogICAgICAgICAgICAgIHNlZCAncy8uKltbJ1wnJyJdXVwoLipcKVtbJ1wnJyJdXSQvXDEvJ2AKLUBAIC0xNTc0LDcgKzE1NzQsNyBAQAorQEAgLTE1NzksNyArMTU3OSw3IEBAIGZpCiAgIyBXZSBhcmUgdXNpbmcgZ21vZHVsZS1uby1leHBvcnQgbm93LCBidXQgSSdtIGxlYXZpbmcgdGhlIHN0cmlwcGluZwogICMgY29kZSBpbiBwbGFjZSBmb3Igbm93LCBzaW5jZSBwYW5nbyBhbmQgYXRrIHN0aWxsIHJlcXVpcmUgZ21vZHVsZS4KICBleHBvcnQgU0VECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCAwYTM1N2RiLi40MjBlYWQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKQEAgLTM1LDcgKzM1LDYgQEAKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxlcyBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jdXBzIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIiwgIi0tZGlzYWJsZS1ndGstZG9jIiwgZCl9IFwKICAgICAgICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCmluZGV4IGFiN2I2NTkuLmNjN2VkZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZDIzNjFmMjRiZTFlNTEyMDEwNjNkYmJkYTU3MGRlYmU4NzAyYjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCkBAIC0xNSwyOSArMTUsMjkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgNyArKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCA2ICsrKysrKwogIGdkay94MTEvZ2RrdmlzdWFsLXgxMS5jIHwgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmNDNhYzA5Li45NjVlZWM5IDEwMDY0NAoraW5kZXggNzU3ZmQ3Yy4uMGE0ODg3NSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ2LDYgKzM0NiwxMyBAQCBBQ19BUkdfRU5BQkxFKG1pci1iYWNrZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgdGhlIE1pciBnZGsgYmFja2VuZF0pXSwKLSAJCQkgICAgICBbYmFja2VuZF9zZXQ9eWVzXSkKLSAKK0BAIC0zNTEsNiArMzUxLDEyIEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKICtBQ19BUkdfRU5BQkxFKGdseCwKICsgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2x4XSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkIEdkayB3aWxsIHRyeSB0byBpbml0aWFsaXplIEdMWF0pXSkKICtBU19JRihbdGVzdCAieCRlbmFibGVfZ2x4IiAhPSAieG5vIl0sIFsKICsgIEFDX0RFRklORShbSEFWRV9HTFhdLCBbXSwgW0dMWCB3aWxsIGJlIGF2YWlsYWJsZSBhdCBydW50aW1lXSkKICtdKQotKworIAogIGlmIHRlc3QgLXogIiRiYWNrZW5kX3NldCI7IHRoZW4KICAgIGlmIHRlc3QgIiRwbGF0Zm9ybV93aW4zMiIgPSB5ZXM7IHRoZW4KLSAgICAgZW5hYmxlX3dpbjMyX2JhY2tlbmQ9eWVzCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMgYi9nZGsveDExL2dka3Zpc3VhbC14MTEuYwogaW5kZXggODE0NzlkOC4uM2M4YzVjMCAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCkBAIC01Niw1ICs1Niw1IEBACiAgCiAgZ2ludAogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDljZGVlMGUuLmQyZjEyZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMmU2YjdjYmJkNmQ3NDFmZWQzOGQ5MWIzNzQyYWE0YTA4Mzk1YWJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZTM2ZGY3MGQ4N2JhMzQ1M2VkNGYyYjkyZTk5MDAyMWM2NzIzOGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTU6MTE6MzkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAzLzRdIEFkZCAtLWRpc2FibGUtb3BlbmdsIGNvbmZpZ3VyZSBvcHRpb24KQEAgLTE5LDQxICsxOSw0MCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0V2aWwgZXllIGV4cGVjdGVkIGZyb20gdXBzdHJlYW1dCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrLS0KLSBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgfCAxNCArKysrKysrKysKLSBkb2NzL3Rvb2xzL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgOSArKysrLS0KLSBkb2NzL3Rvb2xzL3dpZGdldHMuYyAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZGlzcGxheS5jICAgICAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZ2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrCi0gZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgIHwgIDYgKysrKwotIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKwotIGdkay94MTEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrLS0tCi0gZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgIHwgIDYgKysrLQotIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICB8ICA1ICsrKysKLSBnZGsveDExL2dka3dpbmRvdy14MTEuYyAgICAgICAgICAgfCAgNCArKysKLSBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgfCAgMiArKwotIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaCAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkay94MTEvZ2RreC5oICAgICAgICAgICAgICAgICAgICB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAzICstCi0gZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysrLQotIGd0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jICAgICAgICAgICB8ICA2ICsrKysKLSB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tCi0gdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgIHwgIDIgKysKLSAyMSBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrLS0KKyBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKworIGRvY3MvdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKy0tCisgZG9jcy90b29scy93aWRnZXRzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2Rpc3BsYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2dsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrCisgZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKworIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysKKyBnZGsveDExL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrLS0tCisgZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQorIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKworIGdkay94MTEvZ2Rrd2luZG93LXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKworIGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCAgICAgICAgICAgICAgICB8ICAyICsrCisgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQorIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCisgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKy0KKyBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrCisgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0tCisgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKysKKyAyMCBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKLSBkZWxldGUgbW9kZSAxMDA2NDQgZ2RrL3gxMS9nZGt4LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTY1ZWVjOS4uMDBiZjU0NCAxMDA2NDQKK2luZGV4IDBhNDg4NzUuLjZmMGEzYTYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM0Niw2ICszNDYsMTUgQEAgQUNfQVJHX0VOQUJMRShtaXItYmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHRoZSBNaXIgZ2RrIGJhY2tlbmRdKV0sCi0gCQkJICAgICAgW2JhY2tlbmRfc2V0PXllc10pCi0gCitAQCAtMzUxLDYgKzM1MSwxNSBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jbG91ZHByb3ZpZGVyc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBsaWJjbG91ZHByb3ZpZGVycyBpbnRlZ3JhdGlvbl0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvdWRwcm92aWRlcnNfc2V0PXllc10pCiArQUNfQVJHX0VOQUJMRShvcGVuZ2wsCiArICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9wZW5nbF0sCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1doZW4gZW5hYmxlZCwgR3RrKyB3aWxsIHVzZSBsaWJlcG94eSBhbmQgZXhwb3NlcyBHdGtHTEFyZWEgd2lkZ2V0IF0pXSkKQEAgLTY2LDE2ICs2NSwxNiBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNTIsNyArMTM2MSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzcyLDcgKzEzODEsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMiCisrR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIgogIAogIFBLR19DSEVDS19NT0RVTEVTKEdES19ERVAsICRHREtfUEFDS0FHRVMgJEdES19QUklWQVRFX1BBQ0tBR0VTKQogIEdES19ERVBfTElCUz0iJEdES19FWFRSQV9MSUJTICRHREtfREVQX0xJQlMgJE1BVEhfTElCIgotQEAgLTEzODYsNyArMTM5NSw3IEBAIGZpCitAQCAtMTQwNiw3ICsxNDE1LDcgQEAgZmkKICBQS0dfQ0hFQ0tfTU9EVUxFUyhBVEssICRBVEtfUEFDS0FHRVMpCiAgCiAgR1RLX1BBQ0tBR0VTPSJhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGdpby0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uIgpAQCAtMjEwLDEwICsyMDksMTAgQEAKICAKICAgIHJldHVybiBpbmZvOwogZGlmZiAtLWdpdCBhL2dkay9nZGtkaXNwbGF5LmMgYi9nZGsvZ2RrZGlzcGxheS5jCi1pbmRleCA2YjAxMmNhLi4zMTFjN2Y3IDEwMDY0NAoraW5kZXggNDAyMjVlOS4uYzU1ZTFkZSAxMDA2NDQKIC0tLSBhL2dkay9nZGtkaXNwbGF5LmMKICsrKyBiL2dkay9nZGtkaXNwbGF5LmMKLUBAIC0yNDA5LDcgKzI0MDksOSBAQCBnYm9vbGVhbgorQEAgLTI0MDYsNyArMjQwNiw5IEBAIGdib29sZWFuCiAgZ2RrX2Rpc3BsYXlfbWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKEdka0Rpc3BsYXkgICAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrR0xDb250ZXh0ICpjb250ZXh0KQogIHsKQEAgLTM0Nyw3ICszNDYsNyBAQAogIAogIC8qKgogZGlmZiAtLWdpdCBhL2dkay9nZGt3aW5kb3cuYyBiL2dkay9nZGt3aW5kb3cuYwotaW5kZXggNjg5ZDY2Ni4uZmI4NDI1NiAxMDA2NDQKK2luZGV4IGMwZTBhN2QuLjQzN2FiMDMgMTAwNjQ0CiAtLS0gYS9nZGsvZ2Rrd2luZG93LmMKICsrKyBiL2dkay9nZGt3aW5kb3cuYwogQEAgLTQ1LDcgKzQ1LDkgQEAKQEAgLTM2MCw3ICszNTksNyBAQAogIAogIC8qIGZvciB0aGUgdXNlIG9mIHJvdW5kKCkgKi8KICAjaW5jbHVkZSAiZmFsbGJhY2stYzg5LmMiCi1AQCAtMjgxOSw2ICsyODIxLDEzIEBAIGdka193aW5kb3dfZ2V0X3BhaW50X2dsX2NvbnRleHQgKEdka1dpbmRvdyAgKndpbmRvdywKK0BAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAogIHsKICAgIEdFcnJvciAqaW50ZXJuYWxfZXJyb3IgPSBOVUxMOwogIApAQCAtMzc0LDcgKzM3Myw3IEBACiAgICBpZiAoX2dka19nbF9mbGFncyAmIEdES19HTF9ESVNBQkxFKQogICAgICB7CiAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdES19HTF9FUlJPUiwKLUBAIC0yOTU0LDYgKzI5NjMsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewpAQCAtMzgyLDcgKzM4MSw3IEBACiAgCSAgZ2RrX2dsX2NvbnRleHRfbWFrZV9jdXJyZW50IChjb250ZXh0KTsKICAgICAgICAgICAgLyogV2l0aCBnbCB3ZSBhbHdheXMgbmVlZCBhIHN1cmZhY2UgdG8gY29tYmluZSB0aGUgZ2wKICAgICAgICAgICAgICAgZHJhd2luZyB3aXRoIHRoZSBuYXRpdmUgZHJhd2luZy4gKi8KLUBAIC0yOTY4LDYgKzI5NzgsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICAgIGdsQmxlbmRGdW5jIChHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogIAogICAgICAgICAgICBnbFZpZXdwb3J0ICgwLCAwLCB3dywgd2gpOwpAQCAtMzkwLDcgKzM4OSw3IEBACiAgICAgICAgICB9CiAgICAgIH0KICAKLUBAIC0zMDMxLDYgKzMwNDIsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzAzNCw2ICszMDQ1LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogIAogICAgICAgICAgICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKHdpbmRvdy0+Z2xfcGFpbnRfY29udGV4dCk7CiAgCkBAIC0zOTgsNyArMzk3LDcgQEAKICAgICAgICAgICAgaWYgKCFjYWlyb19yZWdpb25faXNfZW1wdHkgKG9wYXF1ZV9yZWdpb24pKQogICAgICAgICAgICAgIGdka19nbF90ZXh0dXJlX2Zyb21fc3VyZmFjZSAod2luZG93LT5jdXJyZW50X3BhaW50LnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWVfcmVnaW9uKTsKLUBAIC0zMDQxLDYgKzMwNTMsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzA0NCw2ICszMDU2LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPmN1cnJlbnRfcGFpbnQubmVlZF9ibGVuZF9yZWdpb24pOwogICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKICAgICAgICAgICAgICB9CkBAIC00NzksNyArNDc4LDcgQEAKICsKICAtaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5tawogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwotaW5kZXggYWQ2NWUyOS4uOTEzNDVlZSAxMDA2NDQKK2luZGV4IGU5YTI2M2YuLjI4MjlhMzEgMTAwNjQ0CiAtLS0gYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKICsrKyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogQEAgLTM3LDcgKzM3LDkgQEAKQEAgLTQ5Miw3ICs0OTEsNyBAQAogICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgogIAogICNpbmNsdWRlIDxnbGliLmg+Ci1AQCAtMjk5NCw3ICsyOTk2LDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQorQEAgLTMxNjksNyArMzE3MSw5IEBAIGdka194MTFfZGlzcGxheV9jbGFzc19pbml0IChHZGtYMTFEaXNwbGF5Q2xhc3MgKiBjbGFzcykKICAgIGRpc3BsYXlfY2xhc3MtPnRleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0ID0gX2dka194MTFfZGlzcGxheV90ZXh0X3Byb3BlcnR5X3RvX3V0ZjhfbGlzdDsKICAgIGRpc3BsYXlfY2xhc3MtPnV0ZjhfdG9fc3RyaW5nX3RhcmdldCA9IF9nZGtfeDExX2Rpc3BsYXlfdXRmOF90b19zdHJpbmdfdGFyZ2V0OwogIApAQCAtNTU0LDcxICs1NTMsMjEgQEAKICBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFLZXltYXAsIGdfb2JqZWN0X3VucmVmKQogIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMVNjcmVlbiwgZ19vYmplY3RfdW5yZWYpCiAgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExVmlzdWFsLCBnX29iamVjdF91bnJlZikKLWRpZmYgLS1naXQgYS9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hZTA1ZmE2Ci0tLS0gL2Rldi9udWxsCitkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKK3NpbWlsYXJpdHkgaW5kZXggOTglCityZW5hbWUgZnJvbSBnZGsveDExL2dka3guaAorcmVuYW1lIHRvIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAoraW5kZXggMWY2NGJjYy4uYWUwNWZhNiAxMDA2NDQKKy0tLSBhL2dkay94MTEvZ2RreC5oCiArKysgYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBHREsgLSBUaGUgR0lNUCBEcmF3aW5nIEtpdAotKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3IFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICovCi0rCi0rLyoKLSsgKiBNb2RpZmllZCBieSB0aGUgR1RLKyBUZWFtIGFuZCBvdGhlcnMgMTk5Ny0yMDAwLiAgU2VlIHRoZSBBVVRIT1JTCi0rICogZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR1RLKyBUZWFtLiAgU2VlIHRoZSBDaGFuZ2VMb2cKLSsgKiBmaWxlcyBmb3IgYSBsaXN0IG9mIGNoYW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAotKyAqIEdUSysgYXQgZnRwOi8vZnRwLmd0ay5vcmcvcHViL2d0ay8uCi0rICovCi0rCi0rI2lmbmRlZiBfX0dES19YX0hfXwotKyNkZWZpbmUgX19HREtfWF9IX18KLSsKLSsjaW5jbHVkZSA8Z2RrL2dkay5oPgotKwotKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgotKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSsKLSsjZGVmaW5lIF9fR0RLWF9IX0lOU0lERV9fCi0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExYXBwbGF1bmNoY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWN1cnNvci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS1jb3JlLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLWNvcmUuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXkuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5bWFuYWdlci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRuZC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWdsY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWtleXMuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLSsKLSsjdW5kZWYgX19HREtYX0hfSU5TSURFX18KLSsKLSsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KK0BAIC00NSw3ICs0NSw2IEBACisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCBiL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM5ZTI2MTcKQEAgLTY4Myw3NyArNjMyLDExIEBACiArI3VuZGVmIF9fR0RLWF9IX0lOU0lERV9fCiArCiArI2VuZGlmIC8qIF9fR0RLX1hfSF9fICovCi1kaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3guaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxZjY0YmNjLi4wMDAwMDAwCi0tLS0gYS9nZGsveDExL2dka3guaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNjAgKzAsMCBAQAotLS8qIEdESyAtIFRoZSBHSU1QIERyYXdpbmcgS2l0Ci0tICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcgUGV0ZXIgTWF0dGlzLCBTcGVuY2VyIEtpbWJhbGwgYW5kIEpvc2ggTWFjRG9uYWxkCi0tICoKLS0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSAqCi0tICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0gKi8KLS0KLS0vKgotLSAqIE1vZGlmaWVkIGJ5IHRoZSBHVEsrIFRlYW0gYW5kIG90aGVycyAxOTk3LTIwMDAuICBTZWUgdGhlIEFVVEhPUlMKLS0gKiBmaWxlIGZvciBhIGxpc3Qgb2YgcGVvcGxlIG9uIHRoZSBHVEsrIFRlYW0uICBTZWUgdGhlIENoYW5nZUxvZwotLSAqIGZpbGVzIGZvciBhIGxpc3Qgb2YgY2hhbmdlcy4gIFRoZXNlIGZpbGVzIGFyZSBkaXN0cmlidXRlZCB3aXRoCi0tICogR1RLKyBhdCBmdHA6Ly9mdHAuZ3RrLm9yZy9wdWIvZ3RrLy4KLS0gKi8KLS0KLS0jaWZuZGVmIF9fR0RLX1hfSF9fCi0tI2RlZmluZSBfX0dES19YX0hfXwotLQotLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0tCi0tI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0tI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotLQotLSNkZWZpbmUgX19HREtYX0hfSU5TSURFX18KLS0KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFhcHBsYXVuY2hjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExY3Vyc29yLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLWNvcmUuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXItY29yZS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXltYW5hZ2VyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0tCi0tI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLS0KLS0jdW5kZWYgX19HREtYX0hfSU5TSURFX18KLS0KLS0jZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IDQ1ZmI3YzIuLmNlODEwMTEgMTAwNjQ0CitpbmRleCA4NDJjMmY5Li4wOTIxYmM3IDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDExLDE0ICsxNDExLDEzIEBAIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYzogJChndGtfcHJpdmF0ZV90eXBlX2hfc291cmNlcykgIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuCitAQCAtMTQxNiwxNCArMTQxNiwxMyBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgogIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAogIAkmJiBybSAtZiB4Z2VuLWdwdGJjCiAgCkBAIC05MTMsNyArNzk2LDcgQEAKICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZIChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSkpCiAgICAgIHsKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBmODZjMTY2Li5iYTFhY2FkIDEwMDY0NAoraW5kZXggZTJkYjZlNC4uZTUxY2YzNCAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTgwLDggKzgwLDYgQEAgbm9pbnN0X1BST0dSQU1TID0gICQoVEVTVF9QUk9HUykJXApAQCAtOTQ5LDE3ICs4MzIsMTYgQEAKIGluZGV4IDBiM2E1MTkuLjA3YjA5NmYgMTAwNjQ0CiAtLS0gYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwogKysrIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKLUBAIC0xMTUsOCArMTE1LDEwIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xMTUsNyArMTE1LDkgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfQ09SRSAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfWEkyICYmCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ESVNQTEFZX01BTkFHRVIgJiYKICsjaWZkZWYgSEFWRV9PUEVOR0wKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0dMX0NPTlRFWFQgJiYKLSAjZW5kaWYKICsjZW5kaWYKKyAjZW5kaWYKICAJICAvKiBOb3QgYWxsb3dlZCB0byBmaW5hbGl6ZSBhIEdka1BpeGJ1ZkxvYWRlciB3aXRob3V0IGNhbGxpbmcgZ2RrX3BpeGJ1Zl9sb2FkZXJfY2xvc2UoKSAqLwogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9QSVhCVUZfTE9BREVSICYmCi0gCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX0RSQVdJTkdfQ09OVEVYVCAmJgogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYTU1Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAzNGY0ZDM5MjhlODIwNmE4OWIwYTYwMWJkZjc5ZDYxOTRiM2NjNzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdW4gMjAxNiAxMToyMTozNiArMDMwMAotU3ViamVjdDogW1BBVENIIDQvNF0gY29uZmlndXJlLmFjOiBGaXggd2F5bGFuZC1wcm90b2NvbHMgcGF0aAotCi1UaGUgd2F5bGFuZC1wcm90b2NvbHMgZGlyZWN0b3J5IGlzIHVzZWQgZHVyaW5nIGJ1aWxkOiBGaXggdGhlIHBhdGgKLXRvIHBvaW50IHRvIHN5c3Jvb3Qgc3BlY2lmaWVkIGluIHJlY2lwZS4KLQotTm9ybWFsbHkgUEtHX0NPTkZJR19TWVNST09UX0RJUiBjb3VsZCBiZSB1c2VkIGluIGNvbmZpZ3VyZS5hYyBidXQgdGhhdAotYnJlYWtzIG11bHRpbGliIGd0aysgYXMgaXQgd291bGQgcG9pbnQgdG8gbXVsdGlsaWIgc3lzcm9vdCB3aGVuIHRoZQotKGFsbGFyY2gpIHdheWxhbmQtcHJvdG9jb2xzIGlzIGFjdHVhbGx5IGluIHRoZSBtYWNoaW5lIHN5c3Jvb3QuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMGJmNTQ0Li41NTE1OTE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00NjUsNyArNDY1LDcgQEAgZmkKLSBpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfYmFja2VuZCIgPSAieWVzIjsgdGhlbgotICAgIyBGb3IgdGhlIGNhaXJvIGltYWdlIGJhY2tlbmQKLSAgIGNhaXJvX2JhY2tlbmRzPSIkY2Fpcm9fYmFja2VuZHMgY2Fpcm8iCi0tICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCi0gICBHREtfQkFDS0VORFM9IiRHREtfQkFDS0VORFMgd2F5bGFuZCIKLSAgIEdES19XSU5ET1dJTkc9IiRHREtfV0lORE9XSU5HCi0gI2RlZmluZSBHREtfV0lORE9XSU5HX1dBWUxBTkQiCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmE1NDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBndGsrMy5pbmMKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI5Zjg1NDMwY2Y3Y2ZhOGNhOGQwNzAzYmE2NWRiZTExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2YzFmYjhmMjI5YzYyNmEzZDljMGUxY2U2ZWExMzhkZTdmNjRhNWE2YmM3OTlkNDVmYTI4NmZlNDYxYzM0MzciCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0ZTgyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgorCitTID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzMWJhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotcmVxdWlyZSBndGsrLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNzttZDU9YzU5ZTBiNDQ5MGRkMTM1YTU3MjZlYmY4NTFmOWIxN2YgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9Mjc7bWQ1PTA3ZGIyODVlYzIwOGZiM2UwYmY3ZDg2MWIwNjE0MjAyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI3O21kNT0yNjJkYjVkYjVmNzc2Zjk4NjNlNTZkZjMxNDIzZTI0YyIKLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8yLjI0L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3hzZXR0aW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90b2dnbGUtZm9udC5kaWZmO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb2MtZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3RyaWN0LXByb3RvdHlwZXMucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTI2YTEwMDg1ODYwOTRhMmNiYjQ1OTJmZDNmOWVlMTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjhjMTkyMjczMmM3ZWZjMDhkZjQ2NTZhNTM2NmRjYzNhZmRjODc5MTUxMzQwMGRhYzI3NjAwOWI0MDk1NDY1OCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXhrYiAtLWRpc2FibGUtZ2xpYnRlc3QgLS1kaXNhYmxlLWN1cHMgLS1kaXNhYmxlLXhpbmVyYW1hIgotCi1MSUJWID0gIjIuMTAuMCIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmd0ay1pbW1vZHVsZS0uKiBeZ3RrLXByaW50YmFja2VuZC0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGd0a19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2d0ay0yLjAvJHtMSUJWfScpCi0gICAgaW1tb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ2ltbW9kdWxlcycpCi0gICAgcHJpbnRtb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ3ByaW50YmFja2VuZHMnKTsKLQotICAgIGQuc2V0VmFyKCdHVEtJTU1PRFVMRVNfUEFDS0FHRVMnLCAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBpbW1vZHVsZXNfcm9vdCwgJ15pbS0oLiopXC5zbyQnLCAnZ3RrLWltbW9kdWxlLSVzJywgJ0dUSyBpbnB1dCBtb2R1bGUgZm9yICVzJykpKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHByaW50bW9kdWxlc19yb290LCAnXmxpYnByaW50YmFja2VuZC0oLiopXC5zbyQnLCAnZ3RrLXByaW50YmFja2VuZC0lcycsICdHVEsgcHJpbnRiYWNrZW5kIG1vZHVsZSBmb3IgJXMnKQotCi0gICAgaWYgKGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKSk6Ci0gICAgICAgIGQuc2V0VmFyKGQuZXhwYW5kKCdQS0dfJHtQTn0nKSwgJyR7TUxQUkVGSVh9bGliZ3RrLTIuMCcpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDcwMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIGd0aysuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI3O21kNT1jNTllMGI0NDkwZGQxMzVhNTcyNmViZjg1MWY5YjE3ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNzttZDU9MDdkYjI4NWVjMjA4ZmIzZTBiZjdkODYxYjA2MTQyMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9Mjc7bWQ1PTI2MmRiNWRiNWY3NzZmOTg2M2U1NmRmMzE0MjNlMjRjIgorU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLzIuMjQvZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTc0MmFhNDIyNzUyMDNhNDk5YjU5YjRjMzgyYTc4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmM4YTkzZGRkYTVlYWJlM2JmZWUxZWIzOTYzNmM5YTAzZDJhNTZjN2I2MjgyOGIzNTliZjE5Nzk0M2M1ODJlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUteGtiIC0tZGlzYWJsZS1nbGlidGVzdCAtLWRpc2FibGUtY3VwcyAtLWRpc2FibGUteGluZXJhbWEiCisKK0xJQlYgPSAiMi4xMC4wIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeZ3RrLWltbW9kdWxlLS4qIF5ndGstcHJpbnRiYWNrZW5kLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZ3RrX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3RrLTIuMC8ke0xJQlZ9JykKKyAgICBpbW1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAnaW1tb2R1bGVzJykKKyAgICBwcmludG1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAncHJpbnRiYWNrZW5kcycpOworCisgICAgZC5zZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGltbW9kdWxlc19yb290LCAnXmltLSguKilcLnNvJCcsICdndGstaW1tb2R1bGUtJXMnLCAnR1RLIGlucHV0IG1vZHVsZSBmb3IgJXMnKSkpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHJpbnRtb2R1bGVzX3Jvb3QsICdebGlicHJpbnRiYWNrZW5kLSguKilcLnNvJCcsICdndGstcHJpbnRiYWNrZW5kLSVzJywgJ0dUSyBwcmludGJhY2tlbmQgbW9kdWxlIGZvciAlcycpCisKKyAgICBpZiAoZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpKToKKyAgICAgICAgZC5zZXRWYXIoZC5leHBhbmQoJ1BLR18ke1BOfScpLCAnJHtNTFBSRUZJWH1saWJndGstMi4wJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyZDgyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1TVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgotREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKLQotIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyYzA0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiOGMxZjVhYjk4N2RkYzdkYWIzZTU5NjYwZjg5ZGNkOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI5OTYxMmIwMThjZmVkN2IyYzY4OTE2OGFiNTJiNjY4MDIzNzA4ZTE3YzMzNWViNTkyMjYwZDE4NmYxNWUxZiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi1wZXJsLWlzLW5vdC1mb3VuZC1vci1pdHMtdmVyc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5MDI4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBlNzMzMjQxZmI1ODBmMDMyZWZiYmU2ODRlYzM1ZDRjOWQyN2YxNTk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDggU2VwIDIwMTYgMTM6Mzg6MzkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGVycm9yIG91dCBpZiBwZXJsIGlzIG5vdCBmb3VuZCBvciBpdHMgdmVyc2lvbiBpcyB0b28KLSBvbGQuCi0KLVRoaXMgYWxsb3dzIHVzZSB0byBhdm9pZCBkZXBlbmRpbmcgb24gcGVybC1uYXRpdmUgaWYgd2UncmUgbm90IGdvaW5nCi10byB1c2UgaXQgKHdoZW4gYXBpLWRvY3MgYXJlIGRpc2FibGVkKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYTYxZDZlLi4yOTQxNWJkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNiw3ICszNiw3IEBAIGRubCBDaGVjayBmb3IgUGVybC4KLSBkbmwKLSBBQ19QQVRIX1BST0coW1BFUkxdLCBbcGVybF0pCi0gaWYgdGVzdCAteiAiJFBFUkwiOyB0aGVuCi0tCUFDX01TR19FUlJPUihbcGVybCBub3QgZm91bmRdKQotKwlBQ19NU0dfV0FSTihbcGVybCBub3QgZm91bmRdKQotIGZpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtpZiBQZXJsIHZlcnNpb24gPj0gNS4xOC4wXSkKLUBAIC00NCw3ICs0NCw3IEBAIGlmICIkUEVSTCIgLWUgInJlcXVpcmUgdjUuMTguMCI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVChbeWVzXSkKLSBlbHNlCi0gCUFDX01TR19SRVNVTFQoW25vXSkKLS0JQUNfTVNHX0VSUk9SKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0rCUFDX01TR19XQVJOKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0gZmkKLSAKLSBkbmwKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCmluZGV4IDQ3N2ZjOWEuLjJmZTNhYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZmYWI4MmI5M2M3YmQzMDFlYjQyNDQ4NTE1YjAyZjdjYjMzMDY4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDkyODEwMjg3NGJjMjMzOWExZDU3YzZiMTc4ODc3ZTBjNjAwMmNiM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMTY6NDQ6NDYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgorU3ViamVjdDogW1BBVENIIDEvM10gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgogCiBEb2luZyBzbyB3aGVuIHRoZSBpbnRlcnByZXRlcnMgYXJlIHNvbWV3aGVyZSBkZWVwIGluIGEgc3lzcm9vdCBkaXJlY3RvcnkKIGNhbiByZWFjaCB0aGUgc2hlYmFuZyBsaW5lIGxpbWl0LCBhbmQgcmVzdWx0aW5nIHNjcmlwdHMgd291bGRuJ3Qgd29yawpAQCAtOSwxMzEgKzksMTM0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBndGtkb2MtY2hlY2suaW4gICAgIHwgMiArLQotIGd0a2RvYy1jb21tb24ucGwuaW4gfCAyICstCi0gZ3RrZG9jLWRlcHNjYW4uaW4gICB8IDIgKy0KLSBndGtkb2MtZml4eHJlZi5pbiAgIHwgMiArLQotIGd0a2RvYy1ta2RiLmluICAgICAgfCAyICstCi0gZ3RrZG9jLW1rdG1wbC5pbiAgICB8IDIgKy0KLSBndGtkb2MtcmViYXNlLmluICAgIHwgMiArLQotIGd0a2RvYy1zY2FuLmluICAgICAgfCAyICstCi0gZ3RrZG9jLXNjYW5nb2JqLmluICB8IDIgKy0KLSB0ZXN0cy90b29scy5zaC5pbiAgIHwgNCArKy0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisgZ3RrZG9jLWNoZWNrLmluICAgIHwgMiArLQorIGd0a2RvYy1kZXBzY2FuLmluICB8IDIgKy0KKyBndGtkb2MtZml4eHJlZi5pbiAgfCAyICstCisgZ3RrZG9jLW1rZGIuaW4gICAgIHwgMiArLQorIGd0a2RvYy1ta2h0bWwuaW4gICB8IDIgKy0KKyBndGtkb2MtbWttYW4uaW4gICAgfCAyICstCisgZ3RrZG9jLW1rcGRmLmluICAgIHwgMiArLQorIGd0a2RvYy1yZWJhc2UuaW4gICB8IDIgKy0KKyBndGtkb2Mtc2Nhbi5pbiAgICAgfCAyICstCisgZ3RrZG9jLXNjYW5nb2JqLmluIHwgMiArLQorIHRlc3RzL3Rvb2xzLnNoLmluICB8IDIgKy0KKyAxMSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2d0a2RvYy1jaGVjay5pbiBiL2d0a2RvYy1jaGVjay5pbgotaW5kZXggNTYwZDY5Yi4uYjYwODU3ZiAxMDA3NTUKK2luZGV4IDhjOGU5MTcuLmY2YTI1ZjYgMTAwNzU1CiAtLS0gYS9ndGtkb2MtY2hlY2suaW4KICsrKyBiL2d0a2RvYy1jaGVjay5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCi0gIwotICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgotZGlmZiAtLWdpdCBhL2d0a2RvYy1jb21tb24ucGwuaW4gYi9ndGtkb2MtY29tbW9uLnBsLmluCi1pbmRleCA0NzQ3Mzk2Li5jZmFkYjc4IDEwMDY0NAotLS0tIGEvZ3RrZG9jLWNvbW1vbi5wbC5pbgotKysrIGIvZ3RrZG9jLWNvbW1vbi5wbC5pbgotQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1kZXBzY2FuLmluIGIvZ3RrZG9jLWRlcHNjYW4uaW4KLWluZGV4IDgzYWYwMWIuLjkxN2UyNDcgMTAwNjQ0CitpbmRleCA5YmZhZjMwLi5hYWRjOTUyIDEwMDY0NAogLS0tIGEvZ3RrZG9jLWRlcHNjYW4uaW4KICsrKyBiL2d0a2RvYy1kZXBzY2FuLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQWVRIT05ACi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAotIGltcG9ydCBnemlwLCBvcy5wYXRoLCByZQorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KICAKIGRpZmYgLS1naXQgYS9ndGtkb2MtZml4eHJlZi5pbiBiL2d0a2RvYy1maXh4cmVmLmluCi1pbmRleCAzZDllOGQwLi5kNTUxOTBiIDEwMDc1NQoraW5kZXggMGVhMDJkNC4uYmRkNDQzYSAxMDA3NTUKIC0tLSBhL2d0a2RvYy1maXh4cmVmLmluCiArKysgYi9ndGtkb2MtZml4eHJlZi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1ta2RiLmluIGIvZ3RrZG9jLW1rZGIuaW4KLWluZGV4IDhkZDZkNWUuLmQ4MDg3NTAgMTAwNzU1CitpbmRleCA0MmQ1NzMxLi4zYTU2ZDU2IDEwMDc1NQogLS0tIGEvZ3RrZG9jLW1rZGIuaW4KICsrKyBiL2d0a2RvYy1ta2RiLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCi1kaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rdG1wbC5pbiBiL2d0a2RvYy1ta3RtcGwuaW4KLWluZGV4IGM2NGRmZDMuLjJmNDZjMTggMTAwNzU1Ci0tLS0gYS9ndGtkb2MtbWt0bXBsLmluCi0rKysgYi9ndGtkb2MtbWt0bXBsLmluCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1raHRtbC5pbiBiL2d0a2RvYy1ta2h0bWwuaW4KK2luZGV4IDBkMGExNWQuLjkxNGZmNTUgMTAwNjQ0CistLS0gYS9ndGtkb2MtbWtodG1sLmluCisrKysgYi9ndGtkb2MtbWtodG1sLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rbWFuLmluIGIvZ3RrZG9jLW1rbWFuLmluCitpbmRleCBjNTQ0NWNkLi42NWRiNzFhIDEwMDY0NAorLS0tIGEvZ3RrZG9jLW1rbWFuLmluCisrKysgYi9ndGtkb2MtbWttYW4uaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uOyBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWtwZGYuaW4gYi9ndGtkb2MtbWtwZGYuaW4KK2luZGV4IGU4YzBjMDMuLmY4MDcyMzYgMTAwNzU1CistLS0gYS9ndGtkb2MtbWtwZGYuaW4KKysrKyBiL2d0a2RvYy1ta3BkZi5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1yZWJhc2UuaW4gYi9ndGtkb2MtcmViYXNlLmluCi1pbmRleCAzNzU0ODJkLi5jZjA1YjQ1IDEwMDY0NAoraW5kZXggMTdhNzFjMi4uZWMzZmQyOCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1yZWJhc2UuaW4KICsrKyBiL2d0a2RvYy1yZWJhc2UuaW4KIEBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMgLSotIGNwZXJsIC0qLQorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uIC0qLQogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2Mtc2Nhbi5pbiBiL2d0a2RvYy1zY2FuLmluCi1pbmRleCAwNDhlNWM5Li43OGM2MTM2IDEwMDc1NQoraW5kZXggOTU0YzgxMS4uZjQ2MTUwNCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1zY2FuLmluCiArKysgYi9ndGtkb2Mtc2Nhbi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1zY2FuZ29iai5pbiBiL2d0a2RvYy1zY2FuZ29iai5pbgotaW5kZXggZmI2NmI3Ni4uNjdlZThmNyAxMDA2NDQKK2luZGV4IDRjYmUxMzAuLjUyYzJjMjQgMTAwNjQ0CiAtLS0gYS9ndGtkb2Mtc2NhbmdvYmouaW4KICsrKyBiL2d0a2RvYy1zY2FuZ29iai5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL3Rlc3RzL3Rvb2xzLnNoLmluIGIvdGVzdHMvdG9vbHMuc2guaW4KLWluZGV4IGExMTRhNDIuLjcwNzM4ODMgMTAwNjQ0CitpbmRleCA0ZDMwMWQwLi41NjVmYzFlIDEwMDY0NAogLS0tIGEvdGVzdHMvdG9vbHMuc2guaW4KICsrKyBiL3Rlc3RzL3Rvb2xzLnNoLmluCi1AQCAtMTEsNyArMTEsNyBAQCBlY2hvICJSdW5uaW5nIHN1aXRlKHMpOiBndGstZG9jLSRzdWl0ZSI7Ci0gCi0gIyB0ZXN0IHBlcmwgc2NyaXB0cwotIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWt0bXBsIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW4gZ3RrZG9jLXNjYW5nb2JqIDsgZG8KLS0gIEBQRVJMQCAtY3dUIGB3aGljaCAkZmlsZWAKLSsgIHBlcmwgLWN3VCBgd2hpY2ggJGZpbGVgCi0gICBpZiB0ZXN0ICQ/ID0gMSA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKK0BAIC0zMSw3ICszMSw3IEBAIGRvbmUKKyAjIFRPRE86IHRlc3QgcHl0aG9uIDIgYW5kIDMgKHB5dGhvbjMgLW1jb21waWxlYWxsIGd0a2RvYy8qLnB5KQorIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZGVwc2NhbiBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWtodG1sIGd0a2RvYy1ta21hbiBndGtkb2MtbWtwZGYgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbmdvYmo7IGRvCisgICAgIGZ1bGxmaWxlPWB3aGljaCAkZmlsZWAKKy0gICAgQFBZVEhPTkAgLW0gcHlfY29tcGlsZSAkZnVsbGZpbGUKKysgICAgcHl0aG9uMyAtbSBweV9jb21waWxlICRmdWxsZmlsZQorICAgICBpZiB0ZXN0ICQ/ICE9IDAgOyB0aGVuIGZhaWxlZD1gZXhwciAkZmFpbGVkICsgMWA7IGZpCisgICAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKICBkb25lCi1AQCAtMzQsNyArMzQsNyBAQCBkb25lCi0gCi0gCi0gIyB0ZXN0IHB5dGhvbiBzY3JpcHRzCi0tQFBZVEhPTkAgLW0gcHlfY29tcGlsZSBgd2hpY2ggZ3RrZG9jLWRlcHNjYW5gCi0rcHl0aG9uIC1tIHB5X2NvbXBpbGUgYHdoaWNoIGd0a2RvYy1kZXBzY2FuYAotIGlmIHRlc3QgJD8gIT0gMCA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSB0ZXN0ZWQ9YGV4cHIgJHRlc3RlZCArIDFgCi0gCiAtLSAKLTIuOS4zCisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAppbmRleCAwYzE4MGYyLi4yMWMyZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaApAQCAtMSwxNCArMSwyMyBAQAorRnJvbSA3OGJiZjE4NTkzNDE0N2E2OWNlYjRiNjE3ZDQyNGUxMmU3MDk5N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDIxOjAwOjU4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBndGstZG9jOiBIYW5kbGUgZmxvYXRpbmcgZ3RrLWRvYyBkZXBlbmRlbmN5CisKIEFsbG93IHRoZSB0ZXN0cyB0byBiZSBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGF2b2lkIGZsb2F0aW5nIGRlcGVuZG5lY3kKIGlzc3Vlcy4gVGhpcyBpcyBub3QgcmVhbGx5IGFuIGlzc3VlIHdpdGggUlNTIGJ1dCBpcyBvbiBwcmV2aW91cyByZWxlYXNlcy4KIAogUlAgMjAxNy82LzI3CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGd0ay1kb2MtMS4yNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndGstZG9jLTEuMjUub3JpZy9jb25maWd1cmUuYWMKLSsrKyBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCi1AQCAtMTYxLDYgKzE2MSwxMSBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2ODRlMmQxLi5lNWUzYWFiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNDYsNiArMTQ2LDExIEBAIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgogIAlmaQogIGZpCiAgCkBAIC0yMCw3ICsyOSw3IEBACiAgZG5sIGlmIGdsaWIgaXMgYXZhaWxhYmxlIHdlIGNhbiBlbmFibGUgdGhlIHRlc3RzCiAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAlbCWdsaWJfcHJlZml4PSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgotQEAgLTE3MSw2ICsxNzYsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPgorQEAgLTE1Niw2ICsxNjEsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAkJYnVpbGRfdGVzdHM9Im5vIgogIAldCiAgKQpAQCAtMzAsNSArMzksOCBAQAogK2ZpCiArCiAgQU1fQ09ORElUSU9OQUwoR1RLX0RPQ19VU0VfTElCVE9PTCwgdGVzdCAtbiAiJExJQlRPT0wiIC1hIHgkZ3RrX2RvY191c2VfbGlidG9vbCA9IHh5ZXMgKQotIGRubCB0aGlzIGVuYWJsZSB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCisgZG5sIHRoaXMgZW5hYmxlcyB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCiAgQU1fQ09ORElUSU9OQUwoQlVJTERfVEVTVFMsIHRlc3QgeCRidWlsZF90ZXN0cyA9IHh5ZXMpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTIyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitJbiBvdXQtb2YtdHJlZSBidWlsZHMgZ3RrLWRvYydzIHNldHVwLWJ1aWxkIHRhcmdldCBjb3BpZXMgYWxsIHRoZSBjb250ZW50IGZyb20gJHNyY2RpciB0byAkYnVpbGRkaXIuCisKK0hvd2V2ZXIsIGlmIHNvbWUgb2YgdGhpcyBjb250ZW50IGlzIHJlZ2VuZXJhdGVkIGF0IGNvbmZpZ3VyZSB0aW1lIHRoaXMgY2FuIGhhcHBlbjoKKworMSkgY29uZmlndXJlIHdyaXRlcyBuZXcgYnVpbGQvdmVyc2lvbi54bWwKKzIpIG1ha2UgY29tcGlsZSBjb3BpZXMgY29udGVudCwgaW5jbHVkaW5nIHRoZSB0YXJiYWxsJ3Mgc3JjL3ZlcnNpb24ueG1sCisgICB0byBidWlsZC92ZXJzaW9uLnhtbCwgYW5kIGdlbmVyYXRlcyBndGstZG9jLgorMykgbWFrZSBpbnN0YWxsIG5vdGljZXMgYnVpbGQvdmVyc2lvbi54bWwgaXMgb2xkZXIgdGhhbiBjb25maWd1cmUuc3RhdHVzLAorICAgc28gcmVnZW5lcmF0ZXMgZ3RrLWRvYy4KKworZ3RrLWRvYyBnZW5lcmF0aW9uIGlzIGEgc2xvdyBwcm9jZXNzIGF0IHRoZSBiZXN0IG9mIHRpbWVzLCBzbyBkb2luZyBpdCB0d2ljZSBpc24ndCBnb29kLgorCitTb2x2ZSB0aGlzIGJ5IGNoYW5naW5nIGNwIC0tZm9yY2UgdG8gY3AgLS1uby1jbG9iYmVyLCBzbyBzZXR1cC1idWlsZCBvbmx5IGNvcGllcworZmlsZXMgd2hpY2ggZG9uJ3QgYWxyZWFkeSBleGlzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1NzFdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ3RrLWRvYy5tYWtlIGIvZ3RrLWRvYy5tYWtlCitpbmRleCBmODdlYWFiLi4yNDZmM2MwIDEwMDY0NAorLS0tIGEvZ3RrLWRvYy5tYWtlCisrKysgYi9ndGstZG9jLm1ha2UKK0BAIC0xMTMsMyArMTEzLDMgQEAgc2V0dXAtYnVpbGQuc3RhbXA6CisgCSAgICAgIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgJiYgXAorLQkgICAgICAgIGNwIC1wZiAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvJCRmaWxlIHx8IHRydWU7IFwKKysJICAgICAgICBjcCAtcG4gJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSB8fCB0cnVlOyBcCisgCSAgICBkb25lOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKaW5kZXggYzc2ODg3MC4uYmZiYzc3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaApAQCAtMSwyNCArMSwzMiBAQAotVXNlIG5hdGl2ZSBwa2ctY29uZmlnIHdoZW4gbG9va2luZyBmb3IgZ3RrLWRvYy4KK0Zyb20gNWYxNDU2MjFiNDc4MGNmZDZhNTYzMmZjYzk3YzQ1ZjU3MjkzOGVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDUgU2VwIDIwMTYgMjI6MjU6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIFVzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2d0ay1kb2MubTQgYi9ndGstZG9jLm00Ci1pbmRleCAzNjc1NTQzLi45NDg4MWFlIDEwMDY0NAotLS0tIGEvZ3RrLWRvYy5tNAotKysrIGIvZ3RrLWRvYy5tNAotQEAgLTEsNiArMSw2IEBACi0gZG5sIC0qLSBtb2RlOiBhdXRvY29uZiAtKi0KKy0tLQorIGd0ay1kb2MubTQgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKK0luZGV4OiBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd0ay1kb2MtMS4yNy5vcmlnL2d0ay1kb2MubTQKKysrKyBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorQEAgLTI1LDcgKzI1LDcgQEAKKyAjIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyAjIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIAogLSMgc2VyaWFsIDIKICsjIHNlcmlhbCAyLjEKLQorIAogIGRubCBVc2FnZToKICBkbmwgICBHVEtfRE9DX0NIRUNLKFttaW5pbXVtLWd0ay1kb2MtdmVyc2lvbl0pCi1AQCAtMTAsMTEgKzEwLDE2IEBAIEFDX0RFRlVOKFtHVEtfRE9DX0NIRUNLXSwKK0BAIC0zNSwxMSArMzUsMTYgQEAgQUNfREVGVU4oW0dUS19ET0NfQ0hFQ0tdLAogICAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKICAgIEFDX0JFRk9SRShbQU1fUFJPR19MSUJUT09MXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0Ci0KKyAKICsgIGd0a2RvY19wa2djb25maWdfc2F2ZT0kUEtHX0NPTkZJRwogKyAgUEtHX0NPTkZJRz1wa2ctY29uZmlnLW5hdGl2ZQogKwpAQCAtMjYsNyArMzQsNyBAQAogICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ3RrLWRvY10pCiAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskZ3RrX2RvY19yZXF1aXJlc10sW2hhdmVfZ3RrX2RvYz15ZXNdLFtoYXZlX2d0a19kb2M9bm9dKQogICAgQUNfTVNHX1JFU1VMVCgkaGF2ZV9ndGtfZG9jKQotCisgCiArICBQS0dfQ09ORklHPSRndGtkb2NfcGtnY29uZmlnX3NhdmUKICsKICAgIGlmIHRlc3QgIiRoYXZlX2d0a19kb2MiID0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZWI5OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIGdsaWItYmFzZWQgc29mdHdhcmUiCi1ERVNDUklQVElPTiA9ICJHdGstZG9jIGlzIGEgc2V0IG9mIHNjcmlwdHMgdGhhdCBleHRyYWN0IHNwZWNpYWxseSBmb3JtYXR0ZWQgY29tbWVudHMgXAotICAgICAgICAgICAgICAgZnJvbSBnbGliLWJhc2VkIHNvZnR3YXJlIGFuZCBwcm9kdWNlIGEgc2V0IG9mIGh0bWwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIHRoZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvZ3RrLWRvYy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLSMgQ29uZmlndXJlIHRoZSBzY3JpcHRzIGNvcnJlY3RseSAoYW5kIGJ1aWxkIHRoZWlyIGRlcGVuZGVuY2llcykgb25seSBpZiB0aGV5IGFyZSBhY3R1YWxseQotIyBnb2luZyB0byBiZSB1c2VkOyBvdGhlcml3c2Ugd2UgbmVlZCBvbmx5IHRoZSBtNC9tYWtlZmlsZSBpbmNsdWRlcyBmcm9tIHRoZSBndGstZG9jIHRhcmJhbGwuCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJhcGktZG9jdW1lbnRhdGlvbiIsICJ3b3JraW5nLXNjcmlwdHMiLCAiIiwgZCl9IgotCi0jIFRoaXMgd2lsbCBjYXVzZSB0YXJnZXQgZ3RrLWRvYyB0byBoYXJkY29kZSBwYXRocyBvZiBuYXRpdmUgZGVwZW5kZW5jaWVzCi0jIGludG8gaXRzIHNjcmlwdHMuIFRoaXMgbWVhbnMgdGhhdCB0YXJnZXQgZ3RrLWRvYyBwYWNrYWdlIGlzIGJyb2tlbjsKLSMgaG9wZWZ1bGx5IG5vIG9uZSBtaW5kcyBiZWNhdXNlIGl0cyBzY3JpcHRzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkCi0jIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBvbiB0YXJnZXRzLgotUEFDS0FHRUNPTkZJR1t3b3JraW5nLXNjcmlwdHNdID0gIi0td2l0aC1oaWdobGlnaHQ9c291cmNlLWhpZ2hsaWdodCwtLXdpdGgtaGlnaGxpZ2h0PW5vLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBzb3VyY2UtaGlnaGxpZ2h0LW5hdGl2ZSBwZXJsLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxnbGliLTIuMCIKLQotIyBXZSBjYW5ub3QgdXNlIGhvc3QgcGVybCwgYmVjYXVzZSBpdCBtYXkgYmUgdG9vIG9sZCBmb3IgZ3RrLWRvYwotRVhUUkFOQVRJVkVQQVRIICs9ICJwZXJsLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGRjNjU3MDk1MzExMmE0NjRhNDA5ZmI5OTI1OGNjYmMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZWE0NmVkNDAwZTY1MDFmOTc1YWNhYWZlYTMxNDc5Y2VhOGYzMmY5MTFkY2E0ZGZmMDM2ZjU5ZTY0NjRmZDQyIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKLSMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCi0jIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTUyODExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBnbGliLWJhc2VkIHNvZnR3YXJlIgorREVTQ1JJUFRJT04gPSAiR3RrLWRvYyBpcyBhIHNldCBvZiBzY3JpcHRzIHRoYXQgZXh0cmFjdCBzcGVjaWFsbHkgZm9ybWF0dGVkIGNvbW1lbnRzIFwKKyAgICAgICAgICAgICAgIGZyb20gZ2xpYi1iYXNlZCBzb2Z0d2FyZSBhbmQgcHJvZHVjZSBhIHNldCBvZiBodG1sIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSB0aGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnL2d0ay1kb2MvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGdub21lYmFzZQorCisjIENvbmZpZ3VyZSB0aGUgc2NyaXB0cyBjb3JyZWN0bHkgKGFuZCBidWlsZCB0aGVpciBkZXBlbmRlbmNpZXMpIG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkKKyMgZ29pbmcgdG8gYmUgdXNlZDsgb3RoZXJpd3NlIHdlIG5lZWQgb25seSB0aGUgbTQvbWFrZWZpbGUgaW5jbHVkZXMgZnJvbSB0aGUgZ3RrLWRvYyB0YXJiYWxsLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBpLWRvY3VtZW50YXRpb24iLCAid29ya2luZy1zY3JpcHRzIiwgIiIsIGQpfSIKKworIyBUaGlzIHdpbGwgY2F1c2UgdGFyZ2V0IGd0ay1kb2MgdG8gaGFyZGNvZGUgcGF0aHMgb2YgbmF0aXZlIGRlcGVuZGVuY2llcworIyBpbnRvIGl0cyBzY3JpcHRzLiBUaGlzIG1lYW5zIHRoYXQgdGFyZ2V0IGd0ay1kb2MgcGFja2FnZSBpcyBicm9rZW47CisjIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAorIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KK1BBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcHl0aG9uMy1zaXgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIyOTk0OWUwOTY0NzYyZTQ3NGI3MDZjZTIyMTcxNjAyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTI2YmQzZjcwODBjNzQ5YjFjYjY2YzQ2YzZiZjgyMzllMmYzMjBhOTQ5OTY0ZmI5YzZkNTZlMWIwYzZkOWE2ZiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8tY2xvYmJlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKKyMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCisjIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2d0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzA0NjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJEZWZhdWx0IGljb24gdGhlbWUgdGhhdCBhbGwgaWNvbiB0aGVtZXMgYXV0b21hdGljYWxseSBpbmhlcml0IGZyb20iCi1IT01FUEFHRSA9ICJodHRwOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvd2lraS9IaWNvbG9yVGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmFhMmIzOTkzYTg4M2Q4NTAxN2M3Y2MwY2ZjMGZiNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNjNDVhYzMzMThjMzEyMTJlYTJkOGNiOTllNjQwMjA3MzIzOTNlZTc2MzBmYTZjMTgxMGFmNWY5ODcwMzNjYyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2NGIxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiRGVmYXVsdCBpY29uIHRoZW1lIHRoYXQgYWxsIGljb24gdGhlbWVzIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBmcm9tIgorSE9NRVBBR0UgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3dpa2kvSGljb2xvclRoZW1lIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IgorCitTUkNfVVJJID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjg0ZWVjOGQ2ZjgxMDI0MGEwNjljNzMxZjE4NzBiNDc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxNzQ4NDM1MjI3MWQxOGNiYmNmYWMzODY4ZWFiNzk4ZDY3ZmZmMWI4NDAyZTc0MGJhYTZmZjQxZDU4OGE5ZDgiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNWQzODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKLURFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCi0gZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAotaW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAotaW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmYzMWU3ZDA1OTRkZjQ0MzE4ZTEyZmFjZGEzZDA4NmUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZDU1YTkwMzdkMzllN2ExMGYwZGI2NDMwOWY1ZjAyNjVmYTMyZWM5NjJiZjg1MDY2MDg3YjgzYTI4MDdmNDBhIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTNjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjQuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgorREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKKyBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCitpbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCitpbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNTEwN2UyM2E3YmJiYzcwZjMxYzM0ZjdiOWFkZjFjMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjJkNzcwOWE0NDc0OWM3MzE4NTk5YTY4MjkzMjJlMDgxOTE1YmRjNzNmNWJlNTA0NTg4MmVkMTIwYmI2ODZkYzgiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0CisKKyMgVGhpcyBidWlsZHMgYm90aCBBUEkgZG9jcyAodmlhIGd0ay1kb2MpIGFuZCBtYW5wYWdlcworR1RLRE9DX0VOQUJMRV9GTEFHID0gIi1EZG9jcz10cnVlIgorR1RLRE9DX0RJU0FCTEVfRkxBRyA9ICItRGRvY3M9ZmFsc2UiCisKK0dJX0VOQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj10cnVlIgorR0lfRElTQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj1mYWxzZSIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dUS0RPQ19FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtHVEtET0NfRElTQUJMRV9GTEFHfScsIGQpfSAiCitFWFRSQV9PRU1FU09OX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dJX0VOQUJMRV9GTEFHfScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dJX0RJU0FCTEVfRkxBR30nLCBkKX0gIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEZJWE1FOiB0aGVzZSBuZWVkIHRvIGJlIHByb3ZpZGVkIHZpYSBwdGVzdAorICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgJHtEfSR7bGliZXhlY2Rpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIEN1cnJlbnRseSBpdCdzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGdldHRleHQgaW4gTWVzb24sIHNvIHdlIG5lZWQgdG8gZm9yY2UKKyMgdGhpcyBiYWNrIG9uLgorVVNFX05MU19jbGFzcy1uYXRpdmUgPSAieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ2NzkyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjkxNmMxMGM1MWVjNjExMzFlMjQ0YzM5MzZiYmIyZTBjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2IxZWY5OWQ0YTg5ODRjMzUwNDQxMDNkOGRkZmMzY2M1MmM4MDAzNWMzNmFiYWIyYmNjNWUzNTMyZTA2M2Y5NiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTk2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVlNGNiMmI5YzU3M2NkZjM1NGY2ZWQ3NDRmMDFiMTExZDRiNWJlZDM1MDNmZmE5NTZjZWZmZjUwNDg5Yzc4NjAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2OTE0ODUyMzc3MTU2NjY1NTY3YWJmOGEzOGQ4OTIzNiIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgorCitSQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWEwZGMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImVhYTVjOGE4YmJlMjYwMGFiNTE5NGMwZDNiMWI2MjFiIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmZjOGM0ODhjODljMWU3MjEyYzQ3OGJlYjk1YzQxYjQ0NzAxNjM2MTI1YTNlNmRhYjQxMTg3ZjE0ODViNTY0YyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9saWJyc3ZnLnRodW1ibmFpbGVyIgotCi1QSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzc2ZDUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJWZXJzaW9ucyBmcm9tIDIuNDEuMCByZXF1aXJlcyBSdXN0IGNvbXBpbGVyIHRvIGJ1aWxkIGl0IgorCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCisKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OTQ5ZDMxM2IwYzVkOTE2MWE1YzI1OTEwNGFmNTU2OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNmZjRkZDNjM2I3OGJmZTk5ZDhmY2ZhZDNiOGJhMWVlZTMyODlhMDgyM2MwZTExOGQ3ODEwNmJlNmI4NGM5MmIiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvbGlicnN2Zy50aHVtYm5haWxlciIKK1JSRUNPTU1FTkRTX2xpYnJzdmctZ3RrID0gImdkay1waXhidWYtYmluIgorCitQSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZGRkYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotcmVxdWlyZSBjYWlyby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0NmY1ZjRkMGI0NDM5ZmMzNzkyZmQzNDUyYjdiMTJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlODc4Nzg2NThmMmM5OTUxYTE0ZmM2NDExNGQ0OTU4YzBlNjVhYzQ3NTMwYjhhYzMwNzhiMmNlNDFiNjZhMDkiCi0KLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgotCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKLQotU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgotREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKLQotU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgotREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCi1DYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKLXRvIHJlcGxheSByZW5kZXJpbmcuIgotCi1ERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgotRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgotRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc1Y2ExZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgpAQCAtMCwwICsxLDQ2IEBACityZXF1aXJlIGNhaXJvLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKKworU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBcIAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWYwZGI5ZGJmY2EwOTY2YmU4YWNkNjgyZTYzNmQxNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM5MGYwMGM1MDBiMjI5OWMwYTMyM2RkOWJlZWFkMmEwMDM1Mzc1MmIyMDkyZWFkNTU4MTM5YmQ2N2Y3YmYxNiIKKworUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCisKK1NVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgorREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAordmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKK29mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAord2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKK29wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCitleHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCitFeHRlbnNpb24uIgorCitTVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCitERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgorCitTVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKK0NhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAordG8gcmVwbGF5IHJlbmRlcmluZy4iCisKK0RFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCitGSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCitGSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgorRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKaW5kZXggM2I2YTcwZS4uY2U5YWIzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKQEAgLTMsMTEgKzMsMTEgQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLWluZGV4IDRiOWI0NDkuLjIzMmNkMTkgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5hbQotKysrIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLUBAIC0zOCw2ICszOCw3IEBAIEFNX0NQUEZMQUdTID0gXAorSW5kZXg6IGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2x1dHRlci0xLjI2LjIub3JpZy9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysrIGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCitAQCAtMzMsNyArMzMsOCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKHRvcF9zcmNkaXIpL2NsdXR0ZXIgXAogIAktSSQodG9wX2J1aWxkZGlyKS9jbHV0dGVyCiAgCkBAIC0xNiwzICsxNiw0IEBACiArZXhhbXBsZV9QUk9HUkFNUyA9ICQoYWxsX2V4YW1wbGVzKQogIAogIEVYVFJBX0RJU1QgPSByZWRoYW5kLnBuZworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwppbmRleCAyNmFlOTFjLi40Yzg3Nzk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwpAQCAtMTUsNyArMTUsMyBAQAogRklMRVNfJHtQTn0gICAgICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYiouc28iCiBGSUxFU18ke1BOfS1kZXYgICAgICArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKIEZJTEVTXyR7UE59LWV4YW1wbGVzICA9ICIke2JpbmRpcn0vdmlkZW8tcGxheWVyICR7YmluZGlyfS92aWRlby1zaW5rIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwNTBkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3RrLTEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY2OTgyMDdlZTZlM2Q1YTFjMGZmYzBhMjM0NDRlMTJmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZGEyN2Q0ODYzMjU0OTBhZDNmNjVkMmFiZjk0MTNhZWI4YjRhOGY3YjU1OWU0YjJmNzM1NjdhNTM0NGEyNmI5NCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzAwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjbHV0dGVyLWd0ay0xLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMzYzYWM5ODc4ZTIzMzdiZTg4N2I4ZWU5ZTFkYTAwZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjUyMTQ5M2VjMDM4OTczYzc3ZWRjYjhiYzVlYWMyM2VlZDQxNjQ1MTE3ODk0YWFlZTczMDBiMjQ4N2NiNDJiMDYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKaW5kZXggYmY1MjYzNy4uNDBiZWJjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgY29uZmlndXJlLmFjIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTMwNDhjNy4uOTE4ZDIxZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM3LDYgKzEzNywxMiBAQCBBQ19BUkdfRU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKK0luZGV4OiBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRybS0yLjQuOTEub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworQEAgLTE2Myw2ICsxNjMsMTIgQEAgQUNfQVJHX0VOQUJMRShpbnN0YWxsLXRlc3QtcHJvZ3JhbXMsCiAgCQkgIFtJbnN0YWxsIHRlc3QgcHJvZ3JhbXMgKGRlZmF1bHQ6IG5vKV0pLAogIAkJICBbSU5TVEFMTF9URVNUUz0kZW5hYmxldmFsXSwgW0lOU1RBTExfVEVTVFM9bm9dKQogIApAQCAtMjksOCArMjksOCBAQAogIGRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBkbmwgY2hlY2sgY29tcGlsZXIgZmxhZ3MKICBBQ19ERUZVTihbTElCRFJNX0NDX1RSWV9GTEFHXSwgWwotQEAgLTM3Miw3ICszNzgsNyBAQCBpZiB0ZXN0ICJ4JFJBREVPTiIgPSB4eWVzOyB0aGVuCi0gCUFDX0RFRklORShIQVZFX1JBREVPTiwgMSwgW0hhdmUgcmFkZW9uIHN1cHBvcnRdKQorQEAgLTQxMSw3ICs0MTcsNyBAQCBlbHNlCisgCUFDX0RFRklORShIQVZFX1JBREVPTiwgMCkKICBmaQogIAogLWlmIHRlc3QgIngkQU1ER1BVIiAhPSB4bm87IHRoZW4KQEAgLTM4LDggKzM4LDggQEAKICAJIyBEZXRlY3QgY3VuaXQgbGlicmFyeQogIAlQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1VOSVRdLCBbY3VuaXQgPj0gMi4xXSwgW2hhdmVfY3VuaXQ9eWVzXSwgW2hhdmVfY3VuaXQ9bm9dKQogIAkjIElmIHBrZy1jb25maWcgZG9lcyBub3QgZmluZCBjdW5pdCwgY2hlY2sgaXQgdXNpbmcgQUNfQ0hFQ0tfTElCLiAgV2UKLUBAIC0zOTksNyArNDA2LDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfQ1VOSVQsIFt0ZXN0ICJ4JGhhdmVfY3VuaXQiICE9ICJ4bm8iXSwgW0VuYWJsZSBDVU5JVCBIYXZlIGFtZGdwdSBzdXBwb3J0XSkKK0BAIC00MzYsNyArNDQyLDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAxLCBbSGF2ZSBhbWRncHUgc3VwcG9ydF0pCiAgCiAgCWlmIHRlc3QgIngkaGF2ZV9jdW5pdCIgPSAieG5vIjsgdGhlbgogLQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQpAQCAtNDksOCArNDksNSBAQAogKwkJCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKICsJCWZpCiAgCWZpCi0gZmkKLSAKLS0tIAotMi4xLjQKLQorIGVsc2UKKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1Y2I3NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzODAwOTUzZWQ3NTY0OTg4ODcyZTFlOGM2MWZkZTMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTUyNjY5ZGE2MGVhZDYyNTQ4YTM1YmM0MzBhYWZiNmMyZDhkZDIxZWM5ZGJhM2E5MGY5NmVmZjVmZTM2ZDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCi1GSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5MDI4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjNkODdjZGE5MjcwMGI3MTBhMzdkOWI4ZWRhYTlmNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM0YTBlZDBjYzFlZmYwNmY0ODY3NGIxZGE4MWFhZmE2NjFhOWYwMDFlN2E0ZjQzZGRlODEwNzY4ODZkYzgwMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXRuYXZpdi1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKKyAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKK0ZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E5ZmRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGExNjNjODFhYzQzMGNkYzI5MmFkZDIwMGYzZTZhMGMwNDhiZTRkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgT2N0IDIwMTcgMTc6NDA6MDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2ZjeG1sLmM6IGF2b2lkIGRvdWJsZSBmcmVlKCkgb2YgZmlsZW5hbWUKKworSXQncyBhbHNvIGZyZWVkIGFmdGVyIGJhaWwxLCBzbyBubyBuZWVkIHRvIGRvIGl0IGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mY3htbC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9mY3htbC5jIGIvc3JjL2ZjeG1sLmMKK2luZGV4IDE5Y2U5NmEuLmVkYjYwNTQgMTAwNjQ0CistLS0gYS9zcmMvZmN4bWwuYworKysrIGIvc3JjL2ZjeG1sLmMKK0BAIC0zMzk4LDcgKzMzOTgsNiBAQCBGY0NvbmZpZ1BhcnNlQW5kTG9hZCAoRmNDb25maWcJICAgICpjb25maWcsCisgCisgICAgIGZkID0gRmNPcGVuICgoY2hhciAqKSBmaWxlbmFtZSwgT19SRE9OTFkpOworICAgICBpZiAoZmQgPT0gLTEpIHsKKy0JRmNTdHJGcmVlIChmaWxlbmFtZSk7CisgCWdvdG8gYmFpbDE7CisgICAgIH0KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1OGIzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKLWRvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAotZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAotc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAotRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKLXBhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAotbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCi1yYXN0ZXJpemUgZm9udHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMzY3O2VuZGxpbmU9MTM4MjttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmIwMWZjM2Y0MTc2MGM0MWM2OWUzN2NjNzg0YjY1OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDVhNmE2NjNmNGM0YTAwZTE5NjUyMzkwMjYyNjY1NGRkMGM0YTc4Njg2Y2JjNmU0NzJmMzM4ZTUwZmRmODA2IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI4MAotICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCi19Ci0KLVBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgotRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi0jIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKLVJQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1ERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcwotCi1GT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgotCi0jIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKLSMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCi1GT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0Y2JjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCitkb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKK2ZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKK3NwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKK0ZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCitwYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKK2xpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAorcmFzdGVyaXplIGZvbnRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2NztlbmRsaW5lPTEzODI7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwZTc0OGM2N2ZhZDExZTcwNTdhNzFlZDM4NWU4YmRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NGI5ZWJmMDYwYzllNzcwMTE3MzNhYzlkYzBlMmNlOTI4NzBiNTc0Y2NhMjQwNWUxMWY1MzUzYTY4M2MzMzQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvbnRjb25maWctKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODAKKyAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgorfQorCitQQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKK0ZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKKworIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCitSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcmVsYXRpdmVfc3ltbGlua3MKKworRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKKworIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCisjIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQorRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODhlODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQxM2FjM2VhZjUwOGFkYTAxOWM2Mzk1OWVhODFhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNjNjAzZWQ4NGMzYzI0OTVmOWM5MzMxZmU2YmJhM2JiMGVlNjVlMDZlYzMzMWUwYTBmYjUyMTU4MjkxYjQwYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMDU5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9OWYzN2I0ZTZhZmEzZmVmOWRiYTg5MzJiMTZiZDNmOTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnJlZXR5cGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTEzYzQwM2MxMTAwMTZmZGM3ZTUzNzIxNmE2NDJiMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZmZmJhM2M4Y2VmOTNmNTU3ZDFmNzY3ZDdiYzNkZWU4NjBhYzdhM2FhZmY1ODhhNTIxZTA4MWJjMzZmNGM4YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKaW5kZXggOWUwOWNkMi4uNjlmMjE3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhYjc1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhMmNkN2M5OGYxMzg1NGQyZmNkZGFlMGQyYjIwNDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1NzJjMzBhNGU2NDY4OWMzNDJiYTE2MjQxMzBhYzk4OTM2ZDdhZjkwYzMxMDNmOWNlMTJiOGEwYzU3MzY3NjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdvcGVuZ2wnLCAnZWdsLWdsZXMyJywgZCl9IgotCi0jIFRoZSBvcGVuZ2wgYW5kIGVnbC1YWFggb3B0aW9ucyBhcmUgZXhjbHVzaXZlLCBlbmFibGUgb25seSBvbmUuCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgotUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0jIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAotIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgotIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCi0gICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAotICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCi0gICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTcyNWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjJhYjEyMzMxMDMzZGRmYWE1MGRjMzkzNDUzNDM5ODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkZTkxZTdlNjc2MzAzOWJjMTE5NDAwOTVjZDljN2Y4ODBiYWJhODIxOTZhNzc2NWY3MjdhYzA1YTk5M2M5NSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCisKKyMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUiCitQQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKyMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCisjIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCisjIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCisgICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1ZTVhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxYWE0NDZlMWU2NTcxNzMxMWMxNWQ5YWMwY2YzMWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZWM0OTMwZmYwYmIyZDBjNDBhZWUyMDMwNzU0NDc5NTRiNjRhOGMyNjk1MjAyNDEzY2M1ZTQyOGM5MDcxMzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpY3UiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWNhaXJvIFwKLSAgICAtLXdpdGgtZm9udGNvbmZpZyBcCi0gICAgLS13aXRoLWZyZWV0eXBlIFwKLSAgICAtLXdpdGgtZ2xpYiBcCi0gICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKLQotRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKLUZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5YjAyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NjZhYjUxZmM1YWFhNmFmNDA2NTkzNjkzOWNlYzYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0NTc0ZTFiMWY2NWNhNjk0Y2I4ZmI2OTA1MzA5NjY1YzAzNjhhZjE4YTMxMjM1N2Y4ZmY4ODZlZTJmMjk1NjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJpY3UiCitQQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWNhaXJvIFwKKyAgICAtLXdpdGgtZm9udGNvbmZpZyBcCisgICAgLS13aXRoLWZyZWV0eXBlIFwKKyAgICAtLXdpdGgtZ2xpYiBcCisgICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKKworRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKK0ZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2NDZkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCi1IT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTA1YmFiN2M3YWQ4OTlkODViZmJhNjBkYTFhMTI3MWYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT1mNjdkNzBlNTQ3YTI2NjJjMDc5NzgxYzcyZjg3N2Y3MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWI5MGI2ZDJiNDExOWY5ZTU4MDdjZDI3M2Y1MjVkMmFmIFwKLSIKLURFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgotREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmI0OTIzZTI5N2E3ZWFhMjU1ZjA4NTExMDE3YTg4MTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTA5ODk0M2IyNzAzODg3MjdhZTYxZGU4MmFkZWM3M2NmOWYwZGJiMjQwYjNiYzhiMTcyNTk1ZWJmNDA1YjUyOCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1zaW1kIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE1YWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAorIgorREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YzgyZjBmNmEzMTMwZWMwNmI4YTRkMGIzMjFjYmNhMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMjQ4OTBlMmJiNDZlMTJlNzJhNzlmN2U5NjVmNDA5ZjRlMTY0NjZkMDBlMWRkMTVkOTNkNzNlZTZiNTkyNTIzIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgorCitkZWYgZ2V0X2J1aWxkX3RpbWUoZCk6CisgICAgaWYgZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgIT0gTm9uZToKKyAgICAgICAgaW1wb3J0IGRhdGV0aW1lCisgICAgICAgIHJldHVybiAiIC0td2l0aC1idWlsZC1kYXRlPSIrIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoZmxvYXQoZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykpKS5zdHJmdGltZSgiJVklbSVkIikKKyAgICByZXR1cm4gIiIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAZ2V0X2J1aWxkX3RpbWUoZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA3NjFiZjk5M2NhNTUwOTVmNDYzODBjMDIzODU4Mzc5MWMxNzk3Mjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEQ9QzM9QURhej89IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgorRGF0ZTogVHVlLCAxMSBKdWwgMjAxNyAxNDo1MDozNyAtMDUwMAorU3ViamVjdDogW1BBVENIIGttc2N1YmVdIERldGVjdCBnc3RfYm9fbWFwL191bm1hcCBhbmQgdXNlIGl0IChvciBhdm9pZCBpdCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhvc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIGxpYk1hbGksIHRodXMgYnJlYWtpbmcKK2J1aWxkcyBhbmQgY3JlYXRpbmcgaGF2b2MuCisKK1JlbW92aW5nIHRoZSBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IGRlYWwgd2l0aAorZ2JtX2JvX21hcCgpIGFuZCBnYm1fYm9fdW5tYXAoKSByZW5kZXJzIHRoZSBrbXNjdWJlIHV0aWxpdHkKK2EgbGl0dGxlIGxlc3MgdXNlZnVsLCBidXQgc3RpbGwgdmFsdWFibGUuCisKK1NpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KK0NjOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogRXJpYyBFbmdlc3Ryb20gPGVyaWMuZW5nZXN0cm9tQGltZ3RlYy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9tZXNhLWRldi8yMDE3LUp1bHkvMTYzMDIwLmh0bWxdCistLS0KKyBNYWtlZmlsZS5hbSAgIHwgNSArKysrLQorIGNvbmZpZ3VyZS5hYyAgfCAzICsrKworIGdzdC1kZWNvZGVyLmMgfCA3ICsrKysrKy0KKyBrbXNjdWJlLmMgICAgIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYTM2MDg3ZC4uYWI0YWRiZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQzLDcgKzQzLDYgQEAga21zY3ViZV9TT1VSQ0VTID0gXAorIAljb21tb24uYyBcCisgCWNvbW1vbi5oIFwKKyAJY3ViZS1zbW9vdGguYyBcCistCWN1YmUtdGV4LmMgXAorIAlkcm0tYXRvbWljLmMgXAorIAlkcm0tY29tbW9uLmMgXAorIAlkcm0tY29tbW9uLmggXAorQEAgLTU5LDMgKzU4LDcgQEAga21zY3ViZV9MREFERCArPSAkKEdTVF9MSUJTKQorIGttc2N1YmVfQ0ZMQUdTICs9ICQoR1NUX0NGTEFHUykKKyBrbXNjdWJlX1NPVVJDRVMgKz0gY3ViZS12aWRlby5jIGdzdC1kZWNvZGVyLmMKKyBlbmRpZgorKworK2lmIEVOQUJMRV9HQk1fTUFQCisra21zY3ViZV9TT1VSQ0VTICs9IGN1YmUtdGV4LmMKKytlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODM5N2Y3Yi4uYzdmMWY0ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjUsNSArNjUsOCBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9nYm1fbW9kaWZpZXJzIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfR0JNX01PRElGSUVSUywgMSwgW0RlZmluZSBpZiB5b3UgY2FuIHVzZSBHQk0gcHJvcGVydGllcy5dKQorIGZpCisgCisrQUNfQ0hFQ0tfTElCKFtnYm1dLCBbZ2JtX2JvX21hcF0sIFtIQVZFX0dCTV9CT19NQVA9eWVzXSwgW10pCisrQU1fQ09ORElUSU9OQUwoRU5BQkxFX0dCTV9NQVAsIFt0ZXN0ICJ4JEhBVkVfR0JNX0JPX01BUCIgPSAieHllcyJdKQorKworIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorIEFDX09VVFBVVAorZGlmZiAtLWdpdCBhL2dzdC1kZWNvZGVyLmMgYi9nc3QtZGVjb2Rlci5jCitpbmRleCAyZDZkNTgxLi5iODQ5ODBlIDEwMDY0NAorLS0tIGEvZ3N0LWRlY29kZXIuYworKysrIGIvZ3N0LWRlY29kZXIuYworQEAgLTMzMiw2ICszMzIsNyBAQCBzZXRfbGFzdF9mcmFtZShzdHJ1Y3QgZGVjb2RlciAqZGVjLCBFR0xJbWFnZSBmcmFtZSwgR3N0U2FtcGxlICpzYW1wKQorIAlkZWMtPmxhc3Rfc2FtcCA9IHNhbXA7CisgfQorIAorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAvLyBUT0RPIHRoaXMgY291bGQgcHJvYmFibHkgYmUgYSBoZWxwZXIgcmUtdXNlZCBieSBjdWJlLXRleDoKKyBzdGF0aWMgaW50CisgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKK0BAIC0zNTcsNiArMzU4LDcgQEAgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKKyAKKyAJcmV0dXJuIGZkOworIH0KKysjZW5kaWYKKyAKKyBzdGF0aWMgRUdMSW1hZ2UKKyBidWZmZXJfdG9faW1hZ2Uoc3RydWN0IGRlY29kZXIgKmRlYywgR3N0QnVmZmVyICpidWYpCitAQCAtNDEwLDEyICs0MTIsMTUgQEAgYnVmZmVyX3RvX2ltYWdlKHN0cnVjdCBkZWNvZGVyICpkZWMsIEdzdEJ1ZmZlciAqYnVmKQorIAorIAlpZiAoaXNfZG1hYnVmX21lbSkgeworIAkJZG1hYnVmX2ZkID0gZHVwKGdzdF9kbWFidWZfbWVtb3J5X2dldF9mZChtZW0pKTsKKy0JfSBlbHNlIHsKKysJfQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKysJZWxzZSB7CisgCQlHc3RNYXBJbmZvIG1hcF9pbmZvOworIAkJZ3N0X2J1ZmZlcl9tYXAoYnVmLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCk7CisgCQlkbWFidWZfZmQgPSBidWZfdG9fZmQoZGVjLT5nYm0sIG1hcF9pbmZvLnNpemUsIG1hcF9pbmZvLmRhdGEpOworIAkJZ3N0X2J1ZmZlcl91bm1hcChidWYsICZtYXBfaW5mbyk7CisgCX0KKysjZW5kaWYKKyAKKyAJaWYgKGRtYWJ1Zl9mZCA8IDApIHsKKyAJCUdTVF9FUlJPUigiY291bGQgbm90IG9idGFpbiBETUFCVUYgRkQiKTsKK2RpZmYgLS1naXQgYS9rbXNjdWJlLmMgYi9rbXNjdWJlLmMKK2luZGV4IDNhMmM0ZGQuLjI3NmRjNTUgMTAwNjQ0CistLS0gYS9rbXNjdWJlLmMKKysrKyBiL2ttc2N1YmUuYworQEAgLTE0Miw3ICsxNDIsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZWxzZSBpZiAobW9kZSA9PSBWSURFTykKKyAJCWVnbCA9IGluaXRfY3ViZV92aWRlbyhnYm0sIHZpZGVvKTsKKyAJZWxzZQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAJCWVnbCA9IGluaXRfY3ViZV90ZXgoZ2JtLCBtb2RlKTsKKysjZWxzZQorKwkJcHJpbnRmKCJnYm1fYm9fbWFwKCkgc3VwcG9ydCBtaXNzaW5nXG4iKTsKKysjZW5kaWYKKyAKKyAJaWYgKCFlZ2wpIHsKKyAJCXByaW50ZigiZmFpbGVkIHRvIGluaXRpYWxpemUgRUdMXG4iKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IGNhYjY4ZmYuLjViNjRlZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKQEAgLTcsOCArNyw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKIFNSQ1JFViA9ICIwZDhkZTRjZTNhMDNmMzZhZjE4MTdmOWIwNTg2ZDEzMmFkMmM1ZDJlIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IFwKKyAgICBmaWxlOi8vZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2giCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mjk3MjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1BZGQgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgRUdMX0NBU1QKLQotVGhlIEVHTCBBUEkgdXBkYXRlIGZyb20gZDExMTA0ZiBpbnRyb2R1Y2VkIGEgZGVwZW5kZW5jeSBvbiB0aGUKLUVHTF9DQVNUKCkgbWFjcm8sIHByb3ZpZGVkIGJ5IGFuIHVwZGF0ZWQgZWdscGxhdGZvcm0uaC4gR2l2ZW4gdGhhdCB3ZQotZG9uJ3QgcHJvdmlkZSBlZ2xwbGF0Zm9ybS5oLCBhZGQgYSBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBpZiB3ZSdyZQotYnVpbGRpbmcgYWdhaW5zdCBNZXNhIDE3LjAueCBvciBzaW1pbGFyLgotCi1odHRwczovL2J1Z3MuZ2VudG9vLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzOTI2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvY29tbWl0L2ViZTNhNTNkYjFjMGJiMzRlMWNhOTYzYjk1ZDFmMjIyMTE1ZjkzZjhdCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KLQotSW5kZXg6IGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJlcG94eS0xLjQuMy5vcmlnL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0wNi0wNiAwNDoyNDoxMy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBsaWJlcG94eS0xLjQuMy9zcmMvZ2VuX2Rpc3BhdGNoLnB5CTIwMTctMTEtMDYgMTI6NDU6NDMuNTk0OTY2NDczIC0wNjAwCi1AQCAtNDkxLDYgKzQ5MSwxNSBAQAotICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJlcG94eS9nbC5oIicpCi0gICAgICAgICAgICAgaWYgc2VsZi50YXJnZXQgPT0gImVnbCI6Ci0gICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJFR0wvZWdscGxhdGZvcm0uaCInKQotKyAgICAgICAgICAgICAgICAjIEFjY291bnQgZm9yIG9sZGVyIGVnbHBsYXRmb3JtLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0rICAgICAgICAgICAgICAgICMgdGhlIEVHTF9DQVNUIG1hY3JvLgotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWZuZGVmIEVHTF9DQVNUJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19jYXN0PHR5cGU+KHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZWxzZScpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpICgodHlwZSkgKHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAjIEFkZCBzb21lIHJpZGljdWxvdXMgaW50dHlwZXMuaCByZWRlZmluaXRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICAgIyBmcm9tIGtocnBsYXRmb3JtLmggYW5kIG5vdCBpbmNsdWRlZCBpbiB0aGUgWE1MLiAgV2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjZjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0FkZCBvcHRpb24gdG8gZGlzYWJsZSB0ZXN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcHVsbC8xNTgpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjJlYmFlZi4uOTYzMmM3YSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTI0Miw3ICsyNDIsMTAgQEAgbGliZXBveHlfaW5jID0gWworIAorIHN1YmRpcignaW5jbHVkZS9lcG94eScpCisgc3ViZGlyKCdzcmMnKQorLXN1YmRpcigndGVzdCcpCisrCisraWYgZ2V0X29wdGlvbigndGVzdHMnKQorKyAgc3ViZGlyKCd0ZXN0JykKKytlbmRpZgorIAorIGlmIGdldF9vcHRpb24oJ2RvY3MnKQorICAgZG94eWdlbiA9IGZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHJlcXVpcmVkOiBmYWxzZSkKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCBiNWQ3Yzk4Li5kYzMwZTY4IDEwMDY0NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAtMTUsMyArMTUsNyBAQCBvcHRpb24oJ3gxMScsCisgICAgICAgIHR5cGU6ICdib29sZWFuJywKKyAgICAgICAgdmFsdWU6IHRydWUsCisgICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFgxMSBzdXBwb3J0IChHTFggb3IgRUdMLVgxMSknKQorK29wdGlvbigndGVzdHMnLAorKyAgICAgICB0eXBlOiAnYm9vbGVhbicsCisrICAgICAgIHZhbHVlOiB0cnVlLAorKyAgICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSB0ZXN0IHN1aXRlJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcyMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYWY0YzNjZTBmYjExNDNiZGM0ZTQzZjg1Njk1YTliZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI4MDhhMDZjOTY4NWE2MmZjYTM0YjY4MGFiYjhiYzdmYjJmZGEwNzQ0NzhlMzI5YjA2M2MxZjg3MmI4MjZmNiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi0KLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsIC0tZGlzYWJsZS1lZ2wsIHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseCwgLS1kaXNhYmxlLWdseCwgdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYTA4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzZmUzODQ3Nzg5MjU4MjU0ZGNkN2UzZmRiOWU3ZjVlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjOTQ5OTUzOThhNmViZjY5MTYwMGRkYTJlOTY4NWEwY2FjMjYxNDE0MTc1YzJhZGY0NjQ1Y2RmYWI0MmE1ZDUiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzg0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1wcmVwZW5kLW91ci1zeXNyb290LXBhdGgtc28tdGhhdC1tYWtlLWZpbmRzLW91ci13YXlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBiNDQ4MDhlNDMxMzBkY2QxM2I0M2U1Yjk3OGI5YjI0YWViNGMxMzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAyMCBPY3QgMjAxNiAxNDo1Nzo1MSArMDIwMAotU3ViamVjdDogW1BBVENIXSBwcmVwZW5kIG91ciBzeXNyb290IHBhdGggc28gdGhhdCBtYWtlIGZpbmRzIG91cgotIHdheWxhbmQtcHJvdG9jb2wgZmlsZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNCArLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDcyNmRlZDMuLjMzNzY2MDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTEyMDYsNyArMTIwNiw3IEBAIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS12aWRlby13YXlsYW5kLXF0LXRvdWNoXSwgW1F0V2F5bGFuZCBzZXJ2ZXIgc3VwcG9ydCBmb3IKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtZWdsIHdheWxhbmQtY3Vyc29yIHhrYmNvbW1vbmAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAKLS0gICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtY2xpZW50YAotLSAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19ESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSsgICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1jbGllbnRgCi0rICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgCi0gICAgICAgICAgICAgICAgIHZpZGVvX3dheWxhbmQ9eWVzCi0gICAgICAgICAgICAgZmkKLSAgICAgICAgIGZpCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItQXZvaWQtZmluZGluZy1idWlsZC1ob3N0LXMtd2F5bGFuZC1zY2FubmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MzczMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGFlODc5MDkxY2Y2NWNiNzAyOTNiMzc1ZWM3ZTYxZWQxMmE5NmQ4YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMDk6Mzk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgZmluZGluZyBidWlsZCBob3N0J3Mgd2F5bGFuZC1zY2FubmVyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMzM3NjYwMC4uMmFhNmVkNCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTIwNCw3ICsxMjA0LDcgQEAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZpZGVvLXdheWxhbmQtcXQtdG91Y2hdLCBbUXRXYXlsYW5kIHNlcnZlciBzdXBwb3J0IGZvcgotICAgICAgICAgICAgIGlmICRQS0dfQ09ORklHIC0tZXhpc3RzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtc2Nhbm5lciB3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciBlZ2wgeGtiY29tbW9uIDsgdGhlbgotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3Mgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyB3YXlsYW5kLWNsaWVudCB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciB4a2Jjb21tb25gCi0tICAgICAgICAgICAgICAgIFdBWUxBTkRfU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXlsYW5kX3NjYW5uZXIgd2F5bGFuZC1zY2FubmVyYAotKyAgICAgICAgICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NPUkVfUFJPVE9DT0xfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLWNsaWVudGAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSAgICAgICAgICAgICAgICAgdmlkZW9fd2F5bGFuZD15ZXMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTIwYmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2LzUxODQxODZkNDM2Nl0KLQotQmFja3BvcnQgcGF0Y2ggZnJvbSB1cHN0cmVhbSB0byBmaXggYnVpbGQgZmFpbHVyZXMgb24gcHBjIGFuZCBwcGM2NC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgU2FtIExhbnRpbmdhIDxzbG91a2VuQGxpYnNkbC5vcmc+Ci0jIERhdGUgMTQ3NzE1OTMxNSAyNTIwMAotIyBOb2RlIElEIDUxODQxODZkNDM2NjE2OTYxN2I0MzRmNWI3MWM2MThhNzAzNWNkZTQKLSMgUGFyZW50ICA3MWQ0MTQ4ZTMyZGU1MDg4YzRiYzJmMDRjMWU1ZGVkNjQ3YTJiZjgyCi1GaXhlZCBidWcgMzQ2NiAtIENhbid0IGJ1aWxkIDIuMC41IG9uIHBwYzY0Ci0KLS9ob21lL2ZlZG9yYS9TREwyLTIuMC41L3NyYy92aWRlby9TRExfYmxpdF9OLmM6IEluIGZ1bmN0aW9uICdjYWxjX3N3aXp6bGUzMic6Ci0vaG9tZS9mZWRvcmEvU0RMMi0yLjAuNS9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jOjEyNzo1OiBlcnJvcjogSVNPIEM5MCBmb3JiaWRzIG1peGVkIGRlY2xhcmF0aW9ucyBhbmQgY29kZSBbLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnRdCi0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgIF4KLQotZGlmZiAtciA3MWQ0MTQ4ZTMyZGUgLXIgNTE4NDE4NmQ0MzY2IHNyYy92aWRlby9TRExfYmxpdF9OLmMKLS0tLSBhL3NyYy92aWRlby9TRExfYmxpdF9OLmMJV2VkIE9jdCAxOSAyMToyMjo0MiAyMDE2IC0wNzAwCi0rKysgYi9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jCVNhdCBPY3QgMjIgMTE6MDE6NTUgMjAxNiAtMDcwMAotQEAgLTExOCwxMiArMTE4LDYgQEAKLSAgICAgICAgIDE2LCA4LCAwLCAyNCwKLSAgICAgICAgIDAsIE5VTEwKLSAgICAgfTsKLS0gICAgaWYgKCFzcmNmbXQpIHsKLS0gICAgICAgIHNyY2ZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLS0gICAgfQotLSAgICBpZiAoIWRzdGZtdCkgewotLSAgICAgICAgZHN0Zm10ID0gJmRlZmF1bHRfcGl4ZWxfZm9ybWF0OwotLSAgICB9Ci0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIDB4MDQsIDB4MDQsIDB4MDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsCi1AQCAtMTM2LDYgKzEzMCwxNCBAQAotICAgICBVaW50MzIgZ21hc2sgPSBSRVNISUZUKHNyY2ZtdC0+R3NoaWZ0KSA8PCAoZHN0Zm10LT5Hc2hpZnQpOwotICAgICBVaW50MzIgYm1hc2sgPSBSRVNISUZUKHNyY2ZtdC0+QnNoaWZ0KSA8PCAoZHN0Zm10LT5Cc2hpZnQpOwotICAgICBVaW50MzIgYW1hc2s7Ci0rCi0rICAgIGlmICghc3JjZm10KSB7Ci0rICAgICAgICBzcmNmbXQgPSAmZGVmYXVsdF9waXhlbF9mb3JtYXQ7Ci0rICAgIH0KLSsgICAgaWYgKCFkc3RmbXQpIHsKLSsgICAgICAgIGRzdGZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLSsgICAgfQotKwotICAgICAvKiBVc2UgemVybyBmb3IgYWxwaGEgaWYgZWl0aGVyIHN1cmZhY2UgZG9lc24ndCBoYXZlIGFscGhhICovCi0gICAgIGlmIChkc3RmbXQtPkFtYXNrKSB7Ci0gICAgICAgICBhbWFzayA9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9saW5rYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDE4NWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1XaGVuIGJ1aWxkaW5nIHVzZSB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgLmxvIGZpbGVzIGluc3RlYWQgb2YgZXhwbGljaXRseSB1c2luZwotdGhlIC5vIGZpbGVzLiBVbmRlciBsaWJ0b29sIGZvby5sbyBpcyB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgd3JhcHBlciwgZm9vLm8gaXMKLWEgc3RhdGljIGJ1aWxkLCBhbmQgLmxpYnMvZm9vLm8gaXMgYSBzaGFyZWQgYnVpbGQuCi0KLUlmIHN0YXRpYyBsaWJyYXJpZXMgaGF2ZSBiZWVuIGRpc2FibGVkIGdsb2JhbGx5IHRoZW4gbGlidG9vbCB3b24ndCBnZW5lcmF0ZSB0aGVtCi1hbmQgZXhwbGljaXQgcmVmZXJlbmNlcyB0byBmb28ubyB3b24ndCBiZSBzYXRpc2ZpZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAKLTIwMTYvMS8xNgotCi0KLUluZGV4OiBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFNETDItMi4wLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotQEAgLTM0NjQsMjMgKzM0NjQsMjMgQEAgZG9uZQotIAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotLVZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1ZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5sbyxnJ2AKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gIiRWRVJTSU9OX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5yY1xcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLSBTRExNQUlOX0RFUEVORFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLS1TRExNQUlOX09CSkVDVFM9YGVjaG8gIiRTRExNQUlOX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETE1BSU5fT0JKRUNUUz1gZWNobyAiJFNETE1BSU5fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETE1BSU5fREVQRU5EUz1gZWNobyAiJFNETE1BSU5fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSBTRExURVNUX09CSkVDVFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLSBTRExURVNUX0RFUEVORFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLS1TRExURVNUX09CSkVDVFM9YGVjaG8gIiRTRExURVNUX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETFRFU1RfT0JKRUNUUz1gZWNobyAiJFNETFRFU1RfT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETFRFU1RfREVQRU5EUz1gZWNobyAiJFNETFRFU1RfREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSAjIFNldCBydW50aW1lIHNoYXJlZCBsaWJyYXJ5IHBhdGhzIGFzIG5lZWRlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJkM2FhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgotREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCi1saWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCi1qb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1iMjMwNGFkN2U5MTcxMTAyNzU5MGQzZjEwMmE3NTRiNyIKLQotUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgotCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2xpbmthZ2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUF2b2lkLWZpbmRpbmctYnVpbGQtaG9zdC1zLXdheWxhbmQtc2Nhbm5lci5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDQwNTU0MjRkNTU2YjRhOTA4YWE3NmZhZDYzYWJkM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMDM4Y2Y1NTk2NTk2OWYyZmYwNmQ5NzYwMzE4MTNkZTY0M2FmOWM5ZWRjOWUzMzFiZDc2MWMyNDJlODc4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KLSAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbwotICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKLSAgICAgICAgZG9uZQotICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZjcwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCitsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCitqb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0wMmVlMjY4MTRkZDA0NGJkNzgzOGFlMjRlMDViODgwZiIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgorCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzgwMGQ3MDVjZWY3NDJjNmE2MzRmMjAyYzM3ZjI2M2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRjNzdjNTczMDg2NjFkNTc2ZTg0MzM0NGQ4NjM4ZTAyNWE3ODE4YmZmNzNmOGZiZmFiMDljM2M1ZmQwOTJlYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgKGRlc2t0b3ApIG9wZW5nbCwgZ2xlczIsIG9yIG5vIEdMCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgZGlyZWN0ZmIgcHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGdsZXMyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgID0gIi0tZW5hYmxlLWFsc2EgLS1kaXNhYmxlLWFsc2F0ZXN0LC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgPSAiLS1lbmFibGUtdmlkZW8tZGlyZWN0ZmIsLS1kaXNhYmxlLXZpZGVvLWRpcmVjdGZiLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2xlcywtLWRpc2FibGUtdmlkZW8tb3BlbmdsZXMsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCisgICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KKyAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCisgICAgICAgIGRvbmUKKyAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA4MmMxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy5naXQ7YnJhbmNoPXYxLjgtYnJhbmNoIgotU1JDUkVWID0gIjAxMWM3MDliOThiNTJkYjNiMTBhZWIzNjFkZmVhOWRhNDM5MzAzNjQiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODAxOGVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNjY0OWJlNzAzOTA2MDY2NTFjYjYzNjMyMGJmZDQzYzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZhNzc5MGMzZGNjNTY1MzczNzJjOTBhODMwMzZhMzEzNjE5NGE4YjM5N2U4NGU5N2JmOWNjOTI1NGZhMmM1MSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVkYTg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS44LWJyYW5jaCAiCi1TUkNSRVYgPSAiNDU3NDcwOTg3Y2M5ZGY1OTc2Y2U4YzcyZmZkNGJmYmQ5YmFhZjBmOSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tdHBpICR7UE59LWdseCAke1BOfS1lZ2wgJHtQTn0td2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0tdHBpID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLVJERVBFTkRTXyR7UE59LWVnbCA9KyAiJHtQTn0teDExIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kcmkvLmRlYnVnIgotCi1GSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tdHBpID0rICIke2xpYmRpcn0vbGlidmEtdHBpKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS1lZ2wgPSsgIiR7bGliZGlyfS9saWJ2YS1lZ2wqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjZjYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCithbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKK2hhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCitiYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCitkZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKK3NwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKK01lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKK2xpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKK21hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAordmlkZW8gZGVjb2RpbmcuIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWQ2ZTRmMWQzNmM0MDc1NjYzNDNlOWRkZTVhOTcyYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNmYTk1M2ExMWQzMjEwYzNhNGVlNzkwMzFhYmRiZTA4NjNkNWNlMTNkOWIzZjkzZjMxNWYxZWVjNjBhNGIwZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0VYVFJBX09FQ09ORiA9ICJhY19jdl9wcm9nX1dBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgorCitQQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LWdseCAke1BOfS13YXlsYW5kIgorCitSREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCisKK0ZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCitGSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKaW5kZXggYmQxZTg2My4uZjkwOGQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCkBAIC0yMCwxNyArMjAsMTggQEAKIAogZXhwbGljdGx5IGFkZCBFWFBBVF9MSUJTIHRvIGludGVsJ3MgVlVMS0FOX0xJQl9ERVBTCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmddCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTA1ZmM2MmQ4OWY1OWNlMTlhMThiZmQ0ZTYzYTA5NjI0OTEwZDZjYWYKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLWluZGV4IDI3MWIwYTUuLjhmYmUyYzggMTAwNjQ0Ci0tLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCi0rKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitJbmRleDogbWVzYS0xNy4zLjYvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1lc2EtMTcuMy42Lm9yaWcvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorKysrIG1lc2EtMTcuMy42L3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KIEBAIC0xNDQsNiArMTQ0LDcgQEAgVlVMS0FOX0xJQl9ERVBTID0gXAogIAkkKExJQkRSTV9MSUJTKSBcCiAgCSQoUFRIUkVBRF9MSUJTKSBcCkBAIC0zOCw3ICszOSw0IEBACiArCSQoRVhQQVRfTElCUykgXAogIAktbG0KICAKLSBpZiBIQVZFX1BMQVRGT1JNX1gxMQotLS0gCi0yLjcuNAotCisgaWYgSEFWRV9QTEFURk9STV9BTkRST0lECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAppbmRleCBlYjZmZjRmLi4yNDQ0YjI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKQEAgLTE0LDEyICsxNCwxMiBAQAogIGNvbmZpZ3VyZS5hYyB8IDcgKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM3ZTYzNmZhYy4uZDJiMjM1MDczOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjE3NCwxMiArMjE3NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiICE9IHhhdXRvOyB0aGVuCi0gICAgIHdpdGhfZWdsX3BsYXRmb3Jtcz0kd2l0aF9wbGF0Zm9ybXMKK0luZGV4OiBtZXNhLTE3LjMuNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZXNhLTE3LjMuNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG1lc2EtMTcuMy42L2NvbmZpZ3VyZS5hYworQEAgLTE2OTQsMTIgKzE2OTQsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfcGxhdGZvcm1zIiA9IHhhdXRvOyB0aGVuCisgICAgIHdpdGhfcGxhdGZvcm1zPSR3aXRoX2VnbF9wbGF0Zm9ybXMKICBmaQogIAogLVBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwKQEAgLTMwLDggKzMwLDUgQEAKIC1maQogK0FDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCiAgCi0gIyBEbyBwZXItRUdMIHBsYXRmb3JtIHNldHVwcyBhbmQgY2hlY2tzCi0gZWdsX3BsYXRmb3Jtcz1gSUZTPScsICc7IGVjaG8gJHdpdGhfZWdsX3BsYXRmb3Jtc2AKLS0tIAotMi4xMy4wCi0KKyBQS0dfQ0hFQ0tfRVhJU1RTKFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz15ZXNdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz1ub10pCisgaWYgdGVzdCAieCRoYXZlX3dheWxhbmRfcHJvdG9jb2xzIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3YTNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDk4NjE0MzdlNThmZGQwZGUwMTE5M2ExMDI2MDhkMzRlNTk1Mjk1M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotRGF0ZTogVGh1LCAyMCBBcHIgMjAxNyAxMDozNDoxOCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gYWM6IGZpeCBidWlsZCBhZnRlciBMTFZNIDUuMCBTVk4gcjMwMDcxOAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi12MjogcHJldmlvdXNseSBnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoKSBleGlzdHMsIGJ1dCBhZGRBdHRyKCkgZG9lc24ndCB0YWtlIHRoYXQgdHlwZQotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotUmV2aWV3ZWQtYnk6IE5pY29sYWkgSMOkaG5sZSA8bmljb2xhaS5oYWVobmxlQGFtZC5jb20+Ci1UZXN0ZWQtYW5kLXJldmlld2VkLWJ5OiBNaWtlIExvdGhpYW4gPG1pa2VAZmlyZWJ1cm4uY28udWs+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotaW5kZXggZDllYTRiMS4uMTFmYTgwOSAxMDA2NDQKLS0tLSBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotKysrIGIvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCi1AQCAtNDQsOSArNDQsMTMgQEAgdHlwZWRlZiBBdHRyaWJ1dGVTZXQgQXR0cmlidXRlTGlzdDsKLSB2b2lkIGFjX2FkZF9hdHRyX2RlcmVmZXJlbmNlYWJsZShMTFZNVmFsdWVSZWYgdmFsLCB1aW50NjRfdCBieXRlcykKLSB7Ci0gICAgbGx2bTo6QXJndW1lbnQgKkEgPSBsbHZtOjp1bndyYXA8bGx2bTo6QXJndW1lbnQ+KHZhbCk7Ci0rI2lmIEhBVkVfTExWTSA8IDB4MDUwMAotICAgIGxsdm06OkF0dHJCdWlsZGVyIEI7Ci0gICAgQi5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGJ5dGVzKTsKLSAgICBBLT5hZGRBdHRyKGxsdm06OkF0dHJpYnV0ZUxpc3Q6OmdldChBLT5nZXRDb250ZXh0KCksIEEtPmdldEFyZ05vKCkgKyAxLCAgQikpOwotKyNlbHNlCi0rICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGU6OmdldFdpdGhEZXJlZmVyZW5jZWFibGVCeXRlcyhBLT5nZXRDb250ZXh0KCksIGJ5dGVzKSk7Ci0rI2VuZGlmCi0gfQotIAotIGJvb2wgYWNfaXNfc2dwcl9wYXJhbShMTFZNVmFsdWVSZWYgYXJnKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1M2M0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMWY3ZDc1MjE5M2YwMmQxNWQ1OTIzY2VlOTkyZThmNDZkNGM2ZGYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDEzOjUxOjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWx3YXlzIGNoZWNrIGZvciBleHBhdAotCi1leHBhdCB3YXMgbm90IGNoZWNrZWQgaWYgZHJpIHdhcyBub3QgYnVpbHQgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCi1pbiB2dWxrYW4gZHJpdmVyOiBiYWNrcG9ydCBhIGZpeCAoYSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCi10aGF0IHNob3VsZCBlbmQgdXAgaW4gMTcuMykuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxNSArKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmZDM0NmM4YWEyLi42NjJmYWVjZWZhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzc3LDYgKzE3NzcsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2RyaV9kcml2ZXJzIiA9IHhubzsgdGhlbgotICAgICB3aXRoX2RyaV9kcml2ZXJzPScnCi0gZmkKLSAKLSsjIENoZWNrIGZvciBleHBhdAotK1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0pCi0rUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwsCi0rICAgIFtQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXQyMV0pXQotKykKLSsKLSBkbmwgSWYgJHdpdGhfZHJpX2RyaXZlcnMgaXMgeWVzLCBkcml2ZXJzIHdpbGwgYmUgYWRkZWQgdGhyb3VnaAotIGRubCBwbGF0Zm9ybSBjaGVja3MuIFNldCBERUZJTkVTIGFuZCBMSUJfREVQUwotIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi1AQCAtMTgxMCwxNSArMTgxNiw2IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi0gICAgICAgICB3aXRoX2RyaV9kcml2ZXJzPSJpOTE1IGk5NjUgbm91dmVhdSByMjAwIHJhZGVvbiBzd3Jhc3QiCi0gICAgIGZpCi0gCi0tICAgICMgQ2hlY2sgZm9yIGV4cGF0Ci0tICAgIFBLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0sIFtdLAotLSAgICAgICAgIyBleHBhdCB2ZXJzaW9uIDIuMCBhbmQgZWFybGllciBkbyBub3QgcHJvdmlkZSBleHBhdC5wYwotLSAgICAgICAgW0FDX0NIRUNLX0hFQURFUihbZXhwYXQuaF0sW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGhlYWRlcnMgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgQUNfQ0hFQ0tfTElCKFtleHBhdF0sW1hNTF9QYXJzZXJDcmVhdGVdLFtdLAotLSAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGxpYnJhcnkgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgRVhQQVRfTElCUz0iLWxleHBhdCJdKQotLQotICAgICAjIHB1dCBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJzIHRvZ2V0aGVyCi0gICAgIERSSV9MSUJfREVQUz0iJERSSV9MSUJfREVQUyAkU0VMSU5VWF9MSUJTICRMSUJEUk1fTElCUyAkRVhQQVRfTElCUyAtbG0gJFBUSFJFQURfTElCUyAkRExPUEVOX0xJQlMiCi0gZmkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYmE3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNGNiZWNiNjE2ODJhMGVlNDI2ZmFhYTAzZDgyNGZjOGZkN2FlZjgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgorRGF0ZTogTW9uLCAyIEFwciAyMDE4IDEzOjIwOjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0L2RyaTogSW5pdGlhbGlzZSBtb2RpZmllciB0byBJTlZBTElEIGZvciBEUkkyCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1doZW4gYWxsb2NhdGluZyBhIGJ1ZmZlciBmb3IgRFJJMiwgc2V0IHRoZSBtb2RpZmllciB0byBJTlZBTElEIHRvIGluZm9ybQordGhlIGJhY2tlbmQgdGhhdCB3ZSBoYXZlIG5vIHN1cHBsaWVkIG1vZGlmaWVycyBhbmQgaXQgc2hvdWxkIGRvIGl0cyBvd24KK3RoaW5nLiBUaGUgbWlzc2VkIGluaXRpYWxpc2F0aW9uIGZvcmNlZCBsaW5lYXIsIGV2ZW4gaWYgdGhlCitpbXBsZW1lbnRhdGlvbiBoYWQgbWFkZSBvdGhlciBkZWNpc2lvbnMuCisKK1RoaXMgcmVzdWx0ZWQgaW4gVkM0IERSSTIgY2xpZW50cyBmYWlsaW5nIHdpdGg6CisgIE1vZGlmaWVyIDB4MCB2cy4gdGlsaW5nICgweDcwMDAwMDAwMDAwMDAwMSkgbWlzbWF0Y2gKKworU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+CitSZXBvcnRlZC1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgorRml4ZXM6IDNmODUxMzE3MmZmNiAoImdhbGxpdW0vd2luc3lzL2RybTogaW50cm9kdWNlIG1vZGlmaWVyIGZpZWxkIHRvIHdpbnN5c19oYW5kbGUiKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQorCitbMV0gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD00Y2JlY2I2MTY4MmEwZWU0MjZmYWFhMDNkODI0ZmM4ZmQ3YWVmODI2CistLS0KKyBzcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIGIvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYworaW5kZXggMzFkMTdkNDZjMi4uNThhNjc1N2YwMyAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKKysrKyBiL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKK0BAIC04MDYsNiArODA2LDcgQEAgZHJpMl9hbGxvY2F0ZV90ZXh0dXJlcyhzdHJ1Y3QgZHJpX2NvbnRleHQgKmN0eCwKKyAgICAgICAgICB3aGFuZGxlLmhhbmRsZSA9IGJ1Zi0+bmFtZTsKKyAgICAgICAgICB3aGFuZGxlLnN0cmlkZSA9IGJ1Zi0+cGl0Y2g7CisgICAgICAgICAgd2hhbmRsZS5vZmZzZXQgPSAwOworKyAgICAgICAgIHdoYW5kbGUubW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9JTlZBTElEOworICAgICAgICAgIGlmIChzY3JlZW4tPmNhbl9zaGFyZV9idWZmZXIpCisgICAgICAgICAgICAgd2hhbmRsZS50eXBlID0gRFJNX0FQSV9IQU5ETEVfVFlQRV9TSEFSRUQ7CisgICAgICAgICAgZWxzZQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzhjYWVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gYTAyYTBkZmRhMjcxMmQzMGFkNjJiOGYwNDIxZWM3YjgyNDRiYTJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9NaWNoZWw9MjBEPUMzPUE0bnplcj89IDxtaWNoZWwuZGFlbnplckBhbWQuY29tPgotRGF0ZTogV2VkLCAxMCBNYXkgMjAxNyAxNzoyNjowNyArMDkwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2FsbGl2bTogRml4IGJ1aWxkIGFnYWluc3QgTExWTSBTVk4gPj0gcjMwMjU4OQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1kZXJlZ2lzdGVyRUhGcmFtZXMgZG9lc24ndCB0YWtlIGFueSBwYXJhbWV0ZXJzIGFueW1vcmUuCi0KLVJldmlld2VkLWJ5OiBWZWRyYW4gTWlsZXRpxIcgPHZlZHJhbkBtaWxldGljLm5ldD4KLVJldmlld2VkLWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJlay5vbHNha0BhbWQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAgfCAxMiArKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi1pbmRleCAyYTM4OGNiLi4wZTRhNTMxIDEwMDY0NAotLS0tIGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi0rKysgYi9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKLUBAIC0zNDIsMTQgKzM0MiwyMCBAQCBjbGFzcyBEZWxlZ2F0aW5nSklUTWVtb3J5TWFuYWdlciA6IHB1YmxpYyBCYXNlTWVtb3J5TWFuYWdlciB7Ci0gICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0gICAgICAgICAgbWdyKCktPnJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgewotLSAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotLSAgICAgIH0KLSAjZWxzZQotICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKGxsdm06OlN0cmluZ1JlZiBTZWN0aW9uRGF0YSkgewotICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKFNlY3Rpb25EYXRhKTsKLSAgICAgICB9Ci0gI2VuZGlmCi0rI2lmIEhBVkVfTExWTSA+PSAweDA1MDAKLSsgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKCkgewotKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoKTsKLSsgICAgICB9Ci0rI2VsaWYgSEFWRV9MTFZNID49IDB4MDMwNAotKyAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0rICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7Ci0rICAgICAgfQotKyNlbmRpZgotICAgICAgIHZpcnR1YWwgdm9pZCAqZ2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBYm9ydE9uRmFpbHVyZT10cnVlKSB7Ci0gICAgICAgICAgcmV0dXJuIG1ncigpLT5nZXRQb2ludGVyVG9OYW1lZEZ1bmN0aW9uKE5hbWUsIEFib3J0T25GYWlsdXJlKTsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRhYWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMThjM2U2ODRhODI1OWEwNjQ0MjE0Zjg4YzdlYWQ3ZmEzMTU3M2ZkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDEwOjI3OjU5IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBQeXRob24gMyB0byBleGVjdXRlIHRoZSBzY3JpcHRzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGUgTUVTQSBidWlsZCBzeXN0ZW0gdXNlcyBQeXRob24gMiBidXQgYXMgT0UtQ29yZSBoYXMgbW92ZWQgYXdheSBmcm9tCitpdCwgd2UgY2hhbmdlIGl0IHRvIHVzZSBQeXRob24gMyBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjb25maWd1cmF0aW9uIF0KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjEwN2YwNGMyZS4uMDU1NTQ2MTQyZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTE0LDcgKzExNCw3IEBAIEFDX1BST0dfQ1hYCisgQU1fUFJPR19DQ19DX08KKyBBTV9QUk9HX0FTCisgQVhfQ0hFQ0tfR05VX01BS0UKKy1BQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24yLjcgcHl0aG9uMiBweXRob25dKQorK0FDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjMuNSBweXRob24zIHB5dGhvbl0pCisgQUNfUFJPR19TRUQKKyBBQ19QUk9HX01LRElSX1AKKyAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKaW5kZXggYWEzM2ExZS4uZmQ3OTk5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKQEAgLTEsMTggKzEsMjQgQEAKLVdoZW4gYnVpbGRpbmcgbGx2bSBmcm9tIGdpdCBvciBzdm4gaXQgZW1iZWRzIHRoZSBzdm4vZ2l0IHJldmlzaW9uIGludG8gaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmcKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitTdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IGdldCBMTFZNIHZlcnNpb24gd2hlbiB1c2luZyBMTFZNIEdpdCByZWxlYXNlcwogCi0kIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3JlaTctNjQtYmVjLWxpbnV4L21lc2EvMl8xNy4xLjUtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9sbHZtNS4wL2xsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiskIGxsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiA1LjAuMGdpdC05YTVjMzMzMzg4YwogCi1XZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMgZG9pbmcKK1dlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcworZG9pbmcKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXNhLTE3LjEuNS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG1lc2EtMTcuMS41L2NvbmZpZ3VyZS5hYwotQEAgLTk2Nyw3ICs5NjcsNyBAQCBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzKCkgeworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTAyMTczZjI0NC4uYjEwN2YwNGMyZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTk1LDcgKzk5NSw3IEBAIHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MoKSB7CiAgCiAgbGx2bV9zZXRfZW52aXJvbm1lbnRfdmFyaWFibGVzKCkgewogICAgICBpZiB0ZXN0ICJ4JExMVk1fQ09ORklHIiAhPSB4bm87IHRoZW4KQEAgLTIxLDEyICsyNywxNSBAQAogICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAogICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAogICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKLUBAIC0yNTYwLDcgKzI1NjAsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtIiA9IHh5ZXM7IHRoZW4KK0BAIC0yNjQ0LDcgKzI2NDQsNyBAQCBkZXRlY3Rfb2xkX2J1Z2d5X2xsdm0oKSB7CisgICAgIGRubCBvdXJzZWx2ZXMuCiAgICAgIGRubCAoU2VlIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMykKLSAgICAgaWYgdGVzdCAieCRlbmFibGVfbGx2bV9zaGFyZWRfbGlicyIgPSB4eWVzOyB0aGVuCi0gICAgICAgICBkbmwgV2UgY2FuJ3QgdXNlICRMTFZNX1ZFUlNJT04gYmVjYXVzZSBpdCBoYXMgJ3N2bicgc3RyaXBwZWQgb3V0LAotLSAgICAgICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCi0rICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbnxjdXQgLWMxLTVgCi0gICAgICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCisgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uYAorKyAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGN1dCAtYzEtNWAKKyAgICAgQVNfSUYoW3Rlc3QgLWYgIiRMTFZNX0xJQkRJUi9saWIkTExWTV9TT19OQU1FLiRJTVBfTElCX0VYVCJdLCBbbGx2bV9oYXZlX29uZV9zbz15ZXNdKQogIAotICAgICAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjgwZWU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1lbmRpYW5uZXNzIGNoZWNrIGlzIE9TIHdpZGUgYW5kIG5vdCBzcGVjaWZpYyB0byBsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHNyYy91dGlsL3VfZW5kaWFuLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdXRpbC91X2VuZGlhbi5oIGIvc3JjL3V0aWwvdV9lbmRpYW4uaAotaW5kZXggYjlkNTYzZC4uMmQ1ZWFiOSAxMDA2NDQKLS0tLSBhL3NyYy91dGlsL3VfZW5kaWFuLmgKLSsrKyBiL3NyYy91dGlsL3VfZW5kaWFuLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2lmbmRlZiBVX0VORElBTl9ICi0gI2RlZmluZSBVX0VORElBTl9ICi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKEFORFJPSUQpCi0rI2lmIGRlZmluZWQoX19saW51eF9fKQotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAKLSAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlZTVlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYzc4OTc5ZmQ5NWExYzRmNzMyZjdlNmVkZjBmMzJjNTI0ZTU5NTViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE3OjEwOjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3JpZXMgd2hlbgotIHJlcXVpcmVkCi0KLUluIG91dC1vZi10cmVlIGJ1aWxkcyBzcmMvaW50ZWwvdnVsa2FuIHdvbid0IGV4aXN0LCBzbyBhbHdheXMgY3JlYXRlIGl0IGJlZm9yZQotd3JpdGluZyBpbnRvIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotaW5kZXggMzg1N2E1ZGM2Mi4uMjZlOWNkNDEwYyAxMDA2NDQKLS0tLSBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLSsrKyBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLUBAIC00NCwxMSArNDQsMTMgQEAgRVhUUkFfRElTVCArPSBcCi0gCXZ1bGthbi9UT0RPCi0gCi0gdnVsa2FuL2Rldl9pY2QuanNvbiA6IHZ1bGthbi9kZXZfaWNkLmpzb24uaW4KLSsJJChNS0RJUl9HRU4pCi0gCSQoQU1fVl9HRU4pICQoU0VEKSBcCi0gCQktZSAicyNAYnVpbGRfbGliZGlyQCMke2Fic190b3BfYnVpbGRkaXJ9LyR7TElCX0RJUn0jIiBcCi0gCQk8ICQoc3JjZGlyKS92dWxrYW4vZGV2X2ljZC5qc29uLmluID4gJEAKLSAKLSB2dWxrYW4vaW50ZWxfaWNkLkBob3N0X2NwdUAuanNvbiA6IHZ1bGthbi9pbnRlbF9pY2QuanNvbi5pbgotKwkkKE1LRElSX0dFTikKLSAJJChBTV9WX0dFTikgJChTRUQpIFwKLSAJCS1lICJzI0BpbnN0YWxsX2xpYmRpckAjJHtsaWJkaXJ9IyIgXAotIAkJPCAkKHNyY2RpcikvdnVsa2FuL2ludGVsX2ljZC5qc29uLmluID4gJEAKLS0tIAotMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4zLjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMy44LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNGYzMWVkMi4uYjUwMWI3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtMTYsOSArMTYsMTUgQEAKIAogREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgemxpYiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKIEVYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL21lc2EiCitQUk9WSURFUyA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ29wZW5nbCcsICd2aXJ0dWFsL2xpYmdsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2xlcycsICd2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczInLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndmlydHVhbC9lZ2wnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAndmlydHVhbC9saWJnYm0nLCAnJywgZCl9IFwKKyAgICB2aXJ0dWFsL21lc2EgXAorICAgICIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCB2dWxrYW4iCiAKQEAgLTM0LDcgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAneDExIGRyaTMnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB2dWxrYW4nLCAnZHJpMycsICcnLCBkKX0gXAogCQkgICAiCiAKQEAgLTQ1LDcgKzUxLDcgQEAKICMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSB3YXlsYW5kLXByb3RvY29scyIKIAogRFJJRFJJVkVSUyA9ICJzd3Jhc3QiCiBEUklEUklWRVJTX2FwcGVuZF94ODYgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgpAQCAtNTksNyArNjUsNyBAQAogVlVMS0FOX0RSSVZFUlMgPSAiIgogVlVMS0FOX0RSSVZFUlNfYXBwZW5kX3g4NiA9ICIsaW50ZWwiCiBWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIixpbnRlbCIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycywgcHl0aG9uMy1tYWtvLW5hdGl2ZSIKIAogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLW9wZW5nbCwgLS1kaXNhYmxlLW9wZW5nbCIKIApAQCAtNzcsMTMgKzgzLDEzIEBACiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpbXgnLCAnLGlteCcsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19MTFZNMzMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncjYwMCcsICdyYWRlb25zaSxyNjAwJywgJycsIGQpfSIKIFBBQ0tBR0VDT05GSUdbcjYwMF0gPSAiIgotR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ01FU0FfTExWTV9SRUxFQVNFJywgJzMuMicsIEZhbHNlLCBsZW4oJyR7R0FMTElVTURSSVZFUlNfTExWTTMzfScpID4gMCwgZCl9IgorR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdNRVNBX0xMVk1fUkVMRUFTRScsICczLjInLCBGYWxzZSwgbGVuKCcke0dBTExJVU1EUklWRVJTX0xMVk0zM30nKSA+IDAsIGQpfSIKIEdBTExJVU1EUklWRVJTX0xMVk0gPSAicjMwMCxzdmdhLG5vdXZlYXUke0AnLCR7R0FMTElVTURSSVZFUlNfTExWTTMzfScgaWYgJHtHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRH0gZWxzZSAnJ30iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiAjIGtlZXAgLS13aXRoLWdhbGxpdW0tZHJpdmVycyBzZXBhcmF0ZSwgYmVjYXVzZSB3aGVuIG9ubHkgb25lIG9mIGdhbGxpdW0gdmVyc2lvbnMgaXMgZW5hYmxlZCwgb3RoZXIgMiB3ZXJlIGFkZGluZyAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzCiBQQUNLQUdFQ09ORklHW2dhbGxpdW1dICAgICAgPSAiLS1lbmFibGUtdGV4dHVyZS1mbG9hdCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzIgotTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjUuMCIKK01FU0FfTExWTV9SRUxFQVNFID89ICI2LjAiCiBQQUNLQUdFQ09ORklHW2dhbGxpdW0tbGx2bV0gPSAiLS1lbmFibGUtbGx2bSAtLWVuYWJsZS1sbHZtLXNoYXJlZC1saWJzLCAtLWRpc2FibGUtbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0AnZWxmdXRpbHMnIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFID0gIiR7TUVTQV9MTFZNX1JFTEVBU0V9IgpAQCAtOTksOSArMTA1LDYgQEAKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCiAKLSMgTXVsdGlwbGUgdmlydHVhbC9nbCBwcm92aWRlcnMgYmVpbmcgYnVpbHQgYnJlYWtzIHN0YWdpbmcKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5Y2ZjZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Z1bGthbi1ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTQwYmI0MjhhMjYzYmQyOGNiZjY0NzhkYWU0NWIyMDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlmNDcyYTg3NGIxMTIyNDA0ZmEwYmQxM2UyZDZiZjg3ZWIzYjlhZDljMjFkMmYzOTg3MmE5NmQ4M2Q5ZTVmNSIKLQotI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCi0jbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNmZDNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgJHtCUE59LmluYworCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKKwkgICBmaWxlOi8vVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDNkMWE3OTE1NmFiNjkyNmYyZDI1M2IzNzdlOWQ5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjlkOWJmMjgxYzQ4ZTRhOGY1MjI4ODE2NTc3MjYzYjRjNjU1MjQ4ZGM3NjY2ZTc1MDM0YWI0MjI5NTFhNmIxIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAppbmRleCA4MTJkYTIxLi45ZTE2MjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIFRoZXkgdGFrZSBwcmVjZW5kZW5jZSBvdmVyIG91ciBjdXN0b21pemVkIG1hY3JvcywgYW5kIHNvCiBpbnRyb3NwZWN0aW9uIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3Vwc3RyZWFtIDVjY2ZlMF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgYWNpbmNsdWRlLm00IHwgOTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTgsNCArMTE4LDMgQEAKIC1dKQogLS0gCiAyLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkOWM2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAorIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMThkN2ViOGQ1MmU3ZTQ0NWU3MzNjMTA5ZGRhYTdiNzgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MGFmMWJlYWE3YmY5ZTRjNTJkYjI5ZWMyNTFlYzRmZDBhOGYyY2MxODVkNTIxYWQxZjg4ZDAxYjNhNmExN2UzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKKworRVhUUkFfT0VDT05GID0gIiBcCisJICAgICAgICAtLWRpc2FibGUtZGVidWcgXAorCSAgICAgICAgIgorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorTElCViA9ICIxLjguMCIKKworIyBUaGlzIGJpbmFyeSBuZWVkcyB0byBiZSBjb21waWxlZCBmb3IgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLiAgVGhpcyBpc24ndCBwcmV0dHkhCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiBBTV9DUFBGTEFHUz0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMCkiIGdlbl9hbGxfdW5pY29kZV9MREFERD0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjApIiAtQyAke0J9L3Rlc3RzIGdlbi1hbGwtdW5pY29kZQorCWZpCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYW5nby8ke0xJQlZ9L21vZHVsZXMvKi5sYSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmVyYXRpb24tZm9udHMgY2FudGFyZWxsLWZvbnRzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzNkMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAotIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTA3YzY3NDZmYmY1M2ZjOWQ0OGM1NzdmMWUyNjVkZTMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYTE1MmI3MzgzYTFlOWY3ZmQ3NGFlOTYwMjNkYzY3NzBkYzUwNDM0MTQ3OTNiZmU3NjhmZjA2YjY3NTllNTczIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKLQlmaQotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCBkMjc0YThmLi5iOTM2YWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKQEAgLTYsMTAgKzYsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2ggXAogICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotIyBGcm9tIDIwMTctMDctMDMKLVNSQ1JFViA9ICJjOGY0ZmQ5ZWViMjk4YTJlZjA4NTU5MjdmMjI2MzRmNzk0ZWYzZWZmIgorIyBGcm9tIDIwMTgtMDItMjYKK1NSQ1JFViA9ICI0Y2UwODg3ZTJmN2Y4NDhkMmJlMmU0MzVhMmQwZjNjODBlNDRlYTNiIgogIyAod2hlbiBQViBnb2VzIGFib3ZlIDEuMCByZW1vdmUgdGhlIHRyYWlsaW5nIHIpCiBQViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgogCkBAIC00MCwxNCArNDAsMTIgQEAKICAgIGZpCiB9CiAKLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9ICdERVNURElSPSR7RH0nIGluc3RhbGwvc3RyaXAKLX0KK09FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPSAiaW5zdGFsbC9zdHJpcCIKIAogUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHB5dGhvbjMgcHl0aG9uMy1tYWtvIHB5dGhvbjMtanNvbiBcCi0JcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtbWlzYyBweXRob24zLWltcG9ydGxpYiBcCisJcHl0aG9uMy1taXNjIFwKIAlweXRob24zLXVuaXhhZG1pbiBweXRob24zLXhtbCBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCi0JcHl0aG9uMy1zaXggcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtYXJncGFyc2UgXAorCXB5dGhvbjMtc2l4IHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBcCiAJcHl0aG9uMy1uZXRzZXJ2ZXIgbWVzYS1kZW1vcyBiYXNoIFwKIAkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1iaXRzdHJlYW0tdmVyYV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKaW5kZXggYjJlNGNlZi4uNzBiMzJjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKQEAgLTEzLDI2ICsxMywyMCBAQAogCiBGT05UX1BBQ0tBR0VTID0gIiR7UE59IgogCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIgCi0KLWRvX2luc3RhbGwgKCkgeyAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8gCi0gICAgICAgIGZvciBpIGluICoudHRmOyBkbyAKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9IAotICAgICAgICBkb25lIAotCi0JIyBmb250Y29uZmlnIHNoaXBzIHRoaXMgdG9vLiAgbm90IHN1cmUgd2hhdCB0byBkbyBhYm91dCBpdC4KLSAgICAgICAgI2luc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMgCi0gICAgICAgICNpbnN0YWxsIC1tIDY0NCBsb2NhbC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2xvY2FsLmNvbmYgCi0KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8KLSAgICAgICAgZm9yIGkgaW4gKi5UWFQ7IGRvIAotICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8kaQotICAgICAgICBkb25lIAotfSAKLQotRklMRVNfJHtQTn0gPSAiL2V0YyAke2RhdGFkaXJ9L2ZvbnRzIgotCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJiYjIyYmQ1YjQ2NzVmNWRiZTE3YzY5NjNkOGMwMGVkNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjViMjdkZjdiYmIzMTgwMzZlYmRiNzVhY2QzZTk4ZjFiZDZlYjY2MDhmYjcwYTY3ZDQ3OGNkMjQzZDE3OGRjIgorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYKKyAgICAgICAgZm9yIGkgaW4gKi50dGY7IGRvCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJGkgJHtEfSR7ZGF0YWRpcn0vZm9udHMvdHRmCisgICAgICAgIGRvbmUKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGZvciBpIGluICouVFhUOyBkbworICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGRvbmUKK30KKworRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9mb250cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5NmE0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKLQotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICI1MmM4ZDA2ZjVkNjQ5OGFmZDY2ZGY5ODNkYTM0OGE2YjExMmYxMzE0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURBU1NJTVBfQlVJTERfQVNTSU1QX1RPT0xTPU9GRiAtREFTU0lNUF9CVUlMRF9URVNUUz1PRkYgLURBU1NJTVBfTElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTRjYmUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjgwNzk5YmRiZjkwY2U2MjY0NzU2MzU4MTVlZTE4NTM3NzE4YTA1YjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDBiODk0MzUuLjVmYzljMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ1JFViA9ICIxOGRmMDBjN2I0Njc3YjA4ODk0ODZlMTY5Nzc4NTdhYTk4Nzk0N2UyIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAppbmRleCAzY2YyNDFkLi5iY2Y4NGE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCkBAIC0xMSw5ICsxMSwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAotLS0tIGEvZGVtb3MvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2RlbW9zL0NNYWtlTGlzdHMudHh0Ci1AQCAtNjEsNDYgKzYxLDYgQEAKK0luZGV4OiBnaXQvZGVtb3MvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9kZW1vcy9DTWFrZUxpc3RzLnR4dAorKysrIGdpdC9kZW1vcy9DTWFrZUxpc3RzLnR4dAorQEAgLTYzLDQ2ICs2Myw2IEBAIGVsc2VpZihVTklYKQogIGVsc2UoKQogIGVuZGlmKCkKICAKQEAgLTYwLDcgKzYyLDcgQEAKICAKICBpZihXSU4zMikKICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoCi1AQCAtMTE0LDQzICs3NCw2IEBACitAQCAtMTE2LDQzICs3Niw2IEBAIGVuZGlmKCkKICBhZGRfZXhlY3V0YWJsZSgke0FQSV9MT1dFUkNBU0V9aW5mbyB2dWxrYW5pbmZvLmMpCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7QVBJX0xPV0VSQ0FTRX1pbmZvICR7TElCUkFSSUVTfSkKICAKQEAgLTEwMyw0ICsxMDUsNCBAQAogLWVuZGlmKCkKICAKICBpZihVTklYKQotICAgICBpbnN0YWxsKFRBUkdFVFMgJHtBUElfTE9XRVJDQVNFfWluZm8gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisgICAgIGlmKElOU1RBTExfTFZMX0ZJTEVTKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGUzOWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjUxIFwKLSAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI4ZDAyMWU0ZDVhOWY5MTQzNmY0NDYyZGYxZGFmYjIyMjkwOGUyOTZkIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGxpYl9wYWNrYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKLQotRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX1dTSV9NSVJfU1VQUE9SVD1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0xBWUVSUz1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiIKLQotIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJyAsZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiAtRERFTU9TX1dTSV9TRUxFQ1RJT049WENCLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiAtRERFTU9TX1dTSV9TRUxFQ1RJT049V0FZTEFORCwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzhhODk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCitERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAordGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCitwcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKK3RoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjY1IFwKKyAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjczNDg2YTFhMTY5ZDg2MmQ1MjEwZTJhZDUyMGQ5NTMxOWEyMzgzZmEiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgorCitpbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiCmluZGV4IGE1MTc5ZGIuLjQzYzNlZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjUuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS41LjIuYmIKQEAgLTM1LDYgKzM1LDMgQEAKIAogIyBJIHNheSB2aXJ0dWFsL2xpYmdsLCBhY3R1YWxseSB3YW50cyBlZ2wucGMKIFBBQ0tBR0VDT05GSUdbeDExLWVnbF0gPSAiLUR3YWZmbGVfaGFzX3gxMV9lZ2w9MSwtRHdhZmZsZV9oYXNfeDExX2VnbD0wLHZpcnR1YWwvJHtNTFBSRUZJWH1saWJnbCBsaWJ4Y2IiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRXYWZmbGUuY21ha2UgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvV2FmZmxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Njc1MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDVlODg2NGM1YjdhMmUyNThlZWEwNDFiMGVmNjZkYWM3ZmNhYjliN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDA5OjQ3OjE0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggcmFjZSBpbiAoYXV0b3Rvb2xzKSBpbnN0YWxsCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWV4ZWMvZGF0YSBkaXN0aW5jdGlvbiBpcyBkb25lIGJhc2VkIG9uIGluc3RhbGwgZGlyIHNvIGNvbXBhdCBzY3JpcHRzCi1tdXN0IGJlIG1vdmVkIGluIGV4ZWMgaG9vay4KLQotVGhpcyBzaG91bGQgZml4IHRoaXMgb2NjYXNpb25hbCBmYWlsdXJlOgotfMKgaW5zdGFsbDogY2Fubm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZgotfMKg4oCYL3Vzci9iaW4vbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdOKAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLS0tLQotIHRvb2xzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQotaW5kZXggMmM4NjYwYi4uN2VlOGI5MCAxMDA2NDQKLS0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCi0rKysgYi90b29scy9NYWtlZmlsZS5hbQotQEAgLTYzLDcgKzYzLDcgQEAgZW5kaWYKLSAKLSBFWFRSQV9ESVNUID0gbWFrZS1wdHJhY2NlbC1ncmFwaHMuc2ggaW5zdGFsbC1jb21wYXQtc2NyaXB0cy5zaCAkKGJpbl9TQ1JJUFRTKQotIAotLWluc3RhbGwtZGF0YS1ob29rOgotK2luc3RhbGwtZXhlYy1ob29rOgotIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1saXN0LWRldmljZXMuY29tcGF0IGxpYmlucHV0LWxpc3QtZGV2aWNlcykKLSAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbXYgbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdCBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMpCi0gCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMWJhYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMTg0YWVmMzhmZjEzN2VkMzNjZTlhNjNiOWQxZWI4ZiIKLQotREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjQ3ZjBiYjY3MDUyZmZiMjcyYzUwYzNjYjljNTk5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzU5MGE5MDM3ZTU2MWE1NzkxYzhiZDNiMzRiZmQzMGZhZDVjYWNkOGNiZWZjMGQ3NWZhZmUzYTQxZDA3MTQ3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLS1lbmFibGUtbGlid2Fjb20sLS1kaXNhYmxlLWxpYndhY29tLGxpYndhY29tIgotUEFDS0FHRUNPTkZJR1tndWldID0gIi0tZW5hYmxlLWRlYnVnLWd1aSwtLWRpc2FibGUtZGVidWctZ3VpLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdWRldi1kaXI9JHtVREVWRElSfSAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMiCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCisKK0RFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhiNDNkMDdkMTY5OGZiMjA3YTA0OTJmYzY3NTU0ZDRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiY2RiZDRjNGUzYzJhMmRiMzIyZmJkZjJlZjMyODRmMmU2ZDZmYjdiZTNhZjgwZTZkOGRlNzc4M2Y2NzUxOTAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSAtRGRvY3VtZW50YXRpb249ZmFsc2UgLUR0ZXN0cz1mYWxzZSIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5ZTlmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0YTc4NDZjMmI2YTZhM2UyNjVmYzliZTM2NDUzZTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MTljNTFkNzM1NDg2NDk4MzE3MWM1MDgzZTkzYTcyYWM5OTIyOWUyYjQ2MGM0YmIxMDUxM2RlMDg4MzljMGEiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWYxZWUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjkzMTIxNDlkYWZjZDRhMGU3MzliYTk0OTk1YTU3NGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc1OGJjODAwOGQ1MzMyZjQzMWIyYTg0ZmVhN2RlNjRkOTcxY2UyNzBlZDIwODIwNmEwOThmZjJlYmM2OGYzOCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDM1MjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGaXggd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtc2Nhbm5lciBwYyBmaWxlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CisKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorQEAgLTEsNyArMSw3IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKKy1wa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKKytwa2dkYXRhZGlyPSR7cGNfc3lzcm9vdGRpcn1AZGF0YWRpckAvQFBBQ0tBR0VACisgbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCisrKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgorQEAgLTIsNyArMiw3IEBAIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKyBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACisgcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACistd2F5bGFuZF9zY2FubmVyPUBiaW5kaXJAL3dheWxhbmQtc2Nhbm5lcgorK3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXIKKyAKKyBOYW1lOiBXYXlsYW5kIFNjYW5uZXIKKyBEZXNjcmlwdGlvbjogV2F5bGFuZCBzY2FubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mzk2YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCi1hcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCi1hIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKLWlucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAotYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKLWRpc3BsYXkgc2VydmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgotCi1ERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYWUxNTJlZDk1NmRhNmRlNTNmOTcyN2JjMWM0NTAzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWIwNTJjMDMxYTYxZTg5YWY3Y2M4NzgwODkzZDBkYTFlMzAxNDkyMzUyYWE0NDlkZWU5MzQ1MDQzZTZmZTUxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS1saWJyYXJpZXMiCi0KLSMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAotIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAotICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAotICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci19Ci0KLXN5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWZmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgorREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCithcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCithIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKK2lucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAorYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKK2Rpc3BsYXkgc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgorCitERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisJICAgZmlsZTovL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDIzNWY2MDc1YzMyYzNiZTYxY2ZmOTRmYTBiOWYxMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ4MGNhYmMwOTYxYTc1OWE0MjA5MmUyYzM5YWFiZmMxZWM5YTEzYzg2Yzk4YmJlMmI4MTJmMDA4ZGEyN2FiOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgorCisjIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKKyMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKKyAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKKyAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorfQorCitzeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KK30KKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjRkNzljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDFjZmMxNDM0YTVkMzg1YTc0ZGU1OTNlYzc2MDE2NzRkYmEzOWUyZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxNjoxNjozMCArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXByb3RvY29scyBwYXRoCi0KLVRoZSB3YXlsYW5kLXByb3RvY29scyBkaXJlY3RvcnkgaXMgdXNlZCBkdXJpbmcgYnVpbGQ6IEZpeCB0aGUgcGF0aAotdG8gcG9pbnQgdG8gc3lzcm9vdCBzcGVjaWZpZWQgaW4gcmVjaXBlLgotCi1Ob3JtYWxseSBQS0dfQ09ORklHX1NZU1JPT1RfRElSIGNvdWxkIGJlIHVzZWQgaW4gY29uZmlndXJlLmFjIGJ1dCB0aGF0Ci1icmVha3MgbXVsdGlsaWIgd2VzdG9uIGFzIGl0IHdvdWxkIHBvaW50IHRvIG11bHRpbGliIHN5c3Jvb3Qgd2hlbiB0aGUKLShhbGxhcmNoKSB3YXlsYW5kLXByb3RvY29scyBpcyBhY3R1YWxseSBpbiB0aGUgbWFjaGluZSBzeXNyb290LgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODcsNyArMTg3LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoTElCSU5QVVRfQkFDS0VORCwgW2xpYgotIFBLR19DSEVDS19NT0RVTEVTKENPTVBPU0lUT1IsIFskQ09NUE9TSVRPUl9NT0RVTEVTXSkKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhXQVlMQU5EX1BST1RPQ09MUywgW3dheWxhbmQtcHJvdG9jb2xzID49IDEuN10sCi0tCQkgIFthY193YXlsYW5kX3Byb3RvY29sc19wa2dkYXRhZGlyPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgXSkKLSsJCSAgW2FjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYF0pCi0gQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJGFjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXIpCi0gCi0gQUNfQVJHX0VOQUJMRSh3YXlsYW5kLWNvbXBvc2l0b3IsIFsgIC0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvcl0sLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAppbmRleCBlMjIxM2FjLi4wNjcxYTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaApAQCAtMTYsOSArMTYsMTEgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3dlc3Rvbi1lcnJvci5oCiAKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAsNiArNjAsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKK0luZGV4OiB3ZXN0b24tMy4wLjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgd2VzdG9uLTMuMC4wL2NvbmZpZ3VyZS5hYworQEAgLTEwMyw2ICsxMDMsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKICAJICAgICAgW1sjaW5jbHVkZSA8dGltZS5oPl1dKQogIEFDX0NIRUNLX0hFQURFUlMoW2V4ZWNpbmZvLmhdKQogIApAQCAtMjYsOSArMjgsMTEgQEAKICsKICBBQ19DSEVDS19GVU5DUyhbbWtvc3RlbXAgc3RyY2hybnVsIGluaXRncm91cHMgcG9zaXhfZmFsbG9jYXRlXSkKICAKLSBDT01QT1NJVE9SX01PRFVMRVM9IndheWxhbmQtc2VydmVyID49ICRXQVlMQU5EX1BSRVJFUV9WRVJTSU9OIHBpeG1hbi0xID49IDAuMjUuMiIKKyAjIGNoZWNrIGZvciBsaWJkcm0gYXMgYSBidWlsZC10aW1lIGRlcGVuZGVuY3kgb25seQorSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAorKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKIEBAIC0wLDAgKzEsMjAgQEAKICsjaWZuZGVmIF9XRVNUT05fRVJST1JfSAogKyNkZWZpbmUgX1dFU1RPTl9FUlJPUl9ICkBAIC01MCw4ICs1NCwxMCBAQAogKwogKyNlbmRpZgogKwotLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtMzMsNyArMzMsNiBAQAogICNpbmNsdWRlIDxwb2xsLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CkBAIC02MCw3ICs2Niw3IEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogIAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC01OSw2ICs1OCw3IEBACitAQCAtNjAsNiArNTksNyBAQAogICNlbmRpZgogIAogICNpbmNsdWRlICJ3ZXN0b24tbGF1bmNoLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzBkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDMwIEBACitPbiB0aGUgbXVzbCBDIGxpYnJhcnksIHRlc3RzL3RpbWVzcGVjLXRleHQuYyBkb2VzIG5vdCBidWlsZCwgd2l0aCB0aGUKK2ZvbGxvd2luZyBlcnJvcjoKKworICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSB0ZXN0cy90aW1lc3BlYy10ZXN0LmM6MzY6MDoKKyAgICAuL3NoYXJlZC90aW1lc3BlYy11dGlsLmg6NDE6MjE6IHdhcm5pbmc6IOKAmHN0cnVjdCB0aW1lc3BlY+KAmSBkZWNsYXJlZAorICAgIGluc2lkZSBwYXJhbWV0ZXIgbGlzdCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBkZWZpbml0aW9uCisgICAgb3IgZGVjbGFyYXRpb24KKyAgICAgdGltZXNwZWNfc3ViKHN0cnVjdCB0aW1lc3BlYyAqciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorICAgWy4uLl0KKworSW5kZWVkLCBzdHJ1Y3QgdGltZXNwZWMgaXMgZGVmaW5lZCBpbiB0aW1lLmgsIHNvIHdlIG11c3QgaW5jbHVkZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZmE0MWJkZmJjMGI5NjJmZDczYjg5ZjAxYWFiMWE1MzcwYzljMjhlYl0KKworU2lnbmVkLW9mZi1ieTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KK1Jldmlld2VkLWJ5OiBQZWtrYSBQYWFsYW5lbiA8cGVra2EucGFhbGFuZW5AY29sbGFib3JhLmNvLnVrPgorCitJbmRleDogd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZXN0b24tMy4wLjAub3JpZy9zaGFyZWQvdGltZXNwZWMtdXRpbC5oCisrKysgd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKK0BAIC0yOCw2ICsyOCw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorIAorICNkZWZpbmUgTlNFQ19QRVJfU0VDIDEwMDAwMDAwMDAKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTFkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK011bHRpLXBsYW5lIHN1Yi1zYW1wbGVkIHRleHR1cmVzIGhhdmUgcGFydGlhbCB3aWR0aC9oZWlnaHQsIGUuZy4KK1lVVjQyMC9JNDIwIGhhcyBhIGZ1bGwtc2l6ZSBZIHBsYW5lLCBmb2xsb3dlZCBieSBhIGhhbGYtd2lkdGgvaGVpZ2h0IFUKK3BsYW5lLCBhbmQgYSBoYWxmLXdpZHRoL2hlaWdodCBWIHBsYW5lLgorCit6d3BfbGludXhfZG1hYnVmX3YxIGFsbG93cyBjbGllbnRzIHRvIHBhc3MgYW4gZXhwbGljaXQgcGl0Y2ggZm9yIGVhY2gKK3BsYW5lLCBidXQgZm9yIHdsX3NobSB0aGlzIG11c3QgYmUgaW5mZXJyZWQuIGdsLXJlbmRlcmVyIHdhcyBjb3JyZWN0bHkKK2FjY291bnRpbmcgZm9yIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gc3Vic2FtcGxpbmcsIGJ1dCB0aGUgcGl0Y2ggd2FzCitiZWluZyB0YWtlbiBhcyB0aGUgcGl0Y2ggZm9yIHRoZSBmaXJzdCBwbGFuZS4KKworVGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZW1lbnRzIGZvciBHU3RyZWFtZXIncyB3YXlsYW5kc2luaywgaW4KK3BhcnRpY3VsYXIsIGFzIHdlbGwgYXMgb3RoZXIgY2xpZW50cy4gRml4IHRoZSBTSE0gdXBsb2FkIHBhdGggdG8KK2NvcnJlY3RseSBzZXQgdGhlIHBpdGNoIGZvciBlYWNoIHBsYW5lLCBhY2NvcmRpbmcgdG8gc3Vic2FtcGxpbmcuCisKK1Rlc3RlZCB3aXRoOgorICAkIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xODA3NjcvXQorCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KK0ZpeGVzOiBmZGVlZmU0MjQxOCAoImdsLXJlbmRlcmVyOiBhZGQgc3VwcG9ydCBvZiBXTF9TSE1fRk9STUFUX1lVVjQyMCIpCitSZXBvcnRlZC1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CitCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDYzCisKKy0tLQorIGxpYndlc3Rvbi9nbC1yZW5kZXJlci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKK2luZGV4IDI0NGNlMzA5Li40MGJmMGJiNiAxMDA2NDQKKy0tLSBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCisrKysgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYworQEAgLTE0NDUsMTQgKzE0NDUsMTMgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKKyAJCWdvdG8gZG9uZTsKKyAJfQorIAorLQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoKTsKKy0KKyAJaWYgKGdzLT5uZWVkc19mdWxsX3VwbG9hZCkgeworIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFNfRVhULCAwKTsKKyAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIDApOworIAkJd2xfc2htX2J1ZmZlcl9iZWdpbl9hY2Nlc3MoYnVmZmVyLT5zaG1fYnVmZmVyKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJICAgICBncy0+Z2xfZm9ybWF0W2pdLAorIAkJCQkgICAgIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdLAorQEAgLTE0NzcsNiArMTQ3Niw3IEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCisgCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCByLnkxKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJCXIueDEgLyBncy0+aHN1YltqXSwKKyAJCQkJCXIueTEgLyBncy0+dnN1YltqXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGIwN2JkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNjttZDU9ZTM0MmRmNzQ5MTc0YThlZTExMDY1NTgzMTU3YzdhMzgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjE1ZjM4OTQ1OTQyYmYyYTkxZmUyNjg3MTQ1ZmI0YzdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0ZTQ0NmFjMjdmMTE4MTk2ZjE2MDlkYWI4OWJiM2NiM2U4MTY1MmQ5ODE0MTRhZDg2MGU3MzNiMzU1MzY1ZDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1ERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgotREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmRwLWNvbXBvc2l0b3IgXAotICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAotCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCi0JCSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKLSMKLSMgQ29tcG9zaXRvciBjaG9pY2VzCi0jCi0jIFdlc3RvbiBvbiBLTVMKLVBBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgotIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgotIyBXZXN0b24gb24gWDExCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKLSMgSGVhZGxlc3MgV2VzdG9uCi1QQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgotIyBXZXN0b24gb24gZnJhbWVidWZmZXIKLVBBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKLSMgd2VzdG9uLWxhdW5jaAotUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgotIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgotIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgotIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgotIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgotIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKLSMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCi0jIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKLSMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQotUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgotIyBjb2xvcmQgQ01TIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCi0jIENsaWVudHMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKLSMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyoubGEKLQotCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKLQlmaQotfQotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBsaWJ3ZXN0b24tMiAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKLQotRklMRVNfbGlid2VzdG9uLTIgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyouc28iCi1TVU1NQVJZX2xpYndlc3Rvbi0yID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgotCi1GSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTIveHdheWxhbmQuc28iCi1SREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGNkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI2O21kNT1lMzQyZGY3NDkxNzRhOGVlMTEwNjU1ODMxNTdjN2EzOCIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisJICAgZmlsZTovL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIFwKKwkgICBmaWxlOi8vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YzQyYTRjNTFhMWI5ZjM1ZDA0MGZhOWQ0NWFkYTM2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZGUxZDU1ZThkZDcwYzNjYmIzZDFlYzcyZjYwZTYwMDAwMDQxNTc5Y2FhMWQ2YTI2MmJkOWMzNWU5MzcyM2E1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKK0RFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zZXR1aWQtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAorCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCisJCSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCisJCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKKwkJIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgorIyBXZXN0b24gb24gZnJhbWVidWZmZXIKK1BBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCisjIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKKyMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQorUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgorIyBjb2xvcmQgQ01TIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCisjIENsaWVudHMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKKyMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQorCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tMyAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKKworRklMRVNfbGlid2VzdG9uLTMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0zID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTMveHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbgppbmRleCAzMjRhMjZmLi44N2RjNGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UuaW4KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluCkBAIC01LDYgKzUsNyBAQAogRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC94c2VydmVyLW5vZG0KIFVzZXI9QFVTRVJACiBFeGVjU3RhcnQ9L2V0Yy94c2VydmVyLW5vZG0vWHNlcnZlcgorUmVzdGFydD1hbHdheXMKIAogW0luc3RhbGxdCiBBbGlhcz1kaXNwbGF5LW1hbmFnZXIuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIKaW5kZXggMzQ1YjU4OS4uYTc3YzU2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCkBAIC02MCw3ICs2MCw3IEBACiAgICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAYmFzZV9jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50JywgJycsIGQpfSIKIAogSU5JVFNDUklQVF9OQU1FID0gInhzZXJ2ZXItbm9kbSIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkgNSAuIHN0b3AgMjAgMCAxIDIgMyA2IC4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKaW5kZXggNzMzZWJjZS4uYTRhYjdmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgpAQCAtMTEsNyArMTEsNyBAQAogUFYgPSAiMC4xLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59O2JyYW5jaD1tYXN0ZXIiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoCmluZGV4IDk3ZDEzYTMuLmE5N2M3YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldC9kaXNhYmxlLXhrYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXQvZGlzYWJsZS14a2IucGF0Y2gKQEAgLTQsMTEgKzQsMTEgQEAKIAogUmViYXNlIGZvciAxLjIuMSBieTogWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODFjM2FlNC4uMjY2MDFiZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTIsMTEgKzUyLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAorSW5kZXg6IHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geHNldC0xLjIuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCitAQCAtNTMsMTEgKzUzLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAogIAlBQ19DSEVDS19IRUFERVJTKFtYMTEvZXh0ZW5zaW9ucy9kcG1zLmggWDExL2V4dGVuc2lvbnMvTUlUTWlzYy5oXSwsLFsjaW5jbHVkZSA8WDExL1hsaWIuaD5dKQogIAlDUFBGTEFHUz0iJFNBVkVfQ1BQRkxBR1MiXSxbZWNobyAibm90IGZvdW5kIl0pCiAgCkBAIC0yMiw1ICsyMiw1IEBACiAgCUNQUEZMQUdTPSIkU0FWRV9DUFBGTEFHUyJdLFtlY2hvICJub3QgZm91bmQiXSkKICtmaQogIAotIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAorIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAogICAgICAgICAgICAgICAgICBbVVNFX1hGODZNSVNDPSIkd2l0aHZhbCJdLCBbVVNFX1hGODZNSVNDPSJ5ZXMiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjNlYTE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQwMDMxMzk2MTRiMjVjYzc2YzlhNGNhZDA1OWRmODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg5ZjdkNTkxYzllZjA4NDYzZDQ5NjZlNjFmN2M2ZWE0MzNmNWZjYmI5ZjUzNzBmYjYyMWRhNjM5YTg0YzdlMCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjMzNkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gImRhNDdlZjYyZWFiMWQwZTkyMmE4ZmE5MjlmZjgxNzU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiY2E1NThmYzIyMjZmMjk1NjkxZjFjZjM0MTJkNGMwZWRlYWE0MzlmNjc3Y2EyNWI1YzlmYWIzMTBkMjM4N2IiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmVmMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDk2ZDRlOGU3YjhhNjk5ZjBlZjc3ZmE3YjIxMGQ0ZGU1ZjFjNzAzZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIE5vdiAyMDE3IDA4OjU5OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBDb2ZmZWVsYWtlIFBDSSBJRHMgZm9yIFMgU2t1cworCitBZGQgdGhlIENvZmZlZWxha2UgUENJIElEcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGtlcm5lbCBwYXRjaGVzOgorCitjb21taXQgYjA1NmY4ZjNkNmI5MDBlOGFmZDE5ZjMxMjcxOTE2MDM0NmQyNjNiNAorQXV0aG9yOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+CitEYXRlOiAgIFRodSBKdW4gOCAxNjo0MTowNSAyMDE3IC0wNzAwCisKKyAgICBkcm0vaTkxNS9jZmw6IEFkZCBDb2ZmZWUgTGFrZSBQQ0kgSURzIGZvciBTIFNrdXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMTM5OTA1XQorCitTaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvaTkxNV9wY2lpZHMuaCAgICAgfCAgNyArKysrKysrCisgc3JjL2ludGVsX21vZHVsZS5jICAgIHwgMTMgKysrKysrKysrKysrKworIHNyYy9zbmEvZ2VuOV9yZW5kZXIuYyB8IDEyICsrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2k5MTVfcGNpaWRzLmggYi9zcmMvaTkxNV9wY2lpZHMuaAoraW5kZXggMDM3MGY4MzBjNTQxLi4xMWNjZmE5YzA0N2EgMTAwNjQ0CistLS0gYS9zcmMvaTkxNV9wY2lpZHMuaAorKysrIGIvc3JjL2k5MTVfcGNpaWRzLmgKK0BAIC0zNDAsNCArMzQwLDExIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg0LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MzE4NSwgaW5mbykKKyAKKysjZGVmaW5lIElOVEVMX0NGTF9TX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkwLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkzLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkxLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkyLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTk2LCBpbmZvKSAgLyogU1JWIEdUMiAqLworKworICNlbmRpZiAvKiBfSTkxNV9QQ0lJRFNfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbF9tb2R1bGUuYyBiL3NyYy9pbnRlbF9tb2R1bGUuYworaW5kZXggNmIwNDg1N2UyODUzLi40ODI3YTY3MjU1ZjAgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWxfbW9kdWxlLmMKKysrKyBiL3NyYy9pbnRlbF9tb2R1bGUuYworQEAgLTEzOCw2ICsxMzgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9nZW1pbmlsYWtlX2luZm8gPSB7CisgCS5nZW4gPSAwMTEzLAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jb2ZmZWVsYWtlX2luZm8gPSB7CisrCS5nZW4gPSAwMTE0LAorK307CisrCisgc3RhdGljIGNvbnN0IFN5bVRhYlJlYyBpbnRlbF9jaGlwc2V0c1tdID0geworIAl7UENJX0NISVBfSTgxMCwJCQkJImk4MTAifSwKKyAJe1BDSV9DSElQX0k4MTBfREMxMDAsCQkJImk4MTAtZGMxMDAifSwKK0BAIC0zMDMsNiArMzA3LDEzIEBAIHN0YXRpYyBjb25zdCBTeW1UYWJSZWMgaW50ZWxfY2hpcHNldHNbXSA9IHsKKyAJezB4NTkxNiwgIkhEIEdyYXBoaWNzIDYyMCJ9LAorIAl7MHg1OTFFLCAiSEQgR3JhcGhpY3MgNjE1In0sCisgCisrCS8qQ29mZmVlbGFrZSovCisrCXsweDNFOTAsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTkzLCAiSEQgR3JhcGhpY3MifSwKKysJezB4M0U5MSwgIkhEIEdyYXBoaWNzIn0sCisrCXsweDNFOTIsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTk2LCAiSEQgR3JhcGhpY3MifSwKKysKKyAJLyogV2hlbiBhZGRpbmcgbmV3IGlkZW50aWZpZXJzLCBhbHNvIHVwZGF0ZToKKyAJICogMS4gaW50ZWxfaWRlbnRpZnkoKQorIAkgKiAyLiBtYW4vaW50ZWwubWFuCitAQCAtMzY4LDYgKzM3OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2lkX21hdGNoIGludGVsX2RldmljZV9tYXRjaFtdID0geworIAorIAlJTlRFTF9HTEtfSURTKCZpbnRlbF9nZW1pbmlsYWtlX2luZm8pLAorIAorKwlJTlRFTF9DRkxfU19JRFMoJmludGVsX2NvZmZlZWxha2VfaW5mbyksCisrCisgCUlOVEVMX1ZHQV9ERVZJQ0UoUENJX01BVENIX0FOWSwgJmludGVsX2dlbmVyaWNfaW5mbyksCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEvc3JjL3NuYS9nZW45X3JlbmRlci5jIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitpbmRleCBlNWYxMmM3MjM5NTYuLjdmNDkwNTJjNWVjMSAxMDA2NDQKKy0tLSBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYworKysrIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitAQCAtMjQ1LDYgKzI0NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGd0X2luZm8gZ2xrX2d0X2luZm8gPSB7CisgCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDMyMCB9LAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBndF9pbmZvIGNmbF9ndF9pbmZvID0geworKwkubmFtZSA9ICJDb2ZmZWVsYWtlIChnZW45KSIsCisrCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDk2MCB9LAorK307CisrCisgc3RhdGljIGJvb2wgaXNfc2tsKHN0cnVjdCBzbmEgKnNuYSkKKyB7CisgCXJldHVybiBzbmEtPmtnZW0uZ2VuID09IDAxMTA7CitAQCAtMjY1LDYgKzI3MCwxMSBAQCBzdGF0aWMgYm9vbCBpc19nbGsoc3RydWN0IHNuYSAqc25hKQorIAlyZXR1cm4gc25hLT5rZ2VtLmdlbiA9PSAwMTEzOworIH0KKyAKKytzdGF0aWMgYm9vbCBpc19jZmwoc3RydWN0IHNuYSAqc25hKQorK3sKKysJcmV0dXJuIHNuYS0+a2dlbS5nZW4gPT0gMDExNDsKKyt9CisrCisgCisgc3RhdGljIGlubGluZSBib29sIHRvb19sYXJnZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgeworQEAgLTQwNDAsNiArNDA1MCw4IEBAIHN0YXRpYyBib29sIGdlbjlfcmVuZGVyX3NldHVwKHN0cnVjdCBzbmEgKnNuYSkKKyAJCXN0YXRlLT5pbmZvID0gJmtibF9ndF9pbmZvOworIAlpZiAoaXNfZ2xrKHNuYSkpCisgCQlzdGF0ZS0+aW5mbyA9ICZnbGtfZ3RfaW5mbzsKKysJaWYgKGlzX2NmbChzbmEpKQorKwkJc3RhdGUtPmluZm8gPSAmY2ZsX2d0X2luZm87CisgCisgCXNuYV9zdGF0aWNfc3RyZWFtX2luaXQoJmdlbmVyYWwpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggMTM4ZGZkZC4uMjYyM2NiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0xNiw2ICsxNiw3IEBACiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvZHJpdmVyL3hmODYtdmlkZW8taW50ZWwgXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS14MTEtZHJpMy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZmExOTZhNjZlNTJjMGM2MjRmZTVkMzUwYWY3YTVlN2IiCkBAIC0zNyw3ICszOCw3IEBACiBQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMsbGlieGluZXJhbWEgbGlieHJhbmRyIGxpYnhkYW1hZ2UgbGlieGZpeGVzIGxpYnhjdXJzb3IgbGlieHRzdCBsaWJ4ZXh0IGxpYnhyZW5kZXIiCiAKICMgLS1lbmFibGUta21zLW9ubHkgb3B0aW9uIGlzIHJlcXVpcmVkIGJ5IFJPT1RMRVNTX1gKLUVYVFJBX09FQ09ORiArPSAnJHtAYmFzZV9jb25kaXRpb25hbCggIlJPT1RMRVNTX1giLCAiMSIsICIgLS1lbmFibGUta21zLW9ubHkiLCAiIiwgZCApfScKK0VYVFJBX09FQ09ORiArPSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoICJST09UTEVTU19YIiwgIjEiLCAiIC0tZW5hYmxlLWttcy1vbmx5IiwgIiIsIGQgKX0nCiAKIENPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKaW5kZXggZTY1MjM5NC4uYmVmMzYzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKQEAgLTM2LDYgKzM2LDYgQEAKIAogcHl0aG9uICgpIHsKICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ29wZW5nbCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIidvcGVuZ2wnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKaW5kZXggZmU0MmYxMS4uYmNhMGFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtMzgsMyArMzgsNSBAQAogCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4sICcgJyArIGFiaSkKKworU0VDVVJJVFlfTERGTEFHUyA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYjY4MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIFBDSSBhY2Nlc3MgbGlicmFyeSBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAibGlicGNpYWNjZXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIFggdG8gYWNjZXNzIHRoZSBcCi1QQ0kgYnVzIGFuZCBkZXZpY2VzIGluIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5LiIKLQotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LURvbi10LWluY2x1ZGUtc3lzLWlvLmgtb24tYXJtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4MTBhYjE3ZTI0YzE0MThkZWRmNzIwN2ZiMjg0MWQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MmM1NGU5YjNjMzExYjQzNDdjYjUwYWVhODU2NmZhNDhlYWIyNzQzNDZlYThhMDZmN2YxNWRlMzI0MGI5OTkiCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDRhNWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgorCitERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKK1BDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY0MzZlMTUxZDUxMDZhOWNmYWE3MTg1N2EwNjZkMzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RmNTQzZTEyYWZkNDFmZWE4ZWFjODE3ZTQ4Y2JmZGU1YWVkODgxN2I4MTY3MGE0ZTllNDkzYmIyZjViZjJhNCIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCmluZGV4IGE2OTk4NDEuLmZmYTFjODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYgpAQCAtNywxNyArNywxMSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZWRjMWZlYTAzZDk1OWYwYzJkNzQzZmU1Y2E3NDZhZCIKIAotI0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlieHNsdC1uYXRpdmUiCi0jIERFUEVORFMgKz0gInhzbHRwcm9jLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJwdGhyZWFkLXN0dWJzLSR7UFZ9LnRhci5iejIiCi0KK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjQ4YzE1NDQ4NTRhOTRkYjBlNTE0OTljYzNhZmQ3OTdmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDA1OTExYTMxNjVkM2IxODMyMWNjMDY3ZmRkMmYwMjNmMDY0MzZlMzkxYzZhMjhkZmY2MThhNzhkMmU3MzMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMKIAogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKaW5kZXggYjA0ZWFmYi4uNGFmNDBhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYwpAQCAtMzUsNyArMzUsMyBAQAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL1hLZXlzeW1EQiAke2RhdGFkaXJ9L1gxMS9YRXJyb3JEQiAke2RhdGFkaXJ9L1gxMS9YY21zLnR4dCIKIEZJTEVTXyR7UE59LXhjYiArPSAiJHtsaWJkaXJ9L2xpYlgxMS14Y2Iuc28uKiIKIEZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9YMTEvbG9jYWxlICR7bGliZGlyfS9YMTEvbG9jYWxlIgotCi0jIE11bHRpcGxlIGxpYngxMSBkZXJpdmF0aXZlcyBmcm9tIGZyb20gdGhpcyBmaWxlIGFuZCBhcmUgc2VsZWN0ZWQgYnkgdmlydHVhbC9saWJ4MTEKLSMgQSB3b3JsZCBidWlsZCBzaG91bGQgb25seSBidWlsZCB0aGUgY29ycmVjdCB2ZXJzaW9uLCBub3QgYWxsIG9mIHRoZW0uCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCmluZGV4IDdjN2ZhM2QuLjBmZTY1MzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi9saWJYQ2FsaWJyYXRlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC14Y2IucGF0Y2giCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL2Rpc2FibGUtY2hlY2sucGF0Y2gKaW5kZXggNTY0MWMwZi4uYzBlZmJkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9kaXNhYmxlLWNoZWNrLnBhdGNoCkBAIC05LDE3ICs5LDE3IEBACiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDZkN2M5YTUuLjIyY2NlYjkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIxLDcgKzIxLDggQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0gCi0gQU1fUEFUSF9QWVRIT04oWzIuNl0pCitJbmRleDogbGlieGNiLTEuMTIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieGNiLTEuMTIub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJ4Y2ItMS4xMi9jb25maWd1cmUuYWMKK0BAIC0zNiw3ICszNiw4IEBAIGlmIHRlc3QgeCIkSEFWRV9ET1QiID0geG5vOyB0aGVuCisgICAgIEFDX01TR19XQVJOKFtkb3Qgbm90IGZvdW5kIC0gZG94eWdlbiB0YXJnZXRzIHdpbGwgYmUgc2tpcHBlZF0pCisgZmkKICAKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK2RubCBQS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK0hBVkVfQ0hFQ0s9bm8KICBBTV9DT05ESVRJT05BTChIQVZFX0NIRUNLLCB0ZXN0IHgkSEFWRV9DSEVDSyA9IHh5ZXMpCiAgCi0gQUNfQ09ORklHX0hFQURFUlMoW3NyYy9jb25maWcuaF0pCisgWFNMVFBST0M9bm8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzYyOTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCi1sb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKLWNvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKLWNhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKLXNpemUuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKLQotREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGN1cnNvciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlN2MxN2FmYmJjZTgzZTIyMTU5MTcwNDdjNTdkMWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliYzZhY2IyMWNhMTRkYTUxYmRhNWJjOTEyYzg5NTViYzZlNWU0MzNmMGFiMDBjNWU4YmVmODQyNTk2YzMzZGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzlhZjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCitsb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKK2NvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKK2NhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKK3NpemUuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKKworREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWGN1cnNvciIKKworU1JDX1VSSVttZDVzdW1dID0gIjU4ZmUzNTE0ZTFlNzEzNWNmMzY0MTAxZTcxNGQxYTE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGU2NzBkZDM3Y2QyMzk5NWU2OWFhZTYyNjYyOWQ0YTJkZmU1NzA4ODUxYmJjMTNkMDMyNDAxYjdhM2RmNmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmZiMjkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJYRm9udDI6IFggRm9udCByYXN0ZXJpc2F0aW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gImxpYlhmb250MiBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotCi1YT1JHX1BOID0gImxpYlhmb250MiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDlmNmRkOWMyM2JmNGJjYmZiMDA1MDRiNTY2YmFmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWZiYmI0NzVkZGQxNzFiM2E2YTU0Yjk4OWNiYWRlMWY2Zjg3NGZjMzVkNTA1ZWJjNWJlNDI2YmM2ZTRkYjdlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMjdhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhGb250MjogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQyIHByb3ZpZGVzIHZhcmlvdXMgc2VydmljZXMgZm9yIFggc2VydmVycywgbW9zdCBcCitub3RhYmx5IGZvbnQgc2VsZWN0aW9uIGFuZCByYXN0ZXJpc2F0aW9uICh0aHJvdWdoIGV4dGVybmFsIGxpYnJhcmllcyBcCitzdWNoIGFzIGZyZWV0eXBlKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgorCitERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCisKK1hPUkdfUE4gPSAibGliWGZvbnQyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImI3Y2E4N2RmYWZlYjUyMDViMjhhMWU5MWFjM2VmZTg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlOGFiN2ZkNzM3Y2NkZmU4N2UxZjAyYjU1ZjIyMWYwYmQ0NTAzYTFjNWYyOGJlNGVkNmE1NDU4NmJhYzljNGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTFkZGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlhGb250OiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYZm9udCBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotUFJPVklERVMgPSAieGZvbnQiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGZvbnQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU0ZWU0MmJkMTc4ZDE4ZWJjN2E3M2FhY2ZkZTdmNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDI5NDVlYTY4ZGE0NDcxMDJmM2U2YzJiODk2YzFkMjA2MWZkMTE1ZGU5OTQwNGZhY2MyYWNhM2FkNzAxMGQ3MSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmNzdmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJYRm9udDogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQgcHJvdmlkZXMgdmFyaW91cyBzZXJ2aWNlcyBmb3IgWCBzZXJ2ZXJzLCBtb3N0IFwKK25vdGFibHkgZm9udCBzZWxlY3Rpb24gYW5kIHJhc3RlcmlzYXRpb24gKHRocm91Z2ggZXh0ZXJuYWwgbGlicmFyaWVzIFwKK3N1Y2ggYXMgZnJlZXR5cGUpLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTQ2YzgwNDBmMmY3MzdiY2QwYzQzNWZlYjJhYjFjMmMiCisKK0RFUEVORFMgKz0gImZyZWV0eXBlIHh0cmFucyBmb250c3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKK1BST1ZJREVTID0gInhmb250IgorCitQRSA9ICIxIgorCitYT1JHX1BOID0gImxpYlhmb250IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE2ZWFmMTU2ZWRkNzliNjgwMzhiNmE3YzQ0YWE5ZTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhN2Y3NDkwNzc0Yzg3ZjIwNTJkMTQ2ZDFlMGU2NDUxOGQzMmU2ODQ4MTg0YTE4NjU0ZThkMGJiNTc4ODMyNDIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuNy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQ3YmE2MDljYjAyMzliOTQ2MjEyN2Q1Y2Y4OTA4ZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmE1OTMwNWQyZTE5ZTQ3YzI3ZWEwNjVjMmUwZGY5NmViYWM2YTNjNmU5N2UyOGFlNTYyMDA3M2I2MDg0ZTY4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCitwcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgorTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDBlNGM0YTEzN2QwYWM0NWJmNmIzMjhjODRjM2E4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODI5MjY1ZGIwNGUwYWViZmIwNTkxYjZkYzMzNzdiNjQ1OTk1NTgxNjc4NDZjM2Y1ZWU1YzVlNTM2NDFmZTZkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzA0YzQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiWFJlczogWCBSZXNvdXJjZSBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWFJlcyBwcm92aWRlcyBhbiBYIFdpbmRvdyBTeXN0ZW0gY2xpZW50IGludGVyZmFjZSB0byBcCi10aGUgUmVzb3VyY2UgZXh0ZW5zaW9uIHRvIHRoZSBYIHByb3RvY29sLiAgVGhlIFJlc291cmNlIGV4dGVuc2lvbiBhbGxvd3MgXAotZm9yIFggY2xpZW50cyB0byBzZWUgYW5kIG1vbml0b3IgdGhlIFggcmVzb3VyY2UgdXNhZ2Ugb2YgdmFyaW91cyBjbGllbnRzIFwKLShwaXhtYXBzLCBldCBhbCkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Yzg5NDQxYThkZjI2MWJkYzU2NTg3NDY1ZTEzYzdmYSIKLQotREVQRU5EUyArPSAibGlieGV4dCByZXNvdXJjZXByb3RvIgotCi1QRSA9ICIxIgotCi1YT1JHX1BOID0gImxpYlhyZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NWVmMjkyMDZhNmI1ODI1NGM4MWJlYTI4ZWM2Yzk1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjg5OTA1NGFhODdmODFiMTdiZWNjNjhlODY0NWIyNDBmMTQwNDY0Y2Y5MGM0MjYxNmViYjI2M2VjNWZhMGU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMzRlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJYUmVzOiBYIFJlc291cmNlIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYUmVzIHByb3ZpZGVzIGFuIFggV2luZG93IFN5c3RlbSBjbGllbnQgaW50ZXJmYWNlIHRvIFwKK3RoZSBSZXNvdXJjZSBleHRlbnNpb24gdG8gdGhlIFggcHJvdG9jb2wuICBUaGUgUmVzb3VyY2UgZXh0ZW5zaW9uIGFsbG93cyBcCitmb3IgWCBjbGllbnRzIHRvIHNlZSBhbmQgbW9uaXRvciB0aGUgWCByZXNvdXJjZSB1c2FnZSBvZiB2YXJpb3VzIGNsaWVudHMgXAorKHBpeG1hcHMsIGV0IGFsKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjODk0NDFhOGRmMjYxYmRjNTY1ODc0NjVlMTNjN2ZhIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHJlc291cmNlcHJvdG8iCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHJlcyIKKworU1JDX1VSSVttZDVzdW1dID0gIjVkNmQ0NDNkMWFiYzhlMWY2ZmMxYzU3ZmIyNzcyOWJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmNzVjMTY0MzQ4OGU2NGE3Y2ZiY2VkMjc0ODZmMGY5NDQ4MDEzMTljODRjMThkM2JkM2RhNmJmMjhjODEyZDQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M5ZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApAQCAtMCwwICsxLDE3IEBACitXaXRoIGdsaWJjIDIuMjcgbWVtZmRfY3JlYXRlIGlzIGJlaGluZCBhIF9HTlVfU09VUkNFIGd1YXJkLCBzbyBjYWxsCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgdG8gZ2V0IHRoYXQgZGVmaW5lZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBjOTg4NzUuLmViZjRkZWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI5LDQgKzI5LDYgQEAgQUNfQ09ORklHX1NSQ0RJUihbTWFrZWZpbGUuYW1dKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisrQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisrCisgIyBJbml0aWFsaXplIEF1dG9tYWtlCisgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBkaXN0LWJ6aXAyXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYgppbmRleCBhZTM0YjFmLi4xZGYwNjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiCkBAIC0xMyw1ICsxMyw3IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorU1JDX1VSSSArPSAiZmlsZTovL2V4dGVuc2lvbnMucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NjY2MmU3Njg5OTExMmMwZjk5ZTIyZjJmYzc3NWE3ZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjFiMmQxZmQ3OGMxZWZiZTFmMmMxNmRhZTFjYjIzZjhmZDIzMWRjZjg5MTQ2NWI4ZGViZTYzNmE5MDU0YjBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFhNTFhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjk0OThlODk1NDkwN2QwYTQ3ZjBmN2IzZDIxZTFlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGMxNzA0OWZhZTEyOWZjMTQ4NzU2NTZkYTlhYTMwOTllMzAzMWQ2Y2UwZWUxZDc3YWFlMTkwZmQ5ZWRjZWM1IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDg5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjYxZmIzZmQ0MTllODE3ZGY1NzJiMGM4ZDk0YTg4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWFlYzk5ODlmYmM0NDMzNThiNDM4NjQ0MzdiN2I2ZDM5Y2FmZjA3ODkwYTRhODA1NTEwNWNlOWZjYWE1OWJkIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgppbmRleCAzYTk4OTI2Li5lYjRiNDIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKQEAgLTE3LDUgKzE3LDUgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAogICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWI2MDg4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVVwc3RyZWFtIHVzZXMgQU1fUEFUSF9QWVRIT04gdG8gZmluZCBhIHB5dGhvbiBiaW5hcnkgYW5kIGFzayBpdCB3aGVyZSB0byBpbnN0YWxsCi1saWJyYXJpZXMuICBUaGlzIG1lYW5zIHdlIGVpdGhlciBuZWVkIHRvIGRlcGVuZCBvbiBweXRob24tbmF0aXZlIChsYXJnZSBidWlsZAotZGVwZW5kZW5jeSwgZWFybHkgaW4gdGhlIGJ1aWxkKSBvciB1c2UgdGhlIGhvc3QgcHl0aG9uIChweXRob25kaXIgcmVmbGVjdHMgdGhlCi1ob3N0IGFuZCBub3QgdGhlIHRhcmdldCwgYnJlYWtzIGJ1aWxkcykuCi0KLVRoZSB0aGlyZCBvcHRpb24gaXMgdG8ganVzdCBoYXJkY29kZSB0aGUgcGF0aCB3aGVyZSB0aGUgbW9kdWxlIGdvZXMsIGFzIG1vc3QKLWNhbGxlcnMgb2YgdGhlIGNvZGUgdXNlIHBrZy1jb25maWcgdG8gZmluZCB3aGVyZSBpdCB3YXMgaW5zdGFsbGVkIGFueXdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkMTQwYmZlLi5jN2I2OGRhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNCw3ICsxNCwxMCBAQCBpZiB0ZXN0ICIkWE1MTElOVCIgPSAibm8iOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW3htbGxpbnQgbm90IGZvdW5kOyB1bmFibGUgdG8gdmFsaWRhdGUgYWdhaW5zdCBzY2hlbWEuXSkKLSBmaQotCi0tQU1fUEFUSF9QWVRIT04oWzIuNV0pCi0rcHl0aG9uZGlyPSIke2xpYmRpcn0veGNiLXByb3RvIgotK0FDX1NVQlNUKHB5dGhvbmRpcikKLStQWVRIT049InB5dGhvbjMiCi0rQUNfU1VCU1QoUFlUSE9OKQotCi0geGNiaW5jbHVkZWRpcj0nJHtkYXRhZGlyfS94Y2InCi0gQUNfU1VCU1QoeGNiaW5jbHVkZWRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgppbmRleCBiYzA0YmM0Li4yNWE4MzczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCkBAIC0xMSw4ICsxMSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzYzYjA4MWNiMTBjMjIzNDM1YjAxZTAwZGMwYWJhNyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZHJpMi54bWw7YmVnaW5saW5lPTI7ZW5kbGluZT0yODttZDU9Zjg3NjNiMTNmZjQzMmU4NTk3ZTBkNjEwY2Y1OThlNjUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC94Y2ItcHJvdG8tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1weXRob24tbmF0aXZlLnBhdGNoIFwKK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS13aGl0ZXNwYWNlLXVzZS1jb25zaXN0ZW50LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggXAogICAgICAgICAgICAiCkBAIC0yMSw2ICsyMCwxMCBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAorIyBGb3JjZSB0aGUgdXNlIG9mIFB5dGhvbiAzIGFuZCBhIHNwZWNpZmljIGxpYnJhcnkgcGF0aCBzbyB3ZSBkb24ndCBuZWVkIHRvCisjIGRlcGVuZCBvbiBweXRob24zLW5hdGl2ZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlBZVEhPTj1weXRob24zIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtsaWJkaXJ9L3hjYi1wcm90byIKKwogUEFDS0FHRVMgKz0gInB5dGhvbi14Y2JnZW4iCiAKIEZJTEVTXyR7UE59ID0gIiIKQEAgLTMyLDkgKzM1LDE5IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBNYWtlZmlsZSdzIGRvX2luc3RhbGwgY3JlYXRlcyAucHljIGZpbGVzIGZvciBweXRob24zLCBub3cgYWxzbyBjcmVhdGUKLSAgICAjIHRoZW0gZm9yIHB5dGhvbjIgc28gdGhhdCB0aGV5IHdpbGwgYmUgcmVjb3JkZWQgYnkgbWFuaWZlc3QsIGFuZCBjYW4gYmUKLSAgICAjIGNsZWFuZWQgY29ycmVjdGx5LgotICAgIHB5dGhvbiAtbSBweV9jb21waWxlICR7RH0ke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi8qLnB5CisjIE5lZWQgdG8gZG8gdGhpcyBkYW5jZSBiZWNhdXNlIHdlJ3JlIGZvcmNpbmcgdGhlIHVzZSBvZiBob3N0IFB5dGhvbiBhYm92ZSBhbmQKKyMgaWYgeGNiLXByb3RvIGlzIGJ1aWx0IHdpdGggUHkzLjUgYW5kIHRoZW4gcmUtdXNlZCBmcm9tIHNzdGF0ZSBvbiBhIGhvc3Qgd2l0aAorIyBQeTMuNiB0aGUgc2Vjb25kIGJ1aWxkIHdpbGwgd3JpdGUgbmV3IGNhY2hlIGZpbGVzIGludG8gdGhlIHN5c3Jvb3Qgd2hpY2ggd29uJ3QKKyMgYmUgbGlzdGVkIGluIHRoZSBtYW5pZmVzdCBzbyB3b24ndCBiZSBkZWxldGVkLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24KKyMgcmVidWlsZHMuICBTb2x2ZSB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBlbnRpcmUgY2FjaGUgZGlyZWN0b3J5IHdoZW4gdGhpcyBwYWNrYWdlCisjIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3lzcm9vdC4KK1NTVEFURVBPU1RJTlNURlVOQ1MgKz0gInhjYl9zc3RhdGVfcG9zdGluc3QiCit4Y2Jfc3N0YXRlX3Bvc3RpbnN0KCkgeworCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF0KKwl0aGVuCisJCWNhdCA8PEVPRiA+JHtTU1RBVEVfSU5TVF9QT1NUUk19CisjIS9iaW4vc2gKK3JtIC1yZiAke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi9fX3B5Y2FjaGVfXworRU9GCisJZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggOGE1ZmY1OC4uNGY5ZWQ5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKQEAgLTEwLDEzICsxMCwxNSBAQAogUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzEKIAotLS0tIHhwcm90by03LjAuMjIvWG1kLmgueDMyCTIwMDktMDctMTEgMDQ6MTk6NTAuMDAwMDAwMDAwIC0wNzAwCi0rKysgeHByb3RvLTcuMC4yMi9YbWQuaAkyMDExLTExLTMwIDE3OjE0OjE5LjI5MDM5NTg5MyAtMDgwMAorSW5kZXg6IHhwcm90by03LjAuMzEvWG1kLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB4cHJvdG8tNy4wLjMxLm9yaWcvWG1kLmgKKysrKyB4cHJvdG8tNy4wLjMxL1htZC5oCiBAQCAtNjIsNyArNjIsNiBAQCBTT0ZUV0FSRS4KICAgICAgIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoaWE2NCkgfHwgXAogICAgICAgZGVmaW5lZChfX3NwYXJjNjRfXykgfHwgXAogICAgICAgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKIC0gICAgIGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKGFtZDY0KSB8fCBcCiAgICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gIyAgZGVmaW5lIExPTkc2NAkJCQkvKiAzMi82NC1iaXQgYXJjaGl0ZWN0dXJlICovCi0gIyBlbmRpZgorICMgIGlmICFkZWZpbmVkKF9fSUxQMzJfXykgLyogYW1kNjQteDMyIGlzIDMyYml0ICovCisgIyAgIGRlZmluZSBMT05HNjQJCQkJLyogMzIvNjQtYml0IGFyY2hpdGVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgppbmRleCA0YzQ0MmJjLi41NDIwYjdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgpAQCAtMTAsNyArMTAsNiBAQAogUyA9ICIke1dPUktESVJ9IgogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mIgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9saWJjLW11c2wgPSAiICR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLzEwLXByZWxvYWQtbW9kdWxlcy5jb25mIgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCmluZGV4IDg2M2Q4MGMuLmNmMjI4NmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTE3LDcgKzExNyw2IEBACiAgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0vZXRjL1gxMSBcCiAgICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLXhrYi1vdXRwdXQ9L3Zhci9saWIveGtiIFwKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAogIgogCiBPUEVOR0xfUEtHQ09ORklHUyA9ICJkcmkgZ2x4IGdsYW1vciBkcmkzIHhzaG1mZW5jZSIKQEAgLTEzMyw3ICsxMzIsNyBAQAogIyBEUkkzIHJlcXVpcmVzIHhzaG1mZW5jZSB0byBhbHNvIGJlIGVuYWJsZWQKIFBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyxkcmkzcHJvdG8iCiBQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsZ2xwcm90byB2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnbGFtb3JdID0gIi0tZW5hYmxlLWdsYW1vciwtLWRpc2FibGUtZ2xhbW9yLGxpYmVwb3h5LGxpYmVnbCIKK1BBQ0tBR0VDT05GSUdbZ2xhbW9yXSA9ICItLWVuYWJsZS1nbGFtb3IsLS1kaXNhYmxlLWdsYW1vcixsaWJlcG94eSB2aXJ0dWFsL2xpYmdibSxsaWJlZ2wiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgogUEFDS0FHRUNPTkZJR1t4c2htZmVuY2VdID0gIi0tZW5hYmxlLXhzaG1mZW5jZSwtLWRpc2FibGUteHNobWZlbmNlLGxpYnhzaG1mZW5jZSIKIFBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1ZWVjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBkNzdjZGM1ZTFlZWUyNjgyMWFiOThjOTQ3YWJlYTUzZmI3YjE4ZmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTc6MjM6MTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0geGY4NnBjaUJ1cy5jOiB1c2UgSW50ZWwgZGR4IG9ubHkgZm9yIHByZS1nZW40IGhhcmR3YXJlCisKK1VzZSBpbnRlbCBkZHggb25seSBvbiBwcmUtZ2VuNCBodywgbmV3ZXIgb25lcyB3aWxsIGZhbGwgYmFjayB0byBtb2Rlc2V0dGluZworQXV0aG9yOiBUaW1vIEFhbHRvbmVuIDx0amFhbHRvbkBkZWJpYW4ub3JnPgorCitJbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIEludGVsIGRyaXZlciBmb3IgYWxsIEludGVsIGhhcmR3YXJlLCBvbmx5CitkZWZhdWx0IGl0IGZvciBvbGRlciBoYXJkd2FyZSBmb3Igd2hpY2ggaXQgaGFzIHNob3duIHRvIGJlIGJldHRlciBmb3IuCisKK090aGVycyBmYWxsIHRocm91Z2ggdG8gdGhlIC1tb2Rlc2V0dGluZyBkZWZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW0RlYmlhbi9GZWRvcmEgcGF0Y2gKK2h0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMveG9yZy14MTEtc2VydmVyL2MvZWU1MTVlNDRiMDdlMzc2ODlhYmY0OGNmMmZmZmI0MTU3OGYzYmMxZF0KKworU2lnbmVkLW9mZi1ieTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KKy0tLQorIGh3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYyB8IDE4ICsrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK2luZGV4IGU2MWFlMGNkNC4uZDcwYzk5MTk3IDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9jb21tb24veGY4NnBjaUJ1cy5jCisrKysgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK0BAIC0xMTczLDcgKzExNzMsMjMgQEAgeGY4NlZpZGVvUHRyVG9Ecml2ZXJMaXN0KHN0cnVjdCBwY2lfZGV2aWNlICpkZXYsCisgCQljYXNlIDB4MGJlZjoKKyAJCQkvKiBVc2UgZmJkZXYvdmVzYSBkcml2ZXIgb24gT2FrdHJhaWwsIE1lZGZpZWxkLCBDRFYgKi8KKyAJCQlicmVhazsKKy0JCWRlZmF1bHQ6CisrCQkvKiBEZWZhdWx0IHRvIGludGVsIG9ubHkgb24gcHJlLWdlbjQgY2hpcHMgKi8KKysJCWNhc2UgMHgzNTc3OgorKwkJY2FzZSAweDI1NjI6CisrCQljYXNlIDB4MzU4MjoKKysJCWNhc2UgMHgzNThlOgorKwkJY2FzZSAweDI1NzI6CisrCQljYXNlIDB4MjU4MjoKKysJCWNhc2UgMHgyNThhOgorKwkJY2FzZSAweDI1OTI6CisrCQljYXNlIDB4Mjc3MjoKKysJCWNhc2UgMHgyN2EyOgorKwkJY2FzZSAweDI3YWU6CisrCQljYXNlIDB4MjliMjoKKysJCWNhc2UgMHgyOWMyOgorKwkJY2FzZSAweDI5ZDI6CisrCQljYXNlIDB4YTAwMToKKysJCWNhc2UgMHhhMDExOgorIAkJCWRyaXZlckxpc3RbMF0gPSAiaW50ZWwiOworIAkJCWJyZWFrOworICAgICAgICAgfQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZmQwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTYzNDI4ZjkxNGM0MjI3MGQzMzEyZDRmMGMwODQwNTY1NTIxNTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDE2IE5vdiAyMDE2IDAwOjQxOjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXNjYW5uZXIgYW5kIHByb3RvY29scyBsb2NhdGlvbnMKLQotV2Ugd2FudCB0byB1c2UgdGhlIHdheWxhbmQtc2Nhbm5lciBpbiBwYXRoIChuYXRpdmUgc3lzcm9vdCkKLWluc3RlYWQgb2YgdXNpbmcgcGtnLWNvbmZpZyB3aGljaCBnaXZlcyB1cyB0YXJnZXQgcGF0aHMuCi0KLVRoZSBwcm90b2NvbHMgcGF0aHMgb24gdGhlIG90aGVyIGhhbmQgbmVlZCB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZQotKGFsbGFyY2gpIHN5c3Jvb3QgYmVjYXVzZSwgYWdhaW4sIHBrZy1jb25maWcgZ2l2ZXMgdXMgdGFyZ2V0IHBhdGhzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDYgKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNThmMTU2Ny4uMzgzYTdkZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjUyNSwxMSArMjUyNSw5IEBAIGlmIHRlc3QgIngkWFdBWUxBTkQiID0geHllczsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtYd2F5bGFuZCByZXF1aXJlcyBDTE9DS19NT05PVE9OSUMgc3VwcG9ydC5dKQotIAlmaQotIAotLQlXQVlMQU5EX1BSRUZJWD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggd2F5bGFuZC1jbGllbnRgCi0tCUFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sLAotLQkJICAgICBbJHtXQVlMQU5EX1BSRUZJWH0vYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdKQotKwlBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotIAotLQlBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsJQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSBmaQotIAotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2M4MDQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAyMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGl4OiBEaXNhbGxvdyBHZW5lcmljRXZlbnQgaW4gU2VuZEV2ZW50IHJlcXVlc3QuCi0KLVRoZSBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcyB4RXZlbnQgd2hpY2ggaXMgZXhhY3RseSAzMiBieXRlcyBsb25nLCBubyBtb3JlLAotbm8gbGVzcy4gQm90aCBQcm9jU2VuZEV2ZW50IGFuZCBTUHJvY1NlbmRFdmVudCB2ZXJpZnkgdGhhdCB0aGUgcmVjZWl2ZWQgZGF0YQotZXhhY3RseSBtYXRjaCB0aGUgcmVxdWVzdCBzaXplLiBIb3dldmVyIG5vdGhpbmcgc3RvcHMgdGhlIGNsaWVudCBmcm9tIHBhc3NpbmcKLWluIGV2ZW50IHdpdGggeEV2ZW50Ojp0eXBlID0gR2VuZXJpY0V2ZW50IGFuZCBhbnkgdmFsdWUgb2YKLXhHZW5lcmljRXZlbnQ6Omxlbmd0aC4KLQotSW4gdGhlIGNhc2Ugb2YgUHJvY1NlbmRFdmVudCwgdGhlIGV2ZW50IHdpbGwgYmUgZXZlbnR1YWxseSBwYXNzZWQgdG8KLVdyaXRlRXZlbnRzVG9DbGllbnQgd2hpY2ggd2lsbCBzZWUgdGhhdCBpdCBpcyBHZW5lcmljIGV2ZW50IGFuZCBjb3B5IHRoZQotYXJiaXRyYXJ5IGxlbmd0aCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAoYW5kIHBvc3NpYmx5IHBhc3QgaXQpIGFuZCBzZW5kIGl0IHRvCi10aGUgb3RoZXIgY2xpZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNvcHkgdW5pdGlhbGl6ZWQgaGVhcCBtZW1vcnkgb3V0IG9mIFgKLXNlcnZlciBvciB0byBjcmFzaCBpdC4KLQotSW4gY2FzZSBvZiBTUHJvY1NlbmRFdmVudCwgaXQgd2lsbCBhdHRlbXB0IHRvIHN3YXAgdGhlIGluY29taW5nIGV2ZW50IGJ5Ci1jYWxsaW5nIGEgc3dhcHBpbmcgZnVuY3Rpb24gZnJvbSB0aGUgRXZlbnRTd2FwVmVjdG9yIGFycmF5LiBUaGUgc3dhcHBlZCBldmVudAotaXMgd3JpdHRlbiB0byB0YXJnZXQgYnVmZmVyLCB3aGljaCBpbiB0aGlzIGNhc2UgaXMgbG9jYWwgeEV2ZW50IHZhcmlhYmxlLiBUaGUKLXhFdmVudCB2YXJpYWJsZSBpcyAzMiBieXRlcyBsb25nLCBidXQgdGhlIHN3YXBwaW5nIGZ1bmN0aW9ucyBmb3IgR2VuZXJpY0V2ZW50cwotZXhwZWN0IHRoYXQgdGhlIHRhcmdldCBidWZmZXIgaGFzIHNpemUgbWF0Y2hpbmcgdGhlIHNpemUgb2YgdGhlIHNvdXJjZQotR2VuZXJpY0V2ZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNhdXNlIHN0YWNrIGJ1ZmZlciBvdmVyZmxvd3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD0yMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGl4L2V2ZW50cy5jICB8ICAgIDYgKysrKysrCi0gZGl4L3N3YXByZXEuYyB8ICAgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGl4L2V2ZW50cy5jIGIvZGl4L2V2ZW50cy5jCi1pbmRleCAzZTNhMDFlLi5kM2EzM2VhIDEwMDY0NAotLS0tIGEvZGl4L2V2ZW50cy5jCi0rKysgYi9kaXgvZXZlbnRzLmMKLUBAIC01MzY2LDYgKzUzNjYsMTIgQEAgUHJvY1NlbmRFdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotICAgICB9Ci0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0gICAgIGlmIChzdHVmZi0+ZXZlbnQudS51LnR5cGUgPT0gQ2xpZW50TWVzc2FnZSAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gOCAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMTYgJiYgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMzIpIHsKLWRpZmYgLS1naXQgYS9kaXgvc3dhcHJlcS5jIGIvZGl4L3N3YXByZXEuYwotaW5kZXggNzE5ZTliOC4uNjc4NTA1OSAxMDA2NDQKLS0tLSBhL2RpeC9zd2FwcmVxLmMKLSsrKyBiL2RpeC9zd2FwcmVxLmMKLUBAIC0yOTIsNiArMjkyLDEzIEBAIFNQcm9jU2VuZEV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gICAgIHN3YXBsKCZzdHVmZi0+ZGVzdGluYXRpb24pOwotICAgICBzd2FwbCgmc3R1ZmYtPmV2ZW50TWFzayk7Ci0gCi0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0rCi0gICAgIC8qIFN3YXAgZXZlbnQgKi8KLSAgICAgcHJvYyA9IEV2ZW50U3dhcFZlY3RvcltzdHVmZi0+ZXZlbnQudS51LnR5cGUgJiAwMTc3XTsKLSAgICAgaWYgKCFwcm9jIHx8IHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5ODg3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gOGNhZWQ0ZGYzNmIxZjgwMmI0OTkyZWRjZmQyODJjYmVlZWMzNWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDE1OjU0OjQxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFhpOiBWZXJpZnkgYWxsIGV2ZW50cyBpbiBQcm9jWFNlbmRFeHRlbnNpb25FdmVudC4KLQotVGhlIHJlcXVpcmVtZW50IGlzIHRoYXQgZXZlbnRzIGhhdmUgdHlwZSBpbiByYW5nZQotRVhURU5TSU9OX0VWRU5UX0JBU0UuLmxhc3RFdmVudCwgYnV0IGl0IHdhcyB0ZXN0ZWQKLW9ubHkgZm9yIGZpcnN0IGV2ZW50IG9mIGFsbC4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLVJldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotQ1ZFOiBDVkUtMjAxNy0xMDk3MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPThjYWVkNGRmMzZiMWY4MDJiNDk5MmVkY2ZkMjgyY2JlZWVjMzVkOWRdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBYaS9zZW5kZXhldi5jIHwgICAxMiArKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvWGkvc2VuZGV4ZXYuYyBiL1hpL3NlbmRleGV2LmMKLWluZGV4IDFjZjExOGEuLjVlNjNiZmMgMTAwNjQ0Ci0tLS0gYS9YaS9zZW5kZXhldi5jCi0rKysgYi9YaS9zZW5kZXhldi5jCi1AQCAtMTE3LDcgKzExNyw3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIGludAotIFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gewotLSAgICBpbnQgcmV0OwotKyAgICBpbnQgcmV0LCBpOwotICAgICBEZXZpY2VJbnRQdHIgZGV2OwotICAgICB4RXZlbnQgKmZpcnN0OwotICAgICBYRXZlbnRDbGFzcyAqbGlzdDsKLUBAIC0xNDEsMTAgKzE0MSwxMiBAQCBQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAvKiBUaGUgY2xpZW50J3MgZXZlbnQgdHlwZSBtdXN0IGJlIG9uZSBkZWZpbmVkIGJ5IGFuIGV4dGVuc2lvbi4gKi8KLSAKLSAgICAgZmlyc3QgPSAoKHhFdmVudCAqKSAmc3R1ZmZbMV0pOwotLSAgICBpZiAoISgoRVhURU5TSU9OX0VWRU5UX0JBU0UgPD0gZmlyc3QtPnUudS50eXBlKSAmJgotLSAgICAgICAgICAoZmlyc3QtPnUudS50eXBlIDwgbGFzdEV2ZW50KSkpIHsKLS0gICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0LT51LnUudHlwZTsKLS0gICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyspIHsKLSsgICAgICAgIGlmICghKChFWFRFTlNJT05fRVZFTlRfQkFTRSA8PSBmaXJzdFtpXS51LnUudHlwZSkgJiYKLSsgICAgICAgICAgICAoZmlyc3RbaV0udS51LnR5cGUgPCBsYXN0RXZlbnQpKSkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0W2ldLnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBsaXN0ID0gKFhFdmVudENsYXNzICopIChmaXJzdCArIHN0dWZmLT5udW1fZXZlbnRzKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGJhNDgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gWGk6IERvIG5vdCB0cnkgdG8gc3dhcCBHZW5lcmljRXZlbnQuCi0KLVRoZSBTUHJvY1hTZW5kRXh0ZW5zaW9uRXZlbnQgbXVzdCBub3QgYXR0ZW1wdCB0byBzd2FwIEdlbmVyaWNFdmVudCBiZWNhdXNlCi1pdCBpcyBhc3N1bWluZyB0aGF0IHRoZSBldmVudCBoYXMgZml4ZWQgc2l6ZSBhbmQgZ2l2ZXMgdGhlIHN3YXBwaW5nIGZ1bmN0aW9uCi14RXZlbnQtc2l6ZWQgYnVmZmVyLgotCi1BIEdlbmVyaWNFdmVudCB3b3VsZCBiZSBsYXRlciByZWplY3RlZCBieSBQcm9jWFNlbmRFeHRlbnNpb25FdmVudCBhbnl3YXkuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD1iYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1XQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gWGkvc2VuZGV4ZXYuYyB8ICAgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1hpL3NlbmRleGV2LmMgYi9YaS9zZW5kZXhldi5jCi1pbmRleCA1ZTYzYmZjLi41YzJlMGZjIDEwMDY0NAotLS0tIGEvWGkvc2VuZGV4ZXYuYwotKysrIGIvWGkvc2VuZGV4ZXYuYwotQEAgLTk1LDkgKzk1LDE3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIAotICAgICBldmVudFAgPSAoeEV2ZW50ICopICZzdHVmZlsxXTsKLSAgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyssIGV2ZW50UCsrKSB7Ci0rICAgICAgICBpZiAoZXZlbnRQLT51LnUudHlwZSA9PSBHZW5lcmljRXZlbnQpIHsKLSsgICAgICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBldmVudFAtPnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHByb2MgPSBFdmVudFN3YXBWZWN0b3JbZXZlbnRQLT51LnUudHlwZSAmIDAxNzddOwotLSAgICAgICAgaWYgKHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICBpZiAocHJvYyA9PSBOb3RJbXBsZW1lbnRlZCkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGV2ZW50UC0+dS51LnR5cGU7Ci0gICAgICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICAgICAgfQotICAgICAgICAgKCpwcm9jKSAoZXZlbnRQLCAmZXZlbnRUKTsKLSAgICAgICAgICpldmVudFAgPSBldmVudFQ7Ci0gICAgIH0KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2gKaW5kZXggZWMwZWVhNi4uYzM2ZTRlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEveG9yZy1zZXJ2ZXIubTQgYi94b3JnLXNlcnZlci5tNAotaW5kZXggYmRlY2Y2Mi4uMDQwZmRiOCAxMDA2NDQKLS0tLSBhL3hvcmctc2VydmVyLm00Ci0rKysgYi94b3JnLXNlcnZlci5tNAorSW5kZXg6IHhvcmctc2VydmVyLTEuMTkuNi94b3JnLXNlcnZlci5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHhvcmctc2VydmVyLTEuMTkuNi5vcmlnL3hvcmctc2VydmVyLm00CisrKysgeG9yZy1zZXJ2ZXItMS4xOS42L3hvcmctc2VydmVyLm00CiBAQCAtMjgsMTAgKzI4LDEyIEBAIGRubAotICMgQ2hlY2tzIGZvciB0aGUgJDEgZGVmaW5lIGluIHhvcmctc2VydmVyLmggKGZyb20gdGhlIHNkaykuICBJZiBpdAotICMgaXMgZGVmaW5lZCwgdGhlbiBhZGQgJDEgdG8gJFJFUVVJUkVEX01PRFVMRVMuCisgIyBDaGVja3MgZm9yIHRoZSBNQUNSTyBkZWZpbmUgaW4geG9yZy1zZXJ2ZXIuaCAoZnJvbSB0aGUgc2RrKS4gIElmIGl0CisgIyBpcyBkZWZpbmVkLCB0aGVuIGFkZCB0aGUgZ2l2ZW4gUFJPVE8gdG8gJFJFUVVJUkVEX01PRFVMRVMuCiAgCiArbTRfcGF0dGVybl9hbGxvdyhQS0dfQ09ORklHX1NZU1JPT1RfRElSKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZWY2YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGNmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZTQ3Nzc3ZmYwMzRhMzMxYWVkMjMyMmIwNzg2OTRhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzMyNTAyZjFkYjAwMGNmMzZhMzc2Y2QwYzAxMGZmZGJmMzJlY2RkN2YxZmEwOGJhN2Y1YmRmOTYwMWNjMTk3IgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgppbmRleCAyNjY3ZGQ4Li4xZDI3NWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKQEAgLTgsNyArOCw3IEBACiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvdGVzdC14dmlkZW8iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI3MTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZGV2X3QtZGVmaW5pdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNmI1YmJkZmFhYzdmMjE2ZmU4YTAyYzRjZjI5ZTVlYjJhZWU1YTQwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIGRldl90IGRlZmluaXRpb24KLQotQXZvaWRzIHRoZSBidWlsZCBmYWlsdXJlcyB3aGVuIHN5cy90eXBlcy5oIGRvZXMgbm90IGdldCBpbmNsdWRlZAotaW5kaXJlY3RseSB0aHJvdWdoIG90aGVyIGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBibGt0cmFjZS5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9ibGt0cmFjZS5oIGIvYmxrdHJhY2UuaAotaW5kZXggMzgwYWVjNy4uOTQ0ZmMwOCAxMDA2NDQKLS0tLSBhL2Jsa3RyYWNlLmgKLSsrKyBiL2Jsa3RyYWNlLmgKLUBAIC01LDYgKzUsNyBAQAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJibGt0cmFjZV9hcGkuaCIKLSAjaW5jbHVkZSAicmJ0cmVlLmgiCi0tLSAKLTIuNS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9sZGZsYWdzLnBhdGNoCmluZGV4IGRlYTFhYTIuLmFiOTA1Y2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbGRmbGFncy5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYWhhZCBVc21hbiA8ZmFoYWRfdXNtYW5AbWVudG9yLmNvbT4KIAorSW5kZXg6IGdpdC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL01ha2VmaWxlCiArKysgZ2l0L01ha2VmaWxlCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTE5LDcgKzIxLDcgQEAKICBBTExfQ0ZMQUdTID0gJChDRkxBR1MpIC1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0CiAgUFJPR1MJPSBibGtwYXJzZSBibGt0cmFjZSB2ZXJpZnlfYmxrcGFyc2UgYmxrcmF3dmVyaWZ5IGJsa2lvbW9uCiAgTElCUwk9IC1scHRocmVhZAotQEAgLTIzLDE5ICsyNCwxOSBAQCBidHJlcGxheS9idHJlcGxheToKK0BAIC0yNiwxOSArMjcsMTkgQEAgYnRyZXBsYXkvYnRyZXBsYXk6CiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGJsa3BhcnNlOiBibGtwYXJzZS5vIGJsa3BhcnNlX2ZtdC5vIHJidHJlZS5vIGFjdF9tYXNrLm8KQEAgLTQ0LDYgKzQ2LDggQEAKICAKICAkKFBST0dTKTogfCBkZXBlbmQKICAKK0luZGV4OiBnaXQvYnRyZXBsYXkvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHJlcGxheS9NYWtlZmlsZQogKysrIGdpdC9idHJlcGxheS9NYWtlZmlsZQogQEAgLTcsNiArNyw3IEBACkBAIC01NSw4ICs1OSw4IEBACiAgT0NGTEFHUwk9IC1VQ09VTlRfSU9TIC1VREVCVUcgLUROREVCVUcKICBYQ0ZMQUdTCT0gLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKIEBAIC0zMiwxMCArMzMsMTAgQEAgY2xlYW46IGRvY3NjbGVhbgotCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkKi5vICQ8Ci0KKyAJJChDQykgJChDRkxBR1MpIC1jIC1vICQqLm8gJDwKKyAKICBidHJlY29yZDogYnRyZWNvcmQubwogLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKQogKwkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAkKExERkxBR1MpCkBAIC02Nyw2ICs3MSw4IEBACiAgCiAgZGVwZW5kOgogIAlAJChDQykgLU1NICQoQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZAorSW5kZXg6IGdpdC9idHQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHQvTWFrZWZpbGUKICsrKyBnaXQvYnR0L01ha2VmaWxlCiBAQCAtNyw2ICs3LDcgQEAKQEAgLTg2LDExICs5MiwxMyBAQAogIAogIGlmbmVxICgkKHdpbGRjYXJkIC5kZXBlbmQpLCkKICBpbmNsdWRlIC5kZXBlbmQKK0luZGV4OiBnaXQvaW93YXRjaGVyL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvaW93YXRjaGVyL01ha2VmaWxlCiArKysgZ2l0L2lvd2F0Y2hlci9NYWtlZmlsZQogQEAgLTEsNSArMSw2IEBACi0gQyAgICAgID0gZ2NjCi0gQ0ZMQUdTICA9IC1XYWxsIC1PMCAtZyAtVworIENDICAgICAgPSBnY2MKKyBDRkxBR1MgID0gLVdhbGwgLU8yIC1nIC1XIC1XdW51c2VkLXJlc3VsdAogK0xERkxBR1MgPQogIEFMTF9DRkxBR1MgPSAkKENGTEFHUykgLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKICAKQEAgLTk5LDggKzEwNyw4IEBACiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGlvd2F0Y2hlcjogYmxrcGFyc2UubyBwbG90Lm8gbWFpbi5vIHRyYWNlcnMubyBtcHN0YXQubyBmaW8ubwotLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtCi0rCSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAtbG0gJChMREZMQUdTKQorLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtIC1scnQKKysJJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pIC1sbSAkKExERkxBR1MpIC1scnQKICAKICBkZXBlbmQ6CiAgCUAkKENDKSAtTU0gJChBTExfQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDc3MDU3NWYuLjY2M2RlMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKQEAgLTUsMTMgKzUsMTIgQEAKIAogREVQRU5EUyA9ICJsaWJhaW8iCiAKLVNSQ1JFViA9ICI0M2ZjODcwY2UwNGU5NjNkZWY0NWRmYzBkMWVkNGVhMjFlZjEwZDRiIgorU1JDUkVWID0gImNjYTExM2YyZmUwNzU5YjkxZmQ2YTBlMTBmZGNkYTJjMjhmMThhN2UiCiAKLVBWID0gIjEuMS4wK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4yLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5kay9ibGt0cmFjZS5naXQgXAogICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWRldl90LWRlZmluaXRpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmluZGV4IDU1MmViNmEuLmVkNmQwZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKQEAgLTksNiArOSw3IEBACiAKIFNSQ19VUkkgKz0gIiBcCiBmaWxlOi8vMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWlvY3RsLmMtRml4LWJ1aWxkLXdpdGgtbGludXgtNC4xMy5wYXRjaCBcCiAiCiAKIEVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IiBQUkVGSVg9IiR7RH0iJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA1MDM2NmU3Li5hYjE1YmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtMywxMSArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL253bC5jYy9wdWIvY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eCIKK1NSQ1JFViA9ICI4N2Q5NTlkOWEyNzljMDU1YjM2MWRlOGU3MzBmYWI2YTcxNDRlZGQ3IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2I0ZTBlZDllNTkzNzcxNmM3YzhhN2JlODQ4OTViNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0YzBiNDliMzBlMjY3ZDc3NmY3OTQ1NWQwOWM3MGNjOWMxMmM4NmVlZTQwMGEwZDBhMGNkMWQ4ZTQ2Nzk1MCIKLQotUyA9ICIke1dPUktESVJ9L2NyeXB0b2Rldi1saW51eC0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCiAKIENMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaAppbmRleCAzZjAyOThiLi44NGZkMjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2gKQEAgLTE0LDM3ICsxNCwzNyBAQAogIHRlc3RzL01ha2VmaWxlIHwgICAgOCArKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDMxYzRiM2YuLjJlY2YyYTkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0zNCw2ICszNCw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKLSAJQGVjaG8gIkluc3RhbGxpbmcgY3J5cHRvZGV2LmggaW4gJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0byAuLi4iCi0gCUBpbnN0YWxsIC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKFBSRUZJWCkvdXNyL2luY2x1ZGUvY3J5cHRvL2NyeXB0b2Rldi5oCitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0zNSw2ICszNSw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKKyAJJChNQUtFKSAkKEtFUk5FTF9NQUtFX09QVFMpIG1vZHVsZXNfaW5zdGFsbAorIAlpbnN0YWxsIC1tIDY0NCAtRCBjcnlwdG8vY3J5cHRvZGV2LmggJChERVNURElSKS8kKGluY2x1ZGVkaXIpL2NyeXB0by9jcnlwdG9kZXYuaAogIAogK2luc3RhbGxfdGVzdHM6CiArCW1ha2UgLUMgdGVzdHMgaW5zdGFsbCBERVNURElSPSQoUFJFRklYKQogKwogIGNsZWFuOgotIAltYWtlIC1DICQoS0VSTkVMX0RJUikgU1VCRElSUz1gcHdkYCBjbGVhbgorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgY2xlYW4KICAJcm0gLWYgJChob3N0cHJvZ3MpICp+Ci1AQCAtNDIsNiArNDUsOSBAQCBjbGVhbjoKK0BAIC00Myw2ICs0Niw5IEBAIGNsZWFuOgogIGNoZWNrOgotIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgbWFrZSAtQyB0ZXN0cyBjaGVjaworIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgJChNQUtFKSAtQyB0ZXN0cyBjaGVjawogIAogK3Rlc3Rwcm9nczoKICsJS0VSTkVMX0RJUj0kKEtFUk5FTF9ESVIpIG1ha2UgLUMgdGVzdHMgdGVzdHByb2dzCiArCiAgQ1BPUFRTID0KLSBpZm5lcSAoJHtTSE9XX1RZUEVTfSwpCisgaWZuZXEgKCQoU0hPV19UWVBFUyksKQogIENQT1BUUyArPSAtLXNob3ctdHlwZXMKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCi1pbmRleCBjOWYwNGU4Li5jZDIwMmFmIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlCi1AQCAtMTksNiArMTksMTIgQEAgZXhhbXBsZS1hc3luYy1obWFjLW9ianMgOj0gYXN5bmNfaG1hYy5vCi0gZXhhbXBsZS1hc3luYy1zcGVlZC1vYmpzIDo9IGFzeW5jX3NwZWVkLm8KLSBleGFtcGxlLWhhc2hjcnlwdC1zcGVlZC1vYmpzIDo9IGhhc2hjcnlwdF9zcGVlZC5jCitJbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdHMvTWFrZWZpbGUKK0BAIC0yMyw2ICsyMywxMiBAQCBiaW5kaXIgPSAkKGV4ZWNwcmVmaXgpL2JpbgorIAorIGFsbDogJChob3N0cHJvZ3MpCiAgCiAraW5zdGFsbDoKICsJaW5zdGFsbCAtZCAgJChERVNURElSKS91c3IvYmluL3Rlc3RzX2NyeXB0b2RldgpAQCAtNTUsOSArNTUsOSBAQAogIGNoZWNrOiAkKGhvc3Rwcm9ncykKICAJLi9jaXBoZXIKICAJLi9obWFjCi1AQCAtMjgsNiArMzQsOCBAQCBjaGVjazogJChob3N0cHJvZ3MpCi0gCS4vY2lwaGVyLWdjbQotIAkuL2NpcGhlci1hZWFkCitAQCAtMzgsNiArNDQsOCBAQCBpbnN0YWxsOgorIAkJaW5zdGFsbCAtbSA3NTUgJCRwcm9nICQoREVTVERJUikvJChiaW5kaXIpOyBcCisgCWRvbmUKICAKICt0ZXN0cHJvZ3M6ICQoaG9zdHByb2dzKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MWVmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBmMGQ2OTc3NGFmYjI3ZmZjNjJiZjM1MzQ2NWZiYTE0NWU3MGNiODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTE6MDU6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW9jdGwuYzogRml4IGJ1aWxkIHdpdGggbGludXggNC4xMworCitnaXQvaW9jdGwuYzoxMTI3OjM6IGVycm9yOiBwb3NpdGlvbmFsIGluaXRpYWxpemF0aW9uIG9mIGZpZWxkIGluICdzdHJ1Y3QnIGRlY2xhcmVkIHdpdGggJ2Rlc2lnbmF0ZWRfaW5pdCcgYXR0cmlidXRlIFstV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdF0KKyAgIHswLCB9LAorICAgIF4KK25vdGU6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAndmVyYm9zaXR5X2N0bF9kaXJbMV0nKQorZ2l0L2lvY3RsLmM6MTEzNjozOiBlcnJvcjogcG9zaXRpb25hbCBpbml0aWFsaXphdGlvbiBvZiBmaWVsZCBpbiAnc3RydWN0JyBkZWNsYXJlZCB3aXRoICdkZXNpZ25hdGVkX2luaXQnIGF0dHJpYnV0ZSBbLVdlcnJvcj1kZXNpZ25hdGVkLWluaXRdCisgICB7MCwgfSwKKyAgICBeCisKK0xpbnV4IGtlcm5lbCBoYXMgYWRkZWQgLVdlcnJvcj1kZXNpZ25hdGVkLWluaXQgYXJvdW5kIDQuMTEgKGM4MzRmMGU4YThiKQordHJpZ2dlcmluZyBidWlsZCBlcnJvcnMgd2l0aCBnY2MgNSBhbmQgNiAoYnV0IG5vdCB3aXRoIGdjYyA0KQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKy0tLQorIGlvY3RsLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW9jdGwuYyBiL2lvY3RsLmMKK2luZGV4IDAzODUyMDMuLjhkNGExNjIgMTAwNjQ0CistLS0gYS9pb2N0bC5jCisrKysgYi9pb2N0bC5jCitAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgdmVyYm9zaXR5X2N0bF9kaXJbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA2NDQsCisgCQkucHJvY19oYW5kbGVyICAgPSBwcm9jX2RvaW50dmVjLAorIAl9LAorLQl7MCwgfSwKKysJe30sCisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKK0BAIC0xMTMzLDcgKzExMzMsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA1NTUsCisgCQkuY2hpbGQgICAgICAgICAgPSB2ZXJib3NpdHlfY3RsX2RpciwKKyAJfSwKKy0JezAsIH0sCisrCXt9LAorIH07Cisgc3RhdGljIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICp2ZXJib3NpdHlfc3lzY3RsX2hlYWRlcjsKKyBzdGF0aWMgaW50IF9faW5pdCBpbml0X2NyeXB0b2Rldih2b2lkKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCmluZGV4IGQ3NTk5NDYuLjlhOTBkNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC03LDkgKzcsMTEgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2R0Yy9kdGMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VfaW5zdGFsbC5wYXRjaCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAotRVhUUkFfT0VNQUtFPSdQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJworRVhUUkFfT0VNQUtFPSdOT19QWVRIT049MSBQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yMCw0ICsyMiw0IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L2NvbnZlcnQtZHRzdjAgJHtiaW5kaXJ9L2Z0ZHVtcCAke2JpbmRpcn0vZHRkaWZmIgogCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiYmFzaCBkaWZmdXRpbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiMzg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGM3YTRjMzgxNzc5NjEwN2JiODI0YTFmMTczZmFmOTBmYWU0NTM5NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgorRGF0ZTogV2VkLCAyNyBTZXAgMjAxNyAxNTowNDowOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBjaGVja3M6IFVzZSBwcm9wZXIgZm9ybWF0IG1vZGlmaWVyIGZvciBzaXplX3QKKworVGhlIHNpemUgb2Ygc2l6ZV90IGNhbiB2YXJ5IGJldHdlZW4gYXJjaGl0ZWN0dXJlcywgc28gdXNpbmcgJWxkIGlzbid0Citnb2luZyB0byB3b3JrIG9uIDMyLWJpdCBidWlsZHMuIFVzZSB0aGUgJXp1IG1vZGlmaWVyIHRvIG1ha2Ugc3VyZSBpdCBpcworYWx3YXlzIGNvcnJlY3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+CitBY2tlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KK1NpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjaGVja3MuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGVja3MuYyBiL2NoZWNrcy5jCitpbmRleCA5MDJmMmUzLi4wOGEzYTI5IDEwMDY0NAorLS0tIGEvY2hlY2tzLmMKKysrKyBiL2NoZWNrcy5jCitAQCAtOTcyLDcgKzk3Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3Byb3BlcnR5X3BoYW5kbGVfYXJncyhzdHJ1Y3QgY2hlY2sgKmMsCisgCWludCBjZWxsLCBjZWxsc2l6ZSA9IDA7CisgCisgCWlmIChwcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpIHsKKy0JCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJWxkIGluIG5vZGUgJXMiLAorKwkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlenUgaW4gbm9kZSAlcyIsCisgCQkgICAgIHByb3AtPm5hbWUsIHByb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLCBub2RlLT5mdWxscGF0aCk7CisgCQlyZXR1cm47CisgCX0KK0BAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19pbnRlcnJ1cHRzX3Byb3BlcnR5KHN0cnVjdCBjaGVjayAqYywKKyAJCXJldHVybjsKKyAKKyAJaWYgKGlycV9wcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpCistCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICVsZCBpbiBub2RlICVzIiwKKysJCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJXp1IGluIG5vZGUgJXMiLAorIAkJICAgICBpcnFfcHJvcC0+bmFtZSwgaXJxX3Byb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLAorIAkJICAgICBub2RlLT5mdWxscGF0aCk7CisgCistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCmluZGV4IDExMjA2MTcuLmNjZjE3YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCkBAIC0yLDExICsyLDExIEBACiAKIEluZGV4OiBnaXQvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZQkyMDExLTExLTAyIDE0OjUyOjE3LjI0MzEwNDc3OSAtMDcwMAotKysrIGdpdC9NYWtlZmlsZQkyMDExLTExLTAyIDE1OjA2OjAxLjU1NTEwNDk4MiAtMDcwMAotQEAgLTE2MSw4ICsxNjEsOCBAQAotIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAkKEJJTikgJChTQ1JJUFRTKSAkKERFU1RESVIpJChCSU5ESVIpCistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0xNjgsOCArMTY4LDggQEAgaW5zdGFsbC1iaW46IGFsbCAkKFNDUklQVFMpCisgaW5zdGFsbC1saWI6IGFsbAorIAlAJChWRUNITykgSU5TVEFMTC1MSUIKICAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChMSUJESVIpCiAtCSQoSU5TVEFMTCkgJChMSUJGRFRfbGliKSAkKERFU1RESVIpJChMSUJESVIpCiAtCWxuIC1zZiAkKG5vdGRpciAkKExJQkZEVF9saWIpKSAkKERFU1RESVIpJChMSUJESVIpLyQoTElCRkRUX3NvbmFtZSkKQEAgLTE0LDQgKzE0LDQgQEAKICsJbG4gLXNmICQoTElCRkRUX3NvbmFtZSkgJChERVNURElSKSQoTElCRElSKS8kKG5vdGRpciAkKExJQkZEVF9saWIpKQogIAlsbiAtc2YgJChMSUJGRFRfc29uYW1lKSAkKERFU1RESVIpJChMSUJESVIpL2xpYmZkdC4kKFNIQVJFRExJQl9FWFQpCiAgCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCRkRUX2FyY2hpdmUpICQoREVTVERJUikkKExJQkRJUikKLSAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChJTkNMVURFRElSKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZGI3YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZHRjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCi0KLVNSQ1JFViA9ICI1NThjZDgxYmRkNDMyNzY5YjU5YmZmMDEyNDBjNDRmODJjZmIxYTlkIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTQ2Y2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGR0Yy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgorCitTUkNSRVYgPSAiMjJhNjVjNTMzMWMyMjk3OWQ0MTY3MzhlYjc1NmI5NTQxNjcyZTAwZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCAzYTM5OTJhLi44Y2NkOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC10b29scy5naXQiCiBTID0gIiR7V09SS0RJUn0iCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7IAogCToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4OWJlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgotREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKLUFVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKLURFUEVORFMgPSAiemxpYiB4eiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8va2R1bXAgXAotICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSIKLQotUFIgPSAicjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRlOTRkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzYmI3M2U1ZTU2NDliNDU1ZTE1ZDVjYTNhN2FkMWE5MGM0OTYwOTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMTE6NTQ6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXJtNjQ6IERpc2FibGUgUElDCi0KLUZpeAotfCBjYzE6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiBjb2RlIG1vZGVsICdsYXJnZScgd2l0aCAtZlBJQwotfCBtYWtlOiAqKiogW01ha2VmaWxlOjExODogcHVyZ2F0b3J5L2FyY2gvYXJtNjQvZW50cnkub10gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1pbmRleCA2MzZhYmVhLi44MDA2OGNhIDEwMDY0NAotLS0tIGEvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMSw2ICsxLDcgQEAKLSAKLSBhcm02NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gXAotIAktbWNtb2RlbD1sYXJnZSBcCi0rCS1mbm8tUElDIFwKLSAJLWZuby1zdGFjay1wcm90ZWN0b3IgXAotIAktZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIFwKLSAJLVd1bmRlZiBcCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmYyOGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1leG50ZW5kLXRoZS1zZW1hbnRpY3Mtb2Yta2V4ZWNfaW9tZW1fZm9yX2VhY2hfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSAwMmVlZDBmOGYyNzQ4ZmQ3NTc5ZjY5ZTUzNzM0NDViNTJiMmI4NzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgMTcgT2N0IDIwMTYgMTM6NTY6NTggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzldIGtleGVjOiBleG50ZW5kIHRoZSBzZW1hbnRpY3Mgb2Yga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZQotCi1UaGUgY3VycmVudCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgY291bnRzIHVwIGFsbCB0aGUgbGluZXMgZm9yIHdoaWNoCi1hIGNhbGxiYWNrIGZ1bmN0aW9uIHJldHVybnMgemVybygwKSBvciBwb3NpdGl2ZSwgYW5kIG90aGVyd2lzZSBpdCBzdG9wcwotZnVydGhlciBzY2FubmluZy4KLVRoaXMgYmVoYXZpb3IgaXMgaW5jb3ZlbmllbnQgaW4gc29tZSBjYXNlcy4gRm9yIGluc3RhbmNlLCBvbiBhcm02NCwgd2Ugd2FudAotdG8gY291bnQgdXAgIlN5c3RlbSBSQU0iIGVudHJpZXMsIGJ1dCBuZWVkIHRvIHNraXAgInJlc2VydmVkIiBlbnRyaWVzLgotCi1TbyB0aGlzIHBhdGNoIGV4dGVuZHMgdGhlIHNlbWFudGljcyBzbyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gc2Nhbgotc3VjY2VlZGluZyBlbnRyaWVzIGJ1dCBub3QgY291bnQgbGluZXMgZm9yIHdoaWNoIGEgY2FsbGJhY2sgZnVuY3Rpb24KLXJldHVybnMgcG9zaXRpdmUuCi0KLVRoZSBjdXJyZW50IHVzZXJzIG9mIGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoKSwgYXJtLCBzaCBhbmQgeDg2LCB3aWxsIG5vdAotYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UgYmVjYXVzZQotKiBhcm0KLSAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyAtMSBvciAwLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZgotICBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgd2lsbCBuZXZlciBiZSB1c2VkLgotKiBzaCwgeDg2Ci0gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgcmV0dXJuICgtMSBmb3Igc2gsKSAwIG9yIDEsIGJ1dCBhbHdheXMgcmV0dXJucwotICAxIG9uY2Ugd2UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGFsbG93ZWQuCi0gIEV2ZW4gc28gdGhlIGN1cnJlbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZSgpIGNvdW50cyB0aGVtIHVwLgotICBUaGlzIGNoYW5nZSBhY3R1YWxseSBmaXhlcyB0aGlzIGJ1Zy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9rZXhlYy1pb21lbS5jIHwgMTUgKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy1pb21lbS5jIGIva2V4ZWMva2V4ZWMtaW9tZW0uYwotaW5kZXggNDg1YTJlOC4uMGEwMjc3YSAxMDA2NDQKLS0tLSBhL2tleGVjL2tleGVjLWlvbWVtLmMKLSsrKyBiL2tleGVjL2tleGVjLWlvbWVtLmMKLUBAIC0xOCw2ICsxOCw5IEBACi0gICogSXRlcmF0ZSBvdmVyIGVhY2ggbGluZSBpbiB0aGUgZmlsZSByZXR1cm5lZCBieSBwcm9jX2lvbWVtKCkuIElmIG1hdGNoIGlzCi0gICogTlVMTCBvciBpZiB0aGUgbGluZSBtYXRjaGVzIHdpdGggb3VyIG1hdGNoLXBhdHRlcm4gdGhlbiBjYWxsIHRoZQotICAqIGNhbGxiYWNrIGlmIG5vbi1OVUxMLgotKyAqIElmIG1hdGNoIGlzIE5VTEwsIGNhbGxiYWNrIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBpZiBlcnJvci4KLSsgKiBPdGhlcndpc2UgdGhlIGludGVyYXRpb24gZ29lcyBvbiwgaW5jcmVtZW50aW5nIG5yIGJ1dCBvbmx5IGlmIGNhbGxiYWNrCi0rICogcmV0dXJucyAwIChtYXRjaGVkKS4KLSAgKgotICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZWQuCi0gICovCi1AQCAtMzcsNyArNDAsNyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJY2hhciAqc3RyOwotIAlpbnQgY29uc3VtZWQ7Ci0gCWludCBjb3VudDsKLS0JaW50IG5yID0gMDsKLSsJaW50IG5yID0gMCwgcmV0OwotIAotIAlmcCA9IGZvcGVuKGlvbWVtLCAiciIpOwotIAlpZiAoIWZwKQotQEAgLTUwLDExICs1MywxMyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSAJCXNpemUgPSBlbmQgLSBzdGFydCArIDE7Ci0gCQlpZiAoIW1hdGNoIHx8IG1lbWNtcChzdHIsIG1hdGNoLCBzdHJsZW4obWF0Y2gpKSA9PSAwKSB7Ci0tCQkJaWYgKGNhbGxiYWNrCi0tCQkJICAgICYmIGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKSA8IDApIHsKLS0JCQkJYnJlYWs7Ci0rCQkJaWYgKGNhbGxiYWNrKSB7Ci0rCQkJCXJldCA9IGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKTsKLSsJCQkJaWYgKHJldCA8IDApCi0rCQkJCQlicmVhazsKLSsJCQkJZWxzZSBpZiAocmV0ID09IDApCi0rCQkJCQlucisrOwotIAkJCX0KLS0JCQlucisrOwotIAkJfQotIAl9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjMmY2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXZtY29yZS1kbWVzZy1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGQ4MTE4NzVhNDFiNDYyODA0MGFiYWFkYTNkYTI5YjdiOTU5MmU3NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA5IEphbiAyMDE2IDE3OjE2OjE2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZtY29yZS1kbWVzZzogRGVmaW5lIF9HTlVfU09VUkNFCi0KLWxvZmZfdCBpcyBndWFyZGVkIHdpdGggX0dOVV9TT1VSQ0Ugb24gc29tZSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zCi1lLmcuIG11c2wgc2luY2UgdGhpcyB0eXBlIGlzIG5vdCBkZWZpbmVkIGJ5IFBPU0lYLiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KLWluY2x1ZGUgdGhpcyBkZWZpbmUsIGl0IHNob3VsZCBoZWxwIGNvbXBpbGluZyBvbiBtdXNsIHdoaWxlIG5vdGhpbmcKLWNoYW5nZXMgZm9yIGdsaWJjIGJhc2VkIHN5c3RlbXMgc2luY2UgdGhlcmUgX0dOVV9TT1VSQ0UgaXMgYWxyZWFkeQotZGVmaW5lZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMgYi92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLWluZGV4IDAzNjQ2MzYuLmE4ZjU2ZGYgMTAwNjQ0Ci0tLS0gYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLSsrKyBiL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwotQEAgLTEsNCArMSw1IEBACi0gI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKLSAjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYwMWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi1Gcm9tIDE1NTBmODFiZjE4ODZhYTA1MjBkYTBiNjE4MWNkNjFjMWE3NWQ0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE0IE1hciAyMDE3IDE3OjU5OjIyICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSB4ODYveDg2XzY0OiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1GZWRvcmEga29qaSB1c2VzIGdjYyB2ZXJzaW9uIDcuMC4xLTAuMTIuZmMyNywgYW5kIGl0IGdlbmVyYXRlcyBhIGJ1aWxkCi13YXJuaW5nCi0KLSAgIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmM6Mjk5OjM6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nCi0gICBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLSAgICAgICBkaWUoZXJyb3JfbXNnKTsKLSAgICAgICBefn4KLSAgICBjYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotZXJyb3JfbXNnIGNhbiBoYXZlIGEgZm9ybWF0IHNwZWNpZmllciBhcyB3ZWxsIGluIHN0cmluZy4gSW4gc3VjaCBjYXNlcywKLWlmIHRoZXJlIGlzIG5vIG90aGVyIGFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCB2YXJpYWJsZSB0aGVuIGNvZGUgd2lsbAotdHJ5IHRvIGFjY2VzcyBhIG5vbiBleGlzdGluZyBhcmd1bWVudC4gVGhlcmVmb3JlLCB1c2UgMXN0IGFyZ3VtZW50IGFzCi1mb3JtYXQgc3BlY2lmaWVyIGZvciBzdHJpbmcgcHJpbnQgYW5kIHBhc3MgZXJyb3JfbXNnIGFzIHRoZSBzdHJpbmcgdG8gYmUKLXByaW50ZWQuCi0KLVdoaWxlIGRvaW5nIHRoYXQsYWxzbyB1c2UgY29uc3QgcXVhbGlmaWVyIGJlZm9yZSAiY2hhciAqZXJyb3JfbXNnIi4KLQotU2lnbmVkLW9mZi1ieTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5uZXQuYXU+Ci0tLS0KLSBrZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jICAgICAgfCA0ICsrLS0KLSBrZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmMgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jCi1pbmRleCBkZTAwZGNiLi5mZWRmMDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IGVsZl94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotIAljaGFyICpjb21tYW5kX2xpbmUgPSBOVUxMLCAqbW9kaWZpZWRfY21kbGluZSA9IE5VTEw7Ci0gCWNvbnN0IGNoYXIgKmFwcGVuZCA9IE5VTEw7Ci0gCWNoYXIgKnRtcF9jbWRsaW5lID0gTlVMTDsKLS0JY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSAJaW50IHJlc3VsdDsKLSAJaW50IGNvbW1hbmRfbGluZV9sZW47Ci0gCWNvbnN0IGNoYXIgKnJhbWRpc2s7Ci1AQCAtMjk2LDYgKzI5Niw2IEBAIG91dDoKLSAJZnJlZShjb21tYW5kX2xpbmUpOwotIAlmcmVlKG1vZGlmaWVkX2NtZGxpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi1pbmRleCBhZTY1NjkyLi5hZDIyMzExIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi0rKysgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMKLUBAIC05OSw3ICs5OSw3IEBAIGludCBlbGZfeDg2XzY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKLSAjZGVmaW5lIEFSR19TVFlMRV9OT05FICAyCi0gCWludCBvcHQ7Ci0gCWludCByZXN1bHQgPSAwOwotLQljaGFyICplcnJvcl9tc2cgPSBOVUxMOwotKwljb25zdCBjaGFyICplcnJvcl9tc2cgPSBOVUxMOwotIAotIAkvKiBTZWUgb3B0aW9ucy5oIGFuZCBhZGQgYW55IG5ldyBvcHRpb25zIHRoZXJlIHRvbyEgKi8KLSAJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotQEAgLTI3Niw2ICsyNzYsNiBAQCBvdXQ6Ci0gCWZyZWUoY29tbWFuZF9saW5lKTsKLSAJZnJlZShtb2RpZmllZF9jbWRsaW5lKTsKLSAJaWYgKGVycm9yX21zZykKLS0JCWRpZShlcnJvcl9tc2cpOwotKwkJZGllKCIlcyIsIGVycm9yX21zZyk7Ci0gCXJldHVybiByZXN1bHQ7Ci0gfQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMi1rZXhlYy1nZW5lcmFsaXplLWFuZC1yZW5hbWUtZ2V0X2tlcm5lbF9zdGV4dF9zeW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzZjEzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1Gcm9tIGQyOWYzN2JiNmU5MTE0YWJhOTZjNjA2MTAzYjExMGY1MTFiZWU5YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIgTm92IDIwMTYgMTU6MDU6MjUgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIGtleGVjOiBnZW5lcmFsaXplIGFuZCByZW5hbWUgZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKQotCi1nZXRfa2VybmVsX3N0ZXh0X3N5bSgpIGhhcyBiZWVuIGRlZmluZWQgZm9yIGJvdGggYXJtIGFuZCBpMzg2LiBPdGhlcgotYXJjaGl0ZWN0dXJlIG1pZ2h0IG5lZWQgc29tZSBvdGhlciBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuIFRoZXJlZm9yZSByZXdyaXRlCi10aGlzIGZ1bmN0aW9uIGFzIGdlbmVyaWMgZnVuY3Rpb24gdG8gZ2V0IGFueSBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuCi0KLU1vcmUgb3Zlciwga2FsbHN5bXMgaXMgbm90IGFyY2ggc3BlY2lmaWMgcmVwcmVzZW50YXRpb24sIHRoZXJlZm9yZSBoYXZlCi1jb21tb24gZnVuY3Rpb24gZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLVtjcmVhdGVkIHN5bWJvbHMuY10KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAxICsKLSBrZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgIHwgNDAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2tleGVjLmggICAgICAgICAgICAgICAgICAgfCAgMiArKwotIGtleGVjL3N5bWJvbHMuYyAgICAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGtleGVjL3N5bWJvbHMuYwotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvTWFrZWZpbGUgYi9rZXhlYy9NYWtlZmlsZQotaW5kZXggMzlmMzY1Zi4uMmI0ZmIzZCAxMDA2NDQKLS0tLSBhL2tleGVjL01ha2VmaWxlCi0rKysgYi9rZXhlYy9NYWtlZmlsZQotQEAgLTI2LDYgKzI2LDcgQEAgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tlcm5lbF92ZXJzaW9uLmMKLSBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvbHptYS5jCi0gS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL3psaWIuYwotIEtFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9rZXhlYy14ZW4uYwotK0tFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9zeW1ib2xzLmMKLSAKLSBLRVhFQ19HRU5FUkFURURfU1JDUyArPSAkKFBVUkdBVE9SWV9IRVhfQykKLSAKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLWluZGV4IDRhODliNWUuLjI0NWMyMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYwotQEAgLTczLDQ4ICs3MywxMCBAQCBzdGF0aWMgc3RydWN0IGNyYXNoX2VsZl9pbmZvIGVsZl9pbmZvID0gewotIAotIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgdXNlcl9wYWdlX29mZnNldDsKLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgX3N0ZXh0IHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zdGV4dF9zeW0odm9pZCkKLS17Ci0tCWNvbnN0IGNoYXIgKmthbGxzeW1zID0gIi9wcm9jL2thbGxzeW1zIjsKLS0JY29uc3QgY2hhciAqc3RleHQgPSAiX3N0ZXh0IjsKLS0JY2hhciBzeW1bMTI4XTsKLS0JY2hhciBsaW5lWzEyOF07Ci0tCUZJTEUgKmZwOwotLQl1bnNpZ25lZCBsb25nIGxvbmcgdmFkZHIgPSAwOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotLQotLQkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0tCQkJY29udGludWU7Ci0tCi0tCQlpZiAoc3RyY21wKHN5bSwgc3RleHQpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlI2xseFxuIiwgc3RleHQsIGFkZHIpOwotLQkJCXZhZGRyID0gYWRkcjsKLS0JCQlicmVhazsKLS0JCX0KLS0JfQotLQotLQlmY2xvc2UoZnApOwotLQotLQlpZiAodmFkZHIgPT0gMCkKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBrZXJuZWwgJXMgc3ltYm9sIGFkZHJlc3NcbiIsIHN0ZXh0KTsKLS0KLS0JcmV0dXJuIHZhZGRyOwotLX0KLS0KLSBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCQlzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gKmVsZl9pbmZvKQotIHsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKTsKLSsJdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zeW0oIl9zdGV4dCIpOwotIAlpZiAoc3RleHRfc3ltX2FkZHIgPT0gMCkgewotIAkJaWYgKHVzZXJfcGFnZV9vZmZzZXQgIT0gKC0xVUxMKSkgewotIAkJCWVsZl9pbmZvLT5wYWdlX29mZnNldCA9IHVzZXJfcGFnZV9vZmZzZXQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYyBiL2tleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMKLWluZGV4IGFiODMzZDQuLmFiZjgyYTUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi0rKysgYi9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi1AQCAtMTAyLDM1ICsxMDIsNiBAQCBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFkZHIoc3RydWN0IGtleGVjX2luZm8gKlVOVVNFRChpbmZvKSwKLSAJcmV0dXJuIC0xOwotIH0KLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgc3ltYm9sIHZpcnR1YWwgYWRkcmVzcyBmcm9tIC9wcm9jL2thbGxzeW1zICovCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICpzeW1ib2wpCi0tewotLQljb25zdCBjaGFyICprYWxsc3ltcyA9ICIvcHJvYy9rYWxsc3ltcyI7Ci0tCWNoYXIgc3ltWzEyOF07Ci0tCWNoYXIgbGluZVsxMjhdOwotLQlGSUxFICpmcDsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHZhZGRyOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCWlmIChzc2NhbmYobGluZSwgIiVMeCAlYyAlcyIsICZ2YWRkciwgJnR5cGUsIHN5bSkgIT0gMykKLS0JCQljb250aW51ZTsKLS0JCWlmIChzdHJjbXAoc3ltLCBzeW1ib2wpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlMTZsbHhcbiIsIHN5bWJvbCwgdmFkZHIpOwotLQkJCXJldHVybiB2YWRkcjsKLS0JCX0KLS0JfQotLQotLQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQga2VybmVsICVzIHN5bWJvbCBhZGRyZXNzXG4iLCBzeW1ib2wpOwotLQlyZXR1cm4gMDsKLS19Ci0tCi0gLyogUmV0cmlldmUgaW5mbyByZWdhcmRpbmcgdmlydHVhbCBhZGRyZXNzIGtlcm5lbCBoYXMgYmVlbiBjb21waWxlZCBmb3IgYW5kCi0gICogc2l6ZSBvZiB0aGUga2VybmVsIGZyb20gL3Byb2Mva2NvcmUuIEN1cnJlbnQgL3Byb2Mva2NvcmUgcGFyc2luZyBmcm9tCi0gICogZnJvbSBrZXhlYy10b29scyBmYWlscyBiZWNhdXNlIG9mIG1hbGZvcm1lZCBlbGYgbm90ZXMuIEEga2VybmVsIHBhdGNoIGhhcwotZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLmggYi9rZXhlYy9rZXhlYy5oCi1pbmRleCA5MTk0ZjFjLi5iNGZhZmFkIDEwMDY0NAotLS0tIGEva2V4ZWMva2V4ZWMuaAotKysrIGIva2V4ZWMva2V4ZWMuaAotQEAgLTMxMiw0ICszMTIsNiBAQCBpbnQgeGVuX2tleGVjX2xvYWQoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotIGludCB4ZW5fa2V4ZWNfdW5sb2FkKHVpbnQ2NF90IGtleGVjX2ZsYWdzKTsKLSB2b2lkIHhlbl9rZXhlY19leGVjKHZvaWQpOwotIAotK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zeW0oY29uc3QgY2hhciAqdGV4dCk7Ci0rCi0gI2VuZGlmIC8qIEtFWEVDX0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9zeW1ib2xzLmMgYi9rZXhlYy9zeW1ib2xzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lYTZlMzI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9zeW1ib2xzLmMKLUBAIC0wLDAgKzEsNDEgQEAKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgImtleGVjLmgiCi0rCi0rLyogUmV0cmlldmUga2VybmVsIHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotK3Vuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICp0ZXh0KQotK3sKLSsJY29uc3QgY2hhciAqa2FsbHN5bXMgPSAiL3Byb2Mva2FsbHN5bXMiOwotKwljaGFyIHN5bVsxMjhdOwotKwljaGFyIGxpbmVbMTI4XTsKLSsJRklMRSAqZnA7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWRkciA9IDA7Ci0rCWNoYXIgdHlwZTsKLSsKLSsJZnAgPSBmb3BlbihrYWxsc3ltcywgInIiKTsKLSsJaWYgKCFmcCkgewotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwga2FsbHN5bXMpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLSsJCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotKwotKwkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0rCQkJY29udGludWU7Ci0rCi0rCQlpZiAoc3RyY21wKHN5bSwgdGV4dCkgPT0gMCkgewotKwkJCWRiZ3ByaW50Zigia2VybmVsIHN5bWJvbCAlcyB2YWRkciA9ICUjbGx4XG4iLAotKwkJCQkJCQkJdGV4dCwgYWRkcik7Ci0rCQkJdmFkZHIgPSBhZGRyOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCi0rCWlmICh2YWRkciA9PSAwKQotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3QgZ2V0IGtlcm5lbCAlcyBzeW1ib2wgYWRkcmVzc1xuIiwgdGV4dCk7Ci0rCi0rCXJldHVybiB2YWRkcjsKLSt9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmExYzA2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDFjOTU2ZmM4YzZiNjMyNGQ4ZDM4YmJhNWY5ZTYwYTAxODA1MWM2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAxNiBNYXIgMjAxNyAxNTozOTowNiArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gcHBjOiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1FbmFibGUgY29tcGlsaW5nIGtleGVjLXRvb2xzIGZvciBwcGMgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eS4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtNYWlsaW5nIGxpc3RdCi0tLS0KLSBrZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMgICAgfCAyICstCi0ga2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi1pbmRleCAyOTFmMDZkLi5hZDQzYWQxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMKLUBAIC00NTMsNyArNDUzLDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi1pbmRleCA1ZWVjNmU0Li5lOGY3YWRjIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTFjMzE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAxNmRmMTcwYWQ0ODA4ZDEyYWNkNWU5MTlhYzRmNmU3ZjMzYTI0N2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IFRodSwgMSBTZXAgMjAxNiAxMDo1Nzo0MiArMDkwMAotU3ViamVjdDogW1BBVENIIDMvOV0gYXJtNjQ6IGlkZW50aWZ5IFBIWVNfT0ZGU0VUIGNvcnJlY3RseQotCi1EdWUgdG8gdGhlIGtlcm5lbCBwYXRjaCwgY29tbWl0IGU3Y2QxOTAzODVkMSAoImFybTY0OiBtYXJrIHJlc2VydmVkCi1tZW1ibG9jayByZWdpb25zIGV4cGxpY2l0bHkgaW4gaW9tZW0iKSwgdGhlIGN1cnJlbnQgY29kZSB3aWxsIG5vdCBiZSBhYmxlCi10byBpZGVudGlmeSB0aGUgY29ycmVjdCB2YWx1ZSBvZiBQSFlTX09GRlNFVCBpZiBzb21lICJyZXNlcnZlZCIgbWVtb3J5Ci1yZWdpb24sIHdoaWNoIGlzIGxpa2VseSB0byBiZSBVRUZJIHJ1bnRpbWUgc2VydmljZXMgY29kZS9kYXRhLCBleGlzdHMgYXQKLWFuIGFkZHJlc3MgYmVsb3cgdGhlIGZpcnN0ICJTeXN0ZW0gUkFNIiByZWdpb25zLgotCi1UaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgIHwgIDcgKysrKysrKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDEyICsrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZmQ2NmViCi0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLUBAIC0wLDAgKzEsNyBAQAotKyNpZm5kZWYgSU9NRU1fSAotKyNkZWZpbmUgSU9NRU1fSAotKwotKyNkZWZpbmUgU1lTVEVNX1JBTQkJIlN5c3RlbSBSQU1cbiIKLSsjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDJlODgzOWEuLjhhYzgxMWQgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImR0LW9wcy5oIgotICNpbmNsdWRlICJmczJkdC5oIgotKyNpbmNsdWRlICJpb21lbS5oIgotICNpbmNsdWRlICJrZXhlYy1zeXNjYWxsLmgiCi0gI2luY2x1ZGUgImFyY2gvb3B0aW9ucy5oIgotIAotQEAgLTQ3NSw3ICs0NzYsMTQgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYih2b2lkICpkYXRhLCBpbnQgbnIsIGNoYXIgKnN0ciwKLSAJCXJldHVybiAtMTsKLSAKLSAJciA9IChzdHJ1Y3QgbWVtb3J5X3JhbmdlICopZGF0YSArIG5yOwotLQlyLT50eXBlID0gUkFOR0VfUkFNOwotKwotKwlpZiAoIXN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpKQotKwkJci0+dHlwZSA9IFJBTkdFX1JBTTsKLSsJZWxzZSBpZiAoIXN0cm5jbXAoc3RyLCBJT01FTV9SRVNFUlZFRCwgc3RybGVuKElPTUVNX1JFU0VSVkVEKSkpCi0rCQlyLT50eXBlID0gUkFOR0VfUkVTRVJWRUQ7Ci0rCWVsc2UKLSsJCXJldHVybiAxOwotKwotIAlyLT5zdGFydCA9IGJhc2U7Ci0gCXItPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotIAotQEAgLTQ5NCw3ICs1MDIsNyBAQCBzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzX2lvbWVtX2NiKHZvaWQgKmRhdGEsIGludCBuciwgY2hhciAqc3RyLAotIHN0YXRpYyBpbnQgZ2V0X21lbW9yeV9yYW5nZXNfaW9tZW0oc3RydWN0IG1lbW9yeV9yYW5nZSAqYXJyYXksCi0gCXVuc2lnbmVkIGludCAqY291bnQpCi0gewotLQkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCJTeXN0ZW0gUkFNXG4iLAotKwkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsCi0gCQlnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYiwgYXJyYXkpOwotIAotIAlpZiAoISpjb3VudCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY2MDBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLUZyb20gNDhhNGM3ODc0ZDgyNjRkZGJmYWVjMmU5ODU4ZDc4NjZhMmQyZWI2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDUgQXVnIDIwMTUgMTM6MTY6MzAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGFybTY0OiBrZHVtcDogaWRlbnRpZnkgbWVtb3J5IHJlZ2lvbnMKLQotVGhlIGZvbGxvd2luZyByZWdpb25zIG5lZWQgdG8gYmUgaWRlbnRpZmllZCBmb3IgbGF0ZXIgdXNlOgotIGEpIG1lbW9yeSByZWdpb25zIHdoaWNoIGJlbG9uZyB0byB0aGUgMXN0IGtlcm5lbAotIGIpIHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVdlIGdvIHRocm91Z2ggL3Byb2MvaW9tZW0gdG8gZmluZCBvdXQgYSkgYW5kIGIpIHdoaWNoIGFyZSBtYXJrZWQKLWFzICJTeXN0ZW0gUkFNIiBhbmQgIkNyYXNoIGtlcm5lbCIsIHJlc3BlY3RpdmVseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAgIHwgICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIHwgIDE0ICsrKysrLQotIGtleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCAgICAgICAgICAgfCAgIDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIGIva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotaW5kZXggNzRiNjc3Zi4uMmQ0YWUwZSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLUBAIC02LDYgKzYsOCBAQCBhcm02NF9GUzJEVF9JTkNMVURFICs9IFwKLSAKLSBhcm02NF9EVF9PUFMgKz0ga2V4ZWMvZHQtb3BzLmMKLSAKLSthcm02NF9NRU1fUkVHSU9OUyA9IGtleGVjL21lbV9yZWdpb25zLmMKLSsKLSBhcm02NF9DUFBGTEFHUyArPSAtSSAkKHNyY2Rpcikva2V4ZWMvCi0gCi0gYXJtNjRfS0VYRUNfU1JDUyArPSBcCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IGQyMjcyYzguLmRjYWNhNDMgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMSw1ICsxLDEzIEBACi0gLyoKLSAgKiBBUk02NCBjcmFzaGR1bXAuCi0rICogICAgIHBhcnRseSBkZXJpdmVkIGZyb20gYXJtIGltcGxlbWVudGF0aW9uCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBMaW5hcm8gTGltaXRlZAotKyAqIEF1dGhvcjogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAgKi8KLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi1AQCAtMTAsMTIgKzE4LDEwMiBAQAotICNpbmNsdWRlICJrZXhlYy5oIgotICNpbmNsdWRlICJjcmFzaGR1bXAuaCIKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0rI2luY2x1ZGUgImlvbWVtLmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWVsZi5oIgotKyNpbmNsdWRlICJtZW1fcmVnaW9ucy5oIgotIAotLXN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0ge307Ci0rLyogbWVtb3J5IHJhbmdlcyBvbiBjcmFzaGVkIGtlcm5lbCAqLwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX21lbW9yeV9yYW5nZXNbQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVNdOwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlcyBjcmFzaF9tZW1vcnlfcmducyA9IHsKLSsJLnNpemUgPSAwLAotKwkubWF4X3NpemUgPSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUywKLSsJLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rCS5zaXplID0gMCwKLSsJLm1heF9zaXplID0gMSwKLSsJLnJhbmdlcyA9ICZjcmFzaF9yZXNlcnZlZF9tZW0sCi0rfTsKLSsKLSsvKgotKyAqIGlvbWVtX3JhbmdlX2NhbGxiYWNrKCkgLSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggaW9tZW0gcmVnaW9uCi0rICogQGRhdGE6IG5vdCB1c2VkCi0rICogQG5yOiBub3QgdXNlZAotKyAqIEBzdHI6IG5hbWUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAYmFzZTogc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqIEBsZW5ndGg6IHNpemUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggbWVtb3J5IHJlZ2lvbiBmb3VuZCBpbiAvcHJvYy9pb21lbS4KLSsgKiBJdCBsb2NhdGVzIHN5c3RlbSBSQU0gYW5kIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBhbmQgcGxhY2VzIHRoZXNlIHRvCi0rICogdmFyaWFibGVzLCByZXNwZWN0aXZlbHksIGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIGNyYXNoX3Jlc2VydmVkX21lbS4KLSsgKi8KLSsKLStzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBsb25nIGJhc2UsCi0rCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpCi0rewotKwlpZiAoc3RybmNtcChzdHIsIENSQVNIX0tFUk5FTCwgc3RybGVuKENSQVNIX0tFUk5FTCkpID09IDApCi0rCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZ1c2FibGVtZW1fcmducywKLSsJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIFNZU1RFTV9SQU0sIHN0cmxlbihTWVNURU1fUkFNKSkgPT0gMCkKLSsJCXJldHVybiBtZW1fcmVnaW9uc19hZGQoJmNyYXNoX21lbW9yeV9yZ25zLAotKwkJCQkgICAgICAgYmFzZSwgbGVuZ3RoLCBSQU5HRV9SQU0pOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0gCi0gaW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotIHsKLSsJaWYgKCFjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCXJldHVybiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgIT0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZDsKLSt9Ci0rCi0rLyoKLSsgKiBjcmFzaF9nZXRfbWVtb3J5X3JhbmdlcygpIC0gcmVhZCBzeXN0ZW0gcGh5c2ljYWwgbWVtb3J5Ci0rICoKLSsgKiBGdW5jdGlvbiByZWFkcyB0aHJvdWdoIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkgYW5kIHN0b3JlcyBmb3VuZCBtZW1vcnkKLSsgKiByZWdpb25zIGluIGNyYXNoX21lbW9yeV9yYW5nZXMuCi0rICogUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIC0xIG90aGVyd2lzZSAoZXJybm8gaXMgc2V0KS4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwkvKgotKwkgKiBGaXJzdCByZWFkIGFsbCBtZW1vcnkgcmVnaW9ucyB0aGF0IGNhbiBiZSBjb25zaWRlcmVkIGFzCi0rCSAqIHN5c3RlbSBtZW1vcnkgaW5jbHVkaW5nIHRoZSBjcmFzaCBhcmVhLgotKwkgKi8KLSsJaWYgKCF1c2FibGVtZW1fcmducy5zaXplKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCS8qIGFsbG93IG9ubHkgYSBzaW5nbGUgcmVnaW9uIGZvciBjcmFzaCBkdW1wIGtlcm5lbCAqLwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSAhPSAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwlkYmdwcmludF9tZW1fcmFuZ2UoIlJlc2VydmVkIG1lbW9yeSByYW5nZSIsICZjcmFzaF9yZXNlcnZlZF9tZW0sIDEpOwotKwotKwlpZiAobWVtX3JlZ2lvbnNfZXhjbHVkZSgmY3Jhc2hfbWVtb3J5X3JnbnMsICZjcmFzaF9yZXNlcnZlZF9tZW0pKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwKLSsJCQkiRXJyb3I6IE51bWJlciBvZiBjcmFzaCBtZW1vcnkgcmFuZ2VzIGV4Y2VkZWVkIHRoZSBtYXggbGltaXRcbiIpOwotKwkJZXJybm8gPSBFTk9NRU07Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJLyoKLSsJICogTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSByZWdpb25zIGFyZSBzb3J0ZWQuCi0rCSAqLwotKwltZW1fcmVnaW9uc19zb3J0KCZjcmFzaF9tZW1vcnlfcmducyk7Ci0rCi0rCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0rCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBmMzNjN2EyLi4wN2EwZWQwIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTEsMTIgKzEsMjIgQEAKLSAvKgotICAqIEFSTTY0IGNyYXNoZHVtcC4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IExpbmFybyBMaW1pdGVkCi0rICogQXV0aG9yOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICAqLwotIAotLSNpZiAhZGVmaW5lZChDUkFTSERVTVBfQVJNNjRfSCkKLSsjaWZuZGVmIENSQVNIRFVNUF9BUk02NF9ICi0gI2RlZmluZSBDUkFTSERVTVBfQVJNNjRfSAotIAotICNpbmNsdWRlICJrZXhlYy5oIgotIAotKyNkZWZpbmUgQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVMJMzIKLSsKLSBleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnM7Ci0rZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIAotLSNlbmRpZgotKyNlbmRpZiAvKiBDUkFTSERVTVBfQVJNNjRfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotaW5kZXggN2ZkNjZlYi4uMjBjZGE4NyAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi1AQCAtMiw2ICsyLDcgQEAKLSAjZGVmaW5lIElPTUVNX0gKLSAKLSAjZGVmaW5lIFNZU1RFTV9SQU0JCSJTeXN0ZW0gUkFNXG4iCi0rI2RlZmluZSBDUkFTSF9LRVJORUwJCSJDcmFzaCBrZXJuZWxcbiIKLSAjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSAKLSAjZW5kaWYKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1MzViNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1Gcm9tIDc2OWRhMjU2MjdjZWJiMmE1M2NhZWU1ZDViZTc4YTMyZDM3NmFkYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCA1IEF1ZyAyMDE1IDEzOjQ1OjE1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBhcm02NDoga2R1bXA6IGFkZCBlbGYgY29yZSBoZWFkZXIgc2VnbWVudAotCi1FbGYgY29yZSBoZWFkZXIgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgdGhlIGNvcmVkdW1wIG9mCi10aGUgMXN0IGtlcm5lbCwgaW5jbHVkaW5nIGl0cyBwaHlzY2FsIG1lbW9yeSBsYXlvdXQgYXMgd2VsbCBhcyBjcHUgcmVnaXN0ZXIKLXN0YXRlcyBhdCB0aGUgcGFuaWMuCi1UaGUgc2VnbWVudCBpcyBhbGxvY2F0ZWQgaW5zaWRlIHRoZSByZXNlcnZlZCBtZW1vcnkgb2YgY3Jhc2ggZHVtcCBrZXJuZWwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAzICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgICAgICB8ICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIHwgMTAgKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1pbmRleCBkY2FjYTQzLi44MzQ2MTMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0gewotIAkucmFuZ2VzID0gJmNyYXNoX3Jlc2VydmVkX21lbSwKLSB9OwotIAotK3N0cnVjdCBtZW1vcnlfcmFuZ2UgZWxmY29yZWhkcl9tZW07Ci0rCi0rc3RhdGljIHN0cnVjdCBjcmFzaF9lbGZfaW5mbyBlbGZfaW5mbyA9IHsKLSsJLmNsYXNzCQk9IEVMRkNMQVNTNjQsCi0rI2lmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsjZWxzZQotKwkuZGF0YQkJPSBFTEZEQVRBMk1TQiwKLSsjZW5kaWYKLSsJLm1hY2hpbmUJPSBFTV9BQVJDSDY0LAotK307Ci0rCi0rLyoKLSsgKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgY29ycmVjdCBvbmx5IGlmICFDT05GSUdfUkFORE9NSVpFX0JBU0UuCi0rICovCi0rc3RhdGljIHVpbnQ2NF90IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQodm9pZCkKLSt7Ci0rCWludCBpOwotKwotKwlpZiAoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9PSBVSU5UNjRfTUFYKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCi0rCS8qIEN1cnJlbnQgbWF4IHZpcnR1YWwgbWVtb3J5IHJhbmdlIGlzIDQ4LWJpdHMuICovCi0rCWZvciAoaSA9IDQ4OyBpID4gMDsgaS0tKQotKwkJaWYgKCEoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCAmICgxVUwgPDwgaSkpKQotKwkJCWJyZWFrOwotKwotKwlpZiAoaSA8PSAwKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCWVsc2UKLSsJCXJldHVybiBVSU5UNjRfTUFYIDw8IGk7Ci0rfQotKwotIC8qCi0gICogaW9tZW1fcmFuZ2VfY2FsbGJhY2soKSAtIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBpb21lbSByZWdpb24KLSAgKiBAZGF0YTogbm90IHVzZWQKLUBAIC02Miw2ICs5NSwxMCBAQCBzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0gCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpID09IDApCi0gCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZjcmFzaF9tZW1vcnlfcmducywKLSAJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIEtFUk5FTF9DT0RFLCBzdHJsZW4oS0VSTkVMX0NPREUpKSA9PSAwKQotKwkJZWxmX2luZm8ua2Vybl9wYWRkcl9zdGFydCA9IGJhc2U7Ci0rCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBLRVJORUxfREFUQSwgc3RybGVuKEtFUk5FTF9EQVRBKSkgPT0gMCkKLSsJCWVsZl9pbmZvLmtlcm5fc2l6ZSA9IGJhc2UgKyBsZW5ndGggLSBlbGZfaW5mby5rZXJuX3BhZGRyX3N0YXJ0OwotIAotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtMTE1LDUgKzE1Miw2NCBAQCBzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0gCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0gCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSAKLSsJLyoKLSsJICogRm9yIGFkZGl0aW9uYWwga2VybmVsIGNvZGUvZGF0YSBzZWdtZW50LgotKwkgKiBrZXJuX3BhZGRyX3N0YXJ0L2tlcm5fc2l6ZSBhcmUgZGV0ZXJtaW5lZCBpbiBpb21lbV9yYW5nZV9jYWxsYmFjawotKwkgKi8KLSsJZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9IGdldF9rZXJuZWxfc3ltKCJfdGV4dCIpOwotKwlpZiAoIWVsZl9pbmZvLmtlcm5fdmFkZHJfc3RhcnQpCi0rCQllbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ID0gVUlOVDY0X01BWDsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qCi0rICogbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoKSAtIGxvYWQgdGhlIGVsZiBjb3JlIGhlYWRlcgotKyAqIEBpbmZvOiBrZXhlYyBpbmZvIHN0cnVjdHVyZQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBsb2FkcyBhbiBhZGRpdGlvbmFsIHNlZ21lbnQgb2YgZWxmIGNvcmUgaGVhZGVyCi0rIDogd2hpY2ggaXMgdXNlZCB0byBjb25zdHJ1Y3QgL3Byb2Mvdm1jb3JlIG9uIGNyYXNoIGR1bXAga2VybmVsLgotKyAqCi0rICogUmV0dXJuIDAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotKwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbykKLSt7Ci0rCXVuc2lnbmVkIGxvbmcgZWxmY29yZWhkcjsKLSsJdW5zaWduZWQgbG9uZyBidWZzejsKLSsJdm9pZCAqYnVmOwotKwlpbnQgZXJyOwotKwotKwkvKgotKwkgKiBGaXJzdCBmZXRjaCBhbGwgdGhlIG1lbW9yeSAoUkFNKSByYW5nZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8KLSsJICogcGFzcyB0byB0aGUgY3Jhc2ggZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsKLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCWVsZl9pbmZvLnBhZ2Vfb2Zmc2V0ID0gZ2V0X2tlcm5lbF9wYWdlX29mZnNldCgpOwotKwlkYmdwcmludGYoIiVzOiBwYWdlX29mZnNldDogICAlMDE2bGx4XG4iLCBfX2Z1bmNfXywKLSsJCQllbGZfaW5mby5wYWdlX29mZnNldCk7Ci0rCi0rCWVyciA9IGNyYXNoX2NyZWF0ZV9lbGY2NF9oZWFkZXJzKGluZm8sICZlbGZfaW5mbywKLSsJCQljcmFzaF9tZW1vcnlfcmducy5yYW5nZXMsIGNyYXNoX21lbW9yeV9yZ25zLnNpemUsCi0rCQkJJmJ1ZiwgJmJ1ZnN6LCBFTEZfQ09SRV9IRUFERVJfQUxJR04pOwotKwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJZWxmY29yZWhkciA9IGFkZF9idWZmZXJfcGh5c192aXJ0KGluZm8sIGJ1ZiwgYnVmc3osIGJ1ZnN6LCAwLAotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJLTEsIDApOwotKwotKwllbGZjb3JlaGRyX21lbS5zdGFydCA9IGVsZmNvcmVoZHI7Ci0rCWVsZmNvcmVoZHJfbWVtLmVuZCA9IGVsZmNvcmVoZHIgKyBidWZzeiAtIDE7Ci0rCi0rCWRiZ3ByaW50ZigiJXM6IGVsZmNvcmVoZHIgMHglbGx4LTB4JWxseFxuIiwgX19mdW5jX18sCi0rCQkJZWxmY29yZWhkcl9tZW0uc3RhcnQsIGVsZmNvcmVoZHJfbWVtLmVuZCk7Ci0rCi0gCXJldHVybiAwOwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotaW5kZXggMDdhMGVkMC4uZGE3NWEyZCAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLUBAIC0xOCw1ICsxOCw4IEBACi0gCi0gZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX3Jlc2VydmVkX21lbTsKLStleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZSBlbGZjb3JlaGRyX21lbTsKLSsKLStleHRlcm4gaW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLWluZGV4IDIwY2RhODcuLmQ0ODY0YmIgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotQEAgLTIsNiArMiw4IEBACi0gI2RlZmluZSBJT01FTV9ICi0gCi0gI2RlZmluZSBTWVNURU1fUkFNCQkiU3lzdGVtIFJBTVxuIgotKyNkZWZpbmUgS0VSTkVMX0NPREUJCSJLZXJuZWwgY29kZVxuIgotKyNkZWZpbmUgS0VSTkVMX0RBVEEJCSJLZXJuZWwgZGF0YVxuIgotICNkZWZpbmUgQ1JBU0hfS0VSTkVMCQkiQ3Jhc2gga2VybmVsXG4iCi0gI2RlZmluZSBJT01FTV9SRVNFUlZFRAkJInJlc2VydmVkXG4iCi0gCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGRhZjhiZjAuLmM3MGEzN2EgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMTE5LDYgKzExOSwxNiBAQCBpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAlkYmdwcmludGYoIiVzOiBQRSBmb3JtYXQ6ICAgICAgJXNcbiIsIF9fZnVuY19fLAotIAkJKGFybTY0X2hlYWRlcl9jaGVja19wZV9zaWcoaGVhZGVyKSA/ICJ5ZXMiIDogIm5vIikpOwotIAotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJLyogY3JlYXRlIGFuZCBpbml0aWFsaXplIGVsZiBjb3JlIGhlYWRlciBzZWdtZW50ICovCi0rCQlyZXN1bHQgPSBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhpbmZvKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBDcmVhdGluZyBlZmxjb3JlaGRyIGZhaWxlZC5cbiIsCi0rCQkJCQkJCQlfX2Z1bmNfXyk7Ci0rCQkJZ290byBleGl0OwotKwkJfQotKwl9Ci0rCi0gCS8qIGxvYWQgdGhlIGtlcm5lbCAqLwotIAlyZXN1bHQgPSBlbGZfZXhlY19sb2FkKCZlaGRyLCBpbmZvKTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNi1hcm02NC1rZHVtcC1zZXQtdXAta2VybmVsLWltYWdlLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0OTU1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDQwNzljOTNhYzU0NTNlZjVmNzg4OWFiNjQ5MjBjMWU5NDI3NjkwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogVHVlLCAxNyBGZWIgMjAxNSAxNjowNjo1NSArMDkwMAotU3ViamVjdDogW1BBVENIIDYvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAga2VybmVsIGltYWdlIHNlZ21lbnQKLQotT24gYXJtNjQsIHdlIGNhbiB1c2UgdGhlIHNhbWUga2VybmVsIGltYWdlIGFzIDFzdCBrZXJuZWwsIGJ1dAotd2UgaGF2ZSB0byBtb2RpZnkgdGhlIGVudHJ5IHBvaW50IGFzIHdlbGwgYXMgc2VnbWVudHMnIGFkZHJlc3NlcwotaW4gdGhlIGtlcm5lbCdzIGVsZiBoZWFkZXIgaW4gb3JkZXIgdG8gbG9hZCB0aGVtIGludG8gY29ycmVjdCBwbGFjZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAxICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKystLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMgfCAxMCArKysrKysrKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IDgzNDYxMzEuLjk1MTczMjkgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMjEzLDMgKzIxMywyNiBAQCBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0gCi0gCXJldHVybiAwOwotIH0KLSsKLSsvKgotKyAqIGVfZW50cnkgYW5kIHBfcGFkZHIgYXJlIGFjdHVhbGx5IGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KLSsgKiBUaG9zZSB2YWx1ZXMgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHBoeXNjYWwgYWRkcmVzc2VzIGJ5Ci0rICogdXNpbmcgdmlydF90b19waHlzKCkuCi0rICogU28gbGV0J3MgZ2V0IHJlYWR5IGZvciBsYXRlciB1c2Ugc28gdGhlIG1lbW9yeSBiYXNlIChwaHlzX29mZnNldCkKLSsgKiB3aWxsIGJlIGNvcnJlY3RseSByZXBsYWNlZCB3aXRoIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydC4KLSsgKi8KLSt2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKQotK3sKLSsJc3RydWN0IG1lbV9waGRyICpwaGRyOwotKwlpbnQgaTsKLSsKLSsJZWhkci0+ZV9lbnRyeSArPSAtIGFybTY0X21lbS5waHlzX29mZnNldCArIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydDsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGVoZHItPmVfcGhudW07IGkrKykgewotKwkJcGhkciA9ICZlaGRyLT5lX3BoZHJbaV07Ci0rCQlpZiAocGhkci0+cF90eXBlICE9IFBUX0xPQUQpCi0rCQkJY29udGludWU7Ci0rCQlwaGRyLT5wX3BhZGRyICs9Ci0rCQkJKC1hcm02NF9tZW0ucGh5c19vZmZzZXQgKyBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBkYTc1YTJkLi4zODJmNTcxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTIxLDUgKzIxLDYgQEAgZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGVsZmNvcmVoZHJfbWVtOwotIAotIGV4dGVybiBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotK2V4dGVybiB2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDhhYzgxMWQuLmNlYzRlNDEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTMwNywxMiArMzA3LDI3IEBAIHVuc2lnbmVkIGxvbmcgYXJtNjRfbG9jYXRlX2tlcm5lbF9zZWdtZW50KHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotIHsKLSAJdW5zaWduZWQgbG9uZyBob2xlOwotIAotLQlob2xlID0gbG9jYXRlX2hvbGUoaW5mbywKLS0JCWFybTY0X21lbS50ZXh0X29mZnNldCArIGFybTY0X21lbS5pbWFnZV9zaXplLAotLQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJdW5zaWduZWQgbG9uZyBob2xlX2VuZDsKLSsKLSsJCWhvbGUgPSAoY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0IDwgbWVtX21pbiA/Ci0rCQkJCW1lbV9taW4gOiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJaG9sZSA9IF9BTElHTl9VUChob2xlLCBNaUIoMikpOwotKwkJaG9sZV9lbmQgPSBob2xlICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemU7Ci0rCi0rCQlpZiAoKGhvbGVfZW5kID4gbWVtX21heCkgfHwKLSsJCSAgICAoaG9sZV9lbmQgPiBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKSkgewotKwkJCWRiZ3ByaW50ZigiJXM6IENyYXNoIGtlcm5lbCBvdXQgb2YgcmFuZ2VcbiIsIF9fZnVuY19fKTsKLSsJCQlob2xlID0gVUxPTkdfTUFYOwotKwkJfQotKwl9IGVsc2UgewotKwkJaG9sZSA9IGxvY2F0ZV9ob2xlKGluZm8sCi0rCQkJYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemUsCi0rCQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotIAotLQlpZiAoaG9sZSA9PSBVTE9OR19NQVgpCi0tCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJCWlmIChob2xlID09IFVMT05HX01BWCkKLSsJCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJfQotIAotIAlyZXR1cm4gaG9sZTsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGM3MGEzN2EuLjg0MmNlMjEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtOSw2ICs5LDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgotIAotKyNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtZWxmLmgiCi0gI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLUBAIC0xMDUsNyArMTA2LDggQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJfQotIAotIAlhcm02NF9tZW0udnBfb2Zmc2V0ID0gX0FMSUdOX0RPV04oZWhkci5lX2VudHJ5LCBNaUIoMikpOwotLQlhcm02NF9tZW0udnBfb2Zmc2V0IC09IGtlcm5lbF9zZWdtZW50IC0gZ2V0X3BoeXNfb2Zmc2V0KCk7Ci0rCWlmICghKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpKQotKwkJYXJtNjRfbWVtLnZwX29mZnNldCAtPSBrZXJuZWxfc2VnbWVudCAtIGdldF9waHlzX29mZnNldCgpOwotIAotIAlkYmdwcmludGYoIiVzOiBrZXJuZWxfc2VnbWVudDogJTAxNmx4XG4iLCBfX2Z1bmNfXywga2VybmVsX3NlZ21lbnQpOwotIAlkYmdwcmludGYoIiVzOiB0ZXh0X29mZnNldDogICAgJTAxNmx4XG4iLCBfX2Z1bmNfXywKLUBAIC0xMjcsNiArMTI5LDEyIEBAIGludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsCi0gCQkJCQkJCQlfX2Z1bmNfXyk7Ci0gCQkJZ290byBleGl0OwotIAkJfQotKwotKwkJLyoKLSsJCSAqIG9mZnNldCBhZGRyZXNzZXMgaW4gb3JkZXIgdG8gZml0IHZtbGludXgKLSsJCSAqIChlbGZfZXhlYykgaW50byBjcmFzaCBrZXJuZWwncyBtZW1vcnkKLSsJCSAqLwotKwkJbW9kaWZ5X2VoZHJfZm9yX2NyYXNoZHVtcCgmZWhkcik7Ci0gCX0KLSAKLSAJLyogbG9hZCB0aGUga2VybmVsICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDctYXJtNjQta2R1bXAtc2V0LXVwLW90aGVyLXNlZ21lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NDU0NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDA3YWQxNGUxMjY2NTIyMWQ3NTRmZGU4ZTQ3YzMyYWMxOGMyNDU4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogRnJpLCAzMSBKdWwgMjAxNSAyMDowMTozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDcvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAgb3RoZXIgc2VnbWVudHMKLQotV2UgbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBvdGhlciBzZWdtZW50cywgaW5pdHJkIGFuZCBkZXZpY2UtdHJlZSBibG9iLAotYWxzbyBiZSBsb2FkZWQgaW50byB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG9mIGNyYXNoIGR1bXAga2VybmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IGNlYzRlNDEuLjc4YTAwMzUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTM3NCw3ICszNzQsMTAgQEAgaW50IGFybTY0X2xvYWRfb3RoZXJfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCS8qIFB1dCB0aGUgb3RoZXIgc2VnbWVudHMgYWZ0ZXIgdGhlIGltYWdlLiAqLwotIAotIAlob2xlX21pbiA9IGltYWdlX2Jhc2UgKyBhcm02NF9tZW0uaW1hZ2Vfc2l6ZTsKLS0JaG9sZV9tYXggPSBVTE9OR19NQVg7Ci0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKQotKwkJaG9sZV9tYXggPSBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kOwotKwllbHNlCi0rCQlob2xlX21heCA9IFVMT05HX01BWDsKLSAKLSAJaWYgKGFybTY0X29wdHMuaW5pdHJkKSB7Ci0gCQlpbml0cmRfYnVmID0gc2x1cnBfZmlsZShhcm02NF9vcHRzLmluaXRyZCwgJmluaXRyZF9zaXplKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMzZDg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDgtYXJtNjQta2R1bXAtYWRkLURULXByb3BlcnRpZXMtdG8tY3Jhc2gtZHVtcC1rZXJuZWwtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi1Gcm9tIDIzYmY3YWMxODljYzNiODdjZWI5ZDFkM2I2OWI1YzQ4MTUzNTRhZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxNiAxMzozODozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDgvOV0gYXJtNjQ6IGtkdW1wOiBhZGQgRFQgcHJvcGVydGllcyB0byBjcmFzaCBkdW1wIGtlcm5lbCdzCi0gZHRiCi0KLVdlIHBhc3MgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRvIGNyYXNoIGR1bXAga2VybmVsOgotbGludXgsZWxmY29yZWhkcjogZWxmIGNvcmUgaGVhZGVyIHNlZ21lbnQsCi0JCSAgc2FtZSBhcyAiZWxmY29yZWhkcj0iIGtlcm5lbCBwYXJhbWV0ZXIgb24gb3RoZXIgYXJjaHMKLWxpbnV4LHVzYWJsZS1tZW1vcnktcmFuZ2U6IHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyB8ICA1IC0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDc4YTAwMzUuLmE4ZmI2NGYgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTEyOCw5ICsxMjgsNiBAQCBpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJY2FzZSBPUFRfSU5JVFJEOgotIAkJCWFybTY0X29wdHMuaW5pdHJkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotLQkJY2FzZSBPUFRfUEFOSUM6Ci0tCQkJZGllKCJsb2FkLXBhbmljICgtcCkgbm90IHN1cHBvcnRlZCIpOwotLQkJCWJyZWFrOwotIAkJZGVmYXVsdDoKLSAJCQlicmVhazsgLyogSWdub3JlIGNvcmUgYW5kIHVua25vd24gb3B0aW9ucy4gKi8KLSAJCX0KLUBAIC0yODUsOCArMjgyLDEyIEBAIG9uX3N1Y2Nlc3M6Ci0gICogc2V0dXBfMm5kX2R0YiAtIFNldHVwIHRoZSAybmQgc3RhZ2Uga2VybmVsJ3MgZHRiLgotICAqLwotIAotLXN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLStzdGF0aWMgaW50IHNldHVwXzJuZF9kdGIoc3RydWN0IGR0YiAqZHRiLCBjaGFyICpjb21tYW5kX2xpbmUsIGludCBvbl9jcmFzaCkKLSB7Ci0rCWNoYXIgKm5ld19idWY7Ci0rCWludCBuZXdfc2l6ZTsKLSsJaW50IG5vZGVvZmZzZXQ7Ci0rCXVpbnQ2NF90IHJhbmdlWzJdOwotIAlpbnQgcmVzdWx0OwotIAotIAlyZXN1bHQgPSBmZHRfY2hlY2tfaGVhZGVyKGR0Yi0+YnVmKTsKLUBAIC0yOTgsOCArMjk5LDcyIEBAIHN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLSAKLSAJcmVzdWx0ID0gc2V0X2Jvb3RhcmdzKGR0YiwgY29tbWFuZF9saW5lKTsKLSAKLSsJLyogcmVtb3ZlIHRob3NlIGFueXdheSAqLwotKwlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KGR0Yi0+YnVmLCAiL2Nob3NlbiIpOwotKwlmZHRfZGVscHJvcChkdGItPmJ1Ziwgbm9kZW9mZnNldCwgImxpbnV4LGNyYXNoa2VybmVsLWJhc2UiKTsKLSsJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCxjcmFzaGtlcm5lbC1zaXplIik7Ci0rCi0rCWlmIChvbl9jcmFzaCkgewotKwkJbm9kZW9mZnNldCA9IGZkdF9wYXRoX29mZnNldChkdGItPmJ1ZiwgIi9jaG9zZW4iKTsKLSsJCWZkdF9kZWxwcm9wKGR0Yi0+YnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIpOwotKwkJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCx1c2FibGUtbWVtb3J5LXJhbmdlIik7Ci0rCQluZXdfc2l6ZSA9IGZkdF90b3RhbHNpemUoZHRiLT5idWYpCi0rCQkJKyAyICogKHNpemVvZihzdHJ1Y3QgZmR0X3Byb3BlcnR5KQotKwkJCQkJKyBGRFRfVEFHQUxJR04oc2l6ZW9mKHJhbmdlKSkpCi0rCQkJKyBzdHJsZW4oImxpbnV4LGVsZmNvcmVoZHIiKSArIDEKLSsJCQkrIHN0cmxlbigibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIpICsgMTsKLSsKLSsJCW5ld19idWYgPSB4bWFsbG9jKG5ld19zaXplKTsKLSsJCXJlc3VsdCA9IGZkdF9vcGVuX2ludG8oZHRiLT5idWYsIG5ld19idWYsIG5ld19zaXplKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBmZHRfb3Blbl9pbnRvIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVOT1NQQzsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChlbGZjb3JlaGRyX21lbS5zdGFydCk7Ci0rCQlyYW5nZVsxXSA9IGNwdV90b19iZTY0KGVsZmNvcmVoZHJfbWVtLmVuZAotKwkJCQktIGVsZmNvcmVoZHJfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJcmFuZ2VbMV0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uZW5kCi0rCQkJCS0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LAotKwkJCQkibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJZmR0X3BhY2sobmV3X2J1Zik7Ci0rCQlkdGItPmJ1ZiA9IG5ld19idWY7Ci0rCQlkdGItPnNpemUgPSBmZHRfdG90YWxzaXplKG5ld19idWYpOwotKwl9Ci0rCi0gCWR1bXBfcmVzZXJ2ZW1hcChkdGIpOwotIAotKwotKwlyZXR1cm4gcmVzdWx0OwotKwotK29uX2Vycm9yOgotKwlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiAlcyBmYWlsZWQuXG4iLCBfX2Z1bmNfXyk7Ci0rCWlmIChuZXdfYnVmKQotKwkJZnJlZShuZXdfYnVmKTsKLSsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi1AQCAtMzY2LDcgKzQzMSw4IEBAIGludCBhcm02NF9sb2FkX290aGVyX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLAotIAkJfQotIAl9Ci0gCi0tCXJlc3VsdCA9IHNldHVwXzJuZF9kdGIoJmR0YiwgY29tbWFuZF9saW5lKTsKLSsJcmVzdWx0ID0gc2V0dXBfMm5kX2R0YigmZHRiLCBjb21tYW5kX2xpbmUsCi0rCQkJaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCk7Ci0gCi0gCWlmIChyZXN1bHQpCi0gCQlyZXR1cm4gLUVGQUlMRUQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IDg0MmNlMjEuLmIxN2EzMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtNDcsMTEgKzQ3LDYgQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJaW50IHJlc3VsdDsKLSAJaW50IGk7Ci0gCi0tCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiBrZHVtcCBub3QgeWV0IHN1cHBvcnRlZCBvbiBhcm02NFxuIik7Ci0tCQlyZXR1cm4gLUVGQUlMRUQ7Ci0tCX0KLS0KLSAJcmVzdWx0ID0gYnVpbGRfZWxmX2V4ZWNfaW5mbyhrZXJuZWxfYnVmLCBrZXJuZWxfc2l6ZSwgJmVoZHIsIDApOwotIAotIAlpZiAocmVzdWx0IDwgMCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMWMwMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOS1hcm02NC1rZHVtcC1BZGQtc3VwcG9ydC1mb3ItYmluYXJ5LWltYWdlLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA1YTQ5NThmMDFhNzkzYzNlN2Y0NDBmNWJhZTc1NjY2YTQzNDljYzUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNCBNYXkgMjAxNSAxMToyNTozNyArMDUzMAotU3ViamVjdDogW1BBVENIIDkvOV0gYXJtNjQ6IGtkdW1wOiBBZGQgc3VwcG9ydCBmb3IgYmluYXJ5IGltYWdlIGZpbGVzCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIHVzZSBiaW5hcnkgaW1hZ2UgaWUgYXJjaC9hcm02NC9ib290L0ltYWdlIHdpdGgKLWtkdW1wLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1bdGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc6IGEgYml0IHJld29ya2VkXQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi1pbmRleCA5NjBlZDk2Li45ODJlNDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMKLUBAIC00LDcgKzQsOSBAQAotIAotICNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAKLSsjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gaW50IGltYWdlX2FybTY0X3Byb2JlKGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsIG9mZl90IGtlcm5lbF9zaXplKQotQEAgLTU4LDYgKzYwLDE2IEBAIGludCBpbWFnZV9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJZGJncHJpbnRmKCIlczogUEUgZm9ybWF0OiAgICAgICVzXG4iLCBfX2Z1bmNfXywKLSAJCShhcm02NF9oZWFkZXJfY2hlY2tfcGVfc2lnKGhlYWRlcikgPyAieWVzIiA6ICJubyIpKTsKLSAKLSsJaWYgKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpIHsKLSsJCS8qIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBlbGYgY29yZSBoZWFkZXIgc2VnbWVudCAqLwotKwkJcmVzdWx0ID0gbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoaW5mbyk7Ci0rCQlpZiAocmVzdWx0KSB7Ci0rCQkJZGJncHJpbnRmKCIlczogQ3JlYXRpbmcgZWZsY29yZWhkciBmYWlsZWQuXG4iLAotKwkJCQkJCQkJX19mdW5jX18pOwotKwkJCWdvdG8gZXhpdDsKLSsJCX0KLSsJfQotKwotIAkvKiBsb2FkIHRoZSBrZXJuZWwgKi8KLSAJYWRkX3NlZ21lbnRfcGh5c192aXJ0KGluZm8sIGtlcm5lbF9idWYsIGtlcm5lbF9zaXplLAotIAkJCWtlcm5lbF9zZWdtZW50ICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0LAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2V4ZWMtYWFyY2g2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZjU4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAxICswLDAgQEAKLUZyb206IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTMgMjM6MzI6MzYgKzAwMDAgKC0wNzAwKQotU3ViamVjdDogQWRkIGFybTY0IHN1cHBvcnQKLVgtR2l0LVVybDogaHR0cHM6Ly9naXQubGluYXJvLm9yZy9naXR3ZWI/cD1wZW9wbGUlMkZnZW9mZiUyRmtleGVjLXRvb2xzLmdpdDthPWNvbW1pdGRpZmZfcGxhaW47aD1mYmY1YWM2YzJjNzBlYzBmNmRhMmI5ZmY1NjNlNTczOTk5NzUyYzAxCi0KLUFkZCBhcm02NCBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLQotR2V0IHBhdGNoIGZyb206Ci1odHRwczovL2ZlZG9yYXBlb3BsZS5vcmcvfmhydy9hYXJjaDY0L2Zvci1mZWRvcmEva2V4ZWMtYWFyY2g2NC5wYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLQotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAKLSBrZXhlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAotIGtleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMTMgKwotIGtleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgICAgICB8ICAzMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmggfCAgIDI2ICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICAgICAgIHwgIDE3NyArKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmggICAgICAgICAgfCAgIDIwICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyAgICAgIHwgIDExNCArKysrKysrKysrKwotIGtleGVjL2tleGVjLXN5c2NhbGwuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgCi0ga2V4ZWMva2V4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKLSBwdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSAgICAgICAgICAgfCAgICA3IAotIDExIGZpbGVzIGNoYW5nZWQsIDY3NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9jb25maWd1cmUuYWMKLUBAIC0zNiw2ICszNiw5IEBAIGNhc2UgJHRhcmdldF9jcHUgaW4KLSAJCUFSQ0g9InBwYzY0IgotIAkJU1VCQVJDSD0iTEUiCi0gCQk7OwotKwlhYXJjaDY0KiApCi0rCQlBUkNIPSJhcm02NCIKLSsJCTs7Ci0gCWFybSogKQotIAkJQVJDSD0iYXJtIgotIAkJOzsKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9NYWtlZmlsZQotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9NYWtlZmlsZQotQEAgLTcxLDYgKzcxLDcgQEAgS0VYRUNfU1JDUwkJCSs9ICQoJChBUkNIKV9GUzJEVCkKLSAKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FscGhhL01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9hcm0vTWFrZWZpbGUKLStpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pYTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9tNjhrL01ha2VmaWxlCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSwxMyBAQAotKwotK2FybTY0X0tFWEVDX1NSQ1MgKz0gXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKwotK2FybTY0X0FSQ0hfUkVVU0VfSU5JVFJEID0KLSthcm02NF9BRERfU0VHTUVOVCA9Ci0rYXJtNjRfVklSVF9UT19QSFlTID0KLSsKLStkaXN0ICs9ICQoYXJtNjRfS0VYRUNfU1JDUykgXAotKwlrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTAsMCArMSwzMDUgQEAKLSsvKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICh2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UpLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1lbGYuaCIKLSsjaW5jbHVkZSAiLi4vLi4vY3Jhc2hkdW1wLmgiCi0rCi0raW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotK3sKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNpZiAwCi0rLyoKLSsgKiBVc2VkIHRvIHNhdmUgdmFyaW91cyBtZW1vcnkgcmFuZ2VzL3JlZ2lvbnMgbmVlZGVkIGZvciB0aGUgY2FwdHVyZWQKLSsgKiBrZXJuZWwgdG8gYm9vdC4gKGxpbWUgbWVtbWFwPSBvcHRpb24gaW4gb3RoZXIgYXJjaHMpCi0rICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfbWVtb3J5X3Jhbmdlc1tDUkFTSF9NQVhfTUVNT1JZX1JBTkdFU107Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rICAgIC5zaXplID0gMCwKLSsgICAgLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotKwotK3N0YXRpYyBzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gZWxmX2luZm8gPSB7Ci0rCS5jbGFzcwkJPSBFTEZDTEFTUzMyLAotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsJLm1hY2hpbmUJPSBFTV9BUk0sCi0rCS5wYWdlX29mZnNldAk9IFBBR0VfT0ZGU0VULAotK307Ci0rCi0rdW5zaWduZWQgbG9uZyBwaHlzX29mZnNldDsKLSsKLSsvKioKLSsgKiBjcmFzaF9yYW5nZV9jYWxsYmFjaygpIC0gY2FsbGJhY2sgY2FsbGVkIGZvciBlYWNoIGlvbWVtIHJlZ2lvbgotKyAqIEBkYXRhOiBub3QgdXNlZAotKyAqIEBucjogbm90IHVzZWQKLSsgKiBAc3RyOiBuYW1lIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICogQGJhc2U6IHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAbGVuZ3RoOiBzaXplIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIG1lbW9yeSByZWdpb24gZm91bmQgaW4gL3Byb2MvaW9tZW0uIEl0Ci0rICogbG9jYXRlcyBzeXN0ZW0gUkFNIGFuZCBjcmFzaGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgYW5kIHBsYWNlcyB0aGVzZSB0bwotKyAqIHZhcmlhYmxlczogQGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIEBjcmFzaF9yZXNlcnZlZF9tZW0uIE51bWJlciBvZiBtZW1vcnkKLSsgKiByZWdpb25zIGlzIHBsYWNlZCBpbiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBiYXNlLAotKwkJCQl1bnNpZ25lZCBsb25nIGxlbmd0aCkKLSt7Ci0rCXN0cnVjdCBtZW1vcnlfcmFuZ2UgKnJhbmdlOwotKwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSA+PSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUykKLSsJCXJldHVybiAxOwotKwotKwlyYW5nZSA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIHVzYWJsZW1lbV9yZ25zLnNpemU7Ci0rCi0rCWlmIChzdHJuY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSA9PSAwKSB7Ci0rCQlyYW5nZS0+c3RhcnQgPSBiYXNlOwotKwkJcmFuZ2UtPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJcmFuZ2UtPnR5cGUgPSBSQU5HRV9SQU07Ci0rCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCX0gZWxzZSBpZiAoc3RybmNtcChzdHIsICJDcmFzaCBrZXJuZWxcbiIsIDEzKSA9PSAwKSB7Ci0rCQljcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgPSBiYXNlOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnR5cGUgPSBSQU5HRV9SQU07Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2V4Y2x1ZGVfcmFuZ2UoKSAtIGV4Y2x1ZGVzIG1lbW9yeSByZWdpb24gcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsCi0rICoKLSsgKiBGdW5jdGlvbiBsb2NhdGVzIHdoZXJlIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBpcyBhbmQgcmVtb3ZlcyB0aGF0IHJlZ2lvbgotKyAqIGZyb20gdGhlIGF2YWlsYWJsZSBtZW1vcnkgcmVnaW9ucy4KLSsgKi8KLStzdGF0aWMgdm9pZCBjcmFzaF9leGNsdWRlX3JhbmdlKHZvaWQpCi0rewotKwljb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyYW5nZSA9ICZjcmFzaF9yZXNlcnZlZF9tZW07Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgdXNhYmxlbWVtX3JnbnMuc2l6ZTsgaSsrKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzICsgaTsKLSsKLSsJCS8qCi0rCQkgKiBXZSBhc3N1bWUgdGhhdCBjcmFzaCBhcmVhIGlzIGZ1bGx5IGNvbnRhaW5lZCBpbgotKwkJICogc29tZSBsYXJnZXIgbWVtb3J5IGFyZWEuCi0rCQkgKi8KLSsJCWlmIChyLT5zdGFydCA8PSByYW5nZS0+c3RhcnQgJiYgci0+ZW5kID49IHJhbmdlLT5lbmQpIHsKLSsJCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpuZXc7Ci0rCQkJLyoKLSsJCQkgKiBMZXQncyBzcGxpdCB0aGlzIGFyZWEgaW50byAyIHNtYWxsZXIgb25lcyBhbmQKLSsJCQkgKiByZW1vdmUgZXhjbHVkZWQgcmFuZ2UgZnJvbSBiZXR3ZWVuLiBGaXJzdCBjcmVhdGUKLSsJCQkgKiBuZXcgZW50cnkgZm9yIHRoZSByZW1haW5pbmcgYXJlYS4KLSsJCQkgKi8KLSsJCQluZXcgPSB1c2FibGVtZW1fcmducy5yYW5nZXMgKyB1c2FibGVtZW1fcmducy5zaXplOwotKwkJCW5ldy0+c3RhcnQgPSByYW5nZS0+ZW5kICsgMTsKLSsJCQluZXctPmVuZCA9IHItPmVuZDsKLSsJCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCQkJLyoKLSsJCQkgKiBOZXh0IHVwZGF0ZSB0aGlzIGFyZWEgdG8gZW5kIGJlZm9yZSBleGNsdWRlZCByYW5nZS4KLSsJCQkgKi8KLSsJCQlyLT5lbmQgPSByYW5nZS0+c3RhcnQgLSAxOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rfQotKwotK3N0YXRpYyBpbnQgcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmExLCBjb25zdCB2b2lkICphMikKLSt7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIxID0gYTE7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIyID0gYTI7Ci0rCi0rCWlmIChyMS0+c3RhcnQgPiByMi0+c3RhcnQpCi0rCQlyZXR1cm4gMTsKLSsJaWYgKHIxLT5zdGFydCA8IHIyLT5zdGFydCkKLSsJCXJldHVybiAtMTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKCkgLSByZWFkIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkKLSsgKgotKyAqIEZ1bmN0aW9uIHJlYWRzIHRocm91Z2ggc3lzdGVtIHBoeXNpY2FsIG1lbW9yeSBhbmQgc3RvcmVzIGZvdW5kIG1lbW9yeSByZWdpb25zCi0rICogaW4gQGNyYXNoX21lbW9yeV9yYW5nZXMuIE51bWJlciBvZiBtZW1vcnkgcmVnaW9ucyBmb3VuZCBpcyBwbGFjZWQgaW4KLSsgKiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4gUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgJTAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAlLTEgb3RoZXJ3aXNlIChlcnJubyBpcyBzZXQpLgotKyAqLwotK3N0YXRpYyBpbnQgY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXModm9pZCkKLSt7Ci0rCS8qCi0rCSAqIEZpcnN0IHJlYWQgYWxsIG1lbW9yeSByZWdpb25zIHRoYXQgY2FuIGJlIGNvbnNpZGVyZWQgYXMKLSsJICogc3lzdGVtIG1lbW9yeSBpbmNsdWRpbmcgdGhlIGNyYXNoIGFyZWEuCi0rCSAqLwotKwlrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsIGNyYXNoX3JhbmdlX2NhbGxiYWNrLCBOVUxMKTsKLSsKLSsJaWYgKHVzYWJsZW1lbV9yZ25zLnNpemUgPCAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwkvKgotKwkgKiBFeGNsdWRlIG1lbW9yeSByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwgKHRoaXMgbWF5IHJlc3VsdCBhIHNwbGl0IG1lbW9yeQotKwkgKiByZWdpb24pLgotKwkgKi8KLSsJY3Jhc2hfZXhjbHVkZV9yYW5nZSgpOwotKwotKwkvKgotKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbnMgYXJlIHNvcnRlZC4KLSsJICovCi0rCXFzb3J0KHVzYWJsZW1lbV9yZ25zLnJhbmdlcywgdXNhYmxlbWVtX3JnbnMuc2l6ZSwKLSsJICAgICAgc2l6ZW9mKCp1c2FibGVtZW1fcmducy5yYW5nZXMpLCByYW5nZV9jbXApOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoqCi0rICogY21kbGluZV9hZGRfZWxmY29yZWhkcigpIC0gYWRkcyBlbGZjb3JlaGRyPSB0byBAY21kbGluZQotKyAqIEBjbWRsaW5lOiBidWZmZXIgd2hlcmUgcGFyYW1ldGVyIGlzIHBsYWNlZAotKyAqIEBlbGZjb3JlaGRyOiBwaHlzaWNhbCBhZGRyZXNzIG9mIGVsZmNvcmVoZHIKLSsgKgotKyAqIEZ1bmN0aW9uIGFwcGVuZHMgJ2VsZmNvcmVoZHI9c3RhcnQnIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSBnaXZlbiBpbgotKyAqIEBjbWRsaW5lLiBOb3RlIHRoYXQgQGNtZGxpbmUgbXVzdCBiZSBhdCBsZWFzdCAlQ09NTUFORF9MSU5FX1NJWkUgYnl0ZXMgbG9uZwotKyAqIChpbmNsdW5kaW5nICVOVUwpLgotKyAqLwotK3N0YXRpYyB2b2lkIGNtZGxpbmVfYWRkX2VsZmNvcmVoZHIoY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBlbGZjb3JlaGRyKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgZWxmY29yZWhkcj0lI2x4IiwKLSsJCQkgIGNtZGxpbmUsIGVsZmNvcmVoZHIpOwotKwlpZiAoYnVmbGVuIDwgMCkKLSsJCWRpZSgiRmFpbGVkIHRvIGNvbnN0cnVjdCBlbGZjb3JlaGRyPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotKy8qKgotKyAqIGNtZGxpbmVfYWRkX21lbSgpIC0gYWRkcyBtZW09IHBhcmFtZXRlciB0byBrZXJuZWwgY29tbWFuZCBsaW5lCi0rICogQGNtZGxpbmU6IGJ1ZmZlciB3aGVyZSBwYXJhbWV0ZXIgaXMgcGxhY2VkCi0rICogQHNpemU6IHNpemUgb2YgdGhlIGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgKGluIGJ5dGVzKQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBhcHBlbmRzICdtZW09c2l6ZScgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFuZCBsaW5lIGdpdmVuIGluCi0rICogQGNtZGxpbmUuIE5vdGUgdGhhdCBAY21kbGluZSBtdXN0IGJlIGF0IGxlYXN0ICVDT01NQU5EX0xJTkVfU0laRSBieXRlcyBsb25nCi0rICogKGluY2x1ZGluZyAlTlVMKS4KLSsgKi8KLStzdGF0aWMgdm9pZCBjbWRsaW5lX2FkZF9tZW0oY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBzaXplKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgbWVtPSVsZEsiLCBjbWRsaW5lLCBzaXplID4+IDEwKTsKLSsJaWYgKGJ1ZmxlbiA8IDApCi0rCQlkaWUoIkZhaWxlZCB0byBjb25zdHJ1Y3QgbWVtPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZ2Vfc2l6ZShjb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyKQotK3sKLSsJcmV0dXJuIHItPmVuZCAtIHItPnN0YXJ0ICsgMTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZHVtcF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwlpbnQgaTsKLSsKLSsJaWYgKCFrZXhlY19kZWJ1ZykKLSsJCXJldHVybjsKLSsKLSsJZGJncHJpbnRmKCJjcmFzaGtlcm5lbDogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJICAodW5zaWduZWQgbG9uZylyYW5nZV9zaXplKCZjcmFzaF9yZXNlcnZlZF9tZW0pID4+IDIwKTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IHVzYWJsZW1lbV9yZ25zLnNpemU7IGkrKykgewotKwkJc3RydWN0IG1lbW9yeV9yYW5nZSAqciA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIGk7Ci0rCQlkYmdwcmludGYoIm1lbW9yeSByYW5nZTogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCQkgIHItPnN0YXJ0LCByLT5lbmQsICh1bnNpZ25lZCBsb25nKXJhbmdlX3NpemUocikgPj4gMjApOwotKwl9Ci0rfQotKwotKy8qKgotKyAqIGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKCkgLSBsb2FkcyBhZGRpdGlvbmFsIHNlZ21lbnRzIG5lZWRlZCBmb3Iga2R1bXAKLSsgKiBAaW5mbzoga2V4ZWMgaW5mbyBzdHJ1Y3R1cmUKLSsgKiBAbW9kX2NtZGxpbmU6IGtlcm5lbCBjb21tYW5kIGxpbmUKLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gbG9hZHMgYWRkaXRpb25hbCBzZWdtZW50cyB3aGljaCBhcmUgbmVlZGVkIGZvciB0aGUgZHVtcCBjYXB0dXJlCi0rICoga2VybmVsLiBJdCBhbHNvIHVwZGF0ZXMga2VybmVsIGNvbW1hbmQgbGluZSBwYXNzZWQgaW4gQG1vZF9jbWRsaW5lIHRvIGhhdmUKLSsgKiByaWdodCBwYXJhbWV0ZXJzIGZvciB0aGUgZHVtcCBjYXB0dXJlIGtlcm5lbC4KLSsgKgotKyAqIFJldHVybiAlMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kICUtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywgY2hhciAqbW9kX2NtZGxpbmUpCi0rewotKwl1bnNpZ25lZCBsb25nIGVsZmNvcmVoZHI7Ci0rCXVuc2lnbmVkIGxvbmcgYnVmc3o7Ci0rCXZvaWQgKmJ1ZjsKLSsJaW50IGVycjsKLSsKLSsJLyoKLSsJICogRmlyc3QgZmV0Y2ggYWxsIHRoZSBtZW1vcnkgKFJBTSkgcmFuZ2VzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIHBhc3MgdG8KLSsJICogdGhlIGNyYXNoZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIE5vdyB0aGF0IHdlIGhhdmUgbWVtb3J5IHJlZ2lvbnMgc29ydGVkLCB3ZSBjYW4gdXNlIGZpcnN0IG1lbW9yeQotKwkgKiByZWdpb24gYXMgUEhZU19PRkZTRVQuCi0rCSAqLwotKwlwaHlzX29mZnNldCA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcy0+c3RhcnQ7Ci0rCWRiZ3ByaW50ZigicGh5c19vZmZzZXQ6ICUjbHhcbiIsIHBoeXNfb2Zmc2V0KTsKLSsKLSsJZXJyID0gY3Jhc2hfY3JlYXRlX2VsZjMyX2hlYWRlcnMoaW5mbywgJmVsZl9pbmZvLAotKwkJCQkJIHVzYWJsZW1lbV9yZ25zLnJhbmdlcywKLSsJCQkJCSB1c2FibGVtZW1fcmducy5zaXplLCAmYnVmLCAmYnVmc3osCi0rCQkJCQkgRUxGX0NPUkVfSEVBREVSX0FMSUdOKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIFdlIGFsbG9jYXRlIEVMRiBjb3JlIGhlYWRlciBmcm9tIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBhcmVhIHJlc2VydmVkCi0rCSAqIGZvciB0aGUgY3Jhc2hrZXJuZWwuIFdlIGFsaWduIHRoZSBoZWFkZXIgdG8gU0VDVElPTl9TSVpFICh3aGljaCBpcwotKwkgKiAxTUIpIHNvIHRoYXQgYXZhaWxhYmxlIG1lbW9yeSBwYXNzZWQgaW4ga2VybmVsIGNvbW1hbmQgbGluZSB3aWxsIGJlCi0rCSAqIGFsaWduZWQgdG8gMU1CLiBUaGlzIGlzIGJlY2F1c2Uga2VybmVsIGNyZWF0ZV9tYXBwaW5nKCkgd2FudHMgbWVtb3J5Ci0rCSAqIHJlZ2lvbnMgdG8gYmUgYWxpZ25lZCB0byBTRUNUSU9OX1NJWkUuCi0rCSAqLwotKwllbGZjb3JlaGRyID0gYWRkX2J1ZmZlcl9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYnVmc3osIDEgPDwgMjAsCi0rCQkJCQkgIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCwKLSsJCQkJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCwgLTEsIDApOwotKwotKwlkYmdwcmludGYoImVsZmNvcmVoZHI6ICUjbHhcbiIsIGVsZmNvcmVoZHIpOwotKwljbWRsaW5lX2FkZF9lbGZjb3JlaGRyKG1vZF9jbWRsaW5lLCBlbGZjb3JlaGRyKTsKLSsKLSsJLyoKLSsJICogQWRkICdtZW09c2l6ZScgcGFyYW1ldGVyIHRvIGR1bXAgY2FwdHVyZSBrZXJuZWwgY29tbWFuZCBsaW5lLiBUaGlzCi0rCSAqIHByZXZlbnRzIHRoZSBkdW1wIGNhcHR1cmUga2VybmVsIGZyb20gdXNpbmcgYW55IG90aGVyIG1lbW9yeSByZWdpb25zCi0rCSAqIHdoaWNoIGJlbG9uZyB0byB0aGUgcHJpbWFyeSBrZXJuZWwuCi0rCSAqLwotKwljbWRsaW5lX2FkZF9tZW0obW9kX2NtZGxpbmUsIGVsZmNvcmVoZHIgLSBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwotKwlkdW1wX21lbW9yeV9yYW5nZXMoKTsKLSsJZGJncHJpbnRmKCJrZXJuZWwgY29tbWFuZCBsaW5lOiBcIiVzXCJcbiIsIG1vZF9jbWRsaW5lKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotKwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9pbmNsdWRlL2FyY2gvb3B0aW9ucy5oCi1AQCAtMCwwICsxLDI2IEBACi0rI2lmbmRlZiBLRVhFQ19BUkNIX0FSTTY0X09QVElPTlNfSAotKyNkZWZpbmUgS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0gKLSsKLSsvLyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMCkKLSsKLSsjZGVmaW5lIE9QVF9BUFBFTkQJKChPUFRfTUFYKSswKQotKyNkZWZpbmUgT1BUX1JBTURJU0sJKChPUFRfTUFYKSsxKQotKyNkZWZpbmUgT1BUX0RUQgkJKChPUFRfTUFYKSsyKQotKwotKyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMykKLSsKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUSU9OUyBcCi0rCUtFWEVDX09QVElPTlMgXAotKwl7ICJhcHBlbmQiLCAgICAgICAxLCBOVUxMLCBPUFRfQVBQRU5EIH0sIFwKLSsJeyAiY29tbWFuZC1saW5lIiwgMSwgTlVMTCwgT1BUX0FQUEVORCB9LCBcCi0rCXsgImR0YiIsICAgICAgICAgIDEsIE5VTEwsIE9QVF9EVEIgfSwgXAotKwl7ICJpbml0cmQiLCAgICAgICAxLCBOVUxMLCBPUFRfUkFNRElTSyB9LCBcCi0rCXsgInJhbWRpc2siLCAgICAgIDEsIE5VTEwsIE9QVF9SQU1ESVNLIH0sIFwKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUX1NUUiBLRVhFQ19PUFRfU1RSIC8qIE9ubHkgYWNjZXB0IGxvbmcgYXJjaCBvcHRpb25zLiAqLwotKwotKyNkZWZpbmUgS0VYRUNfQUxMX09QVElPTlMgS0VYRUNfQVJDSF9PUFRJT05TCi0rI2RlZmluZSBLRVhFQ19BTExfT1BUX1NUUiBLRVhFQ19BUkNIX09QVF9TVFIKLSsKLSsjZW5kaWYgLyogS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0ggKi8KLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTAsMCArMSwxNzcgQEAKLSsvKgotKyAqIEFSTTY0IGtleGVjIHN1cHBvcnQuCi0rICovCi0rCi0rI2RlZmluZSBfR05VX1NPVVJDRQotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvLyNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPgotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1zeXNjYWxsLmgiCi0rI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rCi0rCi0rdm9pZCBhcmNoX3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJcHJpbnRmKAotKyIgICAgIC0tYXBwZW5kPVNUUklORyAgICAgICBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tY29tbWFuZC1saW5lPVNUUklORyBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tZHRiPUZJTEUgICAgICAgICAgICBVc2UgRklMRSBhcyB0aGUgZGV2aWNlIHRyZWUgYmxvYi5cbiIKLSsiICAgICAtLWluaXRyZD1GSUxFICAgICAgICAgVXNlIEZJTEUgYXMgdGhlIGtlcm5lbCBpbml0aWFsIHJhbWRpc2suXG4iCi0rIiAgICAgLS1yYW1kaXNrPUZJTEUgICAgICAgIFVzZSBGSUxFIGFzIHRoZSBrZXJuZWwgaW5pdGlhbCByYW1kaXNrLlxuIik7Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotK30KLSsKLStpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IFVOVVNFRChhcmdjKSwgY2hhciAqKlVOVVNFRChhcmd2KSkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGRvXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rY29uc3Qgc3RydWN0IGFyY2hfbWFwX2VudHJ5IGFyY2hlc1tdID0gewotKwl7ICJhYXJjaDY0IiwgS0VYRUNfQVJDSF9BUk02NCB9LAotKwl7IE5VTEwsIDAgfSwKLSt9OwotKwotK3ZvaWQgYXJjaF91cGRhdGVfcHVyZ2F0b3J5KHN0cnVjdCBrZXhlY19pbmZvICpVTlVTRUQoaW5mbykpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModW5zaWduZWQgbG9uZyBhZGRyKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogJTAxNmx4IC0+ICUwMTZseFxuIiwgX19mdW5jX18sIF9fTElORV9fLCBhZGRyLAotKwkJYWRkciArIDB4MDgwMDAwMDAwVUwpOwotKwlyZXR1cm4gYWRkciArIDB4MDgwMDAwMDAwVUw7Ci0rfQotKwotK3ZvaWQgYWRkX3NlZ21lbnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LAotKwl1bnNpZ25lZCBsb25nIGJhc2UsIHNpemVfdCBtZW1zeikKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlhZGRfc2VnbWVudF9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYmFzZSwgbWVtc3osIDEpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18xKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkJdW5zaWduZWQgbG9uZyBrZXhlY19mbGFncykKLSt7Ci0rCXN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIG1lbW9yeV9yYW5nZVtLRVhFQ19TRUdNRU5UX01BWF07Ci0rCWNvbnN0IGNoYXIgKmlvbWVtOwotKwlpbnQgcmFuZ2VfY291bnQgPSAwOwotKwljaGFyIGxpbmVbTUFYX0xJTkVdOwotKwlGSUxFICpmcDsKLSsKLSsJaW9tZW0gPSBwcm9jX2lvbWVtKCk7Ci0rCWZwID0gZm9wZW4oaW9tZW0sICJyIik7Ci0rCi0rCWlmICghZnApIHsKLSsJCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXM6ICVzXG4iLAotKwkJCWlvbWVtLCBzdHJlcnJvcihlcnJubykpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCWRiZ3ByaW50ZigibWVtb3J5IHJhbmdlczpcbiIpOwotKwotKwl3aGlsZShmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGZwKSAhPSAwKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlIHI7Ci0rCQljaGFyICpzdHI7Ci0rCQlpbnQgY29uc3VtZWQ7Ci0rCi0rCQlpZiAocmFuZ2VfY291bnQgPj0gS0VYRUNfU0VHTUVOVF9NQVgpCi0rCQkJYnJlYWs7Ci0rCi0rCQlpZiAoc3NjYW5mKGxpbmUsICIlTHgtJUx4IDogJW4iLCAmci5zdGFydCwgJnIuZW5kLCAmY29uc3VtZWQpCi0rCQkJIT0gMikKLSsJCQljb250aW51ZTsKLSsKLSsJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSsJCXIuZW5kKys7Ci0rCi0rCQlpZiAobWVtY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSkgewotKwkJCWRiZ3ByaW50ZigiIFNraXA6ICUwMTZMeCAtICUwMTZMeCA6ICVzIiwgci5zdGFydCwgci5lbmQsCi0rCQkJCXN0cik7Ci0rCQkJY29udGludWU7Ci0rCQl9Ci0rCi0rCQlyLnR5cGUgPSBSQU5HRV9SQU07Ci0rCQltZW1vcnlfcmFuZ2VbcmFuZ2VfY291bnRdID0gcjsKLSsJCXJhbmdlX2NvdW50Kys7Ci0rCi0rCQlkYmdwcmludGYoIiBBZGQ6ICAlMDE2THggLSAlMDE2THggOiAlcyIsIHIuc3RhcnQsIHIuZW5kLCBzdHIpOwotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHJhbmdlX2NvdW50OwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18yKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkgICAgICB1bnNpZ25lZCBsb25nIFVOVVNFRChrZXhlY19mbGFncykpCi0rewotKwlzdGF0aWMgc3RydWN0IG1lbW9yeV9yYW5nZSBtZW1vcnlfcmFuZ2VbMl07Ci0rCi0rCW1lbW9yeV9yYW5nZVswXS5zdGFydCA9IDB4MDgwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMF0uZW5kICAgPSAweDEwMDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzBdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCW1lbW9yeV9yYW5nZVsxXS5zdGFydCA9IDB4OTAwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMV0uZW5kICAgPSAweDg4MDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzFdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHNpemVvZihtZW1vcnlfcmFuZ2UpIC8gc2l6ZW9mKG1lbW9yeV9yYW5nZVswXSk7Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLStpbnQgZ2V0X21lbW9yeV9yYW5nZXMoc3RydWN0IG1lbW9yeV9yYW5nZSAqKnJhbmdlLCBpbnQgKnJhbmdlcywKLSsJCQl1bnNpZ25lZCBsb25nIGtleGVjX2ZsYWdzKQotK3sKLSsJLyogRklYTUU6IFNob3VsZCBnZXQgdGhpcyBpbmZvIGZyb20gZGV2aWNlIHRyZWUuICovCi0rCQotKwlyZXR1cm4gZ2V0X21lbW9yeV9yYW5nZXNfMShyYW5nZSwgcmFuZ2VzLCBrZXhlY19mbGFncyk7Ci0rfQotKwotK3N0cnVjdCBmaWxlX3R5cGUgZmlsZV90eXBlW10gPSB7Ci0rCXsgImVsZi1hcm02NCIsIGVsZl9hcm02NF9wcm9iZSwgZWxmX2FybTY0X2xvYWQsIGVsZl9hcm02NF91c2FnZSB9LAotK307Ci0rCi0raW50IGZpbGVfdHlwZXMgPSBzaXplb2YoZmlsZV90eXBlKSAvIHNpemVvZihmaWxlX3R5cGVbMF0pOwotKwotK2ludCBhcmNoX2NvbXBhdF90cmFtcG9saW5lKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCXJldHVybiAwOwotK30KLSsKLSt2b2lkIGFyY2hfcmV1c2VfaW5pdHJkKHZvaWQpCi0rewotK30KLSsKLStpbnQgbWFjaGluZV92ZXJpZnlfZWxmX3JlbChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIpCi0rewotKwkodm9pZCllaGRyOwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgbWFjaGluZV9hcHBseV9lbGZfcmVsKHN0cnVjdCBtZW1fZWhkciAqZWhkciwgdW5zaWduZWQgbG9uZyByX3R5cGUsCi0rCXZvaWQgKmxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCi0rewotKwkodm9pZCllaGRyOwotKwkodm9pZClyX3R5cGU7Ci0rCSh2b2lkKWxvY2F0aW9uOwotKwkodm9pZClhZGRyZXNzOwotKwkodm9pZCl2YWx1ZTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1AQCAtMCwwICsxLDIwIEBACi0rLyoKLSsgKiBBUk02NCBrZXhlYyBzdXBwb3J0LgotKyAqLwotKwotKyNpZiAhZGVmaW5lZChLRVhFQ19BUk02NF9IKQotKyNkZWZpbmUgS0VYRUNfQVJNNjRfSAotKwotKy8qICNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPiBGSVhNRTogdGhpcyBpcyBicm9rZW4gKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0rCi0rI2RlZmluZSBLRVhFQ19TRUdNRU5UX01BWCAxNiAvKiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBmcm9tIDxsaW51eC9rZXhlYy5oPiAqLwotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOwotK2ludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotKwlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Ci0rdm9pZCBlbGZfYXJtNjRfdXNhZ2Uodm9pZCk7Ci0rCi0rI2VuZGlmCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMCwwICsxLDExNCBAQAotKy8qCi0rICogQVJNNjQga2V4ZWMgc3VwcG9ydC4KLSsgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0rI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlIDxnZXRvcHQuaD4KLSsKLSsjaW5jbHVkZSAiLi4vLi4va2V4ZWMtc3lzY2FsbC5oIgotKwotKyNpbmNsdWRlICJrZXhlYy1hcm02NC5oIgotKyNpbmNsdWRlICJhcmNoL29wdGlvbnMuaCIKLSsKLSsjaWYgIWRlZmluZWQoRU1fQUFSQ0g2NCkKLSsjIGRlZmluZSBFTV9BQVJDSDY0IDE4MwotKyNlbmRpZgotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pCi0rewotKwlpbnQgcmVzdWx0OwotKwlzdHJ1Y3QgbWVtX2VoZHIgZWhkcjsKLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogLT5cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCQotKwlyZXN1bHQgPSBidWlsZF9lbGZfZXhlY19pbmZvKGJ1ZiwgbGVuLCAmZWhkciwgMCk7Ci0rCi0rCWlmIChyZXN1bHQgPCAwKSB7Ci0rCQlkYmdwcmludGYoIk5vdCBhbiBFTEYgZXhlY3V0YWJsZVxuIik7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwlpZiAoZWhkci5lX21hY2hpbmUgIT0gRU1fQUFSQ0g2NCkgewotKwkJZGJncHJpbnRmKCJOb3QgYW4gQUFSQ0g2NCBleGVjdXRhYmxlXG4iKTsKLSsJCXJlc3VsdCA9IC0xOwotKwkJZ290byBvdXQ7Ci0rCX0KLSsKLSsJcmVzdWx0ID0gMDsKLSsKLStvdXQ6Ci0rCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0raW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCi0rCQkJc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0rewotKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0rCQlLRVhFQ19BUkNIX09QVElPTlMKLSsJCXsgMCB9Ci0rCX07Ci0rCXN0YXRpYyBjb25zdCBjaGFyIHNob3J0X29wdGlvbnNbXSA9IEtFWEVDX09QVF9TVFIgIiI7Ci0rCWNvbnN0IGNoYXIgKmNvbW1hbmRfbGluZSA9IE5VTEw7Ci0rCXVuc2lnbmVkIGludCBjb21tYW5kX2xpbmVfbGVuID0gMDsKLSsJY29uc3QgY2hhciAqcmFtZGlzayA9IE5VTEw7Ci0rCWNvbnN0IGNoYXIgKmR0YiA9IE5VTEw7Ci0rCWludCBvcHQ7Ci0rCXN0cnVjdCBtZW1fZWhkciBlaGRyOwotKwlpbnQgcmVzdWx0OwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBzaG9ydF9vcHRpb25zLCBvcHRpb25zLCAwKSkKLSsJCSE9IC0xKSB7Ci0rCQlzd2l0Y2ggKG9wdCkgewotKwkJZGVmYXVsdDoKLSsJCQlpZiAob3B0IDwgT1BUX01BWCkgLyogSWdub3JlIGNvcmUgb3B0aW9ucyAqLwotKwkJCQlicmVhazsKLSsJCWNhc2UgT1BUX0FQUEVORDoKLSsJCQljb21tYW5kX2xpbmUgPSBvcHRhcmc7Ci0rCQkJY29tbWFuZF9saW5lX2xlbiA9IHN0cmxlbihjb21tYW5kX2xpbmUpICsgMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX1JBTURJU0s6Ci0rCQkJcmFtZGlzayA9IG9wdGFyZzsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX0RUQjoKLSsJCQlkdGIgPSBvcHRhcmc7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogY29tbWFuZF9saW5lOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBjb21tYW5kX2xpbmUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiByYW1kaXNrOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCByYW1kaXNrKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZHRiOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBkdGIpOwotKwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJZnByaW50ZihzdGRlcnIsICJrZXhlYzoga2R1bXAgbm90IHlldCBzdXBwb3J0ZWQgb24gYXJtNjRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCXJlc3VsdCA9IGJ1aWxkX2VsZl9leGVjX2luZm8oYnVmLCBsZW4sICZlaGRyLCAwKTsKLSsKLSsJaWYgKHJlc3VsdCA8IDApIHsKLSsJCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwkJZnByaW50ZihzdGRlcnIsICIlczolZDogZnJlZV9lbGZfaW5mbyBmYWlsZWRcbiIsIF9fZnVuY19fLAotKwkJCV9fTElORV9fKTsKLSsJCXJldHVybiByZXN1bHQ7Ci0rCX0KLSsKLSsJZWxmX2V4ZWNfYnVpbGRfbG9hZChpbmZvLCAmZWhkciwgYnVmLCBsZW4sIDApOwotKwotKwlpbmZvLT5lbnRyeSA9ICh2b2lkKikweDgwMDgwMDAwVUw7ICAvLyBGSVhNRQotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgZWxmX2FybTY0X3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogPC1cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCi1AQCAtMzksOCArMzksOCBAQAotICNpZmRlZiBfX3MzOTBfXwotICNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQkyNzcKLSAjZW5kaWYKLS0jaWZkZWYgX19hcm1fXwotLSNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQlfX05SX1NZU0NBTExfQkFTRSArIDM0NyAgCi0rI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FybTY0X18pCi0rI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCV9fTlJfU1lTQ0FMTF9CQVNFICsgMzQ3Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBfX05SX2tleGVjX2xvYWQgICAgICAgICAgICAgICAgNDMxMQotQEAgLTEwOCw2ICsxMDgsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2RlZmluZSBLRVhFQ19BUkNIX1BQQzY0ICAgKDIxIDw8IDE2KQotICNkZWZpbmUgS0VYRUNfQVJDSF9JQV82NCAgICg1MCA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfQVJNICAgICAoNDAgPDwgMTYpCi0rI2RlZmluZSBLRVhFQ19BUkNIX0FSTTY0ICAgKDE4MyA8PCAxNikKLSsvKiAjZGVmaW5lIEtFWEVDX0FSQ0hfQUFSQ0g2NCAoMTgzIDw8IDE2KSAqLwotICNkZWZpbmUgS0VYRUNfQVJDSF9TMzkwICAgICgyMiA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfU0ggICAgICAoNDIgPDwgMTYpCi0gI2RlZmluZSBLRVhFQ19BUkNIX01JUFNfTEUgKDEwIDw8IDE2KQotQEAgLTE1Myw1ICsxNTUsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2lmZGVmIF9fbTY4a19fCi0gI2RlZmluZSBLRVhFQ19BUkNIX05BVElWRQlLRVhFQ19BUkNIXzY4SwotICNlbmRpZgotKyNpZiBkZWZpbmVkKF9fYXJtNjRfXykKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfTkFUSVZFCUtFWEVDX0FSQ0hfQVJNNjQKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogS0VYRUNfU1lTQ0FMTF9IICovCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy5jCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLUBAIC02NjQsNiArNjY0LDggQEAgc3RhdGljIGludCBteV9sb2FkKGNvbnN0IGNoYXIgKnR5cGUsIGludAotIAltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7Ci0gCWluZm8ua2V4ZWNfZmxhZ3MgPSBrZXhlY19mbGFnczsKLSAKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCi0gCXJlc3VsdCA9IDA7Ci0gCWlmIChhcmdjIC0gZmlsZWluZCA8PSAwKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgIk5vIGtlcm5lbCBzcGVjaWZpZWRcbiIpOwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSw3IEBACi0rIwotKyMgUHVyZ2F0b3J5IGFybTY0Ci0rIwotKwotK2FybTY0X1BVUkdBVE9SWV9TUkNTID0KLSsKLStkaXN0ICs9IHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlICQoYXJtNjRfUFVSR0FUT1JZX1NSQ1MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjM5OGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotcmVxdWlyZSBrZXhlYy10b29scy5pbmMKLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotU1JDX1VSSSArPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDIta2V4ZWMtZ2VuZXJhbGl6ZS1hbmQtcmVuYW1lLWdldF9rZXJuZWxfc3RleHRfc3ltLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDYtYXJtNjQta2R1bXAtc2V0LXVwLWtlcm5lbC1pbWFnZS1zZWdtZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWFybTY0LWtkdW1wLXNldC11cC1vdGhlci1zZWdtZW50cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTAta2V4ZWMtQVJNLUZpeC1hZGRfYnVmZmVyX3BoeXNfdmlydC1hbGlnbi1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1wcGMtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2ggXAotICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJiMmM1ZTZiMjlkNDY3ZDZlOTlkNTg3ZmI2YjdjZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNlNjk1MTlkMmFjY2VkMjU2ODQzYjFlOGYxZWNmYTAwZDliNTRmYTA3NDQ5ZWQ3OGYwNWI5MTkzZjIzOTM3MCIKLQotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAotIgotCi1GSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAotICAgICAgICBmaQotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI0ODMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiCkBAIC0wLDAgKzEsODYgQEAKKworU1VNTUFSWSA9ICJLZXhlYyBmYXN0IHJlYm9vdCB0b29scyIKK0RFU0NSSVBUSU9OID0gIktleGVjIGlzIGEgZmFzdCByZWJvb3QgZmVhdHVyZSB0aGF0IGxldHMgeW91IHJlYm9vdCB0byBhIG5ldyBMaW51eCBrZXJuZWwiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitERVBFTkRTID0gInpsaWIgeHoiCisKK1BSID0gInIxIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTE5ODk2OGRlNzliNWRlZDk2Zjk3ZjNjMmVhOTYzN2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YxN2ZjOTliZjc3YzliMzlmMDZlZTg4YWMwZTg2ZDAzNDljNGEwYzNmODIxNGEzY2M3OGVlY2U4NzJmNmYzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IDQ0ZDAxM2YuLjlhMTcyNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1NUQVRFX1NDQU5fRklMRVMgKz0gImRlcG1vZHdyYXBwZXIiCiBFWFRSQV9TVEFHSU5HX0ZJWE1FUyArPSAiUEtHREFUQV9ESVIiCiAKK0RFUEVORFMgKz0gImttb2QtbmF0aXZlIgogZG9fcG9wdWxhdGVfc3lzcm9vdFtkZXBlbmRzXSA9ICIiCiAKIGRvX2luc3RhbGwoKSB7CkBAIC0yMywxNyArMjQsMTMgQEAKICAgICBlY2hvICJVc2FnZTogZGVwbW9kd3JhcHBlciAtYSAtYiByb290ZnMgS0VSTkVMX1ZFUlNJT04iID4mMgogICAgIGV4aXQgMQogZmkKLWlmIFsgISAtciAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uIF07IHRoZW4KLSAgICBlY2hvICJVbmFibGUgdG8gcmVhZDogJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgPiYyCi1lbHNlCi0gICAga2VybmVsYWJpPVwkKGNhdCAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uKQotICAgIGlmIFsgIlwka2VybmVsYWJpIiAhPSAiXCQ0IiBdOyB0aGVuCi0gICAgICAgIGVjaG8gIkVycm9yOiBLZXJuZWwgdmVyc2lvbiBcJDQgZG9lcyBub3QgbWF0Y2gga2VybmVsLWFiaXZlcnNpb24gKFwka2VybmVsYWJpKSIgPiYyCi0gICAgICAgIGV4aXQgMQotICAgIGZpCisKK2tlcm5lbGFiaT0iIgoraWYgWyAtciAiJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgXTsgdGhlbgorICAgIGtlcm5lbGFiaT1cJChjYXQgIiR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24iKQogZmkKIAotaWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXTsgdGhlbgoraWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXSB8fCBbICJcJGtlcm5lbGFiaSIgIT0gIlwkNCIgXTsgdGhlbgogICAgIGVjaG8gIlVuYWJsZSB0byByZWFkOiAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL1N5c3RlbS5tYXAtXCQ0IiA+JjIKICAgICBleGVjIGVudiBkZXBtb2QgIlwkMSIgIlwkMiIgIlwkMyIgIlwkNCIKIGVsc2UKQEAgLTQ1LDQgKzQyLDUgQEAKIAogU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgogCitQQUNLQUdFUyA9ICIiCiBpbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IDdmYjEwYjUuLjI5ODg1ZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAgICAgICAgICIKIGluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgcGtnY29uZmlnIG1hbnBhZ2VzCiAKLVNSQ1JFViA9ICJlZjQyNTdiNTljNDMwN2I4YzYyN2Q4OWYzYzdmMWZlZWRiMzI1ODJmIgorU1JDUkVWID0gImFjYTRlY2ExMDNkNjY5OTU0M2Y3ZWQ2NjMzMzVjMjhjMmU5OTA4YmIiCiAjIExvb2tvdXQgZm9yIFBWIGJ1bXAgdG9vIHdoZW4gU1JDUkVWIGlzIGNoYW5nZWQKLVBWID0gIjI0K2dpdCR7U1JDUFZ9IgorUFYgPSAiMjUrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwva21vZC9rbW9kLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kZXBtb2Qtc2VhcmNoLmNvbmYgXApAQCAtMzUsOSArMzUsNyBAQAogUEFDS0FHRUNPTkZJR1tsb2dnaW5nXSA9ICIgLS1lbmFibGUtbG9nZ2luZywtLWRpc2FibGUtbG9nZ2luZyIKIFBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBndGtkb2NpemUgLS1kb2NkaXIgJHtTfS9saWJrbW9kL2RvY3MgLS1zcmNkaXIgJHtTfQotfQorR1RLRE9DX0RPQ0RJUiA9ICIke1N9L2xpYmttb2QvZG9jcyIKIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAJc2VkIC1pICdzI31saWJ0b29sI30ke1RBUkdFVF9TWVN9LWxpYnRvb2wjJyAke0J9L2RvbHRsaWJ0b29sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggZmVhZmNiOS4uNWY0NWZjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlYjBmOWQxLi5hNTM5OTY4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKK0luZGV4OiBnaXQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ2l0L2NvbmZpZ3VyZS5hYwogQEAgLTE0LDcgKzE0LDcgQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCiAgQUNfU1lTX0xBUkdFRklMRQogIEFDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkKQEAgLTIzLDcgKzIzLDQgQEAKICtBTV9JTklUX0FVVE9NQUtFKFtjaGVjay1uZXdzIGZvcmVpZ24gMS4xMSBzaWxlbnQtcnVsZXMgdGFyLXBheCBuby1kaXN0LWd6aXAgZGlzdC14eiBzdWJkaXItb2JqZWN0cyBjb2xvci10ZXN0cyBzZXJpYWwtdGVzdHNdKQogIEFNX1NJTEVOVF9SVUxFUyhbeWVzXSkKICBMVF9JTklUKFtkaXNhYmxlLXN0YXRpYyBwaWMtb25seV0pCi0gCi0tLSAKLTEuOS4xCi0KKyBET0xUCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvZml4LU9fQ0xPRVhFQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCmluZGV4IDgxNjFkNjEuLjVkOWQ0MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCkBAIC0xOCwxMiArMTgsMTIgQEAKICBsaWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaCB8ICAgIDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLWluZGV4IDAxODAxMjQuLjEwMGI0MGYgMTAwNjQ0Ci0tLS0gYS9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAotKysrIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLUBAIC05LDYgKzksMTAgQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKK0luZGV4OiBnaXQvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorKysrIGdpdC9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorQEAgLTEwLDYgKzEwLDEwIEBACisgCiAgI2luY2x1ZGUgImxpYmttb2QuaCIKICAKICsjaWZuZGVmIE9fQ0xPRVhFQwpAQCAtMzMsNiArMzMsMyBAQAogIHN0YXRpYyBfYWx3YXlzX2lubGluZV8gX3ByaW50Zl9mb3JtYXRfKDIsIDMpIHZvaWQKICAJa21vZF9sb2dfbnVsbChzdHJ1Y3Qga21vZF9jdHggKmN0eCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHt9CiAgCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNDgxMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGRiMTEyNzM5ZGM0ZjYwOGE5NjhiODEwNGIzODI5NTVkYzNkOTZjYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IFNlcCAyMDE1IDA3OjQwOjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlY3RpZnkgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gZml4IHByb3RvdHlwZSBtaXNtYXRjaGVzCi0KLWNsYW5nIGlzIGxlc3MgZm9yZ2l2aW5nIHdoZW4gaXQgY29tZXMgdG8gY29kaW5nIHN0YW5kYXJkcywgY29ycmVjdCB0aGUKLWZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gcmVmbGVjdCB0aGUgZnVuY3Rpb24gbG9naWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBmc3luYy5jICAgICAgfCA3ICsrKystLS0KLSBsYXRlbmN5dG9wLmggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mc3luYy5jIGIvZnN5bmMuYwotaW5kZXggODJkZmYwZS4uNWNlZmJhOSAxMDA2NDQKLS0tLSBhL2ZzeW5jLmMKLSsrKyBiL2ZzeW5jLmMKLUBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBmc3luY19maWxlcyB7Ci0gc3RhdGljIEdMaXN0ICpmc3luY19kYXRhOwotIAotIAotLXN0YXRpYyBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLStzdGF0aWMgdm9pZCBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gCXN0cnVjdCBmc3luY19maWxlcyAqZmlsZTsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgY2hhaW5fZmlsZShzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYywgY2hhciAqZmlsZW5hbWUpCi0gCXByb2MtPmZpbGVzID0gZ19saXN0X2FwcGVuZChwcm9jLT5maWxlcywgZmlsZSk7Ci0gfQotIAotLXN0YXRpYyByZXBvcnRfZmlsZShjaGFyICpwcm9jZXNzLCBjaGFyICpmaWxlKQotK3N0YXRpYyB2b2lkIHJlcG9ydF9maWxlKGNoYXIgKnByb2Nlc3MsIGNoYXIgKmZpbGUpCi0gewotIAlzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYzsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtMTU3LDkgKzE1NywxMCBAQCBpbnQgZW5hYmxlX2ZzeW5jX3RyYWNlcih2b2lkKQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2N1cnJlbnRfdHJhY2VyIiwgImZzeW5jIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2l0ZXJfY3RybCIsICJmdHJhY2VfcHJpbnRrIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMSIpOwotKwlyZXR1cm4gcmV0OwotIH0KLSAKLS1pbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCkKLSt2b2lkIGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMCIpOwotIH0KLWRpZmYgLS1naXQgYS9sYXRlbmN5dG9wLmggYi9sYXRlbmN5dG9wLmgKLWluZGV4IDUzOTRkNzMuLjlkMTA3YTggMTAwNjQ0Ci0tLS0gYS9sYXRlbmN5dG9wLmgKLSsrKyBiL2xhdGVuY3l0b3AuaAotQEAgLTU0LDUgKzU0LDUgQEAgZXh0ZXJuIGNoYXIgKnRyYW5zbGF0ZShjaGFyICpsaW5lKTsKLSBleHRlcm4gdm9pZCBpbml0X3RyYW5zbGF0aW9ucyhjaGFyICpmaWxlbmFtZSk7Ci0gZXh0ZXJuIGludCBmc3luY19kaXNwbGF5KGludCBkdXJhdGlvbik7Ci0gZXh0ZXJuIGludCBlbmFibGVfZnN5bmNfdHJhY2VyKHZvaWQpOwotLWV4dGVybiBpbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgdXBkYXRlX2xpc3Qodm9pZCk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0OGNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtZnN5bmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1saW51eDogc3lzZnM6IHVzZSB0cmFjaW5nX29uIGFzIHRyYWNpbmdfZW5hYmxlZCBpcyBkZXByZWNhdGVkCi0KLXRyYWNpbmdfZW5hYmxlZCB1c2UgaW4gdGhlIGtlcm5lbCBpcyBiZWluZyBkZXByZWNhdGVkIGFzIHBlciBjb21taXQKLTY3NTJhYjRhOWMzMCBbdHJhY2luZzogRGVwcmVjYXRlIHRyYWNpbmdfZW5hYmxlZCBmb3IgdHJhY2luZ19vbl0gaW4KLXRoZSBsaW51eCBtYWlubGluZSBrZXJuZWwuIHRyYWNpbmdfZW5hYmxlZCB1c2Ugd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcKLWFuZCBtYXkgbm8gbG9uZ2VyIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLCB0aGVyZWZvcmUgbW92ZSB0byB1c2UgdHJhY2luZ19vbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERlbm5pcyBIYWxsIDxkZW5uaXMuaGFsbEB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogbGF0ZW5jeXRvcC0wLjUvZnN5bmMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhdGVuY3l0b3AtMC41Lm9yaWcvZnN5bmMuYwkyMDEyLTA4LTAzIDEwOjQ1OjQ5LjAwMDAwMDAwMCAtMDQwMAotKysrIGxhdGVuY3l0b3AtMC41L2ZzeW5jLmMJMjAxMi0wOC0wMyAxMDo0ODozOS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0xNDksMTkgKzE0OSwxOSBAQAotICAqIGNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcKLSAgKiBlY2hvIGZzeW5jID4gY3VycmVudF90cmFjZXIKLSAgKiBlY2hvIGZ0cmFjZV9wcmludGsgPiBpdGVyX2N0cmwgCi0tICogZWNobyAxID4gdHJhY2luZ19lbmFibGVkCi0rICogZWNobyAxID4gdHJhY2luZ19vbgotICAqLwotIAlyZXQgPSBzeXN0ZW0oIi9iaW4vbW91bnQgLXQgZGVidWdmcyBub25lIC9zeXMva2VybmVsL2RlYnVnLyIpOwotIAlpZiAoIXJldCkgCi0gCQlyZXR1cm4gLTE7Ci0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIiLCAiZnN5bmMiKTsJCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvaXRlcl9jdHJsIiwgImZ0cmFjZV9wcmludGsiKTsJCi0tCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19lbmFibGVkIiwgIjEiKTsKLSsJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjEiKTsKLSB9Ci0gCi0gaW50IGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotLQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfZW5hYmxlZCIsICIwIik7Ci0rCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIwIik7Ci0gfQotIAotIAotQEAgLTMzOSw4ICszMzksOCBAQAotIAkJaWYgKGN1cmR1cmF0aW9uID4gNSkKLSAJCQljdXJkdXJhdGlvbiA9IDU7Ci0gCQkvKiBjbGVhciB0aGUgZnRyYWNlIGJ1ZmZlciAqLwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMCIpOwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMSIpOwotKwkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjAiKTsKLSsJCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIxIik7Ci0gCQlrZXkgPSBzZWxlY3QoMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZlbmQpOwotIAkJcGFyc2VfZnRyYWNlKCk7Ci0gCQlwcmludF9nbG9iYWxfbGlzdCgpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQ3ZmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotU2lnbmVkLW9mZi1ieTogSmFjayBNaXRjaGVsbCA8amFjay5taXRjaGVsbEBkYmJyb2FkY2FzdC5jby51az4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUub3JpZyBiL01ha2VmaWxlCi1pbmRleCAxNmEyMzY5Li5mYTc5N2EyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUub3JpZwotKysrIGIvTWFrZWZpbGUKLUBAIC0xLDEwICsxLDExIEBACi0tIyBGSVhNRTogVXNlIGF1dG9jb25mID8KLS1IQVNfR1RLX0dVSSA9IDEKLSsjCi0rIwotIAotIERFU1RESVIgPQotIFNCSU5ESVIgPSAvdXNyL3NiaW4KLSBYQ0ZMQUdTID0gLVcgIC1nIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGdsaWItMi4wYCAtRF9GT1JUSUZZX1NPVVJDRT0yIC1Xbm8tc2lnbi1jb21wYXJlCi0tTERGID0gLVdsLC0tYXMtbmVlZGVkIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgICAtbG5jdXJzZXN3IAotK0xERiA9IC1XbCwtLWFzLW5lZWRlZCBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgICAgLWxuY3Vyc2VzICQoTERGTEFHUykKLStDQyA/PSBnY2MKLSAKLSBPQkpTPSBsYXRlbmN5dG9wLm8gdGV4dF9kaXNwbGF5Lm8gdHJhbnNsYXRlLm8gZnN5bmMubwotIAotQEAgLTI2LDE2ICsyNywxNyBAQCBlbmRpZgotIAotICMgV2Ugd3JpdGUgZXhwbGljaXR5IHRoaXMgImltcGxpY2l0IHJ1bGUiCi0gJS5vIDogJS5jCi0tCWdjYyAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotKwkkKENDKSAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotIAotIGxhdGVuY3l0b3A6ICAkKE9CSlMpIGxhdGVuY3l0b3AuaCBNYWtlZmlsZQotLQlnY2MgJChDRkxBR1MpICQoT0JKUykgJChMREYpIC1vIGxhdGVuY3l0b3AgCi0rCSQoQ0MpICQoQ0ZMQUdTKSAkKE9CSlMpICQoTERGKSAtbyBsYXRlbmN5dG9wCi0gCi0gY2xlYW46Ci0gCXJtIC1mICp+IGxhdGVuY3l0b3AgREVBREpPRSAqLm8KLSAKLSBpbnN0YWxsOiBsYXRlbmN5dG9wCi0gCW1rZGlyIC1wICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AKLSsJbWtkaXIgLXAgJChERVNURElSKS8kKFNCSU5ESVIpCi0gCWluc3RhbGwgLW0gMDY0NCBsYXRlbmN5dG9wLnRyYW5zICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC50cmFucwotIAlpbnN0YWxsIC1tIDA2NDQgKi5wbmcgJChERVNURElSKS91c3Ivc2hhcmUvbGF0ZW5jeXRvcC8KLSAJaW5zdGFsbCAtbSAwNzU1IGxhdGVuY3l0b3AgJChERVNURElSKSQoU0JJTkRJUikvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxOTQ3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCB0b29sIGZvciBtZWFzdXJpbmcgYW5kIGZpeGluZyBsYXRlbmN5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sYXRlbmN5dG9wLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sYXRlbmN5dG9wLmM7ZW5kbGluZT0yMzttZDU9ZWU5ZWE5YjE0MTUzNTZlNTczNGFkYWQ0YTg3ZGM3ZmEiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpbnRsIG5jdXJzZXMgZ2xpYi0yLjAiCi0KLVBSID0gInIzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmd6LzczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllN2Y3MmZiZWE3YmQ5MThlNzEyMTJhMWVhYmFhZDg0ODhkMmM2MDIyMDVkMmUzYzk1ZDYyY2Q1N2U5MjAzZWYiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLGd0aysiCi0KLUVYVFJBX09FTUFLRV9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICdIQVNfR1RLX0dVST0xJywgJycsIGQpfSIKLQotI0NGTEFHUyArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9ICR7RVhUUkFfT0VNQUtFX1h9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS10by1TTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlhN2Y3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAyNzJhOGEwNjlhOGY1ZjA2YTFlNWRmYTBlZjEyZjVmOTI5ODQ3MjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTm9vciA8bm9vcl9haHNhbkBtZW50b3IuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMDo1NDowMCArMDUwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1MuCi0KLSogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1Mgc28gdGhhdCBleHRyYSBsaW5rZXIKLSAgZmxhZ3MgY2FuIGJlIHNlbnQgdmlhIHRoaXMgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwZXJmbW9uMi1saWJwZm00LWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0XQotCi1TaWduZWQtb2ZmLWJ5OiBOb29yIEFoc2FuIDxub29yX2Foc2FuQG1lbnRvci5jb20+Ci0tLS0KLSBsaWIvTWFrZWZpbGUgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IDFjYzg3NjUuLjRiZDkyZWYgMTAwNjQ0Ci0tLS0gYS9saWIvTWFrZWZpbGUKLSsrKyBiL2xpYi9NYWtlZmlsZQotQEAgLTE4Nyw3ICsxODcsNyBAQCBDRkxBR1MgKz0gLURDT05GSUdfUEZNTElCX0NFTEwKLSBlbmRpZgotIAotIGlmZXEgKCQoU1lTKSxMaW51eCkKLS1TTERGTEFHUz0tc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0rU0xERkxBR1M9JChMREZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0gU0xJQlBGTT1saWJwZm0uc28uJChWRVJTSU9OKS4kKFJFVklTSU9OKS4kKEFHRSkKLSBWTElCUEZNPWxpYnBmbS5zby4kKFZFUlNJT04pCi0gU09MSUJFWFQ9c28KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZDQ3ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2ZpbGVzL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCBjb21waWxlIGVycm9yOgotCi18IHN5c3RfY291bnQuYzozNDY6MzogZXJyb3I6IHRoaXMgJ2ZvcicgY2xhdXNlIGRvZXMgbm90IGd1YXJkLi4uIFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dIAotfCAgICBmb3IoYz1jbWluIDsgYyA8IGNtYXg7IGMrKykgCi18ICAgICAgIF5+fiAKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9wZXJmX2V4YW1wbGVzL3N5c3RfY291bnQuYyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1pbmRleCAwZDUzMDc4Li4yZGZiOWI5IDEwMDY0NAotLS0tIGEvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKLSsrKyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1AQCAtMzQzLDggKzM0Myw5IEBAIG1lYXN1cmUodm9pZCkKLSAKLSAJCWZvciAoZGVsYXkgPSAxIDsgZGVsYXkgPD0gb3B0aW9ucy5kZWxheTsgZGVsYXkrKykgewotIAotLQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspCi0tCQkJc3RhcnRfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0YXJ0X2NwdShjKTsKLSsJCQl9Ci0gCi0gCQkJaWYgKDApIHsKLSAJCQkJdHYudHZfc2VjID0gMDsKLUBAIC0zNTMsOCArMzU0LDkgQEAgbWVhc3VyZSh2b2lkKQotIAkJCX0gZWxzZQotIAkJCQlzbGVlcCgxKTsKLSAKLS0JCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKQotLQkJCXN0b3BfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0b3BfY3B1KGMpOwotKwkJCX0KLSAKLSAJCQlmb3IoYyA9IGNtaW47IGMgPCBjbWF4OyBjKyspIHsKLSAJCQkJcHJpbnRmKCIjICUnZHMgLS0tLS1cbiIsIGRlbGF5KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9saWJwZm00XzQuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzZlYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk1vbml0b3JpbmcgdG9vbHMgZXhwbG9pdGluZyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBsaWJyYXJ5LCBjYWxsZWQgbGlicGZtNCB3aGljaCBpcyB1c2VkIHRvIGRldmVsb3AgXAotbW9uaXRvcmluZyB0b29scyBleHBsb2l0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50cyBzdWNoIGFzIHRob3NlIFwKLXByb3ZpZGVkIGJ5IHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgb2YgbW9kZXJuIHByb2Nlc3NvcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BlcmZtb24yLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTQ0ODIyJmF0aWQ9NzU5OTUzJnNvdXJjZT1uYXZiYXIiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGRlNDg4ZjNiZDQ0MjRlMzA4ZTJlMzk5Y2I5OWM3ODgiCi0KLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICJwb3dlcnBjNjQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wZXJmbW9uMi8ke0JQTn0vbGlicGZtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MDc3YjkwMjI0NDBlNDk1MWQ5NmYyZDBlNzNiZDQ4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YWIxZTViMDQ3MjU1MGY5MDM3YTg4MDA4MzRmNmJjM2I5Mjc2OTAwNzBmNjlmYWMwYjY3Mjg0YjRiMDVmZDVmIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wZXJmbW9uMi9maWxlcy9saWJwZm00LyIKLQotRVhUUkFfT0VNQUtFID0gIkRFU1RESVI9XCIke0R9XCIgUFJFRklYPVwiJHtwcmVmaXh9XCIgTElCRElSPVwiJHtsaWJkaXJ9XCIgTERDT05GSUc9XCJ0cnVlXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIEFSQ0g9XCJwb3dlcnBjXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgQVJDSD1cInBvd2VycGNcIiBCSVRNT0RFPVwiNjRcIiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnBmbS0ke1BWfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKaW5kZXggOTA1NGIzMy4uOGQ2ZjJmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgpAQCAtMzcsNiArMzcsNyBAQAogICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKICAgICAmIEZpcm13YXJlLXBoYW5mdyBcCiAgICAgJiBGaXJtd2FyZS1xYXQgXAorICAgICYgRmlybXdhcmUtcWNvbSBcCiAgICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKICAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAogICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIFwKQEAgLTkwLDEyICs5MSwxMyBAQAogICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTlkZGVhMTczNGE0YmFmM2M3OGQ4NDUxNTFmNDJhMzdhIFwKICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCiAgICAgZmlsZTovL0xJQ0VOQ0UubXlyaTEwZ2VfZmlybXdhcmU7bWQ1PTQyZTMyZmI4OWY2Yjk1OWNhMjIyZTI1YWM4ZGY4ZmVkIFwKLSAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PWNkMmEzZTZlZmZlM2NkZjQyNzMxNTc1YjhlOTQ3N2VkIFwKKyAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PTRhZGQwOGYyNTc3MDg2ZDQ0NDQ3OTk2NTAzY2RkZjVmIFwKICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKICAgICBmaWxlOi8vTElDRU5DRS5PTFBDO21kNT01YjkxN2Y5ZDhjMDYxOTkxYmU0ZjZmNWYxMDg3MTljZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKICAgICBmaWxlOi8vTElDRU5DRS5xYXRfZmlybXdhcmU7bWQ1PTllN2Q4YmVhNzc2MTJkN2NjN2Q5ZTliNTRiNjIzMDYyIFwKKyAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTJ4eHg7bWQ1PTUwNTg1NWU5MjFiNzVmMWJlNGE0MzdhZDliNzlkZmYwIFwKICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXApAQCAtMTE2LDcgKzExOCw3IEBACiAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwO21kNT0xZTE3MGMxMzE3NTMyM2MzMmM3ZjRkMDk5OGQ1M2Y2NiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTAzOGVkYmM5ZTc0NDE3MWQ4YjYyMzVlMDIyNDAyOGJhIFwKKyAgICBmaWxlOi8vV0hFTkNFO21kNT02ZjQ2OTg2ZjRlOTEzZWYxNmI3NjVjMjMxOWNjNTE0MSBcCiAiCiAKICMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KQEAgLTE1Niw2ICsxNTgsNyBAQAogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgpAQCAtMTc4LDEzICsxODEsMTMgQEAKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCiBOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCiAKLVNSQ1JFViA9ICJiZjA0MjkxMzA5ZDMxNjljMGFkM2I4ZGI1MjU2NDIzNWJiZDA4ZTMwIgorU1JDUkVWID0gIjhmYzJkNGU1NTY4NWJmNzNiNmY3NzUyMzgzZGE5MDY3NDA0YTc0YmIiCiBQRSA9ICIxIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCiAKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yNDksMTQgKzI1MiwxOSBAQAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2MCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1IFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODAwMGMgJHtQTn0taXdsd2lmaS04MjY1IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTkwMDAgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktbWlzYyBcCiAgICAgICAgICAgICAgJHtQTn0taWJ0LWxpY2Vuc2UgJHtQTn0taWJ0ICR7UE59LWlidC1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtMTEtNSAke1BOfS1pYnQtMTItMTYgJHtQTn0taWJ0LWh3LTM3LTcgJHtQTn0taWJ0LWh3LTM3LTggXAorICAgICAgICAgICAgICR7UE59LWlidC0xNyBcCiAgICAgICAgICAgICAgJHtQTn0taTkxNS1saWNlbnNlICR7UE59LWk5MTUgXAogICAgICAgICAgICAgICR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgJHtQTn0tYWRzcC1zc3QgXAogICAgICAgICAgICAgICR7UE59LWJueDItbWlwcyBcCiAgICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKICAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAorICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCiAgICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAogICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAogICAgICAgICAgICAgICIKQEAgLTU5Niw2ICs2MDQsNyBAQAogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogCkBAIC02MjIsNiArNjMxLDcgQEAKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCiAKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKQEAgLTY0NSw2ICs2NTUsNyBAQAogUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogCiAjIC1pd2x3aWZpLW1pc2MgaXMgYSAiY2F0Y2ggYWxsIiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpd2x3aWZpCkBAIC02NzAsNiArNjgxLDcgQEAKIExJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTggPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pYnQtMTEtNSAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWlidC0xMi0xNiAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTE3ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taWJ0LW1pc2MgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogCiBGSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgpAQCAtNjc3LDEyICs2ODksMTQgQEAKIEZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCiBGSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKIEZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCiBGSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgogCiBSREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1ody0zNy44ID0gIiR7UE59LWlidC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pYnQtMTItMTYgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1taXNjICAgID0gIiR7UE59LWlidC1saWNlbnNlIgogCiBBTExPV19FTVBUWV8ke1BOfS1pYnQ9ICIxIgpAQCAtNzA3LDYgKzcyMSwxOCBAQAogRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgogUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKIAorIyBGb3IgUUNPTSBWUFUvR1BVCitMSUNFTlNFXyR7UE59LXFjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1xY29tIgorRklMRVNfJHtQTn0tcWNvbS1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnFjb20gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL05PVElDRS50eHQiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtMS44LyoiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtNC4yLyoiCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hMzAwXyouZncgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hMzAwXyouZnciCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hNTMwKi4qIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKKwogIyBGb3Igb3RoZXIgZmlybXdhcmVzCiAjIE1heWJlIHNwbGl0IG91dCB0byBzZXBhcmF0ZSBwYWNrYWdlcyB3aGVuIG5lZWRlZC4KIExJQ0VOU0VfJHtQTn0gPSAiXApAQCAtNzM3LDYgKzc2Myw3IEBACiAgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAogICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKICAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKICAgICAmIEZpcm13YXJlLXFsYTEyODAgXAogICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCiAgICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCAxNjU3ZGY2Li45OTAzYzA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwpAQCAtNzgsNyArNzgsNyBAQAogfQogCiBkb19pbnN0YWxsX2FybW11bHRpbGliICgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXNtL2F1eHZlYy5oIGFzbS9iaXRzcGVybG9uZy5oIGFzbS9ieXRlb3JkZXIuaCBhc20vZmNudGwuaCBhc20vaHdjYXAuaCBhc20vaW9jdGxzLmggYXNtL2t2bS5oIGFzbS9tbWFuLmggYXNtL3BhcmFtLmggYXNtL3BlcmZfcmVncy5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGFzbS9hdXh2ZWMuaCBhc20vYml0c3BlcmxvbmcuaCBhc20vYnl0ZW9yZGVyLmggYXNtL2ZjbnRsLmggYXNtL2h3Y2FwLmggYXNtL2lvY3Rscy5oIGFzbS9rdm0uaCBhc20va3ZtX3BhcmEuaCBhc20vbW1hbi5oIGFzbS9wYXJhbS5oIGFzbS9wZXJmX3JlZ3MuaCBhc20vYnBmX3BlcmZfZXZlbnQuaAogCW9lX211bHRpbGliX2hlYWRlciBhc20vcG9zaXhfdHlwZXMuaCBhc20vcHRyYWNlLmggIGFzbS9zZXR1cC5oICBhc20vc2lnY29udGV4dC5oIGFzbS9zaWdpbmZvLmggYXNtL3NpZ25hbC5oIGFzbS9zdGF0LmggIGFzbS9zdGF0ZnMuaCBhc20vc3dhYi5oICBhc20vdHlwZXMuaCBhc20vdW5pc3RkLmgKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YjI0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA4OTc3MzYxNjZmZDcwOTkwNmE1ZmRmMTZlYjIzZjhmZGRmZjc3MGI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEgTWFyIDIwMTggMTg6MzE6MDEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gaWZfZXRoZXI6IG1vdmUgbXVzbGMgZXRoaGRyIHByb3RlY3Rpb24gdG8gdWFwaSBmaWxlCisKK1NpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAoraW5kZXggMTUzYzljMi4uN2I2OWI3MyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCisrKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAorQEAgLTE0OSw2ICsxNDksMTIgQEAKKyAgKglUaGlzIGlzIGFuIEV0aGVybmV0IGZyYW1lIGhlYWRlci4KKyAgKi8KKyAKKysjaWZkZWYgX05FVElORVRfSUZfRVRIRVJfSCAvKiBtdXNsICovCisrI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAwCisrI2Vsc2UgLyogZ2xpYmMgdXNlcyBfX05FVElORVRfSUZfRVRIRVJfSCwgYW5kIGluY2x1ZGVzIHRoZSBrZXJuZWwgaGVhZGVyLiAqLworKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMQorKyNlbmRpZgorKworIC8qIGFsbG93IGxpYmNzIGxpa2UgbXVzbCB0byBkZWFjdGl2YXRlIHRoaXMsIGdsaWJjIGRvZXMgbm90IGltcGxlbWVudCB0aGlzLiAqLworICNpZm5kZWYgX19VQVBJX0RFRl9FVEhIRFIKKyAjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSCQkxCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoCmluZGV4IDhiYjc3NWMuLjA2NGEzOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCAyNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLUBAIC00OCwxMyArNDgsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzozNzo0NC43MjQzMTQzNzkgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6Mzg6MDIuMTQ4OTEzODIwIC0wNTAwCitAQCAtNDksMTMgKzQ5LDEyIEBACiAgI2lmbmRlZiBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgI2RlZmluZSBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgCkBAIC0zMyw3ICszMyw3IEBACiAgICogdGhhdCB3b3VsZCBhbHJlYWR5IGJlIGRlZmluZWQuICovCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lGX0lGQ09ORiAwCi1AQCAtOTgsMTUgKzk3LDcgQEAKK0BAIC05OSwxNSArOTgsNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9DTEFTUwkJMAogIAogICNkZWZpbmUgX19VQVBJX0RFRl9JTjZfQUREUgkJMApAQCAtNDksNyArNDksNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVBWNl9NUkVRCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQUFJPVE9fVjYJCTAKLUBAIC0xMTQsMTAgKzEwNSwxMCBAQAorQEAgLTExNSwxMCArMTA2LDEwIEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9QS1RJTkZPCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQNl9NVFVJTkZPCQkwCiAgCkBAIC02Miw3ICs2Miw3IEBACiAgICogX19VQVBJX0RFRl8qIGRlZmluZXMgYW5kIGFkanVzdCBhcHByb3ByaWF0ZWx5LiAqLwogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9BRERSCQkxCiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0lQUFJPVE8JCTEKLUBAIC0xMjcsNyArMTE4LDcgQEAKK0BAIC0xMjgsNyArMTE5LDcgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU5fQ0xBU1MJCTEKICAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU42X0FERFIJCTEKQEAgLTcxLDE4ICs3MSwxOCBAQAogICAqIGNvb3JkaW5hdGUuICovCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSX0FMVAkJMQogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTEKLUBAIC0xNDksNyArMTQwLDcgQEAKLSAvKiBJZiB3ZSBkaWQgbm90IHNlZSBhbnkgaGVhZGVycyBmcm9tIGFueSBzdXBwb3J0ZWQgQyBsaWJyYXJpZXMsCitAQCAtMTcwLDcgKzE2MSw3IEBACiAgICogb3Igd2UgYXJlIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwsIHRoZW4gZGVmaW5lIGV2ZXJ5dGhpbmcKLSAgKiB0aGF0IHdlIG5lZWQuICovCisgICogdGhhdCB3ZSBuZWVkLiBDaGVjayBmb3IgcHJldmlvdXMgX19VQVBJXyogZGVmaW5pdGlvbnMgdG8gZ2l2ZQorICAqIHVuc3VwcG9ydGVkIEMgbGlicmFyaWVzIGEgd2F5IHRvIG9wdCBvdXQgb2YgYW55IGtlcm5lbCBkZWZpbml0aW9uLiAqLwogLSNlbHNlIC8qICFkZWZpbmVkKF9fR0xJQkNfXykgKi8KICsjZWxzZSAvKiBfX0tFUk5FTF9fICovCiAgCiAgLyogRGVmaW5pdGlvbnMgZm9yIGlmLmggKi8KLSAjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZDT05GIDEKLUBAIC0xODIsNiArMTczLDYgQEAKLSAvKiBEZWZpbml0aW9ucyBmb3IgeGF0dHIuaCAqLworICNpZm5kZWYgX19VQVBJX0RFRl9JRl9JRkNPTkYKK0BAIC0yNjIsNiArMjUzLDYgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfWEFUVFIJCTEKKyAjZW5kaWYKICAKIC0jZW5kaWYgLyogX19HTElCQ19fICovCiArI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoCmluZGV4IDhkYzFlZGMuLmZiN2UxZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApAQCAtMTEsMzcgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCA2ICsrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2RlZmluZSBfVUFQSV9MSU5VWF9JRl9FVEhFUl9ICi0gCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L2xpYmMtY29tcGF0Lmg+Ci0gCi0gLyoKLSAgKglJRUVFIDgwMi4zIEV0aGVybmV0IG1hZ2ljIGNvbnN0YW50cy4gIFRoZSBmcmFtZSBzaXplcyBvbWl0IHRoZSBwcmVhbWJsZQotQEAgLTEzOCwxMSArMTM5LDEyIEBACi0gICoJVGhpcyBpcyBhbiBFdGhlcm5ldCBmcmFtZSBoZWFkZXIuCi0gICovCi0gCi0rI2lmIF9fVUFQSV9ERUZfRVRISERSCi0gc3RydWN0IGV0aGhkciB7Ci0gCXVuc2lnbmVkIGNoYXIJaF9kZXN0W0VUSF9BTEVOXTsJLyogZGVzdGluYXRpb24gZXRoIGFkZHIJKi8KLSAJdW5zaWduZWQgY2hhcgloX3NvdXJjZVtFVEhfQUxFTl07CS8qIHNvdXJjZSBldGhlciBhZGRyCSovCi0gCV9fYmUxNgkJaF9wcm90bzsJCS8qIHBhY2tldCB0eXBlIElEIGZpZWxkCSovCi0gfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKLS0KLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogX1VBUElfTElOVVhfSUZfRVRIRVJfSCAqLwotSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaW51eC00LjgtcmM0Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCi1AQCAtNTAsNiArNTAsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzgzNzA3MzEgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6NDA6NDIuMzM0MzcwNjAzIC0wNTAwCitAQCAtNTEsNiArNTEsMTIgQEAKICAKICAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwogIApAQCAtNTIsNSArMjYsNSBAQAogKyNlbmRpZgogKwogIC8qIENvb3JkaW5hdGUgd2l0aCBsaWJjIG5ldC9pZi5oIGhlYWRlci4gKi8KLSAjaWYgZGVmaW5lZChfTkVUX0lGX0gpICYmIGRlZmluZWQoX19VU0VfTUlTQykKKyAjaWYgZGVmaW5lZChfTkVUX0lGX0gpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZDBhYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjNDU0MTU3ZTJkMDI0ZDQwMWE2MDkwNWQ2NDgxYzZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0NWMzYmVjZDRkMDhjZTQxMWMxNDYyOGE5NDlkMDhlMjQzM2Q4Y2RlY2E5MjAzNmM3MDEzOTgwZTkzODU4YWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZGI0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKKyAgICIKKworCitTUkNfVVJJW21kNXN1bV0gPSAiODE4NmNlNjNjNDg5MTk5YjU4YjZhNThhZDJhMjRhOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q0NGRmNGIyM2EzZTBlZGMxNGJlNjNkZjk1ZDc2OGI5NjAwYjMxYzM1YmUwNWZiODlmOTMyMjY5MDdmYzhjNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IGMxYjViNzcuLjhiYmZhMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtNjksNiArNjksMTMgQEAKICAgICAgICAgICAgICAgICBjcCAke0J9L2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCiAgICAgICAgIGZpCiAKKyAgICAgICAgIyBSZW1vdmUgZml4ZGVwL29ianRvb2wgYXMgdGhleSB3b24ndCBiZSB0YXJnZXQgYmluYXJpZXMKKyAgICAgICAgZm9yIGkgaW4gZml4ZGVwIG9ianRvb2w7IGRvCisgICAgICAgICAgICAgICAgaWYgWyAtZSAka2VybmVsZGlyL3Rvb2xzL29ianRvb2wvJGkgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcm0gLXJmICRrZXJuZWxkaXIvdG9vbHMvb2JqdG9vbC8kaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKwogICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQogfQogIyBFbnN1cmUgd2UgZG9uJ3QgcmFjZSBhZ2FpbnN0ICJtYWtlIHNjcmlwdHMiIGR1cmluZyBjcGlvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggNTg1MmI0Mi4uNDIwMWZhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMjgsMTAgKzI4LDEzIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi1yYysiCitMSU5VWF9WRVJTSU9OID89ICI0LjE2LXJjKyIKIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG9kZXYtJHtMSU5VWF9LRVJORUxfVFlQRX0iCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXVhcm18cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCkiCiAKIEtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDMxYmY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWV0YSA/PSAiMWQ5YTgyMDAxODRhZjIyZjg5ODFmYTI0YjBlODJhZjQ5Yzc5ODhkZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEwLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIKaW5kZXggNjRiMWRhMS4uNWVkYzBmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCkBAIC03LDE3ICs3LDE3IEBACiAjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCiAjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgogcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiZGE3NzVhYTlhYWI0MWU4YTJiNGU5YjQ0ZmZlMjY4NDQ2YzUxNzU5ZiIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gIjcwNWQwMzUwN2EwYzEwZGNiZjljYWQzZmY3MGY1ZDYwYjcwZjJkOTkiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMzA2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0tCUkFOQ0ggPz0gInY0LjE0L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI3MjcyZTkxMzJmZGFhZjBkZDc4YmM5NGU5ZjI5N2FhZjczNDUyOTgyIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE0LjMwIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWQzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpAQCAtMCwwICsxLDQxIEBACitLQlJBTkNIID89ICJ2NC4xNS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNS4xMyIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzUzOGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiZDVlZmVlZWI5MjhhMDExMWZjMTg3ZmQxZThkMDNkMmU0ZTM1ZDRhMCIKLVNSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMwMTZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjkwZDFmZmEzNmNiZDM2NzIyNjM4Yzk3YzFiYjQ2YTU4NzRkYmUyOGUiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjIzNDk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEwLjE3IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgppbmRleCAwYmJkOGUyLi4zMTMwN2E2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCkBAIC00LDEzICs0LDEzIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YmVlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTQuYmIKQEAgLTAsMCArMSwyOCBAQAorS0JSQU5DSCA/PSAidjQuMTQvc3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTQuMzAiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICJhZDMxODk2NjMwZjhiZjZhNDU5MTY0MjYzYWRjMGE4ZmFmOTg0ZDllIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI5Y2EzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgorTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRkVBVFVSRVMgPSAiIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTk4MTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21ldGEgPz0gImIxNDlkMTRjY2FlODM0OWFiMzNlMTAxZjZhZjIzM2ExMmY0YjE3YmEiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQ2ODAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmUgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCmluZGV4IDljMWY2MWIuLjNiYjg3MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTEyLDkgKzEyLDkgQEAKICMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgbmV0d29yayBhY2Nlc3MgcmVxdWlyZWQKICMgYnkgdGhlIHVzZSBvZiBBVVRPUkVWIFNSQ1JFVnMsIHdoaWNoIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhpcyByZWNpcGUuCiBweXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSBkLmdldFZhcigiUE4iKToKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gZC5nZXRWYXIoIlBOIik6CiAgICAgICAgIGQuZGVsVmFyKCJCQl9ET05UX0NBQ0hFIikKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCiB9CiAKIERFUEVORFMgKz0gInh6LW5hdGl2ZSBiYy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZlM2NjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImFlMTJlMTljZWNjMTlhZjY2ZjY0YTUwNTM4OTA5Y2IxY2FkMTg1ZjkiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiYjcxYjgwZmQ2NzlhMTdkZmI0ZjczYjM1MjI2M2M0OTI3M2Y3MjFkNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjhiYjEzNWU3MTAzN2M0NjE3NWJiY2M3YWNmMzg3MzA5YjJlMTcxMzMiCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCmluZGV4IGZhYmYwZjUuLjhkNTYwMTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgpAQCAtMTEsMjAgKzExLDIyIEBACiBLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MmNmNGQ2YTFiYzg0YjkwNjgxY2I4MmFkOTVjMTI5Mzg3ZDc2YjRiIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjU3MTMxNWE1NTI2YjllMjIyNjJjZjk5YmFlN2MwZGQ2ZTViZDIwNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJlNzg4OWJhMThmMDYwMzY4ZDRhYjM1ZTcwYjA3NjcyOGQ3M2JhNjIyIgotU1JDUkVWX21hY2hpbmUgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWV0YSA/PSAiNGY4MjVlZWI3ODNhMjc5MjE2ZWU0NWVkM2I5YTYzZGQ2ODM3ZjdkNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQ1ODI0YzYwY2EzN2Y0MTRhNWFjNTc4M2U5NzAzMzhkYjlhNWEyYWYiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNjZmNzQxYjBiM2QwOTNlNmI2ZGYwZjQ0MTIwOTEzZWYzYTI1OWUyMyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJmOWQ2Nzc3N2IwN2FjOTc5NjYxODZjMWI1NmRiNzhhZmUyYTE2ZjkyIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImM1ZDgzOGM5ZTI2YmQ2NTdiNDlkZmUyOGIxMTVlNWJjNGI1ODA4NTAiCitTUkNSRVZfbWFjaGluZSA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tZXRhID89ICI0NjE3MWRlMTkyMjBjNDlkNjcwNTQ0MDE3Y2ZiZWZmYzFlYzcwZTgwIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjE0MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpAQCAtMCwwICsxLDQ3IEBACitLQlJBTkNIID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xNC9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKK0tCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE0L3N0YW5kYXJkL3FlbXVwcGMiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDYyNjhmYzM0NjBkMzkwNGZkNDkwODdmN2E4MjJlZmJhYWI5YmZlOCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYzk0MTg5ODQzYjhhZDYyY2FmZTlhMzA3ZTdmN2Q2MDc0MTY5MDUwNSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI0YWZkOTIzNDdiMmIzNWRjOGUwMDA2NzEyZjhmYTAwYWM1N2YyYTM2IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZThhZjVjOWI2NWM1MTg3ZDE0OGVjZDExYmQ3OTc5NDg5NDYwY2E2NCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjc0ZjZjZDJiNjk3NmUzNzQ5MTc3OWZjYjFiYzQ5NjZkM2E2MTQ5MmMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiOTg2M2IzMjdlNzcwYjQyYjhjMThkYTNlMGNmYWYwNmU4Zjk5YWU5NyIKK1NSQ1JFVl9tYWNoaW5lID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNC4zMCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYmQ3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCkBAIC0wLDAgKzEsNDcgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE1L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY0LjE1L3N0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0YjY5MDJiNDJmNDc1OTM5MjgxMTdiMmZmMDkwMGNkOTY1Y2Y2NDQzIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE5YmEyZDg0Mzc1MGZmNjVkOGZlNTkwYWNkZmM5OWFlYTYxNTM5NDUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI5NzAwMGMzZjQ2NjQ2NDNiYWM3ODI4YmJkYzA0OGY3ZWMyMTZjYzMxIgorU1JDUkVWX21hY2hpbmUgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWV0YSA/PSAiOTM5ZDkzNWIwYzk5MmM2ZjFlNTFhN2ExYzllNGZiZTZlZjNjMzE3NCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2MxNmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MDBjMGYzOWI5NTRjZDhmZmZkZjUzZTZlYzk3ODUyYjczZmVhN2FmIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImZiMDNhOTQ3MjM2N2I2YzE3NzcyOWFjNjMxMzI2YWFmZDVkMTdjOTIiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICIyNmI4YmExODZhNmQzOTcyOGZjMTUxMGJkMjI2NDExMGM3NTg0MmY1IgotU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVhMTY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJzdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInN0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMzNjllYjdlMDdjODM5ZmE3M2E4YzFlODVhYmEzN2EwN2JmMTRjMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJjYWI5ZTA1OTQ0Nzg3OGY1MzgzZjkxYTA1ZGIxMjgxM2Y2OWNiZmMxIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzJlNWVmODNiNjEyZDUwZjUwZmFmZWVkOTkzMGRiZWEzMDJmYmU4YyIKLVNSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNlYzI3NDVhYzMxNjY0OTc5MWM0M2Y0MTZkNzFlYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI0OWZlZTViZWJhNjU3NzMxZjVkNmE4NGM1Mjk2YzY1MTdmNTQ0YmZiZTc1NzFiZDFmZDdhZjIzNzI2MTM3YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTQwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgorCitERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2U4Y2RhZmVjM2FjMDM0NmEzODk4NzBlODdiZjEzNDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY0MzAzOTkyM2EwYWJjNzVhMjViM2Q1OTRjZWUwMDE3NDIzYjU3ZjEwZDJiNjI1ZTk2ZWQxZThkNDg5MWZjMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKaW5kZXggNmU5MmMyMi4uOTM2MjZkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTI1LDYgKzI1LDcgQEAKIFBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsdHRuZy11c3QiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2gKaW5kZXggMGYxOGM1ZC4uYmZmODUyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCkBAIC02LDEzICs2LDEyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+CiAKLUluZGV4OiBkb2MvTWFrZWZpbGUuYW0KK0luZGV4OiBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9kb2MvTWFrZWZpbGUuYW0KLSsrKyBiL2RvYy9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACistLS0gbHR0bmctdXN0LTIuOS4xLm9yaWcvZG9jL01ha2VmaWxlLmFtCisrKysgbHR0bmctdXN0LTIuOS4xL2RvYy9NYWtlZmlsZS5hbQorQEAgLTEsMyArMSwzIEBACiAtU1VCRElSUyA9IC4gbWFuIGV4YW1wbGVzCiArU1VCRElSUyA9IC4gbWFuCiAgCi0gZGlzdF9tYW5fTUFOUyA9IG1hbi9sdHRuZy1nZW4tdHAuMSBcCi0gCW1hbi9sdHRuZy11c3QuMyBcCisgZGlzdF9kb2NfREFUQSA9IGphdmEtYWdlbnQudHh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9tYWtlLW1vZC1zY3JpcHRzL21ha2UtbW9kLXNjcmlwdHNfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2M1OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkJ1aWxkIHRvb2xzIG5lZWRlZCBieSBleHRlcm5hbCBtb2R1bGVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2IgorCitpbmhlcml0IGtlcm5lbC1hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIgb3BlbnNzbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2NvbXBpbGVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlcyIKKworREVQRU5EUyArPSAiYmMtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCisKKyMgQnVpbGQgc29tZSBob3N0IHRvb2xzIHVuZGVyIHdvcmstc2hhcmVkLiAgQ0MsIExELCBhbmQgQVIgYXJlIHByb2JhYmx5CisjIG5vdCB1c2VkLCBidXQgdGhpcyBpcyB0aGUgaGlzdG9yaWNhbCB3YXkgb2YgaW52b2tpbmcgIm1ha2Ugc2NyaXB0cyIuCisjCitkb19jb25maWd1cmUoKSB7CisJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKKwlvZV9ydW5tYWtlIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIEFSPSIke0tFUk5FTF9BUn0iIFwKKwkgICAgICAgICAgIC1DICR7U1RBR0lOR19LRVJORUxfRElSfSBPPSR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IHNjcmlwdHMgcHJlcGFyZQorCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDE2NTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0tV2lkZSBQcm9maWxlciIKLURFU0NSSVBUSU9OID0gIk9Qcm9maWxlIGlzIGEgc3lzdGVtLXdpZGUgcHJvZmlsZXIgZm9yIExpbnV4IHN5c3RlbXMsIGNhcGFibGUgXAotb2YgcHJvZmlsaW5nIGFsbCBydW5uaW5nIGNvZGUgYXQgbG93IG92ZXJoZWFkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcHJvZmlsZS5zb3VyY2Vmb3JnZS5uZXQvbmV3cy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYXRpZD0xMTYxOTEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJvcGFnZW50L29wYWdlbnQuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI2O21kNT00ZjE2ZjcyYzdhNDkzZDhhNDcwNGFhMThkMDNkMTVjNiBcCi0gICAgICAgICAgICAgICAgICAgIgotU0VDVElPTiA9ICJkZXZlbCIKLQotREVQRU5EUyA9ICJwb3B0IGJpbnV0aWxzIgotUkRFUEVORFNfJHtQTn0gPSAiYmludXRpbHMtc3ltbGlua3MiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtdm1saW51eCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9LyR7QlBOfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8ke0JQTn0vbGliKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3Jvb3QtaG9tZS1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aG91dC14IGFjX2N2X3Byb2dfWFNMVFBST0M9IgotZG9fY29uZmlndXJlICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotCWF1dG90b29sc19kb19jb25maWd1cmUKLX0KLQotRVhUUkFfT0VNQUtFID0gIlNSQ0RJUj0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXN1YmRpcnM9ImxpYmRiL3Rlc3RzIGxpYnV0aWwrKy90ZXN0cyBsaWJyZWdleC90ZXN0cyBsaWJ1dGlsL3Rlc3RzIGxpYm9wL3Rlc3RzIGxpYmRiL3Rlc3RzICIKLQlmb3IgdG9vbHRlc3QgaW4gJHtzdWJkaXJzfQotCWRvCi0JCWZpbmQgJHt0b29sdGVzdH0gLXBlcm0gL3U9eCAtdHlwZSBmfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9Ci0JZG9uZQotCi0JIyBuZWVkZWQgYnkgc29tZSBsaWJvcCB0ZXN0cwotCWNwIC1yIGV2ZW50cyAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBuZWVkZWQgYnkgbGlicmVnZXggcmVnZXhfdGVzdAotCWNwIGxpYnJlZ2V4L3N0bC5wYXQgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgKLQljcCBsaWJyZWdleC90ZXN0cy9tYW5nbGVkLW5hbWUgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgvdGVzdHMKLQotCSMgbmVlZGVkIGJ5IGxpdHV0aWwrKyBmaWxlX21hbmlwX3Rlc3RzCi0JY3AgJHtTfS9saWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5jcHAgXAotCQlsaWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5vICR7RH0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlODU2MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMzRiMGQ5YjFhMzJmYjQwNGEzMDMyN2E3YWU4OTMxYzdjNzU1ODNiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAyOjAwOjI5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBybWIoKSBkZWZpbml0aW9uIGZvciBOSU9TMiBhcmNoaXRlY3R1cmUKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9tYXJjLmluZm8vP2w9b3Byb2ZpbGUtbGlzdCZtPTE0NTUwMTkxNTkzMTg3NCZ3PTIgXQotLS0tCi0gbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaCB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAotaW5kZXggMzI5NTRjYy4uODI3MGU1MyAxMDA2NDQKLS0tLSBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLSsrKyBiL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLUBAIC0xNzgsNiArMTc4LDExIEBAIHZvaWQgb3BfcmVsZWFzZV9yZXNvdXJjZXModm9pZCk7Ci0gI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotICNlbmRpZgotIAotKyNpZmRlZiBfX25pb3MyX18KLSsjZGVmaW5lIHJtYigpCQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotKyNkZWZpbmUgY3B1X3JlbGF4KCkJYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5IikKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX190aWxlX18KLSAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotICNkZWZpbmUgcm1iKCkJCV9faW5zbl9tZigpCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3MmZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDM5ZDRkNDZhMGJkNTA0YWM3MDhmZmU3MmRmODdiZjc0Y2QxMmFkMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgNSBGZWIgMjAxNiAxNzozMDoxOSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBGaXggRlRCRlMgcHJvYmxlbSB3aXRoIEdDQy02Ci0KLUdDQy02IGlzIHBpY2tpZXIgYWJvdXQgc29tZSBvZiB0aGUgdHlwZSBjb252ZXJzaW9ucyBjYXVzaW5nIHRoZSBGZWRvcmEKLTI0IG1hc3MgcmVidWlsZCB0aGUgYnVpbGQgb2Ygb3Byb2ZpbGUgZmFpbGVkIHdpdGg6Ci0KLW1ha2VbM106IEVudGVyaW5nIGRpcmVjdG9yeSAnL2J1aWxkZGlyL2J1aWxkL0JVSUxEL29wcm9maWxlLTEuMS4wL2xpYnV0aWwrKycKLWcrKyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4gIC1JIC4uL2xpYnV0aWwgLUkgLi4vbGlib3AgLUkgLi4vbGlicHAgICAtVyAtV2FsbCAtZm5vLWNvbW1vbiAtZnRlbXBsYXRlLWRlcHRoLTUwIC1PMiAtZyAtcGlwZSAtV2FsbCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQgLWdyZWNvcmQtZ2NjLXN3aXRjaGVzIC1zcGVjcz0vdXNyL2xpYi9ycG0vcmVkaGF0L3JlZGhhdC1oYXJkZW5lZC1jYzEgLW0zMiAtbWFyY2g9aTY4NiAtbXR1bmU9YXRvbSAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1jIC1vIG9wX2JmZC5vIG9wX2JmZC5jcHAKLW9wX2JmZC5jcHA6IEluIG1lbWJlciBmdW5jdGlvbiAndm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3QsIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQmLCBsb25nIGxvbmcgdW5zaWduZWQgaW50JikgY29uc3QnOgotb3BfYmZkLmNwcDo1Mzg6NDc6IGVycm9yOiBjYW5ub3QgY29udmVydCAnc3RkOjpvc3RyZWFtIHtha2Egc3RkOjpiYXNpY19vc3RyZWFtPGNoYXI+fScgdG8gJ2NvbnN0IGJvb2wnIGluIGluaXRpYWxpemF0aW9uCi0gIGJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLW9wX2JmZC5jcHA6NTQ2Ojc6IGVycm9yOiBpbiBhcmd1bWVudCB0byB1bmFyeSAhCi0gIGlmICghdmVyYm9zZSkKLSAgICAgICBefn5+fn5+Ci0KLUF2b2lkIHRoZSBpbnRlcm1lZGlhdGUgYm9vbCB0eXBlIHRvIG1ha2UgR0NDLTYgaGFwcHkuCi0KLVNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gQ29oZW4gPHdjb2hlbkByZWRoYXQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJ1dGlsKysvb3BfYmZkLmNwcCB8IDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnV0aWwrKy9vcF9iZmQuY3BwIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLWluZGV4IDM4OWM5MjAuLmYyZWI0MmIgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsKysvb3BfYmZkLmNwcAotKysrIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLUBAIC01MzUsMTUgKzUzNSwxMyBAQCB2b2lkIG9wX2JmZDo6Z2V0X3N5bWJvbF9yYW5nZShzeW1ib2xfaW5kZXhfdCBzeW1faWR4LAotIHsKLSAJb3BfYmZkX3N5bWJvbCBjb25zdCAmIHN5bSA9IHN5bXNbc3ltX2lkeF07Ci0gCi0tCWJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0tCi0gCWlmIChhbm9uX29iaikKLSAJCXN0YXJ0ID0gc3ltLnZtYSgpOwotIAllbHNlCi0gCQlzdGFydCA9IHN5bS5maWxlcG9zKCk7Ci0gCWVuZCA9IHN0YXJ0ICsgc3ltLnNpemUoKTsKLSAKLS0JaWYgKCF2ZXJib3NlKQotKwlpZiAoIShjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpKSkKLSAJCXJldHVybjsKLSAKLSAJaW9fc3RhdGUgc3RhdGUoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlY2Q5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotZG5sIEFYX0tFUk5FTF9PUFRJT04ob3B0aW9uLCBhY3Rpb24taWYtZm91bmQsIGFjdGlvbi1pZi1ub3QtZm91bmQpCi1kbmwgc2VlIGlmIGF1dG9jb25mLmggZGVmaW5lcyB0aGUgb3B0aW9uCi1BQ19ERUZVTihbQVhfS0VSTkVMX09QVElPTl0sIFsKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLUkkS0lOQyAtTzIgLURfX0tFUk5FTF9fIgotQUNfVFJZX0NPTVBJTEUoIFsjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+XSwKLVsKLSNpZm5kZWYgJDEKLWJyZWFrX21lX2hhcmQoXFxcKTsKLSNlbmRpZgotXSxbJDJdLFskM10sKQotQ0ZMQUdTPSRTQVZFX0NGTEFHUwotXSkKLQotZG5sIEhhbmRsZSB0aGUgMi40IG1vZHVsZSBpbnNpZGUgbW9kdWxlLwotQUNfREVGVU4oW0FYX0NPTkZJR19NT0RVTEVdLAotWwotaWYgdGVzdCAhIC1mICRLSU5DL2xpbnV4L2F1dG9jb25mLmg7IHRoZW4KLQlBQ19NU0dfRVJST1IoW25vIHN1aXRhYmx5IGNvbmZpZ3VyZWQga2VybmVsIGluY2x1ZGUgdHJlZSBmb3VuZF0pCi1maQotCi1kbmwgIC0tLSBHZXQgTGludXgga2VybmVsIHZlcnNpb24gYW5kIGNvbXBpbGUgcGFyYW1ldGVycyAtLS0KLQotQUNfU1VCU1QoS1ZFUlMpCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrZXJuZWwgdmVyc2lvbl0pCi1kbmwgaXQncyBsaWtlIHRoaXMgdG8gaGFuZGxlIG1hbmRyYWtlJ3MgZnViYXIgdmVyc2lvbi5oIC0gYnVnICM0NzE0NDgKLWV2YWwgS1ZFUlM9YGdjYyAtSSRLSU5DIC1FIC1kTSAkS0lOQy9saW51eC92ZXJzaW9uLmggfCBncmVwIC13IFVUU19SRUxFQVNFIHwgYXdrICd7cHJpbnQgJFtdM30nYAotQUNfTVNHX1JFU1VMVChbJEtWRVJTXSkKLWNhc2UgIiRLVkVSUyIgaW4KLTIuMi4qfDIuNC4qKSA7OwotKikgQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBrZXJuZWwgdmVyc2lvbl0pCi1lc2FjCi0KLWRubCBDaGVjayBmb3IgdGhlIG1pbmltYWwga2VybmVsIHZlcnNpb24gc3VwcG9ydGVkCi1BQ19NU0dfQ0hFQ0tJTkcoW2tlcm5lbCB2ZXJzaW9uXSkKLUFYX0tFUk5FTF9WRVJTSU9OKDIsIDIsIDEwLCA8PSwgQUNfTVNHX1JFU1VMVChbb2tdKSwgQUNfTVNHX0VSUk9SKFtjaGVjayBodG1sIGRvY3VtZW50YXRpb24gaW5zdGFsbCBzZWN0aW9uXSkpCi0KLWRubCBsaW51eC9zcGlubG9jay5oIGFkZGVkIGF0IHNvbWUgcG9pbnQgaW4gcGFzdAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgJEtJTkMvbGludXgvc3BpbmxvY2suaF0pCi1pZiB0ZXN0IC1mICRLSU5DL2xpbnV4L3NwaW5sb2NrLmg7IHRoZW4KLQlFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREhBVkVfTElOVVhfU1BJTkxPQ0tfSEVBREVSIgotCUFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0JQUNfTVNHX1JFU1VMVChbbm9dKQotZmkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgcnRjX2xvY2tdKQotZ2NjIC1JJEtJTkMgLUUgJEtJTkMvbGludXgvbWMxNDY4MThydGMuaCB8IGdyZXAgcnRjX2xvY2sgPi9kZXYvbnVsbAotaWYgdGVzdCAiJD8iIC1lcSAwOyB0aGVuCi0JRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURSVENfTE9DSyIKLQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotZWxzZQotCUFDX01TR19SRVNVTFQoW25vXSkKLWZpCi0JIAotYXJjaD0idW5rbm93biIKLUFDX01TR19DSEVDS0lORyhmb3IgeDg2LTY0IGFyY2hpdGVjdHVyZSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4Nl82NCwgeDg2NjQ9MSwgeDg2NjQ9MCkKLUFYX01TR19SRVNVTFRfWU4oJHg4NjY0KQotQlVJTERfSEFNTUVSPW5vCi1pZiB0ZXN0ICIkeDg2NjQiIC1lcSAxOyB0aGVuCi0JYXJjaD0ieDg2IgotCUJVSUxEX0hBTU1FUj15ZXMKLWVsc2UKLQlBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg4NiBhcmNoaXRlY3R1cmUpCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2LCB4ODY9MSwgeDg2PTApCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2X1dQX1dPUktTX09LLCB4ODY9MSwgeDg2PSR4ODYpCi0JQVhfTVNHX1JFU1VMVF9ZTigkeDg2KQotCXRlc3QgIiR4ODYiID0gMSAmJiBhcmNoPSJ4ODYiCi0JCi0JaWYgdGVzdCAiJGFyY2giID0gInVua25vd24iOyB0aGVuCi0gIAkJQUNfTVNHX0NIRUNLSU5HKGZvciBpYTY0IGFyY2hpdGVjdHVyZSkKLSAgCQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19JQTY0LCBpYTY0PTEsIGlhNjQ9MCkKLSAgCQlBWF9NU0dfUkVTVUxUX1lOKCRpYTY0KQotICAJCXRlc3QgIiRpYTY0IiA9IDEgJiYgYXJjaD0iaWE2NCIKLQlmaQotCi1maQotQUNfU1VCU1QoQlVJTERfSEFNTUVSKQotCi10ZXN0ICIkYXJjaCIgPSAidW5rbm93biIgJiYgQUNfTVNHX0VSUk9SKFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSkKLQotZG5sIGNoZWNrIHRvIHNlZSBpZiBrZXJuZWwgdmVyaW9uIGFwcHJvcHJpYXRlIGZvciBhcmNoCi1BQ19NU0dfQ0hFQ0tJTkcoYXJjaC9rZXJuZWwgdmVyc2lvbiBjb21iaW5hdGlvbikKLWNhc2UgIiRhcmNoIiBpbgotaWE2NCkKLQlBWF9LRVJORUxfVkVSU0lPTigyLCA0LCAxOCwgPCwgQUNfTVNHX1JFU1VMVChbb2tdKSwKLQkJQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBhcmNoL2tlcm5lbF0pKSA7OwotKikgQUNfTVNHX1JFU1VMVChbb2tdKQotZXNhYwotCi1kbmwgZm9yIG5vdyB3ZSBkbyBub3Qgc3VwcG9ydCBQUkVFTVBUIHBhdGNoCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcmVlbXB0IHBhdGNoXSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1BSRUVNUFQscHJlZW1wdD0xLHByZWVtcHQ9MCkKLUFYX01TR19SRVNVTFRfWU4oWyRwcmVlbXB0XSkKLXRlc3QgIiRwcmVlbXB0IiA9IDAgfHwgQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBrZXJuZWwgY29uZmlndXJhdGlvbiA6IENPTkZJR19QUkVFTVBUXSkKLQotQUNfU1VCU1QoS0lOQykKLQotTU9ESU5TVEFMTERJUj0vbGliL21vZHVsZXMvJEtWRVJTCi0gCi1PUFJPRklMRV9NT0RVTEVfQVJDSD0kYXJjaAotQUNfU1VCU1QoT1BST0ZJTEVfTU9EVUxFX0FSQ0gpCi1dCi0pCi0KLWRubCBBWF9NU0dfUkVTVUxUX1lOKGEpCi1kbmwgcmVzdWx0cyAieWVzIiBpZmYgYT09MSwgIm5vIiBlbHNlCi1BQ19ERUZVTihbQVhfTVNHX1JFU1VMVF9ZTl0sIFt4PW5vCi10ZXN0ICJ4JDEiID0gIngxIiAmJiB4PXllcwotQUNfTVNHX1JFU1VMVCgkeCldKQotCi1kbmwgQVhfTUFMTE9DX0FUVFJJQlVURSAtIHNlZSBpZiBnY2Mgd2lsbCB0YWtlIF9fYXR0cmlidXRlX18oKG1hbGxvYykpCi1BQ19ERUZVTihbQVhfTUFMTE9DX0FUVFJJQlVURV0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0NPTVBJTEUoLFsKLXZvaWQgbW9ua2V5KCkgX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7Ci1dLEFDX01TR19SRVNVTFQoW3llc10pOyBBQ19ERUZJTkUoTUFMTE9DX0FUVFJJQlVURV9PSywgMSwgW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSksIEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTIAotXQotKQotCi1kbmwgYnVpbHRpbl9leHBlY3QgaXMgdXNlZCBpbiBtb2R1bGUgd2UgY2FuJ3QgYWRkIHRoYXQgaW4gY29uZmlnLmgKLUFDX0RFRlVOKFtBWF9CVUlMVElOX0VYUEVDVF0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgX19idWlsdGluX2V4cGVjdCBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0xJTksoLFsKLWludCBpOwotaWYgKF9fYnVpbHRpbl9leHBlY3QoaSwgMCkpIHsgfQotXSwKLUFDX01TR19SRVNVTFQoW3llc10pOyBFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREVYUEVDVF9PSyIsCi1BQ19NU0dfUkVTVUxUKFtub10pOykKLUNGTEFHUz0kU0FWRV9DRkxBR1MgCi1dCi0pIAotCi1kbmwgQVhfRVhUUkFfRElSUyAtIExldCB1c2VyIHNwZWNpZnkgZXh0cmEgZGlycyBmb3IgaW5jbHVkZS9saWJzCi1BQ19ERUZVTihbQVhfRVhUUkFfRElSU10sCi1bCi1BQ19BUkdfV0lUSChleHRyYS1pbmNsdWRlcywKLVsgIC0td2l0aC1leHRyYS1pbmNsdWRlcz1ESVIgICAgYWRkIGV4dHJhIGluY2x1ZGUgcGF0aHNdLAotICB1c2VfZXh0cmFfaW5jbHVkZXM9IiR3aXRodmFsIiwKLSAgdXNlX2V4dHJhX2luY2x1ZGVzPU5PCi0pCi1pZiB0ZXN0IC1uICIkdXNlX2V4dHJhX2luY2x1ZGVzIiAmJiBcCi0gICAgICAgIHRlc3QgIiR1c2VfZXh0cmFfaW5jbHVkZXMiICE9ICJOTyI7IHRoZW4KLSAgYWNfc2F2ZV9pZnM9JElGUwotICBJRlM9JzonCi0gIGZvciBkaXIgaW4gJHVzZV9leHRyYV9pbmNsdWRlczsgZG8KLSAgICBleHRyYV9pbmNsdWRlcz0iJGV4dHJhX2luY2x1ZGVzIC1JJGRpciIKLSAgZG9uZQotICBJRlM9JGFjX3NhdmVfaWZzCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgJGV4dHJhX2luY2x1ZGVzIgotZmkKLQotQUNfQVJHX1dJVEgoZXh0cmEtbGlicywKLVsgIC0td2l0aC1leHRyYS1saWJzPURJUiAgICAgICAgYWRkIGV4dHJhIGxpYnJhcnkgcGF0aHNdLAotICB1c2VfZXh0cmFfbGlicz0kd2l0aHZhbCwKLSAgdXNlX2V4dHJhX2xpYnM9Tk8KLSkKLWlmIHRlc3QgLW4gIiR1c2VfZXh0cmFfbGlicyIgJiYgXAotICAgICAgICB0ZXN0ICIkdXNlX2V4dHJhX2xpYnMiICE9ICJOTyI7IHRoZW4KLSAgIGFjX3NhdmVfaWZzPSRJRlMKLSAgIElGUz0nOicKLSAgIGZvciBkaXIgaW4gJHVzZV9leHRyYV9saWJzOyBkbwotICAgICBleHRyYV9saWJyYXJpZXM9IiRleHRyYV9saWJyYXJpZXMgLUwkZGlyIgotICAgZG9uZQotICAgSUZTPSRhY19zYXZlX2lmcwotICAgTERGTEFHUz0iJExERkxBR1MgJGV4dHJhX2xpYnJhcmllcyIKLWZpCi1dCi0pCi0KLWRubCBBWF9QT1BUX0NPTlNUIC0gY2hlY2sgcG9wdCBwcm90b3R5cGUKLUFDX0RFRlVOKFtBWF9QT1BUX0NPTlNUXSwKLVsKLUFDX01TR19DSEVDS0lORyhbcG9wdCBwcm90b3R5cGVdKQotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSItV2Vycm9yICRDWFhGTEFHUyIKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8cG9wdC5oPl0sCi1bCi1pbnQgYzsgY2hhciAqKnY7Ci1wb3B0R2V0Q29udGV4dCgwLCBjLCB2LCAwLCAwKTsKLV0sCi1BQ19NU0dfUkVTVUxUKFt0YWtlcyBjaGFyICoqXSk7LAotQUNfTVNHX1JFU1VMVChbdGFrZXMgY29uc3QgY2hhciAqKl0pOyBBQ19ERUZJTkUoQ09OU1RfUE9QVCwgMSwgW3doZXRoZXIgcG9wdCBwcm90b3R5cGUgdGFrZXMgYSBjb25zdCBjaGFyICoqXSkpCi1DWFhGTEFHUz0iJFNBVkVfQ1hYRkxBR1MiCi1dCi0pCi0KLWRubCBBWF9DSEVDS19TU1RSRUFNIC0gY2hlY2sgaWYgbG9jYWwgc3N0cmVhbSBpcyBuZWVkZWQgdG8gY29tcGlsZSBPSwotQUNfREVGVU4oW0FYX0NIRUNLX1NTVFJFQU1dLAotWwotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBpbmNsdWRlZCBzc3RyZWFtXSkKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3N0cmVhbT5dLCBbXSwgCi1BQ19NU0dfUkVTVUxUKFtub10pOywKLUFDX01TR19SRVNVTFQoW3llc10pOyBPUF9DWFhGTEFHUz0iJE9QX0NYWEZMQUdTIC1JXCR7dG9wX3NyY2Rpcn0vaW5jbHVkZSIpCi1dCi0pCi0KLWRubCBBWF9DSEVDS19UWVBFREVGKHR5cGVkZWZfbmFtZSwgdHlwZSwgYWN0aW9uLWlmLXRydWUsIGFjdGlvbi1pZi1mYWxzZSkKLWRubCBleGVjIGFjdGlvbi1pZi10cnVlIGlmIHR5cGVkZWZfbmFtZSBpcyBhIHR5cGVkZWYgdG8gdHlwZSBlbHNlIGV4ZWMgCi1kbmwgYWN0aW9uLWlmLWZhbHNlCi1kbmwgY3VycmVudGx5IHdvcmsgb25seSB3aXRoIHR5cGUgdHlwZWRlZidlZCBpbiBzdGRkZWYuaAotQUNfREVGVU4oW0FYX0NIRUNLX1RZUEVERUZdLCBbCi1kbmwgQUNfTEFOR19QVVNIKEMpIG5vdCBpbiBhdXRvY29uZiAyLjEzCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCi0KLUFDX1RSWV9DT01QSUxFKAotICBbCi0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgXSwKLSAgWwotICB0eXBlZGVmIHZvaWQgKCpmY3QxKSgkMSk7Ci0gIHR5cGVkZWYgdm9pZCAoKmZjdDIpKCQyKTsKLSAgZmN0MSBmMSA9IDA7Ci0gIGZjdDIgZjIgPSAwOwotICBpZiAoZjEgPT0gZjIpIHt9Ci0gIF0sCi1bJDNdLFskNF0pCi0KLUNGTEFHUz0kU0FWRV9DRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotCi1kbmwgQVhfVFlQRURFRkVEX05BTUUodHlwZWRlZl9uYW1lLCBjYW5kaWRhdGVfbGlzdCwgdmFyX25hbWUpCi1kbmwgc2V0IHZhcl9uYW1lIHRvIHRoZSB0eXBlZGVmIG5hbWUgb2YgJDEgd2hpY2ggbXVzdCBiZSBpbiBjYW5kaXRhdGVfbGlzdAotZG5sIGVsc2UgcHJvZHVjZSBhIGZhdGFsIGVycm9yCi1BQ19ERUZVTihbQVhfVFlQRURFRkVEX05BTUVdLCBbCi0JQUNfTVNHX0NIRUNLSU5HKFt0eXBlIG9mICQxXSkKLQlmb3IgZiBpbiAkMjsgZG8KLQkJQVhfQ0hFQ0tfVFlQRURFRigkMSwgJGYsICQzPSIkZiIsICQzPSIiKQotCQlpZiB0ZXN0IC1uICIkeyQzfSI7IHRoZW4KLQkJCWJyZWFrCi0JCWZpCi0JZG9uZQotCWlmIHRlc3QgLW4gIiR7JDN9IjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFskeyQzfV0pCi0JZWxzZQotCQlBQ19NU0dfRVJST1IoW25vdCBmb3VuZF0pCi0JZmkKLV0pCi0KLWRubCBmaW5kIGEgYmluYXJ5IGluIHRoZSBwYXRoCi1BQ19ERUZVTihbUVRfRklORF9QQVRIXSwKLVsKLQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCi0JQUNfQ0FDSEVfVkFMKHF0X2N2X3BhdGhfJDEsCi0JWwotCQlxdF9jdl9wYXRoXyQxPSJOT05FIgotCQlpZiB0ZXN0IC1uICIkJDIiOyB0aGVuCi0JCQlxdF9jdl9wYXRoXyQxPSIkJDIiOwotCQllbHNlCi0JCQlkaXJzPSIkMyIKLQkJCXF0X3NhdmVfSUZTPSRJRlMKLQkJCUlGUz0nOicKLQkJCWZvciBkaXIgaW4gJFBBVEg7IGRvCi0JCQkJZGlycz0iJGRpcnMgJGRpciIKLQkJCWRvbmUKLQkJCUlGUz0kcXRfc2F2ZV9JRlMKLSAKLQkJCWZvciBkaXIgaW4gJGRpcnM7IGRvCi0JCQkJaWYgdGVzdCAteCAiJGRpci8kMSI7IHRoZW4KLQkJCQkJaWYgdGVzdCAtbiAiJDUiOyB0aGVuCi0JCQkJCQlldmFsc3RyPSIkZGlyLyQxICQ1IDI+JjEgIgotCQkJCQkJaWYgZXZhbCAkZXZhbHN0cjsgdGhlbgotCQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQkJYnJlYWsKLQkJCQkJCWZpCi0JCQkJCWVsc2UKLQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQlicmVhawotCQkJCQlmaQotCQkJCWZpCi0JCQlkb25lCi0JCWZpCi0JXSkKLSAKLQlpZiB0ZXN0IC16ICIkcXRfY3ZfcGF0aF8kMSIgfHwgdGVzdCAiJHF0X2N2X3BhdGhfJDEiID0gIk5PTkUiOyB0aGVuCi0JCUFDX01TR19SRVNVTFQobm90IGZvdW5kKQotCQkkNAotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVCgkcXRfY3ZfcGF0aF8kMSkKLQkJJDI9JHF0X2N2X3BhdGhfJDEKLQlmaQotXSkKLQotZG5sIEZpbmQgdGhlIHVpYyBjb21waWxlciBvbiB0aGUgcGF0aCBvciBpbiBxdF9jdl9kaXIKLUFDX0RFRlVOKFtRVF9GSU5EX1VJQ10sCi1bCi0JUVRfRklORF9QQVRIKHVpYywgYWNfdWljLCAkcXRfY3ZfZGlyL2JpbikKLQlpZiB0ZXN0IC16ICIkYWNfdWljIiAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFt1aWMgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0gCi1kbmwgRmluZCB0aGUgcmlnaHQgbW9jIGluIHBhdGgvcXRfY3ZfZGlyCi1BQ19ERUZVTihbUVRfRklORF9NT0NdLAotWwotCVFUX0ZJTkRfUEFUSChtb2MyLCBhY19tb2MyLCAkcXRfY3ZfZGlyL2JpbikKLQlRVF9GSU5EX1BBVEgobW9jLCBhY19tb2MxLCAkcXRfY3ZfZGlyL2JpbikKLQotCWlmIHRlc3QgLW4gIiRhY19tb2MxIiAtYSAtbiAiJGFjX21vYzIiOyB0aGVuCi0JCWRubCBmb3VuZCBib3RoLiBQcmVmZXIgUXQzJ3MgaWYgaXQgZXhpc3RzIGVsc2UgbW9jMgotCQkkYWNfbW9jMSAtdiAyPiYxIHwgZ3JlcCAiUXQgMyIgPi9kZXYvbnVsbAotCQlpZiB0ZXN0ICIkPyIgPSAwOyB0aGVuCi0JCQlhY19tb2M9JGFjX21vYzE7Ci0JCWVsc2UKLQkJCWFjX21vYz0kYWNfbW9jMjsKLQkJZmkKLQllbHNlCi0JCWlmIHRlc3QgLW4gIiRhY19tb2MxIjsgdGhlbgotCQkJYWNfbW9jPSRhY19tb2MxOwotCQllbHNlCi0JCQlhY19tb2M9JGFjX21vYzI7Ci0JCWZpCi0JZmkKLQotCWlmIHRlc3QgLXogIiRhY19tb2MiICAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFttb2MgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0KLWRubCBjaGVjayBhIHBhcnRpY3VsYXIgbGlibmFtZQotQUNfREVGVU4oW1FUX1RSWV9MSU5LXSwKLVsKLQlTQVZFX0xJQlM9IiRMSUJTIgotCUxJQlM9IiRMSUJTICQxIgotCUFDX1RSWV9MSU5LKFsKLQkjaW5jbHVkZSA8cWdsb2JhbC5oPgotCSNpbmNsdWRlIDxxc3RyaW5nLmg+Ci0JCV0sCi0JWwotCVFTdHJpbmcgcygibWFuZ2xlX2ZhaWx1cmUiKTsKLQkjaWYgKFFUX1ZFUlNJT04gPCAyMjEpCi0JYnJlYWtfbWVfKFxcXCk7Ci0JI2VuZGlmCi0JXSwKLQlxdF9jdl9saWJuYW1lPSQxLAotCSkKLQlMSUJTPSIkU0FWRV9MSUJTIgotXSkKLSAKLWRubCBjaGVjayB3ZSBjYW4gZG8gYSBjb21waWxlCi1BQ19ERUZVTihbUVRfQ0hFQ0tfQ09NUElMRV0sCi1bCi0JQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQgbGlicmFyeSBuYW1lXSkKLSAKLQlBQ19DQUNIRV9WQUwocXRfY3ZfbGlibmFtZSwKLQlbCi0JCUFDX0xBTkdfQ1BMVVNQTFVTCi0JCVNBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCi0JCUNYWEZMQUdTPSIkQ1hYRkxBR1MgJFFUX0lOQ0xVREVTICRRVF9MREZMQUdTIiAKLQotCQlmb3IgbGlibmFtZSBpbiAtbHF0LW10IC1scXQzIC1scXQyIC1scXQ7Ci0JCWRvCi0JCQlRVF9UUllfTElOSygkbGlibmFtZSkKLQkJCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQkJCWJyZWFrOwotCQkJZmkKLQkJZG9uZQotCi0JCUNYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCi0JXSkKLQotCWlmIHRlc3QgLXogIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFtmYWlsZWRdKSAKLQkJaWYgdGVzdCAiJEZBVEFMIiA9IDEgOyB0aGVuCi0JCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBjb21waWxlIGEgc2ltcGxlIFF0IGV4ZWN1dGFibGUuIENoZWNrIHlvdSBoYXZlIHRoZSByaWdodCBcJFFURElSICFdKQotCQlmaQotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVChbJHF0X2N2X2xpYm5hbWVdKQotCWZpCi1dKQotCi1kbmwgZ2V0IFF0IHZlcnNpb24gd2UncmUgdXNpbmcKLUFDX0RFRlVOKFtRVF9HRVRfVkVSU0lPTl0sCi1bCi0JQUNfQ0FDSEVfQ0hFQ0soW1F0IHZlcnNpb25dLGx5eF9jdl9xdHZlcnNpb24sCi0JWwotCQlBQ19MQU5HX0NQTFVTUExVUwotCQlTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRRVF9JTkNMVURFUyIKLQotCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHFnbG9iYWwuaD4KLSIlJSUiUVRfVkVSU0lPTl9TVFIiJSUlIgotRU9GCi0JCWx5eF9jdl9xdHZlcnNpb249YChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwgXAotCQkJZ3JlcCAnXiIlJSUiJyAgMj4vZGV2L251bGwgfCBcCi0JCQlzZWQgLWUgJ3MvIiUlJSIvL2cnIC1lICdzLyIvL2cnYAotCQlybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0JCUNQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0JXSkKLSAKLQlRVF9WRVJTSU9OPSRseXhfY3ZfcXR2ZXJzaW9uCi0JQUNfU1VCU1QoUVRfVkVSU0lPTikKLV0pCi0gCi1kbmwgc3RhcnQgaGVyZSAKLUFDX0RFRlVOKFtRVF9ET19JVF9BTExdLAotWwotCWRubCBQbGVhc2UgbGVhdmUgdGhpcyBhbG9uZS4gSSB1c2UgdGhpcyBmaWxlIGluCi0JZG5sIG9wcm9maWxlLgotCUZBVEFMPTAKLQotCUFDX0FSR19XSVRIKHF0LWRpciwgWyAgLS13aXRoLXF0LWRpciAgICAgICAgICAgd2hlcmUgdGhlIHJvb3Qgb2YgUXQgaXMgaW5zdGFsbGVkIF0sCi0JCVsgcXRfY3ZfZGlyPWBldmFsIGVjaG8gIiR3aXRodmFsIi9gIF0pCi0JIAotCUFDX0FSR19XSVRIKHF0LWluY2x1ZGVzLCBbICAtLXdpdGgtcXQtaW5jbHVkZXMgICAgICB3aGVyZSB0aGUgUXQgaW5jbHVkZXMgYXJlLiBdLAotCQlbIHF0X2N2X2luY2x1ZGVzPWBldmFsIGVjaG8gIiR3aXRodmFsImAgXSkKLSAKLQlBQ19BUkdfV0lUSChxdC1saWJyYXJpZXMsIFsgIC0td2l0aC1xdC1saWJyYXJpZXMgICAgIHdoZXJlIHRoZSBRdCBsaWJyYXJ5IGlzIGluc3RhbGxlZC5dLAotCQlbICBxdF9jdl9saWJyYXJpZXM9YGV2YWwgZWNobyAiJHdpdGh2YWwiYCBdKQotCi0JZG5sIHBheSBhdHRlbnRpb24gdG8gJFFURElSIHVubGVzcyBvdmVycmlkZGVuCi0JaWYgdGVzdCAteiAiJHF0X2N2X2RpciI7IHRoZW4KLQkJcXRfY3ZfZGlyPSRRVERJUgotCWZpCi0gCi0JZG5sIGRlcml2ZSBpbmMvbGliIGlmIG5lZWRlZAotCWlmIHRlc3QgLW4gIiRxdF9jdl9kaXIiOyB0aGVuCi0JCWlmIHRlc3QgLXogIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJCXF0X2N2X2luY2x1ZGVzPSRxdF9jdl9kaXIvaW5jbHVkZQotCQlmaQotCQlpZiB0ZXN0IC16ICIkcXRfY3ZfbGlicmFyaWVzIjsgdGhlbgotCQkJcXRfY3ZfbGlicmFyaWVzPSRxdF9jdl9kaXIvbGliCi0JCWZpCi0JZmkKLQotCWRubCBmbGFncyBmb3IgY29tcGlsYXRpb24KLQlRVF9JTkNMVURFUz0KLQlRVF9MREZMQUdTPQotCWlmIHRlc3QgLW4gIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJUVRfSU5DTFVERVM9Ii1JJHF0X2N2X2luY2x1ZGVzIgotCWZpCi0JaWYgdGVzdCAtbiAiJHF0X2N2X2xpYnJhcmllcyI7IHRoZW4KLQkJUVRfTERGTEFHUz0iLUwkcXRfY3ZfbGlicmFyaWVzIgotCWZpCi0JQUNfU1VCU1QoUVRfSU5DTFVERVMpCi0JQUNfU1VCU1QoUVRfTERGTEFHUykKLSAKLQlRVF9GSU5EX01PQwotCU1PQz0kYWNfbW9jCi0JQUNfU1VCU1QoTU9DKQotCVFUX0ZJTkRfVUlDCi0JVUlDPSRhY191aWMKLQlBQ19TVUJTVChVSUMpCi0KLQlRVF9DSEVDS19DT01QSUxFCi0gCi0JUVRfTElCPSRxdF9jdl9saWJuYW1lOwotCUFDX1NVQlNUKFFUX0xJQikKLQotCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlRVF9HRVRfVkVSU0lPTgotCWZpCi1dKQotCi1kbmwgQVhfQ1hYRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQotZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENYWCBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NIRUNLX1BSRUNPTVBJTEVEX0hFQURFUl0sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NYWH0gc3VwcG9ydCBwcmVjb21waWxlZCBoZWFkZXJdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLWRubCB3ZSBjb25zaWRlciB0aGFuIGlmIC1XaW52YWxpZC1wY2ggaXMgYWNjZXB0ZWQgcGNoIHdpbGwgd29ya3MgLi4uCi1DWFhGTEFHUz0tV2ludmFsaWQtcGNoCi1kbmwgYnV0IHdlIGRvbid0IHdhbnQgLVdpbnZhbGlkLXBjaCBlbHNlIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBkdWUgLVdlcnJvciBhbmQKLWRubCB0aGUgZmFjdCB0aGFuIHNvbWUgcGNoIHdpbGwgYmUgaW52YWxpZCBmb3IgdGhlIGdpdmVuIGNvbXBpbGF0aW9uIG9wdGlvbgotQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9IC1pbmNsdWRlIGJpdHMvc3RkYysrLmgiLCBBQ19NU0dfUkVTVUxUKFtub10pKQotQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotZG5sIEFYX0NIRUNLX0RPQ0JPT0sKLUFDX0RFRlVOKFtBWF9DSEVDS19ET0NCT09LXSwgWwotIyBJdCdzIGp1c3QgcnVkZSB0byBnbyBvdmVyIHRoZSBuZXQgdG8gYnVpbGQKLVhTTFRQUk9DX0ZMQUdTPS0tbm9uZXQKLURPQ0JPT0tfUk9PVD0KLWlmIHRlc3QgISAtZiAvZXRjL3htbC9jYXRhbG9nOyB0aGVuCi0JZm9yIGkgaW4gL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svc3R5bGVzaGVldC94c2wvbndhbHNoIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy87Ci0JZG8KLQkJaWYgdGVzdCAtZCAiJGkiOyB0aGVuCi0JCQlET0NCT09LX1JPT1Q9JGkKLQkJZmkKLQlkb25lCi0KLQkjIExhc3QgcmVzb3J0IC0gdHJ5IG5ldAotCWlmIHRlc3QgLXogIiRET0NCT09LX1JPT1QiOyB0aGVuCi0JCVhTTFRQUk9DX0ZMQUdTPQotCWZpCi1lbHNlCi0JWE1MX0NBVEFMT0c9L2V0Yy94bWwvY2F0YWxvZwotCUNBVF9FTlRSWV9TVEFSVD0nPCEtLScKLQlDQVRfRU5UUllfRU5EPSctLT4nCi1maQotCi1BQ19DSEVDS19QUk9HKFhTTFRQUk9DLHhzbHRwcm9jLHhzbHRwcm9jLCkKLVhTTFRQUk9DX1dPUktTPW5vCi1pZiB0ZXN0IC1uICIkWFNMVFBST0MiOyB0aGVuCi0JQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHhzbHRwcm9jIHdvcmtzXSkKLQotCWlmIHRlc3QgLW4gIiRYTUxfQ0FUQUxPRyI7IHRoZW4KLQkJREJfRklMRT0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQveGh0bWwvZG9jYm9vay54c2wiCi0JZWxzZQotCQlEQl9GSUxFPSIkRE9DQk9PS19ST09UL2RvY2Jvb2sueHNsIgotCWZpCi0KLQkkWFNMVFBST0MgJFhTTFRQUk9DX0ZMQUdTICREQl9GSUxFID4vZGV2L251bGwgMj4mMSA8PCBFTkQKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9J0lTTy04ODU5LTEnPz4KLTwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIiAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiPgotPGJvb2sgaWQ9InRlc3QiPgotPC9ib29rPgotRU5ECi0JaWYgdGVzdCAiJD8iID0gMDsgdGhlbgotCQlYU0xUUFJPQ19XT1JLUz15ZXMKLQlmaQotCUFDX01TR19SRVNVTFQoJFhTTFRQUk9DX1dPUktTKQotZmkKLUFNX0NPTkRJVElPTkFMKGhhdmVfeHNsdHByb2MsIHRlc3QgIiRYU0xUUFJPQ19XT1JLUyIgPSAieWVzIikKLQotQUNfU1VCU1QoWE1MX0NBVEFMT0cpCi1BQ19TVUJTVChYU0xUUFJPQ19GTEFHUykKLUFDX1NVQlNUKERPQ0JPT0tfUk9PVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9TVEFSVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9FTkQpCi1dKQotCi1kbmwgQVhfQ0ZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDQyBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDQ30gJDIgaXMgdW5kZXJzdG9vZF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTCi1BQ19MQU5HX1JFU1RPUkUKLV0pCi0KLQotZG5sIEFYX0NYWEZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDWFggc3VwcG9ydCBpdC4KLUFDX0RFRlVOKFtBWF9DWFhGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDWFh9ICQyIGlzIHVuZGVyc3Rvb2RdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DWFhGTEFHUz0kU0FWRV9DWFhGTEFHUwotQUNfTEFOR19SRVNUT1JFCi1dKQotCi1kbmwgQVhfQ09QWV9JRl9DSEFOR0Uoc291cmNlLCBkZXN0KQotZG5sIGNvcHkgc291cmNlIHRvIGRlc3QgaWYgdGhleSBkb24ndCBjb21wYXJlIGVxdWFsbHkgb3IgaWYgZGVzdCBkb2Vzbid0IGV4aXN0Ci1BQ19ERUZVTihbQVhfQ09QWV9JRl9DSEFOR0VdLCBbCi1pZiB0ZXN0IC1yICQyOyB0aGVuCi0JaWYgY21wICQxICQyID4gL2Rldi9udWxsOyB0aGVuCi0JCWVjaG8gJDIgaXMgdW5jaGFuZ2VkCi0JZWxzZQotCQljcCAtZiAkMSAkMgotCWZpCi1lbHNlCi0JY3AgLWYgJDEgJDIKLWZpCi1dKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliYjZjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotb3Byb2ZpbGUgZG9lc24ndCB3YW50IEdOVS1sZXZlbHMgb2YgYXV0b21ha2Ugc3RyaWN0bmVzcyBzbyB0ZWxsIGl0IHRvIGJlICJmb3JlaWduIi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NzQwNTg1Li5jZjZjMzE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNiArMTYgQEAgQUNfQ09ORklHX1NSQ0RJUihbbGlib3Avb3BfY29uZmlnLmhdKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRiNDA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1GaXggZ2xpYmMtaXNtcyBzbyB0aGF0IG9wcm9maWxlIGJ1aWxkcyB3aXRoIG11c2wuCi0KLVBhdGNoIHRha2VuIGZyb20gb3BlbndydCAoaHR0cHM6Ly9naXRodWIuY29tL29wZW53cnQtbWlycm9yL29wZW53cnQvYmxvYi9tYXN0ZXIvcGFja2FnZS9kZXZlbC9vcHJvZmlsZS9wYXRjaGVzLzEwMC1tdXNsLnBhdGNoKQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLSBhL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLSsrKyBiL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLUBAIC04NTcsMTEgKzg1NywxNCBAQCBzdGF0aWMgaW50IF9fZGVsZXRlX29sZF9wcmV2aW91c19zYW1wbGVfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGZsYWcgIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEZUVyAqZnR3YnVmIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQotIHsKLSsJaW50IGVycjsKLSsKLSAJaWYgKHJlbW92ZShmcGF0aCkpIHsKLSsJCWVyciA9IGVycm5vOwotIAkJcGVycm9yKCJzYW1wbGUgZGF0YSByZW1vdmFsIGVycm9yIik7Ci0tCQlyZXR1cm4gRlRXX1NUT1A7Ci0rCQlyZXR1cm4gZXJyOwotIAl9IGVsc2UgewotLQkJcmV0dXJuIEZUV19DT05USU5VRTsKLSsJCXJldHVybiAwOwotIAl9Ci0gfQotIAotQEAgLTg5Niw3ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3NhbXBsZV9kYXRhKHZvaWQpCi0gCQlyZXR1cm47Ci0gCi0gCWlmICghb3BlcmZfb3B0aW9uczo6YXBwZW5kKSB7Ci0tICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSCB8IEZUV19BQ1RJT05SRVRWQUw7Ci0rICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSDsKLSAJCWVycm5vID0gMDsKLSAJCWlmIChuZnR3KHByZXZpb3VzX3NhbXBsZWRpci5jX3N0cigpLCBfX2RlbGV0ZV9vbGRfcHJldmlvdXNfc2FtcGxlX2RhdGEsIDMyLCBmbGFncykgIT0wICYmCi0gCQkJCWVycm5vICE9IEVOT0VOVCkgewotLS0tIGEvbGlib3Avb3BfZXZlbnRzLmMKLSsrKyBiL2xpYm9wL29wX2V2ZW50cy5jCi1AQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IHBhcnNlX2hleChjaGFyIGNvbnN0ICogc3RyKQotIHN0YXRpYyB1NjQgcGFyc2VfbG9uZ19oZXgoY2hhciBjb25zdCAqIHN0cikKLSB7Ci0gCXU2NCB2YWx1ZTsKLS0JaWYgKHNzY2FuZihzdHIsICIlTHgiLCAmdmFsdWUpICE9IDEpCi0rCWlmIChzc2NhbmYoc3RyLCAiMHglbGx4IiwgJnZhbHVlKSAhPSAxKQotIAkJcGFyc2VfZXJyb3IoImV4cGVjdGVkIGxvbmcgaGV4YWRlY2ltYWwgdmFsdWUiKTsKLSAKLSAJZmZsdXNoKHN0ZGVycik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvb3Byb2ZpbGUtY3Jvc3MtY29tcGlsZS10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmYTk1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotUHJldmVudCBydW5uaW5nIGNoZWNrIHRlc3RzIG9uIGhvc3QgaWYgY3Jvc3MgY29tcGlsaW5nCi0KLVRoaXMgcGF0Y2ggZW5hYmxlcyBydW5uaW5nIHRoZSAnbWFrZSBjaGVjaycgdGVzdHMgb24gdGhlIHRhcmdldAotaW4gYSBjcm9zcy1jb21waWxlZCBlbnZpcm9ubWVudC4gSWYgbm90IGNyb3NzLWNvbXBpbGluZywgdGhlbiAnbWFrZQotIGNoZWNrJyBidWlsZHMgYW5kIGV4ZWN1dGVzIHRoZSB0ZXN0czsgbm8gY2hhbmdlIGZyb20gdGhpcyBwYXRjaC4KLUluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50LCB0aGUgbWFrZSB2YXJpYWJsZSBDUk9TU19DT01QSUxFIGlzCi1zZXQgd2hpY2ggYnlwYXNzZXMgYXNzaWdpbmcgdGVzdHMgdG8gdGhlIG1ha2VrZmlsZSB2YXJpYWJsZSBURVNUUy4KLVNpbmNlIFRFU1RTIGlzIGVtcHR5LCB0aGUgJ21ha2UgY2hlY2snIHByb2Nlc3MgbmV2ZXIgdHJpZXMgdG8gcnVuIHRoZQotdGVzdHMgb24gdGhlIGhvc3RzLiAgT24gdGhlIHRhcmdldCwgdGhlIHRlc3RzIG11c3QgYmUgcnVuIG1hbnVhbGx5LgotCi1BbHNvLCBpbiB0aGUgbGlidXRpbCsrIHRlc3RzLCBhIG1ha2VmaWxlIHZhcmlhYmxlIFNSQ0RJUiBpcyBwYXNzZWQgaW50bwotdGhlIGNvbXBpbGF0aW9uIHBoYXNlLCBwb2ludGluZyB0byB0aGUgcnVudGltZSBsb2NhdGlvbiBvZiB0aGUgdGVzdAotJ2ZpbGUtbWFuaXAtdGVzdHMnLiAgVGhlIG1lY2hhbmlzbSB1c2VkIGZvciBhIGhvc3QgdGVzdCwgYmFzZWQgb24KLSd0b3BkaXInIGRvZXNuJ3Qgd29yay4gIEluc3RlYWQsIGlmIENST1NTX0NPTVBJTEUgaXMgc2V0LCB0aGUKLW1ha2VmaWxlIHRha2VzIHRoZSBwYXRoIG9mIFNSQ0RJUiBmcm9tIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgbm90Ci1mcm9tIGFuIGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIGhvc3QgcGF0aCAndG9wZGlyJy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0MWVjZTY0Li5jZTVhMTZmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTIsNiArMzkyLDcgQEAgQUNfQVJHX0VOQUJMRShhY2NvdW50LWNoZWNrLAotIAllbmFibGVfYWNjb3VudF9jaGVjaz0kZW5hYmxldmFsLCBlbmFibGVfYWNjb3VudF9jaGVjaz15ZXMpCi0gCi0gQU1fQ09ORElUSU9OQUwoQ0hFQ0tfQUNDT1VOVCwgdGVzdCAieCRlbmFibGVfYWNjb3VudF9jaGVjayIgPSAieHllcyIpCi0rQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMRSwgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInh5ZXMiKQotIAotIEFDX1NVQlNUKE9QX0NGTEFHUykKLSBBQ19TVUJTVChPUF9DWFhGTEFHUykKLWRpZmYgLS1naXQgYS9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTY5MDAzLi5kODIwMDkwIDEwMDY0NAotLS0tIGEvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTMsNCArMTMsNiBAQCBjaGVja19QUk9HUkFNUyA9IGRiX3Rlc3QKLSBkYl90ZXN0X1NPVVJDRVMgPSBkYl90ZXN0LmMKLSBkYl90ZXN0X0xEQUREID0gLi4vbGlib2RiLmEgLi4vLi4vbGlidXRpbC9saWJ1dGlsLmEKLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9Ci0rZW5kaWYKLWRpZmYgLS1naXQgYS9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTc5ZWI1Li42ZDQxN2M0IDEwMDY0NAotLS0tIGEvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzMsNCArMzMsNiBAQCBsb2FkX2V2ZW50c19maWxlc190ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gbWFuZ2xlX3Rlc3RzX1NPVVJDRVMgPSBtYW5nbGVfdGVzdHMuYwotIG1hbmdsZV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfSB1dGY4X2NoZWNrZXIuc2gKLStlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDZmMTk4MzguLjFkMTc2ZjkgMTAwNjQ0Ci0tLS0gYS9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xOCw0ICsxOCw2IEBAIGphdmFfdGVzdF9MREFERCA9IFwKLSAKLSBFWFRSQV9ESVNUID0gbWFuZ2xlZC1uYW1lLmluCi0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA1MWFmMDMxLi5hMDFlYTJkIDEwMDY0NAotLS0tIGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsOSBAQAotIAotIFJFQUxQQVRIPSByZWFkbGluayAtZgotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFNSQ0RJUiA6PSAkKHNoZWxsICQoUkVBTFBBVEgpICQodG9wZGlyKS9saWJ1dGlsKysvdGVzdHMvICkKLStlbmRpZgotIAotIEFNX0NQUEZMQUdTID0gXAotIAktSSAke3RvcF9zcmNkaXJ9L2xpYnV0aWwrKyAtRCBTUkNESVI9IlwiJChTUkNESVIpL1wiIiBAT1BfQ1BQRkxBR1NACi1AQCAtNDYsNCArNDgsNiBAQCBjYWNoZWRfdmFsdWVfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQotIHV0aWxpdHlfdGVzdHNfU09VUkNFUyA9IHV0aWxpdHlfdGVzdHMuY3BwCi0gdXRpbGl0eV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGRmY2Q2ZWMuLmU4ODMxYjUgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTIsNCArMTIsNiBAQCBmaWxlX3Rlc3RzX0xEQUREID0gLi4vbGlidXRpbC5hCi0gc3RyaW5nX3Rlc3RzX1NPVVJDRVMgPSBzdHJpbmdfdGVzdHMuYwotIHN0cmluZ190ZXN0c19MREFERCA9IC4uL2xpYnV0aWwuYQotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KLStlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYWY2YTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLW9wcm9maWxlOiBEZXRlcm1pbmUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnkgZHluYW1pY2FsbHkKLQotVGhpcyBjb21taXQgZGV0ZWN0cyB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseSB3aXRoIGNoYW5nZXMgdG8KLXRoZSBvcHJvZmlsZSBndWkgYXBwIHNvdXJjZS4KLQotVGhlIGNvbW1pdCByZXBsYWNlcyBhbiBlYXJsaWVyIGZpeCB0aGF0IGRldGVjdGVkIGFuZCBhZGp1c3RlZCBhCi0nbm9uLXN0YW5kYXJkJyByb290IGhvbWUgZGlyZWN0b3J5IGF0IGJ1aWxkIHRpbWUuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMKLXBhdGNoIGlzIHRoYXQgdGhlIG9wcm9maWxlIHRvb2xzIGFyZSBhZGp1c3RlZCB0byB0aGUgY3VycmVudCBydW4tdGltZQotcGF0aCB0byB+cm9vdCwgbm90IHRoZSBidWlsZCB0aW1lIHBhdGguCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcHJvZmlsZS0xLjAuMC5vcmlnL2RvYy9vcHJvZmlsZS5odG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTExMDM0ODU3ICswMDAwCi0rKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NzoyNi40MTUwMzc5ODggKzAwMDAKLUBAIC0xNTYzLDggKzE1NjMsOCBAQAotIAkJPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bXVzdDwvZW0+PC9zcGFuPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcwotIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlIGNsYXNzPSJjb2RlIj5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fnJvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcD4KLSAgICAgICAgICAgICAgIDwvZGQ+Ci0gICAgICAgICAgICAgICA8ZHQ+Ci1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU1OjMxLjUxNTAzNDg1NyArMDAwMAotKysrIG9wcm9maWxlLTEuMC4wL2RvYy9vcHJvZmlsZS54bWwJMjAxNC0xMS0wMyAxNzo1ODowMy43MTkwMzkwMDUgKzAwMDAKLUBAIC02NTQsOCArNjU0LDggQEAKLSAJCTxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gc3RvcCBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyIGluIG9yZGVyIHRvIHByb2Nlc3MKLSAJCXRoZSBwcm9maWxlIGRhdGEgaXQgaGFzIGNvbGxlY3RlZC4gIFVzZSA8Y29kZT5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8Y29tbWFuZD5vcGVyZjwvY29tbWFuZD4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxmaWxlbmFtZT4vcm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxmaWxlbmFtZT5+cm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcGFyYT48L2xpc3RpdGVtPgotIAk8L3Zhcmxpc3RlbnRyeT4KLSAJPHZhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxNGJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIS9iaW4vc2gKLQotc2F2ZWRfZGlyPSRQV0QKLWZvciBkaXIgaW4gKi90ZXN0cyA7IGRvCi0JY2QgJGRpcgotCWZvciBhdGVzdCBpbiAqIDsgZG8KLQkJaWYgWyBcKCAteCAkYXRlc3QgXCkgLWEgXCggLWYgJGF0ZXN0IFwpIF0gOyB0aGVuCi0JCQkuLyRhdGVzdCA+ICR7YXRlc3R9LnN0ZG91dCAyPiAke2F0ZXN0fS5zdGRlcnIKLQkJCWlmIFsgJD8gPSAwIF0gOyB0aGVuCi0JCQkJZWNobyAiUEFTUzogJGRpciAkYXRlc3QiCi0JCQkJcm0gJHthdGVzdH0uc3Rkb3V0ICR7YXRlc3R9LnN0ZGVycgotCQkJZWxzZQotCQkJCWVjaG8gIkZBSUw6ICR7ZGlyfS8ke2F0ZXN0fSIKLQkJCWZpCi0JCWZpCi0JZG9uZQotCWNkICRzYXZlZF9kaXIKLWRvbmUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhOTRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgb3Byb2ZpbGUuaW5jCi0KLURFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgotREVQRU5EU19hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJwZm00IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQ4YzRjMDY5Zjk0NzZmNDI3ZmE3MTk1NTYzZjk4NjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Y3NTlhNmRlMWE2MDMzZDVkZmM5M2JkYTEyOWE5ZjJlMTI4YWVjYzQyMzhjYzY1N2ZlYjA4MDFkMWIwMzY2YyIKLQotUyA9ICIke1dPUktESVJ9L29wcm9maWxlLSR7UFZ9IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggYjc5Yjk3My4uNTFmNTU5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMjIsMTEgKzIyLDE0IEBACiBQQUNLQUdFQ09ORklHW3N5c3RlbXRhcF0gPSAiLE5PX1NEVD0xLHN5c3RlbXRhcCIKIFBBQ0tBR0VDT05GSUdbanZtdGldID0gIixOT19KVk1UST0xIgogCisjIGxpYmF1ZGl0IHN1cHBvcnQgd291bGQgbmVlZCBzY3JpcHRpbmcgdG8gYmUgZW5hYmxlZAorUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLE5PX0xJQkFVRElUPTEsYXVkaXQiCisKIERFUEVORFMgPSAiIFwKICAgICB2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyBcCiAgICAgJHtNTFBSRUZJWH1lbGZ1dGlscyBcCiAgICAgJHtNTFBSRUZJWH1iaW51dGlscyBcCi0gICAgYmlzb24gZmxleCB4eiBcCisgICAgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIHh6IFwKICAgICB4bWx0by1uYXRpdmUgXAogICAgIGFzY2lpZG9jLW5hdGl2ZSBcCiAiCkBAIC0zNSw5ICszOCwxMCBAQAogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL3BlcmYiCiAKLWluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLWFyY2ggcHl0aG9ubmF0aXZlCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQeXRob24gYmluZGluZ3MKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0KIGluaGVyaXQgcHl0aG9uLWRpcgogZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCiAKQEAgLTQ3LDcgKzUxLDggQEAKIGRvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQZXJsIGJpbmRpbmcKLWluaGVyaXQgcGVybG5hdGl2ZSBjcGFuLWJhc2UKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmxuYXRpdmUnLCAnJywgZCl9Citpbmhlcml0IGNwYW4tYmFzZQogIyBFbnYgdmFyIHdoaWNoIHRlbGxzIHBlcmwgaWYgaXQgc2hvdWxkIHVzZSBob3N0IChubykgb3IgdGFyZ2V0ICh5ZXMpIHNldHRpbmdzCiBleHBvcnQgUEVSTENPTkZJR1RBUkdFVCA9ICIke0Bpc190YXJnZXQoZCl9IgogZXhwb3J0IFBFUkxfSU5DID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0vQ09SRSIKQEAgLTU2LDcgKzYxLDcgQEAKIAogaW5oZXJpdCBrZXJuZWxzcmMKIAotQiA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS8ke0JQfSIKIFNQRFhfUyA9ICIke1N9L3Rvb2xzL3BlcmYiCiAKICMgVGhlIExERkxBR1MgaXMgcmVxdWlyZWQgb3Igc29tZSBvbGQga2VybmVscyBmYWlscyBkdWUgbWlzc2luZwpAQCAtOTIsNiArOTcsMTcgQEAKICAgICAnaW5mb2Rpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoaW5mb2RpciwgcHJlZml4KX0nIFwKICIKIAorUEVSRl9TUkMgPz0gIk1ha2VmaWxlIFwKKyAgICAgICAgICAgICBpbmNsdWRlIFwKKyAgICAgICAgICAgICB0b29scy9hcmNoIFwKKyAgICAgICAgICAgICB0b29scy9idWlsZCBcCisgICAgICAgICAgICAgdG9vbHMvaW5jbHVkZSBcCisgICAgICAgICAgICAgdG9vbHMvbGliIFwKKyAgICAgICAgICAgICB0b29scy9NYWtlZmlsZSBcCisgICAgICAgICAgICAgdG9vbHMvcGVyZiBcCisgICAgICAgICAgICAgdG9vbHMvc2NyaXB0cyBcCisiCisKIFBFUkZfRVhUUkFfTERGTEFHUyA9ICIiCiAKICMgTUlQUyBOMzIKQEAgLTExNCwxMSArMTMwLDIyIEBACiAJZmkKIH0KIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgRml4IGZvciByZWJ1aWxkaW5nCi0gICAgcm0gLXJmICR7Qn0vCi0gICAgbWtkaXIgLXAgJHtCfS8KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImNvcHlfcGVyZl9zb3VyY2VfZnJvbV9rZXJuZWwiCitweXRob24gY29weV9wZXJmX3NvdXJjZV9mcm9tX2tlcm5lbCgpIHsKKyAgICBzb3VyY2VzID0gKGQuZ2V0VmFyKCJQRVJGX1NSQyIpIG9yICIiKS5zcGxpdCgpCisgICAgc3JjX2RpciA9IGQuZ2V0VmFyKCJTVEFHSU5HX0tFUk5FTF9ESVIiKQorICAgIGRlc3RfZGlyID0gZC5nZXRWYXIoIlMiKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0X2RpcikKKyAgICBmb3IgcyBpbiBzb3VyY2VzOgorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4oc3JjX2RpciwgcykKKyAgICAgICAgZGVzdCA9IG9lLnBhdGguam9pbihkZXN0X2RpciwgcykKKyAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgICAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKHNyYywgZGVzdCkKK30KIAorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICMgSWYgYnVpbGRpbmcgYSBtdWx0bGliIGJhc2VkIHBlcmYsIHRoZSBpbmNvcnJlY3QgbGlicmFyeSBwYXRoIHdpbGwgYmUKICAgICAjIGRldGVjdGVkIGJ5IHBlcmYsIHNpbmNlIGl0IHRyaWdnZXJzIHZpYTogaWZlcSAoJChBUkNIKSx4ODZfNjQpLiBJbiBhIDMyIGJpdAogICAgICMgYnVpbGQsIHdpdGggYSA2NCBiaXQgbXVsdGlsaWIsIHRoZSBhcmNoIHdvbid0IG1hdGNoIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEgCkBAIC0yMTQsMjAgKzI0MSwyMSBAQAogUkRFUEVORFNfJHtQTn0gKz0gImVsZnV0aWxzIGJhc2giCiBSREVQRU5EU18ke1BOfS1kb2MgKz0gIm1hbiIKIFJERVBFTkRTXyR7UE59LWFyY2hpdmUgPSsgImJhc2giCi1SREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0rICJiYXNoIHB5dGhvbiBweXRob24tbW9kdWxlcyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdWRpdCcsICdhdWRpdC1weXRob24nLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tcGVybCA9KyAiYmFzaCBwZXJsIHBlcmwtbW9kdWxlcyIKIFJERVBFTkRTXyR7UE59LXRlc3RzID0rICJweXRob24iCiAKIFJTVUdHRVNUU19TQ1JJUFRJTkcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJyR7UE59LXBlcmwgJHtQTn0tcHl0aG9uJywgJycsZCl9IgogUlNVR0dFU1RTXyR7UE59ICs9ICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UlNVR0dFU1RTX1NDUklQVElOR30iCiAKLSNGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUgJHtleGVjX3ByZWZpeH0vbGliZXhlYy9wZXJmLWNvcmUgL3Vzci9saWI2NC90cmFjZWV2ZW50ICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlICR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMvcGVyZi1jb3JlICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0tYXJjaGl2ZSA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvcGVyZi1hcmNoaXZlIgogRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3Rlc3RzICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3Rlc3RzIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9wZXJmL3BlcmYtY29yZS9zY3JpcHRzL3B5dGhvbiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvc2NyaXB0cy9weXRob24vKiIKLUZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcGVybCIKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3NjcmlwdHMvcHl0aG9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmV4ZWNkaXJ9L3BlcmYtY29yZS9zY3JpcHRzL3BlcmwiCiAKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPSIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3AvMDAwMS1pbmNsdWRlLXJxdWlyZWQtaGVhZGVycy1mb3ItdHlwZWRlZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkNjMxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMDg1NmQ4MTQ1ZDE4N2E3ZTVhNDk2MjUyNDdhYmU0M2ExM2Y5NWFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDE5OjM2OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgcnF1aXJlZCBoZWFkZXJzIGZvciB0eXBlZGVmcwotCi10aW1ldmFsIHN0cnVjdCBuZWVkcyB0byBpbmNsdWRlIHN5cy90aW1lLmggYW5kIHNwcmludGYoKSB1c2FnZSByZXF1aXJlcwotdG8gaW5jbHVkZSBzdGRpby5oIGhlYWRlcnMgZnJvbSBzeXN0ZW0KLQotRml4ZXMKLXNyYy9wZXJmL3BlcmZfYnVuZGxlLmNwcDoxNDE6MjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3NwcmludGYnOyBkaWQgeW91IG1lYW4gJ3Zzd3ByaW50Zic/Ci1zcmMvZGV2aWNlcy9kZXZmcmVxLmg6MzU6MTg6IGVycm9yOiBmaWVsZCBoYXMgaW5jb21wbGV0ZSB0eXBlICdzdHJ1Y3QgdGltZXZhbCcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvZGV2aWNlcy9kZXZmcmVxLmggICAgfCAxICsKLSBzcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oIGIvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi1pbmRleCAxNmE2MGZiLi40YmVkZTdjIDEwMDY0NAotLS0tIGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi0rKysgYi9zcmMvZGV2aWNlcy9kZXZmcmVxLmgKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2lmbmRlZiBfSU5DTFVERV9HVUFSRF9ERVZGUkVRX0gKLSAjZGVmaW5lIF9JTkNMVURFX0dVQVJEX0RFVkZSRVFfSAotIAotKyNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlICJkZXZpY2UuaCIKLSAjaW5jbHVkZSAiLi4vcGFyYW1ldGVycy9wYXJhbWV0ZXJzLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwIGIvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi1pbmRleCBjZjFhZTExLi4yMzJmODk0IDEwMDY0NAotLS0tIGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi0rKysgYi9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGFsZ29yaXRobT4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDdhM2U3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG93ZXIgdXNhZ2UgdG9vbCIKLURFU0NSSVBUSU9OID0gIkxpbnV4IHRvb2wgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggcG93ZXIgY29uc3VtcHRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovLzAxLm9yZy9wb3dlcnRvcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5sZXNzd2F0dHMub3JnLyIKLURFUEVORFMgPSAibmN1cnNlcyBsaWJubCBwY2l1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG93bmxvYWRzL3Bvd2VydG9wL3Bvd2VydG9wLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTVmZWRiNjkyMDNlNDgwODAxYjE4YmQ3Yjg4NjI0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODdiNTYzZjczMTA2YmFiZmEzZTc0ZGNmOTJmMjUyOTM4YzA2MWUzMDlhY2UyMGEzNjEzNThiYmZhNTc5YzVhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIHdlIGRvIG5vdCB3YW50IGxpYm5jdXJzZXN3IGlmIHdlIGNhbgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBjb25maWd1cmUuYWMgY2hlY2tzIGZvciBkZWx3aW4oKSBpbiAibmN1cnNlc3cgbmN1cnNlcyIgc28gbGV0J3MgZHJvcCBmaXJzdCBvbmUKLSAgICBzZWQgLWkgLWUgInMvbmN1cnNlc3cvL2ciICR7U30vY29uZmlndXJlLmFjCi0gICAgbWtkaXIgLXAgJHtCfS9zcmMvdHVuaW5nLwotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBvd2VydG9wIgotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTU0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjkuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgorREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgorREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgorCitTUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM1MThjNWM0NDM0YzZlOWI5YzU4YzM5MjA5NTBiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTdmYjdkOGU5YTAwZjA1ZTdkOGE3YTI4NjZkODU5Mjk3NDFlMGQwM2E1YmY0MGNhYjIyZDIwMjFjOTU5MjUwIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicG93ZXJ0b3AtW3ZdPyg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vJHtCUE59LXYke1BWfSIKKworIyB3ZSBkbyBub3Qgd2FudCBsaWJuY3Vyc2VzdyBpZiB3ZSBjYW4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgY29uZmlndXJlLmFjIGNoZWNrcyBmb3IgZGVsd2luKCkgaW4gIm5jdXJzZXN3IG5jdXJzZXMiIHNvIGxldCdzIGRyb3AgZmlyc3Qgb25lCisgICAgc2VkIC1pIC1lICJzL25jdXJzZXN3Ly9nIiAke1N9L2NvbmZpZ3VyZS5hYworICAgIG1rZGlyIC1wICR7Qn0vc3JjL3R1bmluZy8KK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmYzNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDI3ZGY1MjFjNjhlN2M4YjViMDUwZGFiMTVmNDBhYTE1ZmQwMzYyM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDE0OjU4OjI0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGJ1aWxkaW5nIGRvY3MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAyICstCi0gbTQveWVscC5tNCAgfCA2IC0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiOTE5YTNmLi4zYTM4NTFkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1TVUJESVJTID0gZGFlbW9uIGRhdGEgaGVscCBsaWIgcG8gc3JjIHRvb2xzIHRlc3RzCi0rU1VCRElSUyA9IGRhZW1vbiBkYXRhIGxpYiBwbyBzcmMgdG9vbHMgdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gQVVUSE9SUyB0YXAtdGVzdCBDT1BZSU5HLmdwbC0yCi0gCi1kaWZmIC0tZ2l0IGEvbTQveWVscC5tNCBiL200L3llbHAubTQKLWluZGV4IDVkYjg0N2YuLjFiNmVkZTQgMTAwNjQ0Ci0tLS0gYS9tNC95ZWxwLm00Ci0rKysgYi9tNC95ZWxwLm00Ci1AQCAtMjcsMTIgKzI3LDYgQEAgQUNfQVJHX1dJVEgoW2hlbHAtZGlyXSwKLSBIRUxQX0RJUj0iJHdpdGhfaGVscF9kaXIiCi0gQUNfU1VCU1QoSEVMUF9ESVIpCi0gCi0tQUNfQVJHX1ZBUihbSVRTVE9PTF0sIFtQYXRoIHRvIHRoZSBgaXRzdG9vbGAgY29tbWFuZF0pCi0tQUNfQ0hFQ0tfUFJPRyhbSVRTVE9PTF0sIFtpdHN0b29sXSwgW2l0c3Rvb2xdKQotLWlmIHRlc3QgeCIkSVRTVE9PTCIgPSB4OyB0aGVuCi0tICBBQ19NU0dfRVJST1IoW2l0c3Rvb2wgbm90IGZvdW5kXSkKLS1maQotLQotIEFDX0FSR19WQVIoW1hNTExJTlRdLCBbUGF0aCB0byB0aGUgYHhtbGxpbnRgIGNvbW1hbmRdKQotIEFDX0NIRUNLX1BST0coW1hNTExJTlRdLCBbeG1sbGludF0sIFt4bWxsaW50XSkKLSBpZiB0ZXN0IHgiJFhNTExJTlQiID0geDsgdGhlbgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDg1MjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3NjVkNTc4MTQ1ZTMxZGRjOTQ5NWFkZmFiODAzN2FkZTMzYzZhOWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAxMDo1OTozNiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGNoZWNrIGZvciBwb2xraXQgZm9yIFVJCi0KLVRoZSBjaGVjayBpcyBub3QgdGVjaG5pY2FsbHkgcmVxdWlyZWQ6IHN5c3Byb2YganVzdCBuZWVkcwotdG8gYmUgYWJsZSB0byBhY2Nlc3Mgc3lzdGVtIHBlcmYgY291bnRlcnMgYXQgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU1OTU5Ny4uZWNmOTNhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTMxLDggKzEzMSw4IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSBhdXRvXSxbCi0gCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyIgJiYgdGVzdCAiJGhhdmVfcG9sa2l0IiA9ICJ5ZXMiXSxbZW5hYmxlX2d0az15ZXNdLFtlbmFibGVfZ3RrPW5vXSkKLSBdKQotIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIl0sWwotLQlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiICYmIHRlc3QgIiRoYXZlX3BvbGtpdCIgPSAieWVzIl0sW10sWwotLQkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1ndGsgcmVxdWlyZXMgZ3RrKy0zLjAgPj0gZ3RrX3JlcXVpcmVkX3ZlcnNpb24gYW5kIHBvbGtpdC1nb2JqZWN0LTFdKQotKwlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiXSxbXSxbCi0rCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWd0ayByZXF1aXJlcyBndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbl0pCi0gCV0pCi0gXSkKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfR1RLLCB0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIikKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjhmZGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBjMjQ5NWE0YzA0MmU2YTY3NWRhNjliYWIyMGNjMzY2OTM5MWU4ZTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE4OjM4OjI2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA0YWMzOTM0Li44YzQzNjlhIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTE2LDcgKzExNiw2IEBAIHN1YmRpcigndG9vbHMnKQorIHN1YmRpcigndGVzdHMnKQorIAorIHN1YmRpcignZGF0YScpCistc3ViZGlyKCdoZWxwJykKKyBzdWJkaXIoJ3BvJykKKyAKKyBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbl9wb3N0X2luc3RhbGwuc2gnKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OGQ5OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gMmI0MDA1ZDcyZDMzOTM5MzNhNzkxNGJlMTAyZWE2NTUwNWM1MzZjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIxIEp1bCAyMDE2IDExOjUzOjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBwb2xraXQKLQotQ2hhbmdlcyB0aGUgY29uZmlndXJlIGJlaGF2aW91ciBmcm9tIGF1dG9kZXRlY3RpbmcgdGhlIHBvbGtpdCBieSBkZWZhdWx0Ci10byBoYXZpbmcgYW4gb3B0aW9uIHRvIGRpc2FibGUgaXQgZXhwbGljaXRseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjQ2ZDVhLi4zZDNmZTBmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDQsMTAgKzEwNCwxOCBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssCi0gICAgICAgICAgICAgICAgICAgW2d0aystMy4wID49IGd0a19yZXF1aXJlZF92ZXJzaW9uXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9eWVzXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9bm9dKQotK0FDX0FSR19FTkFCTEUoW3BvbGtpdF0sCi0rICAgICAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcG9sa2l0XSwgW0RvIG5vdCB1c2UgUG9sa2l0XSksCi0rICAgICAgICAgICAgICAgICAgIFtlbmFibGVfcG9sa2l0PSIkZW5hYmxldmFsIl0sIFtlbmFibGVfcG9sa2l0PSJ5ZXMiXSkKLSsKLStBU19JRihbdGVzdCAieCRlbmFibGVfcG9sa2l0IiA9ICJ4eWVzIl0sIFsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhQT0xLSVQsCi0gICAgICAgICAgICAgICAgICAgW3BvbGtpdC1nb2JqZWN0LTFdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD15ZXNdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD1ub10pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotK0FNX0NPTkRJVElPTkFMKFtIQVZFX1BPTEtJVF0sIFt0ZXN0ICJ4JGVuYWJsZV9wb2xraXQiID0gInh5ZXMiXSkKLSsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1ELAotICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IHN5c3RlbWRfcmVxdWlyZWRfdmVyc2lvbl0sCi0gICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZD15ZXNdLAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhMjdiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMmI0NGFlMWQ4Y2Q4OTk0MTcyOTRhOWM0NTA5ZDc4NzAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNTRlZWJlMmFmYjZmZTNjMDZhYzhjNDZiYzA0NWM0MmY2NzVkNGZkNjRlNmYxNmNiYzYwMmQ1YzdjZTI3YmVjIgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ODliNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ZjlmOTQ3OTYwYmE3OWJiMTI2OWQ4ZWU0OWI3ZGI3OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ4YjlkNWMyMjQ2Njk2ZTRhMzc3NmEzMTI3MzFkYzdjMDE0ZmJkMzM0NzhiYjE0ZDU1MTJjNmYxZjM1YTNiMTEiCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKKworU09MSUJTID0gIi5zbyIKK0ZJTEVTX1NPTElCU0RFViA9ICIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZWI1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYTcxNDY1ODcyNzIwNmQyYTk4YTcxOTRiN2U2ZDI5ZGJkM2UyN2I4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTkgTWFyIDIwMTggMTY6NTA6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkZWQgYSBjb3VwbGUgb2Ygc21hbGwgc3lzcm9vdCBmaXhlcy4KKworKiB0YXBzZXRzLmN4eCAoZHdhcmZfYnVpbGRlcjo6YnVpbGQpOiBGaXggY29tbWl0IDRmZmVjZGRmNS4KKyAgKHBhdGhfcmVtb3ZlX3N5c3Jvb3QpOiBGaXggZXh0cmEgJy8nIHByZXNlbnQgYXQgc3RhcnQgb2YgcGF0aHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdGFwc2V0cy5jeHggfCAxMCArKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC90YXBzZXRzLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3RhcHNldHMuY3h4CisrKysgZ2l0L3RhcHNldHMuY3h4CitAQCAtMTM5NSw3ICsxMzk1LDggQEAgc3RyaW5nIHBhdGhfcmVtb3ZlX3N5c3Jvb3QoY29uc3Qgc3lzdGVtdAorICAgc3RyaW5nIHJldHZhbCA9IHBhdGg7CisgICBpZiAoIXNlc3Muc3lzcm9vdC5lbXB0eSgpICYmCisgICAgICAgKHBvcyA9IHJldHZhbC5maW5kKHNlc3Muc3lzcm9vdCkpICE9IHN0cmluZzo6bnBvcykKKy0gICAgcmV0dmFsLnJlcGxhY2UocG9zLCBzZXNzLnN5c3Jvb3QubGVuZ3RoKCksICIvIik7CisrICAgIHJldHZhbC5yZXBsYWNlKHBvcywgc2Vzcy5zeXNyb290Lmxlbmd0aCgpLAorKwkJICAgKHNlc3Muc3lzcm9vdC5iYWNrKCkgPT0gJy8nID8gIi8iOiAiIikpOworICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCitAQCAtODQxMiw4ICs4NDEzLDExIEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworLSAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKysgICAgICB1c2VyX3BhdGggPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV9uYW1lLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0CisrICAgICAgLy8gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIHBhc3MgdGhlIHN5c3Jvb3QgdG8KKysgICAgICAvLyBpc19mdWxseV9yZXNvbHZlZCgpLCBzaW5jZSB3ZSBqdXN0IHBhc3NlZCBpdCB0bworKyAgICAgIC8vIGZpbmRfZXhlY3V0YWJsZSgpLgorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3BhdGgudG9fc3RyaW5nKCkuY19zdHIoKSkpOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTk1MWEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA0ZmZlY2RkZjU0MzNkNjVhNmYwMTI0MTk5MGM5ZDUxNjU4NmIxYzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBNb24sIDE5IE1hciAyMDE4IDA4OjUzOjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIERlbGF5IGFkZGluZyBzeXNyb290IHBhdGggdG8gbW9kdWxlIG5hbWUgaW4gY2FzZSBvZiBub24KKyBhYnNvbHV0ZSBleGVjdXRhYmxlCisKK0N1cnJlbnQgc3RhcCBjb2RlIGFkZHMgc3lzcm9vdCBwcmVtYXR1cmVseSBmb3IgcHJvYmVzIHRoYXQgc3BlY2lmeSBub24KK2Fic29sdXRlIHBhdGggbmFtZSwgaS5lIGxpa2UgImZvbyIsIHNvIHdoZW4gZmluZF9leGVjdXRhYmxlIGNhbGxlZCBpdAorcmVjZWl2ZXMgZnVsbCBwYXRoIGFzIDxzeXNyb290Pi9mb28gYW5kIGZpbmRfZXhlY3V0YWJsZSBkb2VzIG5vdCBzZWFyY2gKK1BBVEggd2hpbGUgYXBwbHlpbmcgc3lzcm9vdC4KKworRml4IGRlbGF5cyBhZGRpbmcgc3lzcm9vdCB0aWxsIHBhdGggaW5zaWRlIG9mIHN5c3Jvb3QgaXMgc2VhcmNoZWQgZmlyc3QuCisKK0Fsc28gZml4IG1pc3Npbmcgc3lzcm9vdCBhZGRpdGlvbiBpbiBnbG9iIGV4cGFuc2lvbiBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHRhcHNldHMuY3h4IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvdGFwc2V0cy5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90YXBzZXRzLmN4eAorKysrIGdpdC90YXBzZXRzLmN4eAorQEAgLTc0Niw3ICs3NDYsNyBAQCBiYXNlX3F1ZXJ5OjpiYXNlX3F1ZXJ5KGR3ZmxwcCAmIGR3LCBsaXRlCisgICAgICAgICAgICAgICBwaWRfdmFsID0gMDsKKyAgICAgICAgICAgICAgIGdldF9zdHJpbmdfcGFyYW0ocGFyYW1zLCBUT0tfUFJPQ0VTUywgbW9kdWxlX3ZhbCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpOworKyAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsKKyAgICAgICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV92YWwudG9fc3RyaW5nKCkuY19zdHIoKSkpOworQEAgLTgyODcsNyArODI4Nyw2IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9IChzdHJpbmcpc2Vzcy5zeXNyb290ICsgKHN0cmluZyltb2R1bGVfbmFtZTsKKyAgICAgICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzW1RPS19QUk9DRVNTXSA9IG5ldyBsaXRlcmFsX3N0cmluZyhtb2R1bGVfbmFtZSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorQEAgLTgzMjEsNyArODMyMCw4IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgYXNzZXJ0IChsaXQpOworIAorICAgICAgICAgICAvLyBFdmFsdWF0ZSBnbG9iIGhlcmUsIGFuZCBjYWxsIGRlcml2ZV9wcm9iZXMgcmVjdXJzaXZlbHkgd2l0aCBlYWNoIG1hdGNoLgorLSAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUpOworKyAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAoc2Vzcy5zeXNyb290CisrCQkJCQkgICAgICAgKyBzdHJpbmcobW9kdWxlX25hbWUpKTsKKyAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0c19wcmUgPSBmaW5pc2hlZF9yZXN1bHRzLnNpemUoKTsKKyAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gZ2xvYnMuYmVnaW4oKTsgaXQgIT0gZ2xvYnMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgeworQEAgLTg0MTMsNyArODQxMyw3IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworICAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKyAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wYXRoLnRvX3N0cmluZygpLmNfc3RyKCkpKTsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwYzNiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoCkBAIC0wLDAgKzEsMjc3IEBACitGcm9tIGZiYjI2ZTE3YTRjMDI2ZjA1YTQ5N2ZjNWQ1ODQ1MTZiYWQzYjY5NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDYgRGVjIDIwMTcgMTQ6Mzc6NDIgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IFBSMjI1NTEgYnkgdXBkYXRpbmcgdGhlIHVzZSBvZiB0aW1lcnMgZm9yIHRoZSA0LjE1Cisga2VybmVsLgorCisqIHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oOiBOZXcgZmlsZS4KKyogcnVudGltZS90aW1lLmM6IFVwZGF0ZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIgdHlwZS4gVXBkYXRlCisgIHRpbWVyIGluaXRpYWxpemF0aW9uLgorKiBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jOiBEaXR0by4KKyogcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmM6IERpdHRvLgorKiB0YXBzZXQtdGltZXJzLmN4eCAodGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfZGVjbHMpOgorICBEaXR0by4gSGFuZGxlIG9sZCBhbmQgbmV3IHRpbWVyIGNhbGxiYWNrIGludGVyZmFjZS4KKyogcnVudGltZS9saW51eC9ydW50aW1lLmg6IEluY2x1ZGUgdGltZXJfY29tcGF0aWJpbGl0eS5oIGluc3RlYWQgb2YgdGltZXIuaC4KKyogdGFwc2V0L2xpbnV4L3Njc2kuc3RwOiBEaXR0by4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CisKKy0tLQorIHJ1bnRpbWUvbGludXgvcnVudGltZS5oICAgICAgICAgICAgIHwgIDIgKy0KKyBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBydW50aW1lL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jICAgICAgICB8ICA4ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYyAgICAgICB8IDEzICsrKy0tLS0KKyB0YXBzZXQtdGltZXJzLmN4eCAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrLS0KKyB0YXBzZXQvbGludXgvc2NzaS5zdHAgICAgICAgICAgICAgICB8ICAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCisKK2RpZmYgLS1naXQgYS9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaCBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitpbmRleCA5YzU4NWEyLi5kZjliNzRjIDEwMDY0NAorLS0tIGEvcnVudGltZS9saW51eC9ydW50aW1lLmgKKysrKyBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitAQCAtMzQsNyArMzQsNyBAQAorICNpbmNsdWRlIDxsaW51eC9jb21wYXQuaD4KKyAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAidGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+CisgI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+CitkaWZmIC0tZ2l0IGEvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmggYi9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFjMDNkZTkKKy0tLSAvZGV2L251bGwKKysrKyBiL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCitAQCAtMCwwICsxLDc2IEBACisrLyoKKysgKiBsaW51eC90aW1lci5oIGNvbXBhdGliaWxpdHkgZGVmaW5lcyBhbmQgaW5saW5lcworKyAqIENvcHlyaWdodCAoQykgMjAxNyBSZWQgSGF0IEluYy4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbXRhcCwgYW5kIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuCisrICogcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAorKyAqIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorKyAqIGxhdGVyIHZlcnNpb24uCisrICovCisrCisrI2lmbmRlZiBfVElNRVJfQ09NUEFUSUJJTElUWV9IXworKyNkZWZpbmUgX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8KKysKKysjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysKKysvKgorKyAqIFN0YXJ0aW5nIHdpdGggdGhlIDQuMTUga2VybmVsLCB0aGUgdGltZXIgaW50ZXJmYWNlCisrICogY2hhbmdlZC4gT3JpZ2luYWxseSwgeW91J2QgZG8gc29tZXRoaW5nIGxpa2U6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmModW5zaWduZWQgbG9uZyB2YWwpOworKyAqCisrICogICBpbml0X3RpbWVyKCZ0aW1lcik7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIHRpbWVyLmZ1bmN0aW9uID0gdGltZXJfZnVuYzsKKysgKiAgIHRpbWVyLmRhdGEgPSAwOworKyAqICAgYWRkX3RpbWVyKCZ0aW1lcik7CisrICoKKysgKiBUaGUgJ2RhdGEnIHBhcmFtZXRlciB3b3VsZCBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjaworKyAqIGZ1bmN0aW9uLiBTdGFydGluZyB3aXRoIDQuMTUsIHlvdSdkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmMoc3RydWN0IHRpbWVyX2xpc3QgKnZhbCk7CisrICoKKysgKiAgIHRpbWVyX3NldHVwKCZ0aW1lciwgdGltZXJfZnVuYywgMCk7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIGFkZF90aW1lcigmdGltZXIpOworKyAqICAgCisrICogV2l0aCB0aGUgbmV3IGNvZGUsIHRoZSB0aW1lciB0aGF0IGNhdXNlZCB0aGUgY2FsbGJhY2sgZ2V0cyBwYXNzZWQKKysgKiB0byB0aGUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSAnZGF0YScgZmllbGQgaGFzIGJlZW4gcmVtb3ZlZC4KKysgKgorKyAqIFNvLCB3ZSdyZSBnb2luZyB0byB1c2UgdGhlIG5ldyBpbnRlcmZhY2UuIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2VzCisrICogYmV0d2VlbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyIHR5cGUsIHdlJ2xsIGRlZmluZSBhIG5ldworKyAqIHR5cGUsICdzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QnLgorKyAqCisrICogSWYgY29kZSBuZWVkcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3CisrICogaW50ZXJmYWNlLCBpdCBzaG91bGQgdGVzdCB0aGUgVElNRVJfVFJBQ0VfRkxBR01BU0sgZGVmaW5lICh3aGljaAorKyAqIG9ubHkgZXhpc3RzIGluIHRoZSBuZXcgaW50ZXJmYWNlKS4KKysgKi8KKysKKysjaWYgZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykgCisrLyogVGhpcyBpcyB0aGUgPj0gNC4xNSBrZXJuZWwgaW50ZXJmYWNlLiAqLworKworK3R5cGVkZWYgc3RydWN0IHRpbWVyX2xpc3QgKiBzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3Q7CisrCisrI2Vsc2UKKysvKiBUaGlzIGlzIHRoZSA8IDQuMTUga2VybmVsIGludGVyZmFjZS4gKi8KKysKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90OworKworKy8qKgorKyAqIHRpbWVyX3NldHVwIC0gcHJlcGFyZSBhIHRpbWVyIGZvciBmaXJzdCB1c2UKKysgKiBAdGltZXI6IHRoZSB0aW1lciBpbiBxdWVzdGlvbgorKyAqIEBjYWxsYmFjazogdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aW1lciBleHBpcmVzCisrICogQGZsYWdzOiBhbnkgVElNRVJfKiBmbGFncyAobm90ZSB0aGF0IGFueXRoaW5nIG90aGVyIHRoYW4gMCBpcyBhbgorKyAqIAkgICBlcnJvciwgc2luY2UgdGhpcyBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uIGNhbid0IHN1cHBvcnQgYW55CisrICoJICAgb2YgdGhlIFRJTUVSXyogZmxhZ3MpCisrICovCisrI2RlZmluZSB0aW1lcl9zZXR1cCh0aW1lciwgY2FsbGJhY2ssIGZsYWdzKQkJCVwKKysJewkJCQkJCQlcCisrCQlpbml0X3RpbWVyKCh0aW1lcikpOwkJCQlcCisrCQkodGltZXIpLT5mdW5jdGlvbiA9IGNhbGxiYWNrOwkJCVwKKysJCSh0aW1lciktPmRhdGEgPSAwOwkJCQlcCisrCQlCVUlMRF9CVUdfT05fWkVSTygoZmxhZ3MpICE9IDApOwkJXAorKwl9CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIF9USU1FUl9DT01QQVRJQklMSVRZX0hfICovCitkaWZmIC0tZ2l0IGEvcnVudGltZS90aW1lLmMgYi9ydW50aW1lL3RpbWUuYworaW5kZXggMmU2NjZkNS4uOTFjZWFmYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdGltZS5jCisrKysgYi9ydW50aW1lL3RpbWUuYworQEAgLTE2OCwxMCArMTY4LDEwIEBAIF9fc3RwX3RpbWVfc21wX2NhbGxiYWNrKHZvaWQgKnZhbCkKKyAKKyAvKiBUaGUgdGltZXIgY2FsbGJhY2sgaXMgaW4gYSBzb2Z0SVJRIC0tIGludGVycnVwdHMgZW5hYmxlZC4gKi8KKyBzdGF0aWMgdm9pZAorLV9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpCisrX19zdHBfdGltZV90aW1lcl9jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQorIHsKKyAgICAgc3RwX3RpbWVfdCAqdGltZSA9X19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKy0gICAgKHZvaWQpIHZhbDsKKysgICAgKHZvaWQpIHVudXNlZDsKKyAKKyAgICAgLyogUFI2NDgxOiBtYWtlIHN1cmUgSVJRcyBhcmUgZW5hYmxlZCBiZWZvcmUgcmVzZXR0aW5nIHRoZSB0aW1lcgorICAgICAgICAoSVJRcyBhcmUgZGlzYWJsZWQgYW5kIHRoZW4gcmVlbmFibGVkIGluCitAQCAtMjAwLDkgKzIwMCw4IEBAIF9fc3RwX2luaXRfdGltZSh2b2lkICppbmZvKQorICAgICB0aW1lLT5mcmVxID0gX19zdHBfZ2V0X2ZyZXEoKTsKKyAgICAgX19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKyAKKy0gICAgaW5pdF90aW1lcigmdGltZS0+dGltZXIpOworKyAgICB0aW1lcl9zZXR1cCgmdGltZS0+dGltZXIsIF9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2ssIDApOworICAgICB0aW1lLT50aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9USU1FX1NZTkNfSU5URVJWQUw7CistICAgIHRpbWUtPnRpbWVyLmZ1bmN0aW9uID0gX19zdHBfdGltZV90aW1lcl9jYWxsYmFjazsKKyAKKyAjaWZuZGVmIFNUQVBDT05GX0FERF9USU1FUl9PTgorICAgICBhZGRfdGltZXIoJnRpbWUtPnRpbWVyKTsKK2RpZmYgLS1naXQgYS9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jIGIvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYworaW5kZXggZjgxZDc1ZC4uMTM1OTUxYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKKysrKyBiL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKyAjaW5jbHVkZSA8bGludXgvcmVsYXkuaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAiLi4vbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICIuLi91aWRnaWRfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICJyZWxheV9jb21wYXQuaCIKKyAKK0BAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3JlYWRlcnMoc3RydWN0IHJjaGFuX2J1ZiAqYnVmKQorIAkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZidWYtPnJlYWRfd2FpdCk7CisgfQorIAorLXN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIoc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKKyB7CisgI2lmZGVmIFNUUF9CVUxLTU9ERQorIAlpbnQgaTsKK0BAIC0xNTEsMTAgKzE1MSw4IEBAIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKyBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV90aW1lcl9pbml0KHZvaWQpCisgeworIAlhdG9taWNfc2V0KCZfc3RwX3JlbGF5X2RhdGEud2FrZXVwLCAwKTsKKy0JaW5pdF90aW1lcigmX3N0cF9yZWxheV9kYXRhLnRpbWVyKTsKKysJdGltZXJfc2V0dXAoJl9zdHBfcmVsYXlfZGF0YS50aW1lciwgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyLCAwKTsKKyAJX3N0cF9yZWxheV9kYXRhLnRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX3JlbGF5X2RhdGEudGltZXIuZnVuY3Rpb24gPSBfX3N0cF9yZWxheV93YWtldXBfdGltZXI7CistCV9zdHBfcmVsYXlfZGF0YS50aW1lci5kYXRhID0gMDsKKyAJYWRkX3RpbWVyKCZfc3RwX3JlbGF5X2RhdGEudGltZXIpOworIAlzbXBfbWIoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworaW5kZXggMzQwMGYyMi4uMzIwZmQxOCAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCisrKysgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBfc3RwX2RldGFjaCh2b2lkKQorIH0KKyAKKyAKKy1zdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKTsKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpOworIAorIC8qCisgICogQ2FsbGVkIHdoZW4gc3RhcGlvIG9wZW5zIHRoZSBjb250cm9sIGNoYW5uZWwuCitAQCAtMzIwLDEzICszMjAsMTIgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyB7CisgCWRidWdfdHJhbnMoMSwgImF0dGFjaFxuIik7CisgCV9zdHBfcGlkID0gY3VycmVudC0+cGlkOworLSAgaWYgKF9zdHBfbmFtZXNwYWNlc19waWQgPCAxKQorLSAgICBfc3RwX25hbWVzcGFjZXNfcGlkID0gX3N0cF9waWQ7CisrCWlmIChfc3RwX25hbWVzcGFjZXNfcGlkIDwgMSkKKysJCV9zdHBfbmFtZXNwYWNlc19waWQgPSBfc3RwX3BpZDsKKyAJX3N0cF90cmFuc3BvcnRfZGF0YV9mc19vdmVyd3JpdGUoMCk7CistCWluaXRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworKworKwl0aW1lcl9zZXR1cCgmX3N0cF9jdGxfd29ya190aW1lciwgX3N0cF9jdGxfd29ya19jYWxsYmFjaywgMCk7CisgCV9zdHBfY3RsX3dvcmtfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfQ1RMX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX2N0bF93b3JrX3RpbWVyLmZ1bmN0aW9uID0gX3N0cF9jdGxfd29ya19jYWxsYmFjazsKKy0JX3N0cF9jdGxfd29ya190aW1lci5kYXRhPSAwOworIAlhZGRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworIH0KKyAKK0BAIC0zNDEsNyArMzQwLDcgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyAgKglub3RpZmllZC4gUmVzY2hlZHVsZXMgaXRzZWxmIGlmIHNvbWVvbmUgaXMgc3RpbGwgYXR0YWNoZWQKKyAgKgl0byB0aGUgY21kIGNoYW5uZWwuCisgICovCistc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCisgeworIAlpbnQgZG9faW8gPSAwOworIAl1bnNpZ25lZCBsb25nIGZsYWdzOworZGlmZiAtLWdpdCBhL3RhcHNldC10aW1lcnMuY3h4IGIvdGFwc2V0LXRpbWVycy5jeHgKK2luZGV4IDFhNDBiY2QuLjBhYjRkNjkgMTAwNjQ0CistLS0gYS90YXBzZXQtdGltZXJzLmN4eAorKysrIGIvdGFwc2V0LXRpbWVycy5jeHgKK0BAIC0xMjIsOSArMTIyLDEzIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2RlY2xzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICJ9OyI7CisgICBzLm9wLT5uZXdsaW5lKCk7CisgCistICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlICh1bnNpZ25lZCBsb25nIHZhbCkgeyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlIChzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdmFsKSB7IjsKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2lmIGRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIjsKKysgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSBjb250YWluZXJfb2YodmFsLCBzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSwgdGltZXJfbGlzdCk7IjsKKysgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICIjZWxzZSI7CisgICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gJiBzdGFwX3RpbWVyX3Byb2JlcyBbdmFsXTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworKyAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIiNlbmRpZiI7CisrICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICIgICAgKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9SVU5OSU5HKSkiOworICAgcy5vcC0+bmV3bGluZSgxKSA8PCAibW9kX3RpbWVyICgmIHN0cC0+dGltZXJfbGlzdCwgamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK0BAIC0xNDgsOSArMTUyLDExIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2luaXQgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQorICAgcy5vcC0+bmV3bGluZSgpIDw8ICJmb3IgKGk9MDsgaTwiIDw8IHByb2Jlcy5zaXplKCkgPDwgIjsgaSsrKSB7IjsKKyAgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSAmIHN0YXBfdGltZXJfcHJvYmVzIFtpXTsiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJwcm9iZV9wb2ludCA9IHN0cC0+cHJvYmUtPnBwOyI7CistICBzLm9wLT5uZXdsaW5lKCkgPDwgImluaXRfdGltZXIgKCYgc3RwLT50aW1lcl9saXN0KTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZnVuY3Rpb24gPSAmIGVudGVyX3RpbWVyX3Byb2JlOyI7CisrCisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInRpbWVyX3NldHVwICgmIHN0cC0+dGltZXJfbGlzdCwgZW50ZXJfdGltZXJfcHJvYmUsIDApOyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNpZiAhZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZGF0YSA9IGk7IjsgLy8gTkI6IGltcG9ydGFudCEKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2VuZGlmIjsKKyAgIC8vIGNvcHkgdGltZXIgcmVuZXcgY2FsY3VsYXRpb25zIGZyb20gYWJvdmUgOi0oCisgICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5leHBpcmVzID0gamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK2RpZmYgLS1naXQgYS90YXBzZXQvbGludXgvc2NzaS5zdHAgYi90YXBzZXQvbGludXgvc2NzaS5zdHAKK2luZGV4IDQ0ZjY4NmMuLjM1Nzc5NDIgMTAwNjQ0CistLS0gYS90YXBzZXQvbGludXgvc2NzaS5zdHAKKysrKyBiL3RhcHNldC9saW51eC9zY3NpLnN0cAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKyNpbmNsdWRlICJsaW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgorICV9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYjBiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitGcm9tIDRmZmUwMGYxZDllYWMzMzJkOTI4ZjdkYzAxZmUyNTBkYzMyYjFiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGFuIENveCA8c2NveEByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAyMjozODowMyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBGaXhlcyBmb3IgZ2NjIDgKKworKiBpbmNsdWRlcy9zeXMvc2R0LmggKF9fU0RUX0NPTkRfU0lHTkVEKTogIEFkZCBDVCwgY2FzdCB0eXBlIGFyZ3VtZW50CisKK0F1dGhvcjogV2lsbCBDb2hlbiA8d2NvaGVuLnJlZGhhdC5jb20+CisKKyogc3RhcC1zZXJ2ZXJkLmN4eCAoZ2VuZXJhdGVfbW9rLCBoYW5kbGVSZXF1ZXN0LCBoYW5kbGVfY29ubmVjdGlvbik6CisgIENhdGNoIGZvcm1hdCBvdmVyZmxvdworCisqIHRyYW5zbGF0ZS5jeHggKHRyYW5zbGF0ZV9wYXNzKTogVXNlIHJlZiBpbiBjYXRjaC4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGluY2x1ZGVzL3N5cy9zZHQuaCB8IDIwICsrKysrKysrLS0tLS0tLS0KKyBzdGFwLXNlcnZlcmQuY3h4ICAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyB0cmFuc2xhdGUuY3h4ICAgICAgfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zeXMvc2R0LmggYi9pbmNsdWRlcy9zeXMvc2R0LmgKK2luZGV4IDk0MGY3NDQ4My4uYzBjNWE0OTJjIDEwMDY0NAorLS0tIGEvaW5jbHVkZXMvc3lzL3NkdC5oCisrKysgYi9pbmNsdWRlcy9zeXMvc2R0LmgKK0BAIC0xMTksOCArMTE5LDggQEAgc3RydWN0IF9fc2R0X3R5cGUKKyAgIAorICNkZWZpbmUgX19TRFRfQUxXQVlTX1NJR05FRChUKSBcCisgdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9IHRydWU7IH07CistI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChUKSBcCistdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9ICgoVCkoLTEpIDwgMSk7IH07CisrI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChULENUKQkJCQkJCVwKKyt0ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gKChDVCkoLTEpIDwgMSk7IH07CisgX19TRFRfQUxXQVlTX1NJR05FRChzaWduZWQgY2hhcikKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKHNob3J0KQorIF9fU0RUX0FMV0FZU19TSUdORUQoaW50KQorQEAgLTE0MSwxNCArMTQxLDE0IEBAIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgc2hvcnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBpbnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBsb25nKQorIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgbG9uZyBsb25nKQorLV9fU0RUX0NPTkRfU0lHTkVEKGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQod2NoYXJfdCkKKy1fX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSBjaGFyKQorLV9fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIHdjaGFyX3QpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3QgY2hhcikKKy1fX1NEVF9DT05EX1NJR05FRChjb25zdCB3Y2hhcl90KQorLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKHdjaGFyX3QsIHdjaGFyX3QpCisrX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgY2hhciwgY2hhcikKKytfX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSB3Y2hhcl90LCB3Y2hhcl90KQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IGNoYXIsIGNoYXIpCisrX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgd2NoYXJfdCwgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSBjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIHdjaGFyX3QsIHdjaGFyX3QpCisgI2lmIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDQpKQorIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIxNl90KSAqLworIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIzMl90KSAqLworZGlmZiAtLWdpdCBhL3N0YXAtc2VydmVyZC5jeHggYi9zdGFwLXNlcnZlcmQuY3h4CitpbmRleCA3Y2Y3NmM2MTcuLjQxZjc3ZWU5ZSAxMDA2NDQKKy0tLSBhL3N0YXAtc2VydmVyZC5jeHgKKysrKyBiL3N0YXAtc2VydmVyZC5jeHgKK0BAIC0xNjA3LDYgKzE2MDcsNyBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICBjaGFyIHRtcGRpcltQQVRIX01BWF0gPSB7ICdcMCcgfTsKKyAgIHN0cmluZyBwdWJsaWNfY2VydF9wYXRoLCBwcml2YXRlX2NlcnRfcGF0aCwgZGVzdGRpcjsKKyAgIG1vZGVfdCBvbGRfdW1hc2s7CisrICBpbnQgcmV0bGVuOworIAorICAgbW9rX2ZpbmdlcnByaW50LmNsZWFyICgpOworIAorQEAgLTE2MzEsNyArMTYzMiwxNCBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICAgIH0KKyAKKyAgIC8vIE1ha2UgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIHJlc3VsdHMgaW4uCistICBzbnByaW50ZiAodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIG1va19wYXRoLmNfc3RyICgpKTsKKysgIHJldGxlbiA9IHNucHJpbnRmICh0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgbW9rX3BhdGguY19zdHIgKCkpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiQ291bGQgbm90IGNyZWF0ZSAlcyBuYW1lIiwgInRlbXBvcmFyeSBkaXJlY3RvcnkiKSk7CisrICAgICAgdG1wZGlyWzBdID0gJ1wwJzsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKysKKyAgIGlmIChta2R0ZW1wICh0bXBkaXIpID09IE5VTEwpCisgICAgIHsKKyAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVzIiwgdG1wZGlyLCAKK0BAIC0xNzA0LDYgKzE3MTIsNyBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgdW5zaWduZWQgdTsKKyAgIHVuc2lnbmVkIGk7CisgICBGSUxFKiBmOworKyAgaW50IHJldGxlbjsKKyAKKyAgIC8vIFNhdmUgdGhlIHNlcnZlciB2ZXJzaW9uLiBEbyB0aGlzIGVhcmx5LCBzbyB0aGUgY2xpZW50IGtub3dzIHdoYXQgdmVyc2lvbiBvZiB0aGUgc2VydmVyCisgICAvLyBpdCBpcyBkZWFsaW5nIHdpdGgsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGZ1bGx5IGNvbXBsZXRlZC4KK0BAIC0xNzgyLDcgKzE3OTEsMTIgQEAgaGFuZGxlUmVxdWVzdCAoY29uc3Qgc3RyaW5nICZyZXF1ZXN0RGlyTmFtZSwgY29uc3Qgc3RyaW5nICZyZXNwb25zZURpck5hbWUsIHN0cmkKKyAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgICBjaGFyICphcmc7CisgCistICAgICAgc25wcmludGYgKHN0YXBhcmdmaWxlLCBQQVRIX01BWCwgIiVzL2FyZ3YlZCIsIHJlcXVlc3REaXJOYW1lLmNfc3RyICgpLCBpKTsKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAoc3RhcGFyZ2ZpbGUsIFBBVEhfTUFYLCAiJXMvYXJndiVkIiwgcmVxdWVzdERpck5hbWUuY19zdHIgKCksIGkpOworKyAgICAgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgICAgIHsKKysgICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJwYXRoIikpOworKyAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgCisgICAgICAgcmMgPSBzdGF0KHN0YXBhcmdmaWxlLCAmIHN0KTsKKyAgICAgICBpZiAocmMpIGJyZWFrOworQEAgLTE4ODgsNyArMTkwMiwxNSBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgICB7CisgICAgICAgZ2xvYl90IGdsb2JiZXI7CisgICAgICAgY2hhciBwYXR0ZXJuW1BBVEhfTUFYXTsKKy0gICAgICBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaW50IHJldGxlbjsKKysKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICAgICAgeworKyAgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInBhdHRlcm4iKSk7CisrICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKyAgICAgICByYyA9IGdsb2IgKHBhdHRlcm4sIEdMT0JfRVJSLCBOVUxMLCAmZ2xvYmJlcik7CisgICAgICAgaWYgKHJjKQorICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiVW5hYmxlIHRvIGZpbmQgYSBtb2R1bGUgaW4gJXMiLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKSk7CitAQCAtMjE2NCw2ICsyMTg2LDcgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5IGZvciBlYWNoIGNvbm5lY3Rpb24uKi8KKyAgIHZlY3RvcjxzdHJpbmc+ICAgICBhcmd2OworICAgUFJJbnQzMiAgICAgICAgICAgIGJ5dGVzUmVhZDsKKysgIGludAkJICAgICByZXRsZW47CisgCisgICAvKiBEZXRhdGNoIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgKi8KKyAgIGlmKG1heF90aHJlYWRzID4gMCkKK0BAIC0yMjEzLDcgKzIyMzYsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAjZW5kaWYKKyAKKyAgIHNlY1N0YXR1cyA9IFNFQ0ZhaWx1cmU7CistICBzbnByaW50Zih0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgZ2V0ZW52KCJUTVBESVIiKSA/OiAiL3RtcCIpOworKyAgcmV0bGVuID0gc25wcmludGYodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIGdldGVudigiVE1QRElSIikgPzogIi90bXAiKTsKKysgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgeworKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAidGVtcG9yYXJ5IGRpcmVjdG9yeSIpKTsKKysgICAgICB0bXBkaXJbMF09MDsgLyogcHJldmVudCAvYmluL3JtICovCisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisgICByYzEgPSBta2R0ZW1wKHRtcGRpcik7CisgICBpZiAoISByYzEpCisgICAgIHsKK0BAIC0yMjIzLDkgKzIyNTIsMjAgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgfQorIAorICAgLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGVzIG5hbWVzIGFuZCBkaXJlY3Rvcmllcy4gICovCistICBzbnByaW50ZiAocmVxdWVzdEZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QuemlwIiwgdG1wZGlyKTsKKysgIHJldGxlbiA9IHNucHJpbnRmIChyZXF1ZXN0RmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdC56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0LnppcCBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworKyAgcmV0bGVuID0gc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0IGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorIAorLSAgc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworICAgcmMgPSBta2RpcihyZXF1ZXN0RGlyTmFtZSwgMDcwMCk7CisgICBpZiAocmMpCisgICAgIHsKK0BAIC0yMjMzLDcgKzIyNzMsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZURpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UiLCB0bXBkaXIpOworKyAgcmV0bGVuID0gc25wcmludGYgKHJlc3BvbnNlRGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZSIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlc3BvbnNlIGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworICAgcmMgPSBta2RpcihyZXNwb25zZURpck5hbWUsIDA3MDApOworICAgaWYgKHJjKQorICAgICB7CitAQCAtMjI0Myw3ICsyMjg5LDEyIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCisgICAvLyBTZXQgdGhpcyBlYXJseSwgc2luY2UgaXQgZ2V0cyB1c2VkIGZvciBlcnJvcnMgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KKyAgIHN0YXBzdGRlcnIgPSBzdHJpbmcocmVzcG9uc2VEaXJOYW1lKSArICIvc3RkZXJyIjsKKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZUZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlLnppcCIsIHRtcGRpcik7CisrICByZXRsZW4gPSBzbnByaW50ZiAocmVzcG9uc2VGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZS56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXNwb25zZS56aXAgcGF0aCIpKTsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKyAKKyAgIC8qIFJlYWQgZGF0YSBmcm9tIHRoZSBzb2NrZXQuCisgICAgKiBJZiB0aGUgdXNlciBpcyByZXF1ZXN0aW5nL3JlcXVpcmluZyBhdXRoZW50aWNhdGlvbiwgYXV0aGVudGljYXRlCitkaWZmIC0tZ2l0IGEvdHJhbnNsYXRlLmN4eCBiL3RyYW5zbGF0ZS5jeHgKK2luZGV4IDEyNDBhODBlYy4uNGFkZTA2ZmRkIDEwMDY0NAorLS0tIGEvdHJhbnNsYXRlLmN4eAorKysrIGIvdHJhbnNsYXRlLmN4eAorQEAgLTc4NjAsNyArNzg2MCw3IEBAIHRyYW5zbGF0ZV9wYXNzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAJICBpZiAodmVyc2lvbnMuc2l6ZSgpID49IDMgJiYgcy52ZXJib3NlID4gMSkKKyAJICAgIGNsb2cgPDwgX0YoImlnbm9yaW5nIGV4dHJhIHBhcnRzIG9mIGNvbXBhdCB2ZXJzaW9uOiAlcyIsIHMuY29tcGF0aWJsZS5jX3N0cigpKSA8PCBlbmRsOworIAl9CistICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3IpCisrICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3ImKQorIAl7CisgCSAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoInBhcnNlIGVycm9yIGluIGNvbXBhdGliaWxpdHkgdmVyc2lvbjogJXMiLCBzLmNvbXBhdGlibGUuY19zdHIoKSkpOworIAl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDkwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSA0MWVmYWQwNDczMGJlODk4ODlkMTQ4MzcxOWY5YTZjOTM5NmRjMjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowNToyNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIHN1cmUgc3lzcm9vdCBwYXRocyBkb24ndCBlbmQgd2l0aCBhIHNsYXNoLgorCisqIHNlc3Npb24uY3h4IChwYXJzZV9jbWRsaW5lKTogTWFrZSBzdXJlIGEgc3lzcm9vdCBwYXRoIGRvZXMgbm90IGVuZCB3aXRoCisgIGEgJy8nLCBzaW5jZSB3ZSBidWlsZCBwYXRocyBsaWtlOiBzeXNyb290ICsgIi9saWIvbW9kdWxlcyIuIElmIHRoZQorICBzeXNyb290IHBhdGggZW5kcyB3aXRoIGEgJy8nLCB3ZSBlbmQgdXAgd2l0aCBwYXRocyBsaWtlCisgICcvU1lTUk9PVC8vbGliL21vZHVsZXMnLgorICAoc2V0dXBfa2VybmVsX3JlbGVhc2UpOiBUYWtlIGEgc3RyaW5nIHBhcmFtZXRlciwgbm90IGEgY2hhcmFjdGVyIHBvaW50ZXIuCisqIHNlc3Npb24uaDogVXBkYXRlIHNldHVwX2tlcm5lbF9yZWxlYXNlKCkgcHJvdG90eXBlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNlc3Npb24uY3h4IHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIHNlc3Npb24uaCAgIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTcyMiw2ICs3MjIsOSBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgICBjbGllbnRfb3B0aW9uc19kaXNhbGxvd2VkX2Zvcl91bnByaXZpbGVnZWQgPSAiIjsKKyAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhZGRpdGlvbmFsX3Vud2luZHN5bV9tb2R1bGVzOworICAgc3RydWN0IHJsaW1pdCBvdXJfcmxpbWl0OworKyAgYm9vbCBzeXNyb290X29wdGlvbl9zZWVuID0gZmFsc2U7CisrICBzdHJpbmcga2VybmVsX3JlbGVhc2VfdmFsdWU7CisrCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgeworICAgICAgIGNoYXIgKiBudW1fZW5kcHRyOworQEAgLTg4Nyw3ICs4OTAsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgICAvLyBOb3RlIHRoYXQgJy0nIG11c3QgY29tZSBsYXN0IGluIGEgcmVnZXggYnJhY2tldCBleHByZXNzaW9uLgorICAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2goIi1yIHBhcmFtZXRlciBmcm9tIGNsaWVudCIsIG9wdGFyZywgIl5bYS16MC05Xy4rLV0rJCIpOworIAkgIHNlcnZlcl9hcmdzLnB1c2hfYmFjayAoc3RyaW5nICgiLSIpICsgKGNoYXIpZ3JjICsgb3B0YXJnKTsKKy0gICAgICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uob3B0YXJnKTsKKysJICBrZXJuZWxfcmVsZWFzZV92YWx1ZSA9IG9wdGFyZzsKKyAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBjYXNlICdhJzoKK0BAIC0xNDczLDcgKzE0NzYsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CisgCSAgICAgIGNlcnIgPDwgX0YoIkVSUk9SOiAlcyBpbnZhbGlkIHdpdGggJXMiLCAiLS1zeXNyb290IiwgIi0tY2xpZW50LW9wdGlvbnMiKSA8PCBlbmRsOworIAkgICAgICByZXR1cm4gMTsKKy0JICB9IGVsc2UgaWYgKCFzeXNyb290LmVtcHR5KCkpIHsKKysJICB9IGVsc2UgaWYgKHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJICAgICAgY2VyciA8PCAiRVJST1I6IG11bHRpcGxlIC0tc3lzcm9vdCBvcHRpb25zIG5vdCBzdXBwb3J0ZWQiIDw8IGVuZGw7CisgCSAgICAgIHJldHVybiAxOworIAkgIH0gZWxzZSB7CitAQCAtMTQ4NywxMSArMTQ5MCwxNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCisgCSAgICAgIHN5c3Jvb3QgPSBzdHJpbmcoc3BhdGgpOworIAkgICAgICBmcmVlIChzcGF0aCk7CistCSAgICAgIGlmIChzeXNyb290W3N5c3Jvb3Quc2l6ZSgpIC0gMV0gIT0gJy8nKQorLQkJICBzeXNyb290LmFwcGVuZCgiLyIpOworIAorLQkgICAgICBicmVhazsKKysJICAgICAgLy8gV2UgZG8gcGF0aCBjcmVhdGlvbiBsaWtlIHRoaXM6CisrCSAgICAgIC8vICAgc3lzcm9vdCArICIvbGliL21vZHVsZXMiCisrCSAgICAgIC8vIFNvLCB3ZSBkb24ndCB3YW50IHRoZSBzeXNyb290IHBhdGggdG8gZW5kIHdpdGggYSAnLycsCisrCSAgICAgIC8vIG90aGVyd2lzZSB3ZSdsbCBlbmQgdXAgd2l0aCAnL2Zvby8vbGliL21vZHVsZXMnLgorKwkgICAgICBpZiAoc3lzcm9vdC5iYWNrKCkgPT0gJy8nKSB7CisrCQkgIHN5c3Jvb3QucG9wX2JhY2soKTsKKysJICAgICAgfQorIAkgIH0KKysJICBzeXNyb290X29wdGlvbl9zZWVuID0gdHJ1ZTsKKysJICBicmVhazsKKyAKKyAJY2FzZSBMT05HX09QVF9TWVNFTlY6CisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CitAQCAtMTUwMSw3ICsxNTEwLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAkgICAgICBzdHJpbmcgc3lzZW52X3N0ciA9IG9wdGFyZzsKKyAJICAgICAgc3RyaW5nIHZhbHVlOworIAkgICAgICBzaXplX3QgcG9zOworLQkgICAgICBpZiAoc3lzcm9vdC5lbXB0eSgpKSB7CisrCSAgICAgIGlmICghIHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJCSAgY2VyciA8PCAiRVJST1I6IC0tc3lzZW52IG11c3QgZm9sbG93IC0tc3lzcm9vdCIgPDwgZW5kbDsKKyAJCSAgcmV0dXJuIDE7CisgCSAgICAgIH0KK0BAIC0xNjQ2LDYgKzE2NTUsMTUgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAl9CisgICAgIH0KKyAKKysgIGlmICghIGtlcm5lbF9yZWxlYXNlX3ZhbHVlLmVtcHR5KCkpCisrICB7CisrICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uoa2VybmVsX3JlbGVhc2VfdmFsdWUpOworKyAgfQorKyAgZWxzZSBpZiAoISBzeXNyb290LmVtcHR5KCkpCisrICB7CisrICAgICAga2VybmVsX2J1aWxkX3RyZWUgPSBzeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsga2VybmVsX3JlbGVhc2UgICsgIi9idWlsZCI7CisrICB9CisrCisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtMjE1Miw3ICsyMTcwLDcgQEAgdm9pZCBzeXN0ZW10YXBfc2Vzc2lvbjo6aW5zZXJ0X2xvYWRlZF9tbworIH0KKyAKKyB2b2lkCistc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBjaGFyKiBrc3RyKSAKKytzeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IHN0cmluZyYga3N0cikgCisgeworICAgLy8gU29tZXRpbWVzIHdlIG1heSBnZXQgZHVwZXMgaGVyZS4uLiBlLmcuIGEgc2VydmVyIG1heSBoYXZlIGEgZnVsbAorICAgLy8gLXIgL3BhdGgvdG8va2VybmVsIGZvbGxvd2VkIGJ5IGEgY2xpZW50J3MgLXIga2VybmVsLgorQEAgLTIxODMsNyArMjIwMSw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZQorICAgZWxzZQorICAgICB7CisgICAgICAgdXBkYXRlX3JlbGVhc2Vfc3lzcm9vdCA9IHRydWU7CistICAgICAga2VybmVsX3JlbGVhc2UgPSBzdHJpbmcgKGtzdHIpOworKyAgICAgIGtlcm5lbF9yZWxlYXNlID0ga3N0cjsKKyAgICAgICBpZiAoIWtlcm5lbF9yZWxlYXNlLmVtcHR5KCkpCisgICAgICAgICBrZXJuZWxfYnVpbGRfdHJlZSA9ICIvbGliL21vZHVsZXMvIiArIGtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CisgCitJbmRleDogZ2l0L3Nlc3Npb24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Nlc3Npb24uaAorKysrIGdpdC9zZXNzaW9uLmgKK0BAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgorIAorICAgLy8gTkI6IEl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciBhbGwgb2YgdGhlIGFib3ZlIChhbmQgYmVsb3cpIGZpZWxkcworICAgLy8gdG8gYmUgY2xlYXJlZCBpbiB0aGUgc3lzdGVtdGFwX3Nlc3Npb24gY3RvciAoc2Vzc2lvbi5jeHgpLgorLSAgdm9pZCBzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3QgY2hhcioga3N0cik7CisrICB2b2lkIHNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBzdGQ6OnN0cmluZyYga3N0cik7CisgICB2b2lkIGluc2VydF9sb2FkZWRfbW9kdWxlcyAoKTsKKyAKKyAgIC8vIGNvbW1hbmQgbGluZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjgyMGIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDQzNjA2M2Q1ZTQ3MzhhOWIwMzUzNWQzMzBhMjI0MmJlNTExOGU3NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDggTWFyIDIwMTggMTY6MDE6NTggLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHN5c3Jvb3Qgd2hlbiBsb29raW5nIGZvciB0aGUgU3lzdGVtLm1hcCBmaWxlLgorCitBZGQgc3lzcm9vdCB0byBzeXN0ZW1fbWFwX3BhdGggKyAiL2Jvb3QvU3lzdGVtLm1hcCIgY2FzZS4gT3RoZXJ3aXNlCitzdGFwIHRyaWVzIHRvIGxvb2sgc3ltYm9scyBvbiBob3N0IHN5c3RlbSBhbmQgaXQgcHJvZHVjZSBlcnJvciBsaWtlIHRoaXM6CisKKz4gS2VybmVsIHN5bWJvbCB0YWJsZSAvYm9vdC9TeXN0ZW0ubWFwLTQuOS43OC15b2N0by1zdGFuZGFyZCB1bmF2YWlsYWJsZSwgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2Vzc2lvbi5jeHggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTIwMTMsNyArMjAxMyw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9rZXJuZWxfZnVuY3Rpb24KKyAJY2xvZyA8PCBfRigiS2VybmVsIHN5bWJvbCB0YWJsZSAlcyB1bmF2YWlsYWJsZSwgKCVzKSIsCisgCQkgICBzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKSA8PCBlbmRsOworIAorLSAgICAgIHN5c3RlbV9tYXBfcGF0aCA9ICIvYm9vdC9TeXN0ZW0ubWFwLSIgKyBrZXJuZWxfcmVsZWFzZTsKKysgICAgICBzeXN0ZW1fbWFwX3BhdGggPSBzeXNyb290ICsgIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOworICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKKyAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7CisgICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTgxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDE4M2M3YTdhODE2NzMzM2M4NzM1MjVmNzkwODkxMzgzN2I4ZGMzY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgMjAgTWFyIDIwMTggMTI6NDE6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIG5lZWRzIHRhcmdldCBmaWxlIHBhdGgsIG5vdCBob3N0IGZpbGUKKyBwYXRoCisKK1N0cmlwIG9mIHN5c3Jvb3QgZnJvbSBtb2R1bGUgbmFtZSBpcyByZXF1aXJlZCB3aGVuIF9zdHBfdW1vZHVsZV9yZWxvY2F0ZQorY2FsbCBpcyBnZW5lcmF0ZWQuIE90aGVyd2lzZSBwYXRoIHdvbid0IG1hdGNoIHBhdGggb24gdGFyZ2V0IGFuZCBjb3VsZAord2lsbCBmYWlsIHRvIGNhbGN1bGF0ZWQgYWRkcmVzcyB3aXRoaW4gdGhlIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgbG9jMnN0YXAuY3h4IHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xvYzJzdGFwLmN4eCBiL2xvYzJzdGFwLmN4eAoraW5kZXggNDgxOGVlMC4uZTA5OTU0ZiAxMDA2NDQKKy0tLSBhL2xvYzJzdGFwLmN4eAorKysrIGIvbG9jMnN0YXAuY3h4CitAQCAtMTcsNiArMTcsNyBAQAorIAorICNpbmNsdWRlICJsb2Myc3RhcC5oIgorICNpbmNsdWRlICJkd2ZscHAuaCIKKysjaW5jbHVkZSAidGFwc2V0cy5oIgorIAorICNpZiAhIF9FTEZVVElMU19QUkVSRVEoMCwgMTUzKQorICNkZWZpbmUgRFdfT1BfR05VX2VudHJ5X3ZhbHVlIDB4ZjMKK0BAIC0xMDYsNyArMTA3LDkgQEAgbG9jYXRpb25fY29udGV4dDo6dHJhbnNsYXRlX2FkZHJlc3MoRHdhcmZfQWRkciBhZGRyKQorICAgICAgICAgICBjID0gIi8qIHByYWdtYTp2bWEgKi8gIgorICAgICAgICAgICAgICAgIih7IHVuc2lnbmVkIGxvbmcgYWRkciA9IDA7ICIKKyAgICAgICAgICAgICAgICJhZGRyID0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIChcIiIKKy0gICAgICAgICAgICAgICsgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSArICJcIiwgIgorKyAgICAgICAgICAgICAgKyBwYXRoX3JlbW92ZV9zeXNyb290KGR3LT5zZXNzLAorKwkJCQkgICAgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSkKKysJICAgICAgKyAiXCIsICIKKyAgICAgICAgICAgICAgICsgbGV4X2Nhc3RfaGV4IChhZGRyKQorIAkgICAgICArICIsIGN1cnJlbnQpOyBhZGRyOyB9KSI7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYwNjQyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYjI5ZTQ0OGUxMjA0MGVkOGY0ZDgzNzQzYTE0ZGIwZjEzOGE3Y2M2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNjo1NDowOCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBkZWJ1Z2luZm8gbG9va3VwIHdpdGggc3lzcm9vdCBjYXNlIGRvIG5vdCByZW1vdmUgc3lzcm9vdCBmcm9tCisgZmlsZV9uYW1lCisKK0lmIHN5c3Jvb3Qgb3B0aW9uIGlzIHBhc3NlZCwgYW5kIGRlYnVnIHN5bWJvbHMgcmVzaWRlIGluIHN5c3Jvb3QgYWxvbmcKK3dpdGggZXhlY3V0YWJsZSA8Zm9vPiBpbiA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gZGlyZWN0b3J5LAorc3RhcCBmYWlscyB0byBmaW5kIGRlYnVnaW5mbyBiZWNhdXNlIGl0IHN0cmlwcyBvdXQgc3lzcm9vdCBwYXRoCitmcm9tIGZpbGVfbmFtZSBzbyBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIGVuZHMgdXAgbG9va2luZyBhdAoraG9zdCA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gcmF0aGVyIHRoZW4gY2hlY2tpbmcKKzxzeXNyb290Pi88Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2V0dXBkd2ZsLmN4eCB8IDEyIC0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4CitpbmRleCAxMWUwYmIyLi4yYTg3OTgyIDEwMDY0NAorLS0tIGEvc2V0dXBkd2ZsLmN4eAorKysrIGIvc2V0dXBkd2ZsLmN4eAorQEAgLTYyNywxOCArNjI3LDYgQEAgaW50ZXJuYWxfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCisgCisgICBjYWxsX2R3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm86CisgCistICBpZiAoY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mbykKKy0gICAgeworLSAgICAgIHN0cmluZyBzeXNyb290ID0gY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdCArICIvKiI7CistICAgICAgaW50ICAgIGZvdW5kICAgPSBmbm1hdGNoKHN5c3Jvb3QuY19zdHIoKSwgZmlsZV9uYW1lLCAwKTsKKy0KKy0gICAgICBpZiAoZm91bmQpCistCXsKKy0JICBmaWxlX25hbWUgPSBmaWxlX25hbWUKKy0JICAgICsgY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdC5sZW5ndGgoKSAtIDE7CistCX0KKy0gICAgfQorLQorICAgLyogQ2FsbCB0aGUgb3JpZ2luYWwgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAqLworICAgcmV0dXJuIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8obW9kLCB1c2VyZGF0YSwgbW9kbmFtZSwgYmFzZSwKKyAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgZGVidWdsaW5rX2ZpbGUsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTdkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDdlMTFmMTI5ZmYzNzBjZTVmMzk4MTJjZTJhZTZjZTQwODE4YTM0N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMTY6MDI6MDIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzcm9vdDogZml4IHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGhhbmRsaW5nIGZvbGxvdyB1cAorCitJbiBjYXNlIG9mIHN5c3Jvb3Qgc2V0IGFuZCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlCit0byBwYXNzIHNob3J0IHJlbGVhc2UgbmFtZSBpbnRvIGR3ZmxfbGludXhfa2VybmVsX3JlcG9ydF9vZmZsaW5lCitmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBub3QgYXdhcmUgYWJvdXQgc3lzcm9vdCBhbmQgaXQgd29uJ3QgbG9vayBmb3IKK2tlcm5lbCBtb2R1bGVzIHVuZGVyIHN5c3Jvb3QgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNldHVwZHdmbC5jeHggfCAxMCArKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IGM0MTlhZmEuLjBjZjU4MTAgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzY3LDcgKzM2NywxNSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKyAgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKyAgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorLSAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICAgIHsKKysgICAgICBpZiAocy5zeXNyb290ICE9ICIiKQorKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBzeXNyb290IHNldCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHBhc3MKKysgICAgICAgIC8vIHNob3J0IHJlbGVhc2UgdG8gZHdmbCwgaXQgd29uJ3QgdGFrZSBhIHN5c3Jvb3QgaW50bworKyAgICAgICAgLy8gYWNjb3VudC4gTGV0J3MgY29uc3RydWN0IGZ1bGwgcGF0aCBpbiBzdWNoIGNhc2UuCisrCWVsZnV0aWxzX2tlcm5lbF9wYXRoID0gc3RyaW5nKHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UpOworKyAgICAgIGVsc2UKKysJZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOworKyAgICB9CisgICBlbHNlCisgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxZDYyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYTljZTg5YmNkMmQ3ODcyOGZhZWY1OWJkYTYwZTc1NTEwOTcyY2Q1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowOTo0NCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBmaXggc2hvcnQgcmVsZWFzZSAtciBvcHRpb24gaGFuZGxpbmcKKworKiBzZXR1cGR3ZmwuY3h4IChkZWJ1Z2luZm9fcGF0aF9pbnNlcnRfc3lzcm9vdCk6IEFkZCBhICcvJyB0byB0aGUgZW5kIG9mCisgIHRoZSBzeXNyb290IGZvciBwYXRoX2luc2VydF9zeXNyb290KCkuCisgIChzZXR1cF9kd2ZsX2tlcm5lbCk6IFNpbXBsaWZ5IGxvZ2ljIHdoZW4gZmluZGluZyB0aGUga2VybmVsIHBhdGggdG8gc2VuZAorICB0byBlbGZ1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBzZXR1cGR3ZmwuY3h4IHwgMTkgKysrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IDJhODc5ODIuLmY2YzMxNTcgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzM5LDYgKzMzOSwxMyBAQCBzdGF0aWMgY2hhciAqIHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QsIHN0cmluZyBwYXRoKQorIAorIHZvaWQgZGVidWdpbmZvX3BhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QpCisgeworKyAgLy8gRklYTUU6IFRoaXMgaXMgYSBzaG9ydC10ZXJtIGZpeCwgdW50aWwgd2UgZXhwZWN0IHN5c3Jvb3QgcGF0aHMgdG8KKysgIC8vIGFsd2F5cyBlbmQgd2l0aCBhICcvJyAoYW5kIG5ldmVyIGJlIGVtcHR5KS4KKysgIC8vCisrICAvLyBUaGUgcGF0aF9pbnNlcnRfc3lzcm9vdCgpIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBzeXNyb290IGhhcyBhICcvJworKyAgLy8gb24gdGhlIGVuZC4gTWFrZSBzdXJlIHRoYXQgaXMgdHJ1ZS4KKysgIGlmIChzeXNyb290LmJhY2soKSAhPSAnLycpCisrICAgIHN5c3Jvb3QucHVzaF9iYWNrKCcvJyk7CisgICBkZWJ1Z2luZm9fcGF0aCA9IHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3lzcm9vdCwgZGVidWdpbmZvX3BhdGgpOworICAgZGVidWdpbmZvX3Vzcl9wYXRoID0gcGF0aF9pbnNlcnRfc3lzcm9vdChzeXNyb290LCBkZWJ1Z2luZm9fdXNyX3BhdGgpOworIH0KK0BAIC0zNTgsMTMgKzM2NSwxMSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gbm8gd2F5IHRvIHNldCB0aGUgZHdmbF9jYWxsYmFjay5kZWJ1Z2luZm9fcGF0aCBhbmQgYWx3YXlzCisgICAvLyBwYXNzcyB0aGUgcGxhaW4ga2VybmVsX3JlbGVhc2UgaGVyZS4gIFNvIGluc3RlYWQgd2UgaGF2ZSB0bworICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKy0gICBzdHJpbmcgbGliX3BhdGggPSAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CistICAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gc3RyaW5nKHMuc3lzcm9vdCArIGxpYl9wYXRoKSB8fAorLSAgICAgICAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBsaWJfcGF0aAorLQkmJiBzLnN5c3Jvb3QgPT0gIi8iKSkKKy0gICAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CistICAgZWxzZQorLSAgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKysgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKysgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorKyAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICBlbHNlCisrICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gcmVwb3J0IGZ1bGwgcGF0aCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTNkMzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2gKQEAgLTAsMCArMSwxMTcgQEAKK0Zyb20gMjA0MTA4NWQxYTcwMDIwMWRjMDg4OTkxY2E4MTM2ZTc5MzViZjQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxMTozNToyNiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBoYW5kbGUgc3ltYm9saWMgbGlua3Mgd2l0aCBhYnNvbHV0ZSBuYW1lIHJlbGF0aXZlIHRvCisgc3lzcm9vdAorCitJbiBjYXNlIG9mIHN5bWJvbGljIGxpbmsgZm91bmQgdW5kZXIgc3lzcm9vdCBwb2ludCB0byBhYnNvbHV0ZSBwYXRoLAoraW5zdGVhZCBvZiB0cnlpbmcgdG8gbG9vayBmb3Igc3VjaCBhYnNvbHV0ZSBwYXRoIGluIGhvc3Qgc3lzdGVtLAorYXBwbHkgc3lzcm9vdCBwcmVmaXggZmlyc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdXRpbC5jeHggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykKKworSW5kZXg6IGdpdC91dGlsLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3V0aWwuY3h4CisrKysgZ2l0L3V0aWwuY3h4CitAQCAtNDQxLDYgKzQ0MSw2NCBAQCBzcGxpdF9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBuKQorICAgcmV0dXJuIGxpbmVzOworIH0KKyAKKytzdGF0aWMgc3RyaW5nCisrZm9sbG93X2xpbmsoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIHN5c3Jvb3QpCisreworKyAgY2hhciAqbGlua25hbWU7CisrICBzc2l6ZV90IHI7CisrICBzdHJpbmcgcmV0cGF0aDsKKysgIHN0cnVjdCBzdGF0IHN0OworKworKyAgY29uc3QgY2hhciAqZiA9IG5hbWUuY19zdHIoKTsKKysKKysgIGxzdGF0KGYsICZzdCk7CisrCisrICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7CisrCisrICBpZiAobGlua25hbWUpCisrICAgIHsKKysgICAgICByID0gcmVhZGxpbmsoZiwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysgICAgICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7CisrICAgICAgLyoKKysgICAgICAgKiBJZiB3ZSBoYXZlIG5vbi1lbXB0eSBzeXNyb290IGFuZCB3ZSBnb3QgbGluayB0aGF0CisrICAgICAgICogcG9pbnRzIHRvIGFic29sdXRlIHBhdGggbmFtZSwgd2UgbmVlZCB0byBsb29rIGF0CisrICAgICAgICogdGhpcyBwYXRoIHJlbGF0aXZlIHRvIHN5c3Jvb3QgaXRzZWxmLiBhY2Nlc3MgYW5kCisrICAgICAgICogc3RhdCB3aWxsIGZvbGxvdyBzeW1ib2xpYyBsaW5rcyBjb3JyZWN0bHkgb25seSBpbgorKyAgICAgICAqIGNhc2Ugd2l0aCBlbXB0eSBzeXNyb290LgorKyAgICAgICAqLworKyAgICAgIHdoaWxlIChyICE9IC0xICYmIGxpbmtuYW1lICYmIGxpbmtuYW1lWzBdID09ICcvJykKKysJeworKwkgIHN0cmluZyBmbmFtZTEgPSBzeXNyb290ICsgbGlua25hbWU7CisrCSAgY29uc3QgY2hhciAqZjEgPSBmbmFtZTEuY19zdHIoKTsKKysJICBpZiAoYWNjZXNzKGYxLCBYX09LKSA9PSAwCisrCSAgICAgICYmIHN0YXQoZjEsICZzdCkgPT0gMAorKwkgICAgICAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICByZXRwYXRoID0gZm5hbWUxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJICBlbHNlIGlmIChsc3RhdChmMSwgJnN0KSA9PSAwCisrCQkgICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICBmcmVlKGxpbmtuYW1lKTsKKysJICAgICAgbGlua25hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3Quc3Rfc2l6ZSArIDEpOworKwkgICAgICBpZiAobGlua25hbWUpCisrCQl7CisrCQkgIHIgPSByZWFkbGluayhmMSwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysJCSAgbGlua25hbWVbc3Quc3Rfc2l6ZV0gPSAnXDAnOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgfQorKyAgZnJlZShsaW5rbmFtZSk7CisrCisrICByZXR1cm4gcmV0cGF0aDsKKyt9CisrCisgLy8gUmVzb2x2ZSBhbiBleGVjdXRhYmxlIG5hbWUgdG8gYSBjYW5vbmljYWwgZnVsbCBwYXRoIG5hbWUsIHdpdGggdGhlCisgLy8gc2FtZSBwb2xpY3kgYXMgZXhlY3ZwKCkuICBBIHByb2dyYW0gbmFtZSBub3QgY29udGFpbmluZyBhIHNsYXNoCisgLy8gd2lsbCBiZSBzZWFyY2hlZCBhbG9uZyB0aGUgJFBBVEguCitAQCAtNDY1LDYgKzUyMywxNCBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICBpZiAobmFtZS5maW5kKCcvJykgIT0gc3RyaW5nOjpucG9zKSAvLyBzbGFzaCBpbiB0aGUgcGF0aCBhbHJlYWR5PworICAgICB7CisgICAgICAgcmV0cGF0aCA9IHN5c3Jvb3QgKyBuYW1lOworKworKyAgICAgIGNvbnN0IGNoYXIgKmYgPSByZXRwYXRoLmNfc3RyKCk7CisrICAgICAgaWYgKHN5c3Jvb3QgIT0gIiIKKysJICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysJICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwl7CisrCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOworKwl9CisgICAgIH0KKyAgIGVsc2UgLy8gTm9wZSwgc2VhcmNoICRQQVRILgorICAgICB7CitAQCAtNDkzLDYgKzU1OSwxNiBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICAgICAgICAgICAgICAgICAgcmV0cGF0aCA9IGZuYW1lOworICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBlbHNlIGlmIChzeXNyb290ICE9ICIiCisrICAgICAgICAgICAgICAgICAgICAgICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysgICAgICAgICAgICAgICAgICAgICAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCisrCQl7CisrCQkgIHJldHBhdGggPSBmb2xsb3dfbGluayhmLCBzeXNyb290KTsKKysJCSAgaWYgKHJldHBhdGggIT0gIiIpCisrCQkgICAgeworKwkJICAgICAgYnJlYWs7CisrCQkgICAgfQorKwkJfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTNhZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXN5c3RlbXRhcDogQ3Jvc3MgY29tcGlsYXRpb24gZml4Ci0KLVRoaXMgaXMgYSBjcm9zcyBjb21waWxhdGlvbiBmaXguIEl0IGFsbG93cyBzeXN0ZW10YXAgdG8gZmluZAotdGhlIGtlcm5lbCBtYXAgZmlsZSBpbiB0aGUgcmlnaHQgcGxhY2UsIGkuZS4gaW4gdGhlIGtlcm5lbCBidWlsZCB0cmVlLgotV2l0aG91dCB0aGlzIGZpeCBpdCB0YWtlcyBhIG1hcCBmaWxlIGZyb20gdGhlIGJ1aWxkIGhvc3QsIGlmIGF2YWlsYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2hhaWwgRHVybmV2IDxtaWtoYWlsX2R1cm5ldkBtZW50b3IuY29tPgotCi1JbmRleDogZ2l0L3Nlc3Npb24uY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5jeHgKLSsrKyBnaXQvc2Vzc2lvbi5jeHgKLUBAIC0xNjM0LDcgKzE2MzQsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2Vfa2VybmVsX2Z1bmN0aW9uCi0gCWNsb2cgPDwgX0YoIktlcm5lbCBzeW1ib2wgdGFibGUgJXMgdW5hdmFpbGFibGUsICglcykiLAotIAkJICAgc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIHN0cmVycm9yKGVycm5vKSkgPDwgZW5kbDsKLSAKLS0gICAgICBzeXN0ZW1fbWFwX3BhdGggPSAiL2Jvb3QvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7Ci0rICAgICAgc3lzdGVtX21hcF9wYXRoID0ga2VybmVsX2J1aWxkX3RyZWUgKyAiL1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOwotICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKLSAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7Ci0gICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCmluZGV4IDQ3NWIyMDcuLmIyODBmNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCkBAIC0zLDkgKzMsNyBAQAogCiByZXF1aXJlIHN5c3RlbXRhcF9naXQuaW5jCiAKLURFUEVORFMgPSAiYm9vc3QgZWxmdXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUgYmFzaCBwZXJsIgorREVQRU5EUyA9ICJlbGZ1dGlscyIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGliZWxmPSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtLXdpdGhvdXQtcnBtIFwKICAgICAgICAgICAgIC0td2l0aG91dC1uc3MgLS13aXRob3V0LWF2YWhpIC0td2l0aG91dC1keW5pbnN0IFwKQEAgLTE4LDcgKzE2LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICIke1NUQVBfRE9DU30gIgogCi1QQUNLQUdFQ09ORklHID8/PSAic3FsaXRlIG1vbml0b3IgcHl0aG9uMy1wcm9iZXMiCitQQUNLQUdFQ09ORklHID8/PSAidHJhbnNsYXRvciBzcWxpdGUgbW9uaXRvciBweXRob24zLXByb2JlcyIKK1BBQ0tBR0VDT05GSUdbdHJhbnNsYXRvcl0gPSAiLS1lbmFibGUtdHJhbnNsYXRvciwtLWRpc2FibGUtdHJhbnNsYXRvcixib29zdCxweXRob24zLWNvcmUgYmFzaCBwZXJsIgogUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS1saWJ2aXJ0LC0tZGlzYWJsZS1saWJ2aXJ0LGxpYnZpcnQiCiBQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIFBBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvcixuY3Vyc2VzIGpzb24tYyIKQEAgLTI2LDQgKzI1LDEyIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQogCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICBpZiBbICEgLWYgJHtEfSR7YmluZGlyfS9zdGFwIF07IHRoZW4KKyAgICAgICMgdHJhbnNsYXRvciBkaXNhYmxlZCBjYXNlLCBuZWVkIHRvIGxlYXZlIG9ubHkgbWluaW1hbCBydW50aW1lCisgICAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtQTn0KKyAgICAgIHJtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7UE59L3N0YXAtZW52CisgICBmaQorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCAzZGM2ODhhLi5lMmY1MjA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDEwICsxLDkgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLVNSQ1JFViA9ICI0NWQwZTdhMDlhMTVhMjEwNzhkMGViZjJkYjUxNzVlZDllODcwMTRlIgotUFYgPSAiMy4xIgorU1JDUkVWID0gIjQwNTFjNzBjOTMxOGM4Mzc5ODEzODRjYmIyM2YzZTllYjFiZDA4OTIiCitQViA9ICIzLjIiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L3N5c3RlbXRhcC5naXQgXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3gzMl9hYmlfdGltZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tb25pdG9yLW9wdGlvbi5wYXRjaCBcCkBAIC0xMywxMCArMTIsMjEgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGFwcnVuLXN0YXBicGYtZG9uLXQtc3VwcG9ydC1pbnN0YWxsaW5nLWEtbm9uLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2ggXAogICAgICAgICAgICAiCiAKLSMgc3lzdGVtdGFwIGRvZXNuJ3Qgc3VwcG9ydCBtaXBzCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjQpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjR8bWljcm9ibGF6ZWVsfG1pcHMpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKaW5kZXggMDAyZWU2NS4uMGExNzg5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKQEAgLTEsMTEgKzEsMTEgQEAKLVNSQ1JFViA9ICIwMjE3MTBlMTA3M2ZlMjAzMzQxYjQyN2NkMWE0YmFjNTc3ZWM4OTljIgotUFYgPSAiMi42LjEiCitTUkNSRVYgPSAiN2QwMTQ3YmJiYTNlZDFkNWVmNmVlYTRlZWMzZjBhZDRjOThmMDJiNSIKK1BWID0gIjIuNyIKIAogaW5oZXJpdCBwa2djb25maWcKIAogRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vdHJhY2UtY21kOiIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0O2JyYW5jaD10cmFjZS1jbWQtc3RhYmxlLXYyLjYgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTVlNDhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNDA4ZjhlNzg3NzZiMTJmMTMxZTQzMzc0OTcyMTYwMmY4N2UwYTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkhvbmcgSC4gUGhhbSIgPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyOSBBdWcgMjAxNCAxNzoxMzo1NSArMDMwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBpZiB3b3JkZXhwIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZAotCi1lZ2xpYmMgY291bGQgYmUgY29uZmlndXJlZCB0byBidWlsZCB3aXRob3V0IHdvcmRleHAsIHNvIGl0IGlzIG5vdCBlbm91Z2gKLXRvIGNoZWNrIGlmIHdvcmRleHAuaCBleGlzdHMgKHRoZSBoZWFkZXIgZmlsZSBjb3VsZCBiZSBpbnN0YWxsZWQsIGJ1dCBpdCdzCi1wb3NzaWJsZSB0aGF0IHRoZSB3b3JkZXhwKCkgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCkuICBBbiBhZGRpdGlvbmFsCi1jaGVjayBpZiB3b3JkZXhwKCkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0gQyBsaWJyYXJ5IGlzIG5lZWRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25nIEguIFBoYW0gPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgIHwgNSArKysrLQotIHNyYy91c2VyZmlsZS5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5NDkwZDM5Li5iMDhhOTBhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yOTUsNyArMjk1LDEwIEBAIGZpCi0gQUNfU1VCU1QoQUxTQV9ERVBMSUJTKQotIAotIGRubCBDaGVjayBmb3IgaGVhZGVycwotLUFDX0NIRUNLX0hFQURFUlMoW3dvcmRleHAuaCBlbmRpYW4uaCBzeXMvZW5kaWFuLmggc3lzL3NobS5oXSkKLStBQ19DSEVDS19IRUFERVJTKFt3b3JkZXhwLmggZW5kaWFuLmggc3lzL2VuZGlhbi5oIHN5cy9zaG0uaF0sCi0rICBkbmwgTWFrZSBzdXJlIHdvcmRleHAgaXMgc3VwcG9ydGVkIGJ5IHRoZSBDIGxpYnJhcnkKLSsgIEFDX0NIRUNLX0ZVTkNTKFt3b3JkZXhwXSkKLSspCi0gCi0gZG5sIENoZWNrIGZvciByZXNtZ3Igc3VwcG9ydC4uLgotIEFDX01TR19DSEVDS0lORyhmb3IgcmVzbWdyIHN1cHBvcnQpCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJmaWxlLmMgYi9zcmMvdXNlcmZpbGUuYwotaW5kZXggNzI3NzlkYS4uZTlkMTNlNiAxMDA2NDQKLS0tLSBhL3NyYy91c2VyZmlsZS5jCi0rKysgYi9zcmMvdXNlcmZpbGUuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAgKiBzdG9yZXMgdGhlIGZpcnN0IG1hdGNoaW5lIG9uZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgc3RyZHVwJ2VkLgotICAqLwotIAotLSNpZmRlZiBIQVZFX1dPUkRFWFBfSAotKyNpZiAoZGVmaW5lZChIQVZFX1dPUkRFWFBfSCkgJiYgZGVmaW5lZChIQVZFX1dPUkRFWFApKQotICNpbmNsdWRlIDx3b3JkZXhwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotIGludCBzbmRfdXNlcl9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKipyZXN1bHQpCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDQ1ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotRnJvbSBjMmMxM2NmMGM0Njk4NjJjZDM5YjJhNjk4NjIwMDIzMzFhYjdjOGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxNDowMToxOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBpbmNsdWRpbmcgPHN5cy9wb2xsLmg+IGRpcmVjdGx5Ci0KLUZpeGVzIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsIGxpYmMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gYXNlcnZlci9hc2VydmVyLmMgICAgICAgICB8IDIgKy0KLSBpbmNsdWRlL2Fzb3VuZGxpYi1oZWFkLmggIHwgMiArLQotIGluY2x1ZGUvYXNvdW5kbGliLmggICAgICAgfCAyICstCi0gaW5jbHVkZS9sb2NhbC5oICAgICAgICAgICB8IDIgKy0KLSBzcmMvY29udHJvbC9jb250cm9sLmMgICAgIHwgMiArLQotIHNyYy9jb250cm9sL2NvbnRyb2xfc2htLmMgfCAyICstCi0gc3JjL3BjbS9wY21fZGlyZWN0LmMgICAgICB8IDIgKy0KLSBzcmMvcGNtL3BjbV9tbWFwLmMgICAgICAgIHwgMiArLQotIHNyYy9wY20vcGNtX3NoYXJlLmMgICAgICAgfCAyICstCi0gc3JjL3BjbS9wY21fc2htLmMgICAgICAgICB8IDIgKy0KLSBzcmMvc2VxL3NlcS5jICAgICAgICAgICAgIHwgMiArLQotIHNyYy9zaG1hcmVhLmMgICAgICAgICAgICAgfCAyICstCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hc2VydmVyL2FzZXJ2ZXIuYyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1pbmRleCBhYzIwNzA2Li40NmY3MzFhIDEwMDY0NAotLS0tIGEvYXNlcnZlci9hc2VydmVyLmMKLSsrKyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1AQCAtMjAsNyArMjAsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaCBiL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotaW5kZXggMWVjNjExZS4uMjFlMzJjNiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotKysrIGIvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oCi1AQCAtMzUsNiArMzUsNiBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc291bmRsaWIuaCBiL2luY2x1ZGUvYXNvdW5kbGliLmgKLWluZGV4IDNjMjc2NmUuLmE1NDYxOTQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2Fzb3VuZGxpYi5oCi0rKysgYi9pbmNsdWRlL2Fzb3VuZGxpYi5oCi1AQCAtMzUsNyArMzUsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbG9jYWwuaCBiL2luY2x1ZGUvbG9jYWwuaAotaW5kZXggMzE3ZjJlMy4uNmE0M2E0NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbG9jYWwuaAotKysrIGIvaW5jbHVkZS9sb2NhbC5oCi1AQCAtNDcsNyArNDcsNyBAQAotICNlcnJvciBIZWFkZXIgZGVmaW5pbmcgZW5kaWFubmVzcyBub3QgZGVmaW5lZAotICNlbmRpZgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbC5jIGIvc3JjL2NvbnRyb2wvY29udHJvbC5jCi1pbmRleCA2YzAwYjhlLi5mZDBjMzAzIDEwMDY0NAotLS0tIGEvc3JjL2NvbnRyb2wvY29udHJvbC5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLUBAIC05MCw3ICs5MCw3IEBAIEkvTyBvcGVyYXRpb25zLgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlICJjb250cm9sX2xvY2FsLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYyBiL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKLWluZGV4IGJkMDdkNGEuLjlhMmUyNjggMTAwNjQ0Ci0tLS0gYS9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX2RpcmVjdC5jIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLWluZGV4IGMzOTI1Y2MuLjE4ZjFkZDUgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9kaXJlY3QuYwotKysrIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLUBAIC0zMCw3ICszMCw3IEBACi0gI2luY2x1ZGUgPGdycC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zZW0uaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9tbWFwLmMgYi9zcmMvcGNtL3BjbV9tbWFwLmMKLWluZGV4IDE5NDgyODkuLjRjZjIyMGEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9tbWFwLmMKLSsrKyBiL3NyYy9wY20vcGNtX21tYXAuYwotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0gI2lmZGVmIEhBVkVfU1lTX1NITV9ICi0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9zaGFyZS5jIGIvc3JjL3BjbS9wY21fc2hhcmUuYwotaW5kZXggNWQ4YWFmMi4uMjFhNTdmYyAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX3NoYXJlLmMKLSsrKyBiL3NyYy9wY20vcGNtX3NoYXJlLmMKLUBAIC0zNCw3ICszNCw3IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgInBjbV9sb2NhbC5oIgotIAotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX3NobS5jIGIvc3JjL3BjbS9wY21fc2htLmMKLWluZGV4IGE4MTVhYzYuLjRlZTk1OGMgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9zaG0uYwotKysrIGIvc3JjL3BjbS9wY21fc2htLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9zZXEvc2VxLmMgYi9zcmMvc2VxL3NlcS5jCi1pbmRleCA5Mjc5ODMwLi5kMjAyN2NiIDEwMDY0NAotLS0tIGEvc3JjL3NlcS9zZXEuYwotKysrIGIvc3JjL3NlcS9zZXEuYwotQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIGV2ZW50X2ZpbHRlcihzbmRfc2VxX3QgKnNlcSwgc25kX3NlcV9ldmVudF90ICpldikKLSAKLSAqLwotIAotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgInNlcV9sb2NhbC5oIgotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1kaWZmIC0tZ2l0IGEvc3JjL3NobWFyZWEuYyBiL3NyYy9zaG1hcmVhLmMKLWluZGV4IDk4NDNhYTguLmVhYTcxZjAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2htYXJlYS5jCi0rKysgYi9zcmMvc2htYXJlYS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8c3lzL3NobS5oPgotICNpbmNsdWRlICJsaXN0LmgiCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2RlYWUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOWZhM2U2OTEyMmQzY2YzZThmMGUwMWEwY2IxZDE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWJiODcwYzE0ZDFjN2MyNjkyMTMyODVlZWVkODc0ZmEzZDI4MTEyMDc3ZGIwNjFhM2FmODAxMGQwODg1Yjc2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotcmVxdWlyZSBhbHNhLWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKLQotIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQotIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCi1SREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZjEwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYTJiNDY1YzNhNTI2NWQ4YTU3ZjNmZjM5YzZjNGZjMjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRmNjhhZDNjNmRhMzZiMGI1MjQxYWMzYzc5OGE3YTcxZTBlOTdkNTFmOTcyZTlmNzIzYjNmMjBhOTY1MGFlNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK3JlcXVpcmUgYWxzYS1mcHUuaW5jCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKX0gIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1weXRob24iCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBsaWJhc291bmQgYWxzYS1jb25mIGFsc2EtZG9jIgorRklMRVNfbGliYXNvdW5kID0gIiR7bGliZGlyfS9saWJhc291bmQuc28uKiIKK0ZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgorRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCisKK1JERVBFTkRTX2xpYmFzb3VuZCA9ICJhbHNhLWNvbmYiCisKKyMgYWxzYS1saWIgZ2V0cyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsc2EtbGliLWRldiBkZXBlbmRlbmNpZXMsIGJ1dCB0aGUKKyMgYWxzYS1saWIgcGFja2FnZSBkb2Vzbid0IGV4aXN0LiBsaWJhc291bmQgaXMgdGhlIHJlYWwgbGlicmFyeSBwYWNrYWdlLgorUkRFUEVORFNfJHtQTn0tZGV2ID0gImxpYmFzb3VuZCIKKworIyB1cGdyYWRlIHBhdGgKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCisKK1JQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Zjc5YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImRlNTExMzBhNzQ0NGI3OWIyZGQzYzI1ZTI4NDIwNzU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMGQxYzNiZGFlYjA1OGYyYTAzNjA3YTMzYjllMTZlZTUzNjliZmQzMGE5NmJjMDliZDJjNjliNGRkZDFhOGEiCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCi1QQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCi0KLSMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgotIyBhbGwgYnVpbHQgcGx1Z2lucy4KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQotCi0JIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKLSAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCi19Ci0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDBhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKQEAgLTAsMCArMSwxMDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImY4OThiMGU2ZThhY2YzZjZmODJiYzJhMGYwYzg0YTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5N2RhNWY4ZjUzMzc5ZmJlYTI4ODE3YmM0NjZkZTE2YWZmZDJjMDc4NDllODRmMWFmOGQ1ZTIyZjdiYjdmMWMiCisKK0RFUEVORFMgKz0gImFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAgICAgc2FtcGxlcmF0ZSBcCisgICAgICAgIHNwZWV4ZHNwIFwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgorIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgorIworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbworIworIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KKyMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCisjIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKKyMgdGhlIHN5bWxpbmtzKS4KKyMKKyMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KKyMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKKyMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCisKKyMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCisjIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCisjIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQorIyBQdWxzZUF1ZGlvIHBsdWdpbi4KK0ZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMS1hczEwazEtTWFrZS1vdXRwdXRfdHJhbV9saW5lLXN0YXRpYy1pbmxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNDlhMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMWU1OTI2ZGY3NGEzNWZlMmNkOTBiYzU5ZjUyNjRhODcxNWM5NDA0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDg6MTY6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXMxMGsxOiBNYWtlIG91dHB1dF90cmFtX2xpbmUoKSBzdGF0aWMgaW5saW5lCi0KLVRoZSBmdW5jdGlvbiBpcyBub3QgdXNlZCBpbiBhbnkgb3RoZXIgZmlsZSwgaXRzIGJldHRlciB0byBtYWtlIGl0IHN0YXRpYwotaW5saW5lIHNvIGNvbXBpbGVyIGhhcyBhIGJldHRlciBjaGFuY2Ugb2Ygb3B0aW1pemluZyBoZXJlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYXMxMGsxL2FzMTBrMS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXMxMGsxL2FzMTBrMS5jIGIvYXMxMGsxL2FzMTBrMS5jCi1pbmRleCA5NmFmMGMzLi5kMDc2NmZkIDEwMDY0NAotLS0tIGEvYXMxMGsxL2FzMTBrMS5jCi0rKysgYi9hczEwazEvYXMxMGsxLmMKLUBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBhc19leGl0KGNvbnN0IGNoYXIgKm1lc3NhZ2UpCi0gCWV4aXQoMSk7Ci0gfQotIAotLWlubGluZSB2b2lkIG91dHB1dF90cmFtX2xpbmUoIHN0cnVjdCBsaXN0X2hlYWQgKmxpbmVfaGVhZCwgaW50IHR5cGUpewotK3N0YXRpYyBpbmxpbmUgdm9pZCBvdXRwdXRfdHJhbV9saW5lKCBzdHJ1Y3QgbGlzdF9oZWFkICpsaW5lX2hlYWQsIGludCB0eXBlKXsKLSAgICAgICAgIAotICAgICAgICAgc3RydWN0IHRyYW0gKnRyYW1fc3ltOwotICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvYXV0b3Rvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKaW5kZXggMzE5ZjI1ZC4uMmU3NDk2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKQEAgLTIwLDcgKzIwLDcgQEAKIC0tLSBhbHNhLXRvb2xzLTEuMC4yNC4xLW9yaWcvL01ha2VmaWxlCTIwMTEtMDctMDYgMTE6Mjc6NDAuMjA3NjY1MDAwICswODAwCiArKysgYWxzYS10b29scy0xLjAuMjQuMS9NYWtlZmlsZQkyMDExLTA3LTE0IDE1OjA4OjA4Ljg3NzY2NTAwOSArMDgwMAogQEAgLTEsOCArMSw4IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBoZHNwbG9hZGVyIGhkc3Bjb25mIGhkc3BtaXhlciBcCiArU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbWFrZWZpbGVfbm9fZ3RrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKaW5kZXggOWJkNjg0OC4uNTQzNzNkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTEsOSArMSw5IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBcCiAtCSAgbWl4YXJ0bG9hZGVyIHBjeGhybG9hZGVyIHJtZWRpZ2ljb250cm9sIHNiMTZfY3NwIHNlcSBzc2NhcGVfY3RsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTk3YzBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyM2VhYWU2ODdkNTU0MTBiOTI1ODdjMjA1M2IzMDFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4OGYxZGNkNjg3MjEyMTM4M2VkZWQ1ZmEyNGUzMjhlNjhjNTRlNTI3ZGI0NTQ3ZTE0MzVkNWVhYmMyYjY3MDkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCi0KLSMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKLUFVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCi0gICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCi0gICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCi0KLSAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU0M2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNhZmI5MmViMWI0ZjJlZGM4NjkxNDk4ZTU3YzNlYzc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjM2M2NTY3ZGU4MzUyMjNlZTdkNjk0ODdiOGMyMmZiMzk1YTJlOGM2MTMzNDFiMGM5NmU2YTVmNmEyYmQ1MzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCisKKyMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKK0FVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCisgICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCisgICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCisKKyAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCmluZGV4IGU1NzhkZmUuLjkwN2NhNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzNlMGVmOTYyNTA2NmMyYmI2N2VlM2QyYjhjZDM3ZmQ0NGVhZGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOWQ0MWI3ODQ2NTcxNTJhNGM1NjgzYTk0NThkZmZhYjU1N2YwNjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KIERhdGU6IEZyaSwgMjkgQXVnIDIwMTQgMTg6NTg6NTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gYWxzYWN0bDogZG9uJ3QgbGV0IHN5c3RlbWQgdW5pdCByZXN0b3JlIHRoZSB2b2x1bWUgd2hlbgpAQCAtMjIsNyArMjIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYWxzYWN0bC9NYWtlZmlsZS5hbSBiL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLWluZGV4IGNhYzgwOTQuLmZmODY1ZGMgMTAwNjQ0CitpbmRleCA5MGZhYjlkLi4xOTA1MjVhIDEwMDY0NAogLS0tIGEvYWxzYWN0bC9NYWtlZmlsZS5hbQogKysrIGIvYWxzYWN0bC9NYWtlZmlsZS5hbQogQEAgLTM4LDkgKzM4LDEwIEBAIGluc3RhbGwtZGF0YS1ob29rOgpAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgYWxzYS1zdGF0ZS5zZXJ2aWNlOiBhbHNhLXN0YXRlLnNlcnZpY2UuaW4KIGRpZmYgLS1naXQgYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluIGIvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotaW5kZXggMjg4NDA5OC4uYmFjM2NjYyAxMDA2NDQKK2luZGV4IDgwZmQ1ZmQuLjZiZWIzNmQgMTAwNjQ0CiAtLS0gYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCiArKysgYi9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCi1AQCAtOCw2ICs4LDcgQEAgRGVzY3JpcHRpb249U2F2ZS9SZXN0b3JlIFNvdW5kIENhcmQgU3RhdGUKK0BAIC03LDYgKzcsNyBAQAorIERlc2NyaXB0aW9uPVNhdmUvUmVzdG9yZSBTb3VuZCBDYXJkIFN0YXRlCiAgQ29uZGl0aW9uUGF0aEV4aXN0cz0hQGRhZW1vbnN3aXRjaEAKICBDb25kaXRpb25QYXRoRXhpc3RzR2xvYj0vZGV2L3NuZC9jb250cm9sKgotIEFmdGVyPWFsc2Etc3RhdGUuc2VydmljZQogK0NvbmRpdGlvblBhdGhFeGlzdHM9QGxvY2Fsc3RhdGVkaXJAL2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZQogIAogIFtTZXJ2aWNlXQogIFR5cGU9b25lc2hvdAogLS0gCi0yLjcuMC5yYzMKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmNGI4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiIKLQotIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCi0jIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKLSMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCi0jIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dwotIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KLVBBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMWUzOTM0Y2E1YmQyMmE4MGMyNzI4OWQxYjBhZGNkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzgzMTA0NGRlOTJjNWJmMzNiZjMzNjVhM2YzNmU0OTM5N2Y0MTkxZTkzNGRmNDYwYWUxY2ExNTEzOGM5ZDlkIgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKLUZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgotRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgotRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgotRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgotCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgotCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzIxNWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImRmZTZlYTE0N2E1ZTA3YTA1NjkxOTU5MWMyZjVkYWMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyMGJkMjg1ZTkxZGI2ZTdmZDdkYjNjOWVjNmY1NWIwMmYzNTQ0OWZmMjczYzc4NDQ3ODBhYzZhNWEzZGUyZTgiCisKKyMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKKyMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKKyMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KKyMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCisKKyMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKKyMgaXBrIGRlcGVuZHMgb24gdGhlbS4KKworQUxTQV9VVElMU19QS0dTID0gIlwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKKyAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgorRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK0FMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgorCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCisKKwkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCisJIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKKwkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisJcm0gLXJmICR7RH0vdW53YW50ZWQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODIyNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGYzNGM1NjcwNDViZWE1YTdkZWQ5YmNmYThlNzg1Y2ZkMjRjYzdkZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGl2cmFqIFBhdGlsIDxzaGl2cmFqLnBhdGlsQGltZ3RlYy5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTg6NTY6MDEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQgZml4IGZvciBtaXBzCi0KLVNpZ25lZC1vZmYtYnk6IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvbmFsZCBTLiBCdWx0amUgPHJzYnVsdGplQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jIHwgMyArKy0KLSBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLWluZGV4IDMzMWNmYWMxMTUuLmU5ODc2OThkNjYgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYwotQEAgLTE4LDcgKzE4LDggQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSAjaW5jbHVkZSAibGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21pcHMuaCIKLSAKLSAjaWYgSEFWRV9NU0EKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLWluZGV4IDZhM2IyODE1ZmQuLjk2M2M2NGM4NjEgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKLSAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCi0gI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKLSAKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YmFhMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDEyNGViMjAyZTcwNjc4NTM5NTQ0ZjYyNjhlZmM5ODEzMWYxOWZhNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KLSA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvcm1kZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCi0KLUZpeGVzOiBsb29wLml2cgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9ybWRlYy5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JtZGVjLmMgYi9saWJhdmZvcm1hdC9ybWRlYy5jCi1pbmRleCAxNzhlYWVhLi5kNmQ3ZDljIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcm1kZWMuYwotKysrIGIvbGliYXZmb3JtYXQvcm1kZWMuYwotQEAgLTEyMjMsOCArMTIyMywxMSBAQCBzdGF0aWMgaW50IGl2cl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVzID0gJyVzJ1xuIiwga2V5LCB2YWwpOwotICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDQpIHsKLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnMHgiLCBrZXkpOwotLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykKLSsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKLSsgICAgICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVYIiwgYXZpb19yOChwYikpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJ1xuIik7Ci0gICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSA0ICYmIHR5cGUgPT0gMyAmJiAhc3RybmNtcChrZXksICJTdHJlYW1Db3VudCIsIHRsZW4pKSB7Ci0gICAgICAgICAgICAgbmJfc3RyZWFtcyA9IHZhbHVlID0gYXZpb19yYjMyKHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkMGQxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNGYwNWUyZTJkYzFhODlmMzhjZDlmMDk2MGE2NTYxMDgzZDcxNGYxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L212ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5tdgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tdmRlYy5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L212ZGVjLmMgYi9saWJhdmZvcm1hdC9tdmRlYy5jCi1pbmRleCAwZTEyYzhjLi5mN2FhNGNiIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXZkZWMuYwotKysrIGIvbGliYXZmb3JtYXQvbXZkZWMuYwotQEAgLTM0Miw2ICszNDIsOCBAQCBzdGF0aWMgaW50IG12X3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCi0gICAgICAgICAgICAgdWludDMyX3QgcG9zICAgPSBhdmlvX3JiMzIocGIpOwotICAgICAgICAgICAgIHVpbnQzMl90IGFzaXplID0gYXZpb19yYjMyKHBiKTsKLSAgICAgICAgICAgICB1aW50MzJfdCB2c2l6ZSA9IGF2aW9fcmIzMihwYik7Ci0rICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgICAgIGF2aW9fc2tpcChwYiwgOCk7Ci0gICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KGFzdCwgcG9zLCB0aW1lc3RhbXAsIGFzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKLSAgICAgICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkodnN0LCBwb3MgKyBhc2l6ZSwgaSwgdnNpemUsIDAsIEFWSU5ERVhfS0VZRlJBTUUpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODhiMzU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA5NmYyNGQxYmVlN2ZlN2JhYzA4ZTJiN2M3NGRiMWEwNDZjOWRjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JsMjogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AucmwyCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L3JsMi5jIHwgMTUgKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybDIuYyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1pbmRleCAwYmVjOGYxLi5lYjE2ODJkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcmwyLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1AQCAtMTcwLDEyICsxNzAsMjEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHJsMl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgIH0KLSAKLSAgICAgLyoqIHJlYWQgb2Zmc2V0IGFuZCBzaXplIHRhYmxlcyAqLwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGNodW5rX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpOwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICB9Ci0rICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgY2h1bmtfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKTsKLS0gICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykKLSsgICAgfQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGF1ZGlvX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpICYgMHhGRkZGOwotKyAgICB9Ci0gCi0gICAgIC8qKiBidWlsZCB0aGUgc2FtcGxlIGluZGV4ICovCi0gICAgIGZvcihpPTA7aTxmcmFtZV9jb3VudDtpKyspewotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzAxZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA3ZjllYzU1OTNlMDQ4MjcyNDllN2FlYjQ2NmRhMDZhOThhMGQ3MzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDEyOjM3OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AuYXNmCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU3Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotaW5kZXggYmUwOWE5Mi4uZjNhY2JhZSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLUBAIC03NDksMTMgKzc0OSwxNSBAQCBzdGF0aWMgaW50IGFzZl9yZWFkX21hcmtlcihBVkZvcm1hdENvbnRleHQgKnMsIGludDY0X3Qgc2l6ZSkKLSAgICAgY291bnQgPSBhdmlvX3JsMzIocGIpOyAgICAvLyBtYXJrZXJzIGNvdW50Ci0gICAgIGF2aW9fcmwxNihwYik7ICAgICAgICAgICAgLy8gcmVzZXJ2ZWQgMiBieXRlcwotICAgICBuYW1lX2xlbiA9IGF2aW9fcmwxNihwYik7IC8vIG5hbWUgbGVuZ3RoCi0tICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX2xlbjsgaSsrKQotLSAgICAgICAgYXZpb19yOChwYik7IC8vIHNraXAgdGhlIG5hbWUKLSsgICAgYXZpb19za2lwKHBiLCBuYW1lX2xlbik7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICBpbnQ2NF90IHByZXNfdGltZTsKLSAgICAgICAgIGludCBuYW1lX2xlbjsKLSAKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKwotICAgICAgICAgYXZpb19ybDY0KHBiKTsgICAgICAgICAgICAgLy8gb2Zmc2V0LCA4IGJ5dGVzCi0gICAgICAgICBwcmVzX3RpbWUgPSBhdmlvX3JsNjQocGIpOyAvLyBwcmVzZW50YXRpb24gdGltZQotICAgICAgICAgcHJlc190aW1lIC09IGFzZi0+aGRyLnByZXJvbGwgKiAxMDAwMDsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4MDNjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gN2VjNDE0ODkyZGRjYWQ4ODMxMzg0ODQ5NGI2ZmM1ZjQzN2M5Y2E0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDAxOjI2OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2hsczogRml4IERvUyBkdWUgdG8gaW5maW5pdGUgbG9vcAotCi1GaXhlczogbG9vcC5tM3UKLQotVGhlIGRlZmF1bHQgbWF4IGl0ZXJhdGlvbiBjb3VudCBvZiAxMDAwIGlzIGFyYml0cmFyeSBhbmQgaWRlYXMgZm9yIGEgYmV0dGVyIHNvbHV0aW9uIGFyZSB3ZWxjb21lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi0KLVByZXZpb3VzIHZlcnNpb24gcmV2aWV3ZWQtYnk6IFN0ZXZlbiBMaXUgPGxpbmdqaXVqaWFua2VAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1OAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBkb2MvZGVtdXhlcnMudGV4aSB8IDE4ICsrKysrKysrKysrKysrKysrKwotIGxpYmF2Zm9ybWF0L2hscy5jIHwgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZG9jL2RlbXV4ZXJzLnRleGkgYi9kb2MvZGVtdXhlcnMudGV4aQotaW5kZXggMjlhMjNkNC4uNzNkYzBmZSAxMDA2NDQKLS0tLSBhL2RvYy9kZW11eGVycy50ZXhpCi0rKysgYi9kb2MvZGVtdXhlcnMudGV4aQotQEAgLTMwMCw2ICszMDAsMjQgQEAgdXNlZCB0byBlbmQgdGhlIG91dHB1dCB2aWRlbyBhdCB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBpbnB1dCBmaWxlLAotIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBAZmlsZXtpbnB1dC5tcDR9IGFzIHRoZSBHSUYgaW4gdGhpcyBleGFtcGxlIGxvb3BzCi0gaW5maW5pdGVseS4KLSAKLStAc2VjdGlvbiBobHMKLSsKLStITFMgZGVtdXhlcgotKwotK0l0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotKwotK0B0YWJsZSBAb3B0aW9uCi0rQGl0ZW0gbGl2ZV9zdGFydF9pbmRleAotK3NlZ21lbnQgaW5kZXggdG8gc3RhcnQgbGl2ZSBzdHJlYW1zIGF0IChuZWdhdGl2ZSB2YWx1ZXMgYXJlIGZyb20gdGhlIGVuZCkuCi0rCi0rQGl0ZW0gYWxsb3dlZF9leHRlbnNpb25zCi0rJywnIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGhscyBpcyBhbGxvd2VkIHRvIGFjY2Vzcy4KLSsKLStAaXRlbSBtYXhfcmVsb2FkCi0rTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQuCi0rRGVmYXVsdCB2YWx1ZSBpcyAxMDAwLgotK0BlbmQgdGFibGUKLSsKLSBAc2VjdGlvbiBpbWFnZTIKLSAKLSBJbWFnZSBmaWxlIGRlbXV4ZXIuCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaGxzLmMgYi9saWJhdmZvcm1hdC9obHMuYwotaW5kZXggMDE3MzFiZC4uMDk5NTM0NSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2hscy5jCi0rKysgYi9saWJhdmZvcm1hdC9obHMuYwotQEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBITFNDb250ZXh0IHsKLSAgICAgQVZEaWN0aW9uYXJ5ICphdmlvX29wdHM7Ci0gICAgIGludCBzdHJpY3Rfc3RkX2NvbXBsaWFuY2U7Ci0gICAgIGNoYXIgKmFsbG93ZWRfZXh0ZW5zaW9uczsKLSsgICAgaW50IG1heF9yZWxvYWQ7Ci0gfSBITFNDb250ZXh0OwotIAotIHN0YXRpYyBpbnQgcmVhZF9jaG9tcF9saW5lKEFWSU9Db250ZXh0ICpzLCBjaGFyICpidWYsIGludCBtYXhsZW4pCi1AQCAtMTI2Myw2ICsxMjY0LDcgQEAgc3RhdGljIGludCByZWFkX2RhdGEodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKLSAgICAgSExTQ29udGV4dCAqYyA9IHYtPnBhcmVudC0+cHJpdl9kYXRhOwotICAgICBpbnQgcmV0LCBpOwotICAgICBpbnQganVzdF9vcGVuZWQgPSAwOwotKyAgICBpbnQgcmVsb2FkX2NvdW50ID0gMDsKLSAKLSByZXN0YXJ0OgotICAgICBpZiAoIXYtPm5lZWRlZCkKLUBAIC0xMjk0LDYgKzEyOTYsOSBAQCByZXN0YXJ0OgotICAgICAgICAgcmVsb2FkX2ludGVydmFsID0gZGVmYXVsdF9yZWxvYWRfaW50ZXJ2YWwodik7Ci0gCi0gcmVsb2FkOgotKyAgICAgICAgcmVsb2FkX2NvdW50Kys7Ci0rICAgICAgICBpZiAocmVsb2FkX2NvdW50ID4gYy0+bWF4X3JlbG9hZCkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Ci0gICAgICAgICBpZiAoIXYtPmZpbmlzaGVkICYmCi0gICAgICAgICAgICAgYXZfZ2V0dGltZV9yZWxhdGl2ZSgpIC0gdi0+bGFzdF9sb2FkX3RpbWUgPj0gcmVsb2FkX2ludGVydmFsKSB7Ci0gICAgICAgICAgICAgaWYgKChyZXQgPSBwYXJzZV9wbGF5bGlzdChjLCB2LT51cmwsIHYsIE5VTEwpKSA8IDApIHsKLUBAIC0yMTUwLDYgKzIxNTUsOCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gaGxzX29wdGlvbnNbXSA9IHsKLSAgICAgICAgIE9GRlNFVChhbGxvd2VkX2V4dGVuc2lvbnMpLCBBVl9PUFRfVFlQRV9TVFJJTkcsCi0gICAgICAgICB7LnN0ciA9ICIzZ3AsYWFjLGF2aSxmbGFjLG1rdixtM3U4LG00YSxtNHMsbTR2LG1wZyxtb3YsbXAyLG1wMyxtcDQsbXBlZyxtcGVndHMsb2dnLG9ndixvZ2EsdHMsdm9iLHdhdiJ9LAotICAgICAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAotKyAgICB7Im1heF9yZWxvYWQiLCAiTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQiLAotKyAgICAgICAgT0ZGU0VUKG1heF9yZWxvYWQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMTAwMH0sIDAsIElOVF9NQVgsIEZMQUdTfSwKLSAgICAge05VTEx9Ci0gfTsKLSAKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmZGUwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gN2U4MGI2M2VjZDI1OWQ2OWQzODM2MjNlNzViMzE4YmYyYmQ0OTFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQotID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9jaW5lZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5jaW5lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2NpbmVkZWMuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2luZWRlYy5jIGIvbGliYXZmb3JtYXQvY2luZWRlYy5jCi1pbmRleCA3NjNiOTNiLi5kZTM0ZmI5IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvY2luZWRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKLUBAIC0yNjcsOCArMjY3LDEyIEBAIHN0YXRpYyBpbnQgY2luZV9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQotIAotICAgICAvKiBwYXJzZSBpbWFnZSBvZmZzZXRzICovCi0gICAgIGF2aW9fc2VlayhwYiwgb2ZmSW1hZ2VPZmZzZXRzLCBTRUVLX1NFVCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBzdC0+ZHVyYXRpb247IGkrKykKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsKLSAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShzdCwgYXZpb19ybDY0KHBiKSwgaSwgMCwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7Ci0rICAgIH0KLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTI4NGZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA5ZDAwZmI5ZDcwZWU4YzBjYzcwMDJiODkzMThjNWJlMDBmMWJiZGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBTaWduIGVycm9yIGluIG14Zl9yZWFkX3ByaW1lcl9wYWNrKCkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Qi5teGYKLQotQ28tQXV0aG9yOiDlvKDmtKrkuq4o5pyb5YidKSIgPHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MTY5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L214ZmRlYy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZGVjLmMgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotaW5kZXggNmFkYjc3ZC4uOTE3MzFhNyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX3ByaW1lcl9wYWNrKHZvaWQgKmFyZywgQVZJT0NvbnRleHQgKnBiLCBpbnQgdGFnLCBpbnQgc2l6ZSwgVQotICAgICAgICAgYXZwcml2X3JlcXVlc3Rfc2FtcGxlKHBiLCAiUHJpbWVyIHBhY2sgaXRlbSBsZW5ndGggJWQiLCBpdGVtX2xlbik7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Ci0gICAgIH0KLS0gICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYpIHsKLSsgICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYgfHwgaXRlbV9udW0gPCAwKSB7Ci0gICAgICAgICBhdl9sb2cobXhmLT5mYywgQVZfTE9HX0VSUk9SLCAiaXRlbV9udW0gJWQgaXMgdG9vIGxhcmdlXG4iLCBpdGVtX251bSk7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODYwMTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA5MDBmMzk2OTJjYTAzMzdhOThhN2NmMDQ3ZTRlMjYxMTA3MTgxMGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBEb1MgaXNzdWVzIGluCi0gbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1GaXhlczogMjAxNzA4MjlBLm14ZgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbXhmZGVjLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1pbmRleCBmOGQwZjllLi42YWRiNzdkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1AQCAtODk5LDYgKzg5OSw4IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnCi0gICAgIHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMgPSBhdmlvX3JiMzIocGIpOwotIAotICAgICBsZW5ndGggPSBhdmlvX3JiMzIocGIpOwotKyAgICBpZihzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzICYmIGxlbmd0aCA8IDExKQotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gCi0gICAgIGlmICghKHNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzPWF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzKSkpIHx8Ci0gICAgICAgICAhKHNlZ21lbnQtPmZsYWdfZW50cmllcyAgICAgICAgICA9IGF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPmZsYWdfZW50cmllcykpKSB8fAotQEAgLTkwOSw2ICs5MTEsOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZwotICAgICB9Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzOyBpKyspIHsKLSsgICAgICAgIGlmKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICBzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllc1tpXSA9IGF2aW9fcjgocGIpOwotICAgICAgICAgYXZpb19yOChwYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEtleUZyYW1lT2Zmc2V0ICovCi0gICAgICAgICBzZWdtZW50LT5mbGFnX2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJhZTIwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gYzI0YmNiNTUzNjUwYjkxZTllZmYxNWVmNmU1NGNhNzNkZTI0NTNiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQotIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbnN2ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjayBpbgotIG5zdnNfZmlsZV9vZmZzZXQgbG9vcC4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Lm5zdgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbnN2ZGVjLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotaW5kZXggYzZkZGI2Ny4uZDhjZTY1NiAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L25zdmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotQEAgLTMzNSw4ICszMzUsMTEgQEAgc3RhdGljIGludCBuc3ZfcGFyc2VfTlNWZl9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQotICAgICAgICAgaWYgKCFuc3YtPm5zdnNfZmlsZV9vZmZzZXQpCi0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAKLS0gICAgICAgIGZvcihpPTA7aTx0YWJsZV9lbnRyaWVzX3VzZWQ7aSsrKQotKyAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspIHsKLSsgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgbnN2LT5uc3ZzX2ZpbGVfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKSArIHNpemU7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICBpZih0YWJsZV9lbnRyaWVzID4gdGFibGVfZW50cmllc191c2VkICYmCi0gICAgICAgICAgICBhdmlvX3JsMzIocGIpID09IE1LVEFHKCdUJywnTycsJ0MnLCcyJykpIHsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwMjAzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOWNiNGViNzcyODM5YzVlMWRlMjg1NWQxMjZiZjc0ZmYxNmQxMzM4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBUdWUsIDUgU2VwIDIwMTcgMDA6MTY6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbW92OiBGaXggRG9TIGluIHJlYWRfdGZyYSgpCi0KLUZpeGVzOiBNaXNzaW5nIEVPRiBjaGVjayBpbiBsb29wCi1ObyB0ZXN0Y2FzZQotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDIyMgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tb3YuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdi5jIGIvbGliYXZmb3JtYXQvbW92LmMKLWluZGV4IDk5NGU5YzYuLjI1MTk3MDcgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9tb3YuYwotKysrIGIvbGliYXZmb3JtYXQvbW92LmMKLUBAIC02MDk0LDYgKzYwOTQsMTMgQEAgc3RhdGljIGludCByZWFkX3RmcmEoTU9WQ29udGV4dCAqbW92LCBBVklPQ29udGV4dCAqZikKLSAgICAgfQotICAgICBmb3IgKGkgPSAwOyBpIDwgaW5kZXgtPml0ZW1fY291bnQ7IGkrKykgewotICAgICAgICAgaW50NjRfdCB0aW1lLCBvZmZzZXQ7Ci0rCi0rICAgICAgICBpZiAoYXZpb19mZW9mKGYpKSB7Ci0rICAgICAgICAgICAgaW5kZXgtPml0ZW1fY291bnQgPSAwOwotKyAgICAgICAgICAgIGF2X2ZyZWVwKCZpbmRleC0+aXRlbXMpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfQotKwotICAgICAgICAgaWYgKHZlcnNpb24gPT0gMSkgewotICAgICAgICAgICAgIHRpbWUgICA9IGF2aW9fcmI2NChmKTsKLSAgICAgICAgICAgICBvZmZzZXQgPSBhdmlvX3JiNjQoZik7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZmVmNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGFmYzljNjgzZWQ5ZGIwMWVkYjM1N2JjOGMxOWVkYWQ0MjgyYjNhOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDAwOjE2OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBpbiBhc2ZfYnVpbGRfc2ltcGxlX2luZGV4KCkKLQotRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKLU5vIHRlc3RjYXNlCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MjIzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLWluZGV4IGYzYWNiYWUuLmNjNjQ4YjkgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi0rKysgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi1AQCAtMTYxMCw2ICsxNjEwLDExIEBAIHN0YXRpYyBpbnQgYXNmX2J1aWxkX3NpbXBsZV9pbmRleChBVkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgpCi0gICAgICAgICAgICAgaW50NjRfdCBwb3MgICAgICAgPSBzLT5pbnRlcm5hbC0+ZGF0YV9vZmZzZXQgKyBzLT5wYWNrZXRfc2l6ZSAqIChpbnQ2NF90KXBrdG51bTsKLSAgICAgICAgICAgICBpbnQ2NF90IGluZGV4X3B0cyA9IEZGTUFYKGF2X3Jlc2NhbGUoaXRpbWUsIGksIDEwMDAwKSAtIGFzZi0+aGRyLnByZXJvbGwsIDApOwotIAotKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKSB7Ci0rICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICBpZiAocG9zICE9IGxhc3RfcG9zKSB7Ci0gICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJwa3RudW06JWQsIHBrdGN0OiVkICBwdHM6ICUiUFJJZDY0IlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrdG51bSwgcGt0Y3QsIGluZGV4X3B0cyk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjg0NWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGZmcHJvYmU6IEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aCBjb2xvciBwcmltYXJpZXMKLQotRm91bmQtYnk6IEFELWxhYiBvZiB2ZW51c3RlY2gKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQyMjUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gZmZwcm9iZS5jIHwgMTUgKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mZnByb2JlLmMgYi9mZnByb2JlLmMKLWluZGV4IGEyMTlmYzEuLmRmMjJiMzAgMTAwNjQ0Ci0tLS0gYS9mZnByb2JlLmMKLSsrKyBiL2ZmcHJvYmUuYwotQEAgLTE4OTksNiArMTg5OSwxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9wa3Rfc2lkZV9kYXRhKFdyaXRlckNvbnRleHQgKncsCi0gICAgIHdyaXRlcl9wcmludF9zZWN0aW9uX2Zvb3Rlcih3KTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgcHJpbnRfcHJpbWFyaWVzKFdyaXRlckNvbnRleHQgKncsIGVudW0gQVZDb2xvclByaW1hcmllcyBjb2xvcl9wcmltYXJpZXMpCi0rewotKyAgICBjb25zdCBjaGFyICp2YWwgPSBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShjb2xvcl9wcmltYXJpZXMpOwotKyAgICBpZiAoIXZhbCB8fCBjb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKSB7Ci0rCXByaW50X3N0cl9vcHQoImNvbG9yX3ByaW1hcmllcyIsICJ1bmtub3duIik7Ci0rICAgIH0gZWxzZSB7Ci0rCXByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgdmFsKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZCBjbGVhcl9sb2coaW50IG5lZWRfbG9jaykKLSB7Ci0gICAgIGludCBpOwotQEAgLTI0MjAsMTAgKzI0MzAsNyBAQCBzdGF0aWMgaW50IHNob3dfc3RyZWFtKFdyaXRlckNvbnRleHQgKncsIEFWRm9ybWF0Q29udGV4dCAqZm10X2N0eCwgaW50IHN0cmVhbV9pZAotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHByaW50X3N0cl9vcHQoImNvbG9yX3RyYW5zZmVyIiwgYXZfY29sb3JfdHJhbnNmZXJfbmFtZShwYXItPmNvbG9yX3RyYykpOwotIAotLSAgICAgICAgaWYgKHBhci0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKLS0gICAgICAgICAgICBwcmludF9zdHIoImNvbG9yX3ByaW1hcmllcyIsIGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKHBhci0+Y29sb3JfcHJpbWFyaWVzKSk7Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKLSsgICAgICAgIHByaW50X3ByaW1hcmllcyh3LCBwYXItPmNvbG9yX3ByaW1hcmllcyk7Ci0gCi0gICAgICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lGSUVEKQotICAgICAgICAgICAgIHByaW50X3N0cigiY2hyb21hX2xvY2F0aW9uIiwgYXZfY2hyb21hX2xvY2F0aW9uX25hbWUocGFyLT5jaHJvbWFfbG9jYXRpb24pKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlYmVjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyNS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc0M2RjNjZlYmU2NzE4MDI4M2I5MmQwMjlmNjkwZDBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyYTkwMDJjZGM2YjUzM2I1OTcyODgyNzE4NmMwNDRhZDAyYmE2NDg0MWYxYjdjZDZjMjE3Nzk4NzU0NTNhMWUiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKLVBBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYiBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAotICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKLSAgICAtLWNwdT0ke0BjcHUoZCl9IFwKLSAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OWNmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYgpAQCAtMCwwICsxLDE1MSBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiY2JmNGVhZDIyN2ZjZWRkZGY1NGM4NjAxMzcwNWE5ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI5MmU5NTc4ZWY4YjNlNDllZWFiMjI5ZTY5MzA1ZjVmNGNiYzFmZGFhMjJlOTI3ZmM3ZmNhMThhY2NjZDc0MCIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCisKKyMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQorIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCitQUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKKworREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCisgICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2JywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E4NzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhMWQ3YzU4MjM5MmM4YmM4N2ZhOTQxMWFmNzdiMjBlMDExOTQ0MzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI1IEphbiAyMDE4IDE3OjU1OjAyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdC9nc3RwbHVnaW5sb2FkZXIuYzogd2hlbiBlbnYgdmFyIGlzIHNldCBkbyBub3QgZmFsbAorIHRocm91Z2ggdG8gc3lzdGVtIHBsdWdpbiBzY2FubmVyCisKK0lmIHdlIHNldCBhIGN1c3RvbSBHU1RfUExVR0lOX1NDQU5ORVIgZW52IHZhciwgdGhlbiB3ZSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGF0IGFuZCBvbmx5IHRoYXQuCisKK0ZhbGxpbmcgdGhyb3VnaCB0byB0aGUgb25lIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtIGlzIHByb2JsYW1hdGljIGluIGNyb3NzLWNvbXBpbGF0aW9uCitlbnZpcm9uZW1udHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvbmUgcG9pbnRlZCB0byBieSB0aGUgZW52IHZhciBzdWNjZWVkZWQgb3IgZmFpbGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ3N0L2dzdHBsdWdpbmxvYWRlci5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jIGIvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCitpbmRleCA0MzA4MjlkLi4zYTc1NzMxIDEwMDY0NAorLS0tIGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCisrKysgYi9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMKK0BAIC00NzEsOSArNDcxLDcgQEAgZ3N0X3BsdWdpbl9sb2FkZXJfc3Bhd24gKEdzdFBsdWdpbkxvYWRlciAqIGxvYWRlcikKKyAgICAgaGVscGVyX2JpbiA9IGdfc3RyZHVwIChlbnYpOworICAgICByZXMgPSBnc3RfcGx1Z2luX2xvYWRlcl90cnlfaGVscGVyIChsb2FkZXIsIGhlbHBlcl9iaW4pOworICAgICBnX2ZyZWUgKGhlbHBlcl9iaW4pOworLSAgfQorLQorLSAgaWYgKCFyZXMpIHsKKysgIH0gZWxzZSB7CisgICAgIEdTVF9MT0cgKCJUcnlpbmcgaW5zdGFsbGVkIHBsdWdpbiBzY2FubmVyIik7CisgCisgI2lmZGVmIEdfT1NfV0lOMzIKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NmM3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzAxOGNhMWM0YmYyNmM4MzE3ZTdmY2QyZTdlNGU2NDgxOTVmNDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIwIERlYyAyMDE3IDEzOjAzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjogdXNlIGEgcGF0Y2ggaW5zdGVhZCBvZiBzZWQgdG8gZml4IGd0ay1kb2MKKworUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQKK2JpbmFyaWVzIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4KKworQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcKK2lzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKKy0tLQorIGNvbW1vbi9ndGstZG9jLm1hayB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL2d0ay1kb2MubWFrIGIvY29tbW9uL2d0ay1kb2MubWFrCitpbmRleCAzZjgzNDkxLi5lNWNiMGQxIDEwMDY0NAorLS0tIGEvY29tbW9uL2d0ay1kb2MubWFrCisrKysgYi9jb21tb24vZ3RrLWRvYy5tYWsKK0BAIC02LDExICs2LDExIEBACisgaWYgR1RLX0RPQ19VU0VfTElCVE9PTAorIEdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKKyBHVEtET0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RFUFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKKy1HVEtET0NfUlVOID0gJChMSUJUT09MKSAtLW1vZGU9ZXhlY3V0ZQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZWxzZQorIEdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCisgR1RLRE9DX0xEID0gJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQorLUdUS0RPQ19SVU4gPQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZW5kaWYKKyAKKyAjIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKK0BAIC0xMDEsNiArMTAxLDcgQEAgc2Nhbi1idWlsZC5zdGFtcDogJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCisgCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAorIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKKyAJICAgICQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKQkJCQkJXAorKwkgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0iJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15IiBcCisgCSAgICBDQz0iJChHVEtET0NfQ0MpIiBMRD0iJChHVEtET0NfTEQpIiBSVU49IiQoR1RLRE9DX1JVTikiCVwKKyAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKKyAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzhiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNzU1ZjZkYWIwNzU2NWFjYTdiNmFlZmFjYWQ4YmU2NWRlMzY0ZmY3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDE3IEF1ZyAyMDE3IDExOjA3OjAyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcGxheWVyIGV4YW1wbGVzIGluc3RhbGxhYmxlCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gY29uc2lkZXJzIHRoZXNlIGNvZGUgZXhhbXBsZXMsIGZvciBub3cgYSBsZWFzdF0KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzgyNworLS0tCisgcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkIHwgMSArCisgcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZCAgICAgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZCBiL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAoraW5kZXggNzE5YjU1Yi4uYTU2ZmUxMyAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAorKysrIGIvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkCitAQCAtOCw1ICs4LDYgQEAgZXhlY3V0YWJsZSgnZ3N0LXBsYXknLAorICAgICBbJ2dzdC1wbGF5LmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmgnXSwKKysgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgZGVwZW5kZW5jaWVzIDogW2dzdF9kZXAsIGdzdHBsYXllcl9kZXAsIG1fZGVwXSkKKyAKK2RpZmYgLS1naXQgYS9wbGF5YmFjay9wbGF5ZXIvZ3RrL21lc29uLmJ1aWxkIGIvcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZAoraW5kZXggMDhhYWU0Zi4uNjcxYTY1ZCAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKKysrKyBiL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKK0BAIC0xOCw1ICsxOCw2IEBAIGV4ZWN1dGFibGUoJ2d0ay1wbGF5JywKKyAgICAgICBndGtfcGxheV9yZXNvdXJjZXMsCisgICAgICAnZ3RrLXZpZGVvLXJlbmRlcmVyLmgnLAorICAgICAgJ2d0ay12aWRlby1yZW5kZXJlci5jJ10sCisrICAgIGluc3RhbGw6IHRydWUsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnbGliX2RlcCwgZ29iamVjdF9kZXAsIGdtb2R1bGVfZGVwLCBnc3RfZGVwLCBnc3R0YWdfZGVwLCBnc3RwbGF5ZXJfZGVwLCBndGtfZGVwLCB4MTFfZGVwXSkKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy9nc3QtcGxheWVyLmRlc2t0b3AKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzL2dzdC1wbGF5ZXIuZGVza3RvcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkODdmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlc19naXQuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgZXhhbXBsZXMgKGluY2x1ZGluZyBndGstcGxheSwgZ3N0LXBsYXkpIgorTElDRU5TRSA9ICJMR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wbGF5YmFjay9wbGF5ZXIvZ3RrL2d0ay1wbGF5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZjhjNzJkYWUzZDM2ODIzZWM3MTZhOWViY2FlNTkzYjkiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgorCitTUkNSRVYgPSAiNDgyNDdjNmFiNjgwN2Q2YWUxNzljZjY1M2NiZGM2NDcxNGQzMzEzYyIKK1BWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtbSAwNjQ0IC1EICR7V09SS0RJUn0vZ3N0LXBsYXllci5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9nc3QtcGxheWVyLmRlc2t0b3AKK30KKworUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImdzdHJlYW1lcjEuMC1saWJhdiIsICIiLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS1tZXRhIiwgIiIsIGQpfSIKK1JQUk9WSURFU18ke1BOfSArPSAiZ3N0LXBsYXllciBnc3QtcGxheWVyLWJpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU4ZmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciBwbGF5YmFjayBoZWxwZXIgbGlicmFyeSBhbmQgZXhhbXBsZXMiCi1MSUNFTlNFID0gIkxHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2d0ay9ndGstcGxheS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWY4YzcyZGFlM2QzNjgyM2VjNzE2YTllYmNhZTU5M2I5IgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBndGsrMyBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1wbGF5ZXIuZGVza3RvcCIKLQotU1JDUkVWID0gImVlM2MyMjZjODI3NjdhMDg5NzQzZTRlMDYwNTg3NDNlNjdmNzNjZGIiCi1QViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQl0b3VjaCAke1N9L0NoYW5nZUxvZwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLWxpYmF2IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1iaW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyNTg1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYmMwNzRkNDk2NzcwODFmOWMyN2RlMTFhMDkxNjU3NDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjlkYTlkZmU2ZTVkNmY1YmEzYjM4YzU3NTJiNDJkM2Y5Mjc3MTU5MDQ5NDJiNDA1YzI5MjRkM2NiNzdhZmJhMSIKKworREVQRU5EUyA9ICJqc29uLWdsaWIgZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKKworaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWJiZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODc4OGFlY2MwMzJhMjg3MjI3YjRiZDIzOWQxYjk5OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJiNzM1YjliYjIxOGI2NTJhZTQwNzFlYTZmNmJlOGVhYWU1NWU5ZDMyMzNhZWMyZjM2Yjg4MmEyNzU0MmRiMyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjU0N2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhhODUxYmYyZTQ3NWU5MGEzZmRhYzk1MDZlM2U0ZGJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhNTZhYTVkMmQ4Y2Q5MTJmMmJjZTE3ZjE3NDcxM2QyYzQxN2NhMjk4ZjFmOWMyOGVlNjZkNGFhMWUxZDllNjIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkNDU3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YTE0MDRhMjBiNzJlNGFiNmU4MjY1MDAyMThlYzMwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjIyMzk4ZjQ1YTAyN2U5NzdkMmI1MzA5NjI1ZWM5MWNkY2FmMGRhODc1MWNiYzdmNTk2ZDYzOWE0NWJhMjk4IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmN2VhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCkBAIC0wLDAgKzEsMTEgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWI4ZDVhZTNiNjljZmVlZDlkYzc3YzU5MjEwNjI0N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTAyNWZhMjQyNDJlYzg2OGZlMGZmMWU2NmQ4MDZhMTA3MGJjYmM3YzE0YTk4N2E4OWNkYzMzOTVkMGQ1NmQ1ZiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKaW5kZXggN2JlMTVkOS4uY2EyZWE5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMjIsNyArMjIsNyBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIG5lb24gcnN2ZyBzYmMgc21vb3Roc3RyZWFtaW5nIHNuZGZpbGUgdXZjaDI2NCB3ZWJwIFwKKyAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCiAiCiAKIFBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGQ5M2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA3YzhmNjhjNTQyODM4MGI5MzA1NzlkYzllZjI3Yzg1MzI2NDQ0OGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTU6MDY6MTEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJlcGVuZCBQS0dfQ09ORklHX1NZU1JPT1RfRElSIHRvIHBrZy1jb25maWcgb3V0cHV0Ci0KLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gSWYgYnVpbGQgaG9zdCBoYXMgd2F5bGFuZCBpbnN0YWxsZWQKLXRoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkCi1ob3N0IHRoZW4gaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0Ci0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UKLWluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlMzA3YmU2Li44M2NkZWIwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMjcyLDcgKzIyNzIsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzaW5rXSwgd2F5bGFuZCAsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIGxpYmRybSA+PSAyLjQuNTUgd2F5bGFuZC1wcm90b2NvbHMgPj0gMS40LCBbCi0gICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KLSAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKLS0gICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotICAgICBlbHNlCi0gICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCi0gICAgICAgSEFWRV9XQVlMQU5EPSJubyIKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKaW5kZXggZDUyYWZkNS4uYWQ4NjMyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoCkBAIC0xOCwxMSArMTgsMTEgQEAKICBjb25maWd1cmUuYWMgfCAgIDIzICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBlOTVjNWMuLjEyMTUzYjQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5MDEsNiArMTkwMSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tYXByaW50XSwgY2hyb21hcHJpbnQsIFsKK0luZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMub3JpZy9jb25maWd1cmUuYWMKKysrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworQEAgLTIxMzksNiArMjEzOSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tCiAgXSkKICAKICBkbmwgKioqIEN1cmwgKioqCkBAIC0zNyw4ICszNyw4IEBACiArCiAgdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKICBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMjEuMCwgWwotQEAgLTE5MTUsMTIgKzE5MjQsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXSwgY3VybCwgWworICAgUEtHX0NIRUNLX01PRFVMRVMoQ1VSTCwgbGliY3VybCA+PSA3LjM1LjAsIFsKK0BAIC0yMTYxLDEyICsyMTcwLDE0IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0KICAgIF0pCiAgICBBQ19TVUJTVChDVVJMX0NGTEFHUykKICAgIEFDX1NVQlNUKENVUkxfTElCUykKQEAgLTU5LDYgKzU5LDMgQEAKICAgIEFNX0NPTkRJVElPTkFMKFVTRV9TU0gyLCB0ZXN0ICJ4JEhBVkVfU1NIMiIgPSAieHllcyIpCiAgICBBQ19TVUJTVChTU0gyX0NGTEFHUykKICAgIEFDX1NVQlNUKFNTSDJfTElCUykKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAotICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjU2ODNmMGVhOTFmOWUxZTA2MTNiMGY2ZjcyOTk4MGE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMmM3ZWRkZTRmNTlkNzRlYjQxNGUwNzAxYzU1MTMxZjU2MmU1YzYwNWEzY2U5YjA5MTc1NGYxMDZjMDllMzciCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmM3ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNjRiZjE2Y2YxNWVkYWFiMWMwZTAyYzhkZWU3MTcwZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGM3ODU3YmUxNjY4NmQ1YzFiYTZlMzRiZDMzODY2NGQzZDQ1OTlkMzI3MTRhOGVjYTVjOGE0MWExMDFlMmQwOCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAppbmRleCAwYThiYzliLi42NjE2ZTJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKQEAgLTIwLDExICsyMCwxMSBAQAogIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSAgICAgIHwgIDggKysrKy0tLS0KICAxMSBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IGJjN2Y1M2EuLjBlZjVmODYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zNSw3ICszNSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK0BAIC0zNiw3ICszNiw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKEkKICAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0zMyw3ICszMyw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC00MiwxMSArNDIsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotaW5kZXggZGNjMmZlMC4uZGMwNzZjYiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KK0BAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvYXBwL2FwcC5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtNTcsMTEgKzU3LDExIEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggMjM3NDE5Ni4uMjk1ZWI0MiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTA2LDEyICsxMDYsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXVkaW8tQEdTVF9BUElfVkUKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorQEAgLTE2NywxMiArMTY3LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2F1ZGlvL2F1ZGlvLmgiIFwKQEAgLTc4LDcgKzc4LDcgQEAKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTE0MCw4ICsxNDAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMjAxLDggKzIwMSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCkBAIC04OSwxMSArODksMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLWluZGV4IGY1NDUzNTQuLjFiYjYyNDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjIsNyArNjIsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCitAQCAtNjMsNyArNjMsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2ZmdC9mZnQuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTEwMiw3ICsxMDIsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTg2LDcgKzg2LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xMTEsMTEgKzExMSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDkxZGMyMTQuLmRjOGUxZDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC04NCwxNCArODQsMTQgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorQEAgLTg1LDE0ICs4NSwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRSCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3BidXRpbHMvcGJ1dGlscy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTM0LDcgKzEzNCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyNCw4ICsxMjQsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMTI1LDggKzEyNSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTQ1LDExICsxNDUsMTEgQEAKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggM2JkOGZjMC4uMGExMTVjYyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQxLDggKzQxLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCitAQCAtNDIsOCArNDIsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MKICAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKQEAgLTE2MCw3ICsxNjAsNyBAQAogICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTczLDggKzczLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorQEAgLTc0LDggKzc0LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXApAQCAtMTcxLDExICsxNzEsMTEgQEAKICAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAjCiAgI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggZjU0NDVjMS4uNTI3YzBiNCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02MCw4ICs2MCw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KK0BAIC02MSw4ICs2MSw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtMTg2LDcgKzE4Niw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTg4LDggKzg4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg5LDggKzg5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xOTcsMTEgKzE5NywxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1pbmRleCA5YjBiMjU4Li40ZjZkOWY4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNjcsNyArNjcsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCitAQCAtNjgsNyArNjgsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTAsNyArMjEwLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1HaW8tMi4wIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk3LDcgKzk3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTk4LDcgKzk4LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTksMTEgKzIxOSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotaW5kZXggMGUxNDliOC4uOWFhMDUxMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0td2Fybi1hbGwgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0yMzIsNyArMjMyLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC01Myw3ICs1Myw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC01NCw3ICs1NCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjQxLDExICsyNDEsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggY2FmYWZkMy4uYmE5OTI3OSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC00MCw4ICs0MCw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KK0BAIC01OSw4ICs1OSw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvdGFnL3RhZy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjU2LDMzICsyNTYsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC02OCw4ICs2OCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1pbmRleCBhYzY0ZWIzLi4zNDJjOGM2IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLUBAIC0xMTEsOCArMTExLDggQEAgR3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dmlkZW8tQEdTVF9BUElfVkUKLSAJCS0tYy1pbmNsdWRlICJnc3QvdmlkZW8vdmlkZW8uaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTEzOSw4ICsxMzksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtODcsOCArODcsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTI5Myw2ICsyNjcsMjkgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi0tLSAKLTIuNi4yCi0KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorQEAgLTExNiw4ICsxMTYsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TCisgCQktLWMtaW5jbHVkZSAiZ3N0L3ZpZGVvL3ZpZGVvLmgiIFwKKyAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCistCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeT1saWJnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BAIC0xNDQsOCArMTQ0LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCisgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKKyAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCistCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQorIAorIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlMGI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc3ZjUzNzljNGNhNjc3NjE2YjQxNWUzYjNmZjk1NTc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNjdkY2UzYWZlMTk3YTk1MzZmZWEwMTA3Yzc3MjEzZmFiNTM2ZGZmNGEyMTNiMDdmYzYwMzc4ZDU1MTA2NzUiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4OTViYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImIzNWIwNDA3MWY2OWI4YWI2OWE3ZjNhNDk3ZmYwMTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMzA2YjAzZGYwMjEyZjFiODkwMzc4NGUyOWJiMzQ5MzMxOWJhMTllYmViZjEzYjBjNTZhMTc4NzAyOTIyODIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4ODE4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNTQ1NjQ2Y2NjYmEyNDMyMzZlMTAzNjJmZTczMjVmODliZTU3ZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KLURhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTE6Mjg6MzcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gdjRsMjogRml4IDRLIGNvbG9yaW1ldHJ5Ci0KLVNpbmNlIDEuNiwgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBCVDIwMjAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIEJUNzA5Ci10byBCVDIwMjBfMTIuIEl0J3MgdGhlIHNhbWUgZnVuY3Rpb24sIGJ1dCB3aXRoIG1vcmUgcHJlY2lzaW9uLiBBcyBhIHNpZGUKLWVmZmVjdCwgdGhlIFY0TDIgY29sb3Jwc2FjZSBkaWRuJ3QgbWF0Y2ggR1N0cmVhbWVyIGNvbG9yc3BhY2UuIFdoZW4KLUdTdHJlYW1lciBlbmRlZCB1cCBtYWtpbmcgYSBndWVzcywgaXQgd291bGQgbm90IG1hdGNoIGFueXRoaW5nIHN1cHBvcnRlZAotYnkgVjRMMiBhbnltb3JlLiBUaGlzIHRoaXMgYnkgdXNpbmcgQlQyMDIwXzEyIGZvciBCVDIwMjAgY29sb3JzcGFjZSBhbmQKLUJUMjAyMCB0cmFuc2ZlciBmdW5jdGlvbiBpbiByZXBsYWNlbWVudCBvZiBCVDcwOSB3aGVuZXZlciBhIDRLCi1yZXNvbHV0aW9uIGlzIGRldGVjdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIERlY2hlc25lIDxuaWNvbGFzLmRlY2hlc25lQGxpbmFyby5vcmc+Ci0KLS0tLQotIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLWluZGV4IDYxMjQ0NDU1Zi4uYWFlMmM1NWU3IDEwMDY0NAotLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi0rKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLUBAIC0xOTYwLDcgKzE5NjAsNyBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9CVDIwMjA6Ci0gICAgICAgY2luZm8tPnJhbmdlID0gR1NUX1ZJREVPX0NPTE9SX1JBTkdFXzE2XzIzNTsKLSAgICAgICBjaW5mby0+bWF0cml4ID0gR1NUX1ZJREVPX0NPTE9SX01BVFJJWF9CVDIwMjA7Ci0tICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OwotKyAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDIwMjBfMTI7Ci0gICAgICAgY2luZm8tPnByaW1hcmllcyA9IEdTVF9WSURFT19DT0xPUl9QUklNQVJJRVNfQlQyMDIwOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9TTVBURTI0ME06Ci1AQCAtMjA2Miw3ICsyMDYyLDEwIEBAIGdzdF92NGwyX29iamVjdF9nZXRfY29sb3JzcGFjZSAoc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQsCi0gCi0gICBzd2l0Y2ggKHRyYW5zZmVyKSB7Ci0gICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfNzA5OgotLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSsgICAgICBpZiAoZm10LT5mbXQucGl4LmhlaWdodCA+IDIxNjApCi0rICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOwotKyAgICAgIGVsc2UKLSsgICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBWNEwyX1hGRVJfRlVOQ19TUkdCOgotICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9TUkdCOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTkzYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjIwMjU0MjE3ZDk4MDU0ODQ1MzJlMDhmZjFjM2FhMjk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1OTFlZTcyMDhhYjMwMjg5YTMwNjU4YTgyYjc2YmY4NzE2OWM5Mjc1NzJkOWI3OTRmM2E0MWVkNDhlMWVlOTYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgotCi1SUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCi1SUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYwOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImJkZjQ3OTFhMmI3ODhlYzZhMTQ5YjgxZmY0MDMyMDM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0OWY0OWJlYzYwODkyZDQ3ZWU2NzMxYjkyMjY2OTc0YzcyMzU1NGRhMWM2NjQ5ZjIxMjk2MDk3NzE1ZWI5NTciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1NmM4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZWI2MzkwMjE5MDVhMzJjZjMwMTNjYTViYWMxYjY5NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWNjMzk0MmJiZjNlYTg3ZGEzZTM1NDM3ZDRlMDE0ZTk5MWIxMDNkYjIyYTYxNzRmNjJhOThjODljM2Y1ZjQ2NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODMzMzUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMmI4MzZmYjI3NDdmNmFlM2ExYTZmMzNhOWQ4Yzk1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzE2NWI4ZDg4OGVkMzUwYWNkOGU2YWM5ZjZmZTA2NTA4ZTZmY2MwYTNhZmM2Y2NjOWZiZWIzMGRmOWJlNTIyIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKaW5kZXggYzQwZDM5OC4uNTkwNmU0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTUsNiArNSw4IEBACiAKIERFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKIAorU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwogCiBhY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCkBAIC0zNCwyMSArMzYsNiBAQAogCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICAjIEFsc28gc3Vic3RpdHV0ZSBhIGJvZ3VzIHBsdWdpbiBzY2FubmVyLCBhcyB0cnlpbmcgdG8gcnVuIHRoZSByZWFsIG9uZSBpcyBjYXVzaW5nIGlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfFwkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCl8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKSBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPVwkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXl8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCiBQQUNLQUdFU19EWU5BTUlDID0gIl4ke1BOfS0uKiIKLQotIyBxZW11LW1pcHM2NDogZXJyb3Igd2hpbGUgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzOiAuLi4vcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJndGhyZWFkLTIuMC5zby4wOiBFTEYgZmlsZSBkYXRhIGVuY29kaW5nIG5vdCBsaXR0bGUtZW5kaWFuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKaW5kZXggOTYxYjkzMC4uMzYxZjBiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCkBAIC04LDggKzgsNiBAQAogCiBQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKIAotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCi0KIFMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZGMwNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkYTVjOWZhNDIyOTBiYzMwMDY2NjFjODY5ZTA3NmZmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGNjMzJhZDQ2YTY1M2UxYWUyZjI3YWMyYTE2MDc4YjAwMDc1YzkxMDZiMjc4NGExYThkMWYzMWM1MDY5ZTQ3IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZWMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMWZkMDQ2ZWE3ODE3MzZhNzk0ZjlmNTUyZDc3YzUwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGNlNmFmNjYxNWM5YTQ0MGMxOTI4YzMxMjU5YTc4MjI2NTE2ZDA2YmYxYTY1Zjg4OGM2ZDEwOTgyNmZhM2VhIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwppbmRleCA2ODE3M2NlLi4zNzc2ZjkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCkBAIC0zLDE4ICszLDIxIEBACiBTRUNUSU9OID0gIm11bHRpbWVkaWEiCiBMSUNFTlNFID0gIkxHUEx2MiIKIAotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgbGliY2dyb3VwIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2hlY2siCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogCiBQTlJFQUwgPSAiZ3N0LXJ0c3Atc2VydmVyIgogCiBTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXVzaW5nLWludHJvc3BlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgogCiBTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCiAKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgorCiAjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKIExJQlYgPSAiMS4wIgogcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwpAQCAtMjQsMTcgKzI3LDUgQEAKICAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Citkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDI2Y2NhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjI3NTdjYWIxODNmNWI5NzAwODZlOTEwMWM2MGE5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJhOTI2NGU4YWU2ZTQ0MDI5MzMyOGU3NTllNDA0NTZmMTYxYWE2NjA3N2IzMTQzZGQwNzU4MTEzNjE5MGIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTY4ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZDcwYTk3MzVmNThkYTIxZDBmNWNlZGY0OGNjYWRkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjYwMTEyZWJkNTk4MzhmMTA1NDc5NmIzODEwOWRjYmUzMmYwYTA0MGUzYTI1MmE2OGE4MTA1NWFlYWE1NmE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJkOWY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwotU1JDX1VSSVttZDVzdW1dID0gImJlYTAxNWYzMzY5NmExNWFkOTU3NWZiNzFhZjg2MmVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzYzcxNGUwNDc0YjNjN2FlNmZmODg4NGFlYmY4NTAzYTFiYzNkZWQzMzVmYTJkMmIyYWMzMTc4ODQ2NjE2M2EiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGYyMzAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCitTUkNfVVJJW21kNXN1bV0gPSAiMjE0OTk4MmNkYjM0ODEzOWJjYTk0NmJiNjM3NjZmNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMyZDc3MjQyZTFmMzBjNGQxMzk0NjM2Y2FlOWY2ODc3MjI4YTAxNzk2MGZjYTk2ODgxZTAwODBkOGI2ZTljOSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmluZGV4IDMyOTE5MzQuLmMyZGYxZjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTE2LDYgKzE2LDggQEAKIAogU1JDX1VSSV9hcHBlbmQgPSAiIFwKICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAogIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgpAQCAtNTIsMTkgKzU0LDcgQEAKICAgICAgICAgcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCiB9CiAKLSMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCi0jIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKLXBhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgICMgQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcgaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKXxcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9XCQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9oZWxwZXJzL2dzdC1wbHVnaW4tc2Nhbm5lci1kdW1teXwiIFwKLSAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QvLmxpYnM6JHtCfS9saWJzL2dzdC9iYXNlLy5saWJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTMyZmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gYTBjYjQxYmE3MjkxM2VkYTA2MDQ5ZDI2NmVjNDNlYThmNTJiNWJlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLURhdGU6IEZyaSwgMTEgQXVnIDIwMTcgMjE6MjE6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBZGQgc3dpdGNoZXMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaWJkdyBhbmQKLSBsaWJ1bndpbmQKLQotW09yaWdpbmFsIHBhdGNoIG1vZGlmaWVkIHRvIGJlIGFwcGxpY2FibGUgdG8gMS4xMi4yXQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODE5M10KLQotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjZiMjkyMy4uMzJkZDgyNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODIxLDE1ICs4MjEsNDEgQEAgZmkKLSBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCi0gCi0gZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotLVBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kLCBIQVZFX1VOV0lORD15ZXMsIEhBVkVfVU5XSU5EPW5vKQotLWlmIHRlc3QgIngkSEFWRV9VTldJTkQiID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLStBQ19BUkdfV0lUSChbdW53aW5kXSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11bndpbmQ9eWVzfG5vfGF1dG9dLFt1c2UgbGlidW53aW5kXSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF91bndpbmQ9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX3Vud2luZH0iICE9ICJ4bm8iIF07IHRoZW4KLSsgIFBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgW2xpYnVud2luZF0sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9VTldJTkQ9eWVzCi0rICAgICAgICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfVU5XSU5EPW5vCi0rICAgICAgICBpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgPSAieHllcyIgXTsgdGhlbgotKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYnVud2luZF0pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9VTldJTkQ9bm8KLSBmaQotIAotIGRubCBsaWJkdyBpcyBvcHRpb25hbGx5IHVzZWQgdG8gYWRkIHNvdXJjZSBsaW5lcyBhbmQgbnVtYmVycyB0byBiYWNrdHJhY2VzCi0tUEtHX0NIRUNLX01PRFVMRVMoRFcsIGxpYmR3LCBIQVZFX0RXPXllcywgSEFWRV9EVz1ubykKLS1pZiB0ZXN0ICJ4JEhBVkVfRFciID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9EVywgMSwgW2xpYmR3IGF2YWlsYWJsZV0pCi0rQUNfQVJHX1dJVEgoW2R3XSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kdz15ZXN8bm98YXV0b10sW3VzZSBsaWJkd10pXSwKLSsgICAgICAgICAgICBbXSwgW3dpdGhfZHc9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgIT0gInhubyIgXTsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoRFcsIFtsaWJkd10sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9EVz15ZXMKLSsgICAgICAgIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfRFc9bm8KLSsgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF9kd30iID0gInh5ZXMiIF07IHRoZW4KLSsgICAgICAgICAgQUNfTVNHX0VSUk9SKFtjb3VsZCBub3QgZmluZCBsaWJkd10pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9EVz1ubwotIGZpCi0gCi0gZG5sIENoZWNrIGZvciBiYWNrdHJhY2UoKSBmcm9tIGxpYmMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDQxYTU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ3NDg4NjA2MjE2MDdmZmQ5NjI0NGZiNzljODZjMjM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZGUzZjM5YTJlYTk4NGY5ZTA3Y2UwOTI1MDI4NWNlOTFmNmUzNjE5ZDE4Njg4OWY3NWI1MTU0ZWNmOTk0YmEiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMjM5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZDI2OGYyZTg5MWNjZTFhYzA4MzJmMWNjNDY3ZDRlYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTg3MDRhYTRjMmVlYjA0ZGExOTJjNGE5OTQyZjk0Zjg2MGFjMWE1ODVkZTkwZDlmOTE0YmFjMjZhOTcwNjc0IgorCitTID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgorCitDVkVfUFJPRFVDVCA9ICJnc3RyZWFtZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFiYWVmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCB0aGlzIGtpbmQgb2YgZXJyb3JzIHdpdGggYXV0b21ha2UgMS4xMi54OgotfCBkb2MvbWFuL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLXwgYXV0b3JlY29uZjogYXV0b21ha2UgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDcvMTMKLQotSW5kZXg6IGxhbWUtMy45OS41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvY29uZmlndXJlLmluCi0rKysgbGFtZS0zLjk5LjUvY29uZmlndXJlLmluCi1AQCAtNzcsOSArNzcsNiBAQCBpZiB0ZXN0ICIke0dDQ30iID0gInllcyI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVCgke0dDQ192ZXJzaW9ufSkKLSBmaQotIAotLWRubCBtb3JlIGF1dG9tYWtlIHN0dWZmCi0tQU1fQ19QUk9UT1RZUEVTCi0tCi0gQUNfQ0hFQ0tfSEVBREVSKGRtYWxsb2MuaCkKLSBpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9kbWFsbG9jX2h9IiA9ICJ5ZXMiOyB0aGVuCi0gCUFNX1dJVEhfRE1BTExPQwotSW5kZXg6IGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGFtZS0zLjk5LjUub3JpZy9kb2MvaHRtbC9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSAjIyAkSWQ6IE1ha2VmaWxlLmFtLHYgMS43IDIwMTAvMDkvMzAgMjA6NTg6NDAgamF6MDAxIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIGRvY2RpciA9ICQoZGF0YWRpcikvZG9jCi0gcGtnZG9jZGlyID0gJChkb2NkaXIpLyQoUEFDS0FHRSkKLUluZGV4OiBsYW1lLTMuOTkuNS9saWJtcDNsYW1lL2kzODYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsYW1lLTMuOTkuNS5vcmlnL2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gIyMgJElkOiBNYWtlZmlsZS5hbSx2IDEuMjYgMjAxMS8wNC8wNCAwOTo0MjozNCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gJCh0b3Bfc3JjZGlyKS9hbnNpMmtucgotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0gREVGUyA9IEBERUZTQCBAQ09ORklHX0RFRlNACi0gCi1JbmRleDogbGFtZS0zLjk5LjUvZG9jL21hbi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvZG9jL21hbi9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9tYW4vTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotICMjICRJZDogTWFrZWZpbGUuYW0sdiAxLjEgMjAwMC8xMC8yMiAxMTozOTo0NCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIG1hbl9NQU5TID0gbGFtZS4xCi0gRVhUUkFfRElTVCA9ICR7bWFuX01BTlN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuMTAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhYzdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJMR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKKyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGFtZS9sYW1lLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1ndGsxLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODNlMjYwYWNiZTQzODliNTRmZTA4ZTBiZGJmN2NkZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRmZTM2Y2FiODczNzk0MDM4YWUyYzEyMTA1NTdhZDM0ODU3YTRiNmJkYzUxNTc4NWQxZGE5ZTE3NWIxZGExZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCitGSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCitGSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgorRklMRVNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Nzc2MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKLSIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODQ4MzViMzEzZDRhOGI2OGY1MzQ5ODE2ZDMzZTA3Y2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQzNDZiNDE1OGU0YWYzYmQ5ZjJlMTk0YmIyM2ViNDczYzc1ZmI3Mzc3MDExNTIzMzUzMTk2YjE5YjlhMjNmZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCi1GSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCi1GSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX3g4NiA9ICIgYWNfY3ZfaGVhZGVyX2VtbWludHJpbl9oPW5vIGFjX2N2X2hlYWRlcl94bW1pbnRyaW5faD1ubyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNDJlMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgotREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCi1mb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKLW5lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWMzYTM0MzA5ZDhiOTg2NDA4MjdlNWQwOTkxYTQwMTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y2ODdjY2RkNWFjOGI1MmQ3NjMyOGZiYmZlYmM3MGM0NTlhNDBlYTg5MWRiZjNkY2NiNzRhMjEwODI2ZTc5YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODhmMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgorREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCitmb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKK25lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODdlZDc0MjA0N2YwNjUwNDZlYjZjMzY3NDVkODcxYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGYzZmM2MTc4YTUzM2QzOTIwNjRmMTQ3NzZiMjNjMzk3ZWQ0YjlmNDhmNWRlMjk3YWJhNzNiNjQzZjk1NWMwOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NmVhMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjIxZTRlMWY3OTU4MTBiNWVhNDkxYjMzM2JjNmVhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWYzMDBjNDE5YTQ1YzUzYThkMmRhYTBiN2QxNjdhNjYiCi1ERVBFTkRTID0gInpsaWIiCi0KLUxJQlYgPSAiMTYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjFiMzRlYWI0NDAyNjNlMzJjZmEzOWQxOTQxM2ZhZDU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMmE2MDJkZTA0OTE2YjJiNWNlNmY5MDE4MjljYWY0MTk1MTllNmExNmNjOWNkN2MxYzkxMTg3ZDNlZThiNDEiCi0KLU1JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmQwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZGI3MTdhMDVhMjBlMzZmMmZhNjczMjY1YmQzMTU2OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9M2FjOWZkMjUwYTg3ODZhZTU4MWUzNDI1NGJmNzk0MjkiCitERVBFTkRTID0gInpsaWIiCisKK0xJQlYgPSAiMTYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImMwNWI2Y2E3MTkwYTVlMzg3Yjc4NjU3ZGJlNTUzNmIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmMWU5NjBkOTJjZTNiM2FiZDAzZDA2ZGZlYzk2MzdkZmJkMjJmZWJmMTA3YTUzNmI0NGY3YTQ3YzYwNjU5ZjYiCisKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlicG5nLm9yZy9wdWIvcG5nL2xpYnBuZy5odG1sIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYnBuZy1jb25maWcgJHtiaW5kaXJ9L2xpYnBuZzE2LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgc3ltYm9scworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1lbmFibGUtYXJtLW5lb249b24iLCAiLS1lbmFibGUtYXJtLW5lb249b2ZmIiAsZCl9IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS9wbmctZml4LWl0eHQgJHtiaW5kaXJ9L3BuZ2ZpeCAke2JpbmRpcn0vcG5nY3AiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEwNjg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGI5NjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDMzM2JhNTU5OWU4N2JkNzc0NzUxNmQ3ODYzZDYxNzY0ZTRjYTJkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogRnJpLCAzMCBKdW4gMjAxNyAxNzoyOTo0NCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFhYWFgoKSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIExPTkc4L1NMT05HOAotIGRhdGEgdHlwZSwgcmVwbGFjZSBhc3NlcnRpb24gdGhhdCB0aGUgZmlsZSBpcyBCaWdUSUZGLCBieSBhIG5vbi1mYXRhbCBlcnJvci4KLSBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyIFJlcG9ydGVkIGJ5IHRlYW0KLSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0LzYxNzNhNTdkMzllMDRkNjhiMTM5ZjhjMWFhNDk5YTI0ZGJlNzRiYTFdCi0KLUNWRTogQ1ZFLTIwMTctMTA2ODgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCi0gbGlidGlmZi90aWZfZGlyd3JpdGUuYyB8IDIwICsrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAwMjQwZjBiLi40MmVhZWI3IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRYWFhYKCkKLSsJZnVuY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBMT05HOC9TTE9ORzggZGF0YSB0eXBlLCByZXBsYWNlIGFzc2VydGlvbiB0aGF0Ci0rCXRoZSBmaWxlIGlzIEJpZ1RJRkYsIGJ5IGEgbm9uLWZhdGFsIGVycm9yLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyCi0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLWluZGV4IDI5NjdkYTUuLjhkNjY4NmIgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi0rKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi1AQCAtMjExMSw3ICsyMTExLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpCi0gewotIAl1aW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoJm0pOwotQEAgLTIxMjQsNyArMjEyNywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaQotIHsKLSAJYXNzZXJ0KGNvdW50PDB4MjAwMDAwMDApOwotIAlhc3NlcnQoc2l6ZW9mKHVpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJMT05HOCBub3QgYWxsb3dlZCBmb3IgQ2xhc3NpY1RJRkYiKTsKLSsJCXJldHVybigwKTsKLSsJfQotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJBcnJheU9mTG9uZzgodmFsdWUsY291bnQpOwotIAlyZXR1cm4oVElGRldyaXRlRGlyZWN0b3J5VGFnRGF0YSh0aWYsbmRpcixkaXIsdGFnLFRJRkZfTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotQEAgLTIxMzYsNyArMjE0MiwxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkU2xvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdQotIHsKLSAJaW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJTTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoKHVpbnQ2NCopKCZtKSk7Ci1AQCAtMjE0OSw3ICsyMTU4LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkCi0gewotIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7Ci0gCWFzc2VydChzaXplb2YoaW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiU0xPTkc4IG5vdCBhbGxvd2VkIGZvciBDbGFzc2ljVElGRiIpOwotKwkJcmV0dXJuKDApOwotKwl9Ci0gCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCi0gCQlUSUZGU3dhYkFycmF5T2ZMb25nOCgodWludDY0Kil2YWx1ZSxjb3VudCk7Ci0gCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9TTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMTMzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDhlNzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBlOGIxNWNjZjhjOWM1OTMwMDBmODIwMmNmMzRjYzZjNGI5MzZkMDFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6MTM6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluCi0gIlJhdyIgbW9kZSBvbiBQbGFuYXJDb25maWc9Q29udGlnIGlucHV0IGltYWdlcy4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1IFJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC82OWJmZWVjMjQ3ODk5Nzc2YjFiMzk2NjUxYWRiNDc0MzZlNWYxNTU2XQotCi1DVkU6IENWRS0yMDE3LTExMzU1Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgfCA3ICsrKysrKysKLSB0b29scy90aWZmMnBkZi5jIHwgNyArKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDQyZWFlYjcuLjY5ODBkYTggMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDctMTUgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogdG9vbHMvdGlmZjJwZGYuYzogcHJldmVudCBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB3cml0ZSBpbiAiUmF3IgotKwltb2RlIG9uIFBsYW5hckNvbmZpZz1Db250aWcgaW5wdXQgaW1hZ2VzLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0zMCAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiBpbiBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkWFhYWCgpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKLWluZGV4IGRiMTk2ZTAuLmNkMWUyMzUgMTAwNjQ0Ci0tLS0gYS90b29scy90aWZmMnBkZi5jCi0rKysgYi90b29scy90aWZmMnBkZi5jCi1AQCAtMTczNyw3ICsxNzM3LDEyIEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9kYXRhKFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7Ci0gCSAgICByZXR1cm47Ci0gCi0gCXQycC0+cGRmX3RyYW5zY29kZSA9IFQyUF9UUkFOU0NPREVfRU5DT0RFOwotLQlpZih0MnAtPnBkZl9ub3Bhc3N0aHJvdWdoPT0wKXsKLSsgICAgICAgIC8qIEl0IHNlZW1zIHRoYXQgVDJQX1RSQU5TQ09ERV9SQVcgbW9kZSBkb2Vzbid0IHN1cHBvcnQgc2VwYXJhdGUtPmNvbnRpZyAqLwotKyAgICAgICAgLyogY29udmVyc2lvbi4gQXQgbGVhc3QgdDJwX3JlYWRfdGlmZl9zaXplIGFuZCB0MnBfcmVhZF90aWZmX3NpemVfdGlsZSAqLwotKyAgICAgICAgLyogZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIHRodXMgKi8KLSsgICAgICAgIC8qIHRoYXQgY2FuIGNhdXNlIGhlYXAgYnVmZmVyIG92ZXJmbG93cyBzdWNoIGFzIGluICovCi0rICAgICAgICAvKiBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1ICovCi0rCWlmKHQycC0+cGRmX25vcGFzc3Rocm91Z2g9PTAgJiYgdDJwLT50aWZmX3BsYW5hciE9UExBTkFSQ09ORklHX1NFUEFSQVRFKXsKLSAjaWZkZWYgQ0NJVFRfU1VQUE9SVAotIAkJaWYodDJwLT50aWZmX2NvbXByZXNzaW9uPT1DT01QUkVTU0lPTl9DQ0lUVEZBWDQgIAotIAkJCSl7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MGZmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDUzMTdjZTIxNTkzNmNlNjExODQ2NTU3YmIxMDRiNDlkM2I0YzgzNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxMzoyMTo0MSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90Ci0gZmluZGluZyB0aGUgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcgUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2Y5MWNhODNhMjFhNmE1ODMwNTBlNWE1NzU1Y2UxNDQxYjJiZjFkN2VdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCA3ICsrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggNjk4MGRhOC4uM2UyOTlkOSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotKwlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggOGQ2Njg2Yi4uMTQwOTBhZSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC04MjEsNyArODIxLDEyIEBAIFRJRkZXcml0ZURpcmVjdG9yeVNlYyhUSUZGKiB0aWYsIGludCBpc2ltYWdlLCBpbnQgaW1hZ2Vkb25lLCB1aW50NjQqIHBkaXJvZmYpCi0gCQkJVElGRkRpckVudHJ5KiBuYjsKLSAJCQlmb3IgKG5hPTAsIG5iPWRpcjsgOyBuYSsrLCBuYisrKQotIAkJCXsKLS0JCQkJYXNzZXJ0KG5hPG5kaXIpOwotKwkJCQlpZiggbmEgPT0gbmRpciApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGZpbmQgU3ViSUZEIHRhZyIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCQlpZiAobmItPnRkaXJfdGFnPT1USUZGVEFHX1NVQklGRCkKLSAJCQkJCWJyZWFrOwotIAkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIyOGMyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gYTVlODI0NWNjNjc2NDZmN2I0NDhiNGNhMjkyNThlYWFjNDE4MTAyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjMzOjQyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdAotIGZpdHRpbmcgb24gdWludDMyIHdoZW4gc2VsZWN0aW5nIHRoZSB2YWx1ZSBvZiBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjggUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2I2YWYxMzdiZjllZjg1MmYxYTQ4YTUwYTVhZmI4OGY5ZTlkYTAxY2NdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KLSBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgIDkgKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAzZTI5OWQ5Li44ZjVlZmU5IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDcgKzEsMTUgQEAKLSAyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHRvIHRhZyB2YWx1ZSBub3QgZml0dGluZwotKwlvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjawotKwkoaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI4Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotLQlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4gVElGRldyaXRlRGlyZWN0b3J5U2VjKCkpCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSAJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSAKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggMTQwOTBhZS4uZjBhNGJhYSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0xOTQ5LDcgKzE5NDksMTQgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpcikKLSAJCWZvciAocD0wOyBwIDwgdGlmLT50aWZfZGlyLnRkX25zdWJpZmQ7IHArKykKLSAJCXsKLSAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGEgIT0gMCk7Ci0tCQkJYXNzZXJ0KCpwYSA8PSAweEZGRkZGRkZGVUwpOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGhhcHBlbiBpZiBhbiBjbGFzc2ljVElGRiBoYXMgYSBTdWJJRkQgb2YgdHlwZSBMT05HOCAod2hpY2ggaXMgaWxsZWdhbCkgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiggKnBhID4gMHhGRkZGRkZGRlVMKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJJbGxlZ2FsIHZhbHVlIGZvciBTdWJJRkQgdGFnIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShvKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQkqcGIrKz0odWludDMyKSgqcGErKyk7Ci0gCQl9Ci0gCQluPVRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRJZmRBcnJheSh0aWYsbmRpcixkaXIsVElGRlRBR19TVUJJRkQsdGlmLT50aWZfZGlyLnRkX25zdWJpZmQsbyk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTgwMTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4ZTBkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMjkzYzhiMDI5OGU5MWQyMGJhNTEyOTFlMjM1MWFiN2QxMTA2NzFkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBTdW4sIDMxIERlYyAyMDE3IDE1OjA5OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRpZmYvdGlmX3ByaW50LmM6IFRJRkZQcmludERpcmVjdG9yeSgpOiBmaXggbnVsbCBwb2ludGVyCisgZGVyZWZlcmVuY2Ugb24gY29ycnVwdGVkIGZpbGUuIEZpeGVzCisgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuY29tL2xpYnRpZmYvbGlidGlmZi9jb21taXQvYzZmNDFkZjdiNTgxNDAyZGZiYTNjMTlhMWUzZGY0NDU0YzU1MWEwMV0KKworQ1ZFOiBDVkUtMjAxNy0xODAxMworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJ0aWZmL3RpZl9wcmludC5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9wcmludC5jIGIvbGlidGlmZi90aWZfcHJpbnQuYworaW5kZXggMjRkNGI5OC4uZjQ5NGNmYiAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX3ByaW50LmMKKysrKyBiL2xpYnRpZmYvdGlmX3ByaW50LmMKK0BAIC02NjcsMTMgKzY2NywxMyBAQCBUSUZGUHJpbnREaXJlY3RvcnkoVElGRiogdGlmLCBGSUxFKiBmZCwgbG9uZyBmbGFncykKKyAjaWYgZGVmaW5lZChfX1dJTjMyX18pICYmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSkKKyAJCQlmcHJpbnRmKGZkLCAiICAgICUzbHU6IFslOEk2NHUsICU4STY0dV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwb2Zmc2V0W3NdLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwYnl0ZWNvdW50W3NdKTsKKysJCQkgICAgdGQtPnRkX3N0cmlwb2Zmc2V0ID8gKHVuc2lnbmVkIF9faW50NjQpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBfX2ludDY0KSB0ZC0+dGRfc3RyaXBieXRlY291bnRbc10gOiAwKTsKKyAjZWxzZQorIAkJCWZwcmludGYoZmQsICIgICAgJTNsdTogWyU4bGx1LCAlOGxsdV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSB0ZC0+dGRfc3RyaXBvZmZzZXRbc10sCistCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSk7CisrCQkJICAgIHRkLT50ZF9zdHJpcG9mZnNldCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSA6IDApOworICNlbmRpZgorIAl9CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5MjI4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLUZyb20gMGFjZjAxZmVhNzE0YWY1NzNiODE0ZTEwY2YxMDVjMzM1OWEyMzZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFRodSwgMSBKdW4gMjAxNyAxMjo0NDowNCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAotYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLWNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCi10byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKLXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLXN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KLVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCi0oaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLUZpeGVzOgotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC80ZDRmYTBiNjhhZTlhZTAzODk1OWVlNGY2OWViZTI4OGVjODkyZjA2XQotCi1DVkU6IENWRS0yMDE3LTkxNDcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgIHwgIDIwICsrKysrKysrKysKLSBsaWJ0aWZmL3RpZl9kaXIuaCAgICAgfCAgIDEgKwotIGxpYnRpZmYvdGlmX2RpcmluZm8uYyB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcnJlYWQuYyB8ICAgNCArKwotIDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZWU4ZDlkMC4uNTczOTI5MiAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIzIEBACi0rMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLSsJYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLSsJY29kZWMtc3BlY2lmaWVkIHRhZyBidXQgdGhpcyBjb2RlYyBpcyBub3QgZW5hYmxlZC4gVGhpcyBhdm9pZHMgVElGRkdldEZpZWxkKCkKLSsJdG8gYmVoYXZlIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjb2RlYyBpcyBlbmFibGVkIG9yIG5vdCwgYW5kCi0rCXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLSsJc3VjaCBhcyB0aWZmc3BsaXQsIHRpZmZjbXAsIHRodW1ibmFpbCwgZXRjLgotKwlQYXRjaCBkZXJpdmVkIGZyb20gMDA2My1IYW5kbGUtcHJvcGVybHktQ09ERUMtc3BlY2lmaWMtdGFncy5wYXRjaAotKwkoaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLSsJRml4ZXM6Ci0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODAKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI1IChDVkUtMjAxNi0xMDA5NSkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NCAoQ1ZFLTIwMTUtNzU1NCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5OSAoQ1ZFLTIwMTQtODEyOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0rCi0gMjAxNy0wNS0yMSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KLSAKLSAJKiBjb25maWd1cmUuYWM6IGxpYnRpZmYgNC4wLjggcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmggYi9saWJ0aWZmL3RpZl9kaXIuaAotaW5kZXggZTEyYjQ0Yi4uNTIwNmJlNCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2Rpci5oCi0rKysgYi9saWJ0aWZmL3RpZl9kaXIuaAotQEAgLTI5MSw2ICsyOTEsNyBAQCBzdHJ1Y3QgX1RJRkZGaWVsZCB7Ci0gZXh0ZXJuIGludCBfVElGRk1lcmdlRmllbGRzKFRJRkYqLCBjb25zdCBUSUZGRmllbGRbXSwgdWludDMyKTsKLSBleHRlcm4gY29uc3QgVElGRkZpZWxkKiBfVElGRkZpbmRPclJlZ2lzdGVyRmllbGQoVElGRiAqLCB1aW50MzIsIFRJRkZEYXRhVHlwZSk7Ci0gZXh0ZXJuICBUSUZGRmllbGQqIF9USUZGQ3JlYXRlQW5vbkZpZWxkKFRJRkYgKiwgdWludDMyLCBUSUZGRGF0YVR5cGUpOwotK2V4dGVybiBpbnQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZyk7Ci0gCi0gI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0gfQotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotaW5kZXggMGM4ZWY0Mi4uOTdjMGRmMCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotKysrIGIvbGlidGlmZi90aWZfZGlyaW5mby5jCi1AQCAtOTU2LDYgKzk1NiwxMDkgQEAgVElGRk1lcmdlRmllbGRJbmZvKFRJRkYqIHRpZiwgY29uc3QgVElGRkZpZWxkSW5mbyBpbmZvW10sIHVpbnQzMiBuKQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0raW50Ci0rX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZykKLSt7Ci0rCS8qIEZpbHRlciBvdXQgbm9uLWNvZGVjIHNwZWNpZmljIHRhZ3MgKi8KLSsJc3dpdGNoICh0YWcpIHsKLSsJICAgIC8qIFNoYXJlZCB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfUFJFRElDVE9SOgotKwkgICAgLyogSlBFRyB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1RBQkxFUzoKLSsJICAgIC8qIE9KUEVHIHRhZ3MgKi8KLSsJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR0lGQllURUNPVU5UOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdRVEFCTEVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHQUNUQUJMRVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1BST0M6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJICAgIC8qIENDSVRUKiAqLwotKwkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0NMRUFORkFYREFUQToKLSsJICAgIGNhc2UgVElGRlRBR19DT05TRUNVVElWRUJBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfR1JPVVA0T1BUSU9OUzoKLSsJCWJyZWFrOwotKwkgICAgZGVmYXVsdDoKLSsJCXJldHVybiAxOwotKwl9Ci0rCS8qIENoZWNrIGlmIGNvZGVjIHNwZWNpZmljIHRhZ3MgYXJlIGFsbG93ZWQgZm9yIHRoZSBjdXJyZW50Ci0rCSAqIGNvbXByZXNzaW9uIHNjaGVtZSAoY29kZWMpICovCi0rCXN3aXRjaCAodGlmLT50aWZfZGlyLnRkX2NvbXByZXNzaW9uKSB7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0xaVzoKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fUEFDS0JJVFM6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fVEhVTkRFUlNDQU46Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTkVYVDoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KUEVHOgotKwkJaWYgKHRhZyA9PSBUSUZGVEFHX0pQRUdUQUJMRVMpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fT0pQRUc6Ci0rCQlzd2l0Y2ggKHRhZykgewotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdJRkJZVEVDT1VOVDoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1FUQUJMRVM6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR0FDVEFCTEVTOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHUFJPQzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJCQlyZXR1cm4gMTsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVFJMRToKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fQ0NJVFRSTEVXOgotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVEZBWDM6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0NDSVRURkFYNDoKLSsJCXN3aXRjaCAodGFnKSB7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkJICAgIGNhc2UgVElGRlRBR19DTEVBTkZBWERBVEE6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0NPTlNFQ1VUSVZFQkFERkFYTElORVM6Ci0rCQkJcmV0dXJuIDE7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCQkJaWYgKHRpZi0+dGlmX2Rpci50ZF9jb21wcmVzc2lvbiA9PSBDT01QUkVTU0lPTl9DQ0lUVEZBWDMpCi0rCQkJICAgIHJldHVybiAxOwotKwkJCWJyZWFrOwotKwkJICAgIGNhc2UgVElGRlRBR19HUk9VUDRPUFRJT05TOgotKwkJCWlmICh0aWYtPnRpZl9kaXIudGRfY29tcHJlc3Npb24gPT0gQ09NUFJFU1NJT05fQ0NJVFRGQVg0KQotKwkJCSAgICByZXR1cm4gMTsKLSsJCQlicmVhazsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KQklHOgotKwkJLyogTm8gY29kZWMtc3BlY2lmaWMgdGFncyAqLwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0RFRkxBVEU6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0FET0JFX0RFRkxBVEU6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgIGNhc2UgQ09NUFJFU1NJT05fUElYQVJMT0c6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX1NHSUxPRzoKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fU0dJTE9HMjQ6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTFpNQToKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsKLSsJfQotKwlyZXR1cm4gMDsKLSt9Ci0rCi0gLyogdmltOiBzZXQgdHM9OCBzdHM9OCBzdz04IG5vZXQ6ICovCi0gCi0gLyoKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLWluZGV4IDFkNGYwYjkuLmYxZGMzZDcgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotQEAgLTM1ODAsNiArMzU4MCwxMCBAQCBUSUZGUmVhZERpcmVjdG9yeShUSUZGKiB0aWYpCi0gCQkJCQkJCWdvdG8gYmFkOwotIAkJCQkJCWRwLT50ZGlyX3RhZz1JR05PUkU7Ci0gCQkJCQkJYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIV9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYyh0aWYsIGRwLT50ZGlyX3RhZykgKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwLT50ZGlyX3RhZz1JR05PUkU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAJCQkJfQotIAkJCX0KLSAJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2ODRkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKQEAgLTAsMCArMSwxNjAgQEAKK0Zyb20gYWJiMDA1NWQyMWM1MmE5OTI1MzE0ZDViMDYyOGZiMmI2MzA3NjE5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJyaWFuIE1heSA8YnJpYW5AbGludXhwZW5ndWlucy54eXo+CitEYXRlOiBUaHUsIDcgRGVjIDIwMTcgMDc6NDY6NDcgKzExMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGlmZjJwZGY6IEZpeCBDVkUtMjAxNy05OTM1CisKK0ZpeCBmb3IgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNAorCitUaGlzIHZ1bG5lcmFiaWxpdHkgLSBhdCBsZWFzdCBmb3IgdGhlIHN1cHBsaWVkIHRlc3QgY2FzZSAtIGlzIGJlY2F1c2Ugd2UKK2Fzc3VtZSB0aGF0IGEgdGlmZiB3aWxsIG9ubHkgaGF2ZSBvbmUgdHJhbnNmZXIgZnVuY3Rpb24gdGhhdCBpcyB0aGUgc2FtZQorZm9yIGFsbCBwYWdlcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIFRJRkYgc3RhbmRhcmRzLgorCitXZSB0aGFuIHJlYWQgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBldmVyeSBwYWdlLiAgRGVwZW5kaW5nIG9uIHRoZQordHJhbnNmZXIgZnVuY3Rpb24sIHdlIGFsbG9jYXRlIGVpdGhlciAyIG9yIDQgYnl0ZXMgdG8gdGhlIFhSRUYgYnVmZmVyLgorV2UgYWxsb2NhdGUgdGhpcyBtZW1vcnkgYWZ0ZXIgd2UgcmVhZCBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gZm9yIHRoZQorcGFnZS4KKworRm9yIHRoZSBmaXJzdCBleHBsb2l0IC0gUE9DMSwgdGhpcyBmaWxlIGhhcyAzIHBhZ2VzLiBGb3IgdGhlIGZpcnN0IHBhZ2UKK3dlIGFsbG9jYXRlIDIgZXh0cmEgZXh0cmEgWFJFRiBlbnRyaWVzLiBUaGVuIGZvciB0aGUgbmV4dCBwYWdlIDIgbW9yZQorZW50cmllcy4gVGhlbiBmb3IgdGhlIGxhc3QgcGFnZSB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gY2hhbmdlcyBhbmQgd2UKK2FsbG9jYXRlIDQgbW9yZSBlbnRyaWVzLgorCitXaGVuIHdlIHJlYWQgdGhlIGZpbGUgaW50byBtZW1vcnksIHdlIGFzc3VtZSB3ZSBoYXZlIDQgYnl0ZXMgZXh0cmEgZm9yCitlYWNoIGFuZCBldmVyeSBwYWdlIChhcyBwZXIgdGhlIGxhc3QgdHJhbnNmZXIgZnVuY3Rpb24gd2UgcmVhZCkuIFdoaWNoCitpcyBub3QgY29ycmVjdCwgd2Ugb25seSBoYXZlIDIgYnl0ZXMgZXh0cmEgZm9yIHRoZSBmaXJzdCAyIHBhZ2VzLiBBcyBhCityZXN1bHQsIHdlIGVuZCB1cCB3cml0aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgorCitUaGVyZSBhcmUgYWxzbyBzb21lIHJlbGF0ZWQgaXNzdWVzIHRoYXQgdGhpcyBhbHNvIGZpeGVzLiBGb3IgZXhhbXBsZSwKK1RJRkZHZXRGaWVsZCBjYW4gcmV0dXJuIHVuaW5pdGFsaXplZCBwb2ludGVyIHZhbHVlcywgYW5kIHRoZSBsb2dpYyB0bworZGV0ZWN0IGEgTj0zIHZzIE49MSB0cmFuc2ZlciBmdW5jdGlvbiBzZWVtZWQgcmF0aGVyIHN0cmFuZ2UuCisKK0l0IGlzIGFsc28gc3RyYW5nZSB0aGF0IHdlIGRlY2xhcmUgdGhlIHRyYW5zZmVyIGZ1bmN0aW9ucyB0byBiZSBvZiB0eXBlCitmbG9hdCwgd2hlbiB0aGUgc3RhbmRhcmQgc2F5cyB0aGV5IGFyZSB1bnNpZ25lZCAxNiBiaXQgdmFsdWVzLiBUaGlzIGlzCitmaXhlZCBpbiBhbm90aGVyIHBhdGNoLgorCitUaGlzIHBhdGNoIHdpbGwgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIE4gdmFsdWUgZm9yIGV2ZXJ5IHRyYW5zZmVyCitmdW5jdGlvbiBpcyB0aGUgc2FtZSBmb3IgZXZlcnkgcGFnZS4gSWYgdGhpcyBjaGFuZ2VzLCB3ZSBhYm9ydCB3aXRoIGFuCitlcnJvci4gSW4gdGhlb3J5LCB3ZSBzaG91bGQgcGVyaGFwcyBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciBmdW5jdGlvbgoraXRzZWxmIGlzIGlkZW50aWNhbCBmb3IgZXZlcnkgcGFnZSwgaG93ZXZlciB3ZSBkb24ndCBkbyB0aGF0IGR1ZSB0byB0aGUKK2NvbmZ1c2lvbiBvZiB0aGUgdHlwZSBvZiB0aGUgZGF0YSBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5jb20vbGlidGlmZi9saWJ0aWZmL2NvbW1pdC8zZGQ4ZjZhMzU3OTgxYTQwOTBmMTI2YWI5MDI1MDU2YzkzOGI2OTQwXQorCitDVkU6IENWRS0yMDE3LTk5MzUKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGlidGlmZi90aWZfZGlyLmMgfCAgMyArKysKKyB0b29scy90aWZmMnBkZi5jICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmMgYi9saWJ0aWZmL3RpZl9kaXIuYworaW5kZXggZjAwZjgwOC4uYzM2YTVmMyAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2Rpci5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXIuYworQEAgLTEwNjcsNiArMTA2Nyw5IEBAIF9USUZGVkdldEZpZWxkKFRJRkYqIHRpZiwgdWludDMyIHRhZywgdmFfbGlzdCBhcCkKKyAJCQlpZiAodGQtPnRkX3NhbXBsZXNwZXJwaXhlbCAtIHRkLT50ZF9leHRyYXNhbXBsZXMgPiAxKSB7CisgCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IHRkLT50ZF90cmFuc2ZlcmZ1bmN0aW9uWzFdOworIAkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSB0ZC0+dGRfdHJhbnNmZXJmdW5jdGlvblsyXTsKKysJCQl9IGVsc2UgeworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworIAkJCX0KKyAJCQlicmVhazsKKyAJCWNhc2UgVElGRlRBR19SRUZFUkVOQ0VCTEFDS1dISVRFOgorZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmYycGRmLmMgYi90b29scy90aWZmMnBkZi5jCitpbmRleCA0NTRiZWZiLi4wYjU5NzNlIDEwMDY0NAorLS0tIGEvdG9vbHMvdGlmZjJwZGYuYworKysrIGIvdG9vbHMvdGlmZjJwZGYuYworQEAgLTEwNDcsNiArMTA0Nyw4IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9pbml0KFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgCXVpbnQxNiBwYWdlbj0wOworIAl1aW50MTYgcGFnZWQ9MDsKKyAJdWludDE2IHh1aW50MTY9MDsKKysJdWludDE2IHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCWZsb2F0KiB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bM107CisgCisgCWRpcmVjdG9yeWNvdW50PVRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGlucHV0KTsKKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CitAQCAtMTE0NywyNiArMTE0OSw0OCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworICAgICAgICAgICAgICAgICB9CisgI2VuZGlmCisgCQlpZiAoVElGRkdldEZpZWxkKGlucHV0LCBUSUZGVEFHX1RSQU5TRkVSRlVOQ1RJT04sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblswXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CistCQkJaWYoKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSkgeworLQkJCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gMzsKKy0JCQkJdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gNDsKKy0JCQkJdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CistCQkJfSBlbHNlIHsKKy0JCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCA9IDE7CistCQkJCXQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDI7CistCQkJCXQycC0+cGRmX3hyZWZjb3VudCArPSAyOworLQkJCX0KKy0JCQlpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorLQkJCQl0MnAtPnBkZl9taW5vcnZlcnNpb24gPSAyOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0pKSkgeworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCh0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0JCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCQkJdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MDsKKyAJCX0KKysKKysgICAgICAgICAgICAgICAgaWYgKGkgPiAwKXsKKysgICAgICAgICAgICAgICAgICAgIGlmICh0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCAhPSB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50KXsKKysgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3IoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJRkYyUERGX01PRFVMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpZmZlcmVudCB0cmFuc2ZlciBmdW5jdGlvbiBvbiBwYWdlICVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50MnBfZXJyb3IgPSBUMlBfRVJSX0VSUk9SOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ7CisrICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdOworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSA9IHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXTsKKysgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gPSB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl07CisrICAgICAgICAgICAgICAgIGlmKHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID09IDMpeworKyAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYodDJwLT5wZGZfbWlub3J2ZXJzaW9uIDwgMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+cGRmX21pbm9ydmVyc2lvbiA9IDI7CisrICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPT0gMSl7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnBkZl94cmVmY291bnQgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfbWlub3J2ZXJzaW9uID0gMjsKKysgICAgICAgICAgICAgICAgfQorKworIAkJaWYoIFRJRkZHZXRGaWVsZCgKKyAJCQlpbnB1dCwgCisgCQkJVElGRlRBR19JQ0NQUk9GSUxFLCAKK0BAIC0xODI4LDkgKzE4NTIsOCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfZGF0YShUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAkJCSAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdKSwKKyAJCQkgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CisgCQlpZigodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSAhPQorLSAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0pKSB7CisrICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSAhPSAoZmxvYXQqKSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICkgeworIAkJCXQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKyAJCX0gZWxzZSB7CisgCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5OTM2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA2MmVmZWE3NjU5MjY0NzQyNmRlZWM1NTkyZmQ3Mjc0ZDVjOTUwNjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTU6MTk6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YKLSBKQklHRGVjb2RlKCkgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNiBSZXBvcnRlZAotIGJ5IHRlYW0gT1dMMzM3Ci0KLSogbGlidGlmZi90aWZfanBlZy5jOiBlcnJvciBvdXQgYXQgZGVjb2RpbmcgdGltZSBpZiBhbnRpY2lwYXRlZCBsaWJqcGVnCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9mZThkNzE2NTk1NmI4OGRmNDgzNzAzNGE5MTYxZGM1ZmQyMGNmNjdhXQotCi1DVkU6IENWRS0yMDE3LTk5MzYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgIHwgNiArKysrKysKLSBsaWJ0aWZmL3RpZl9qYmlnLmMgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA1NzM5MjkyLi4wMjQwZjBiIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfamJpZy5jOiBmaXggbWVtb3J5IGxlYWsgaW4gZXJyb3IgY29kZSBwYXRoIG9mIEpCSUdEZWNvZGUoKQotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA2Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9qYmlnLmMgYi9saWJ0aWZmL3RpZl9qYmlnLmMKLWluZGV4IDVmNWY3NWUuLmM3NWYzMWQgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9qYmlnLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2piaWcuYwotQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGljIGludCBKQklHRGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIGJ1ZmZlciwgdG1zaXplX3Qgc2l6ZSwgdWludDE2IHMpCi0gCQkJICAgICBqYmdfc3RyZXJyb3IoZGVjb2RlU3RhdHVzKQotICNlbmRpZgotIAkJCSAgICAgKTsKLSsJCWpiZ19kZWNfZnJlZSgmZGVjb2Rlcik7Ci0gCQlyZXR1cm4gMDsKLSAJfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxOC01Nzg0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDYwMDFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApAQCAtMCwwICsxLDEzNSBAQAorRnJvbSA2Y2RlYTE1MjEzYmU2YjY3ZDlmODM4MGM3YmI0MGUzMjVkM2FkYWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIEJha2VyIDxuYXRoYW5iQGxlbm92by1jaHJvbWUuY29tPgorRGF0ZTogVHVlLCA2IEZlYiAyMDE4IDEwOjEzOjU3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3IgYnVnIDI3NzIKKworSXQgaXMgcG9zc2libGUgdG8gY3JhZnQgYSBUSUZGIGRvY3VtZW50IHdoZXJlIHRoZSBJRkQgbGlzdCBpcyBjaXJjdWxhciwKK2xlYWRpbmcgdG8gYW4gaW5maW5pdGUgbG9vcCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjaGFpbi4gVGhlIGxpYnRpZmYKK2RpcmVjdG9yeSByZWFkZXIgaGFzIGEgZmFpbHNhZmUgdGhhdCB3aWxsIGJyZWFrIG91dCBvZiB0aGlzIGxvb3AgYWZ0ZXIKK3JlYWRpbmcgNjU1MzUgZGlyZWN0b3J5IGVudHJpZXMsIGJ1dCBpdCB3aWxsIGNvbnRpbnVlIHByb2Nlc3NpbmcsCitjb25zdW1pbmcgdGltZSBhbmQgcmVzb3VyY2VzIHRvIHByb2Nlc3Mgd2hhdCBpcyBlc3NlbnRpYWxseSBhIGJvZ3VzIFRJRkYKK2RvY3VtZW50LgorCitUaGlzIGNoYW5nZSBmaXhlcyB0aGUgYWJvdmUgYmVoYXZpb3IgYnkgYnJlYWtpbmcgb3V0IG9mIHByb2Nlc3Npbmcgd2hlbgorYSBUSUZGIGRvY3VtZW50IGhhcyA+PSA2NTUzNSBkaXJlY3RvcmllcyBhbmQgdGVybWluYXRpbmcgd2l0aCBhbiBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmNvbS9saWJ0aWZmL2xpYnRpZmYvY29tbWl0LzQ3Mzg1MWQyMTFjZjg4MDVhMTYxODIwMzM3Y2E3NGNjOTYxNWQ2ZWZdCisKK0NWRTogQ1ZFLTIwMTgtNTc4NAorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jIHwgMTQgKysrKysrKysrKysrKy0KKyB0b29scy90aWZmMnBkZi5jICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIHRvb2xzL3RpZmZjcm9wLmMgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29udHJpYi9hZGR0aWZmby90aWZfb3ZlcnZpZXcuYyBiL2NvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMKK2luZGV4IGM2MWZmYmIuLjAzYjM1NzMgMTAwNjQ0CistLS0gYS9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCisrKysgYi9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCitAQCAtNjUsNiArNjUsOCBAQAorICMgIGRlZmluZSBNQVgoYSxiKSAgICAgICgoYT5iKSA/IGEgOiBiKQorICNlbmRpZgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIHZvaWQgVElGRkJ1aWxkT3ZlcnZpZXdzKCBUSUZGICosIGludCwgaW50ICosIGludCwgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCopKGRvdWJsZSx2b2lkKiksIHZvaWQgKiApOworIAorQEAgLTkxLDYgKzkzLDcgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgeworICAgICB0b2ZmX3QJbkJhc2VEaXJPZmZzZXQ7CisgICAgIHRvZmZfdAluT2Zmc2V0OworKyAgICB0ZGlyX3QJaU51bURpcjsKKyAKKyAgICAgKHZvaWQpIGJVc2VTdWJJRkRzOworIAorQEAgLTE0Nyw3ICsxNTAsMTYgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgVElGRldyaXRlRGlyZWN0b3J5KCBoVElGRiApOworLSAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKFRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGhUSUZGKS0xKSApOworKyAgICBpTnVtRGlyID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaFRJRkYpOworKyAgICBpZiggaU51bURpciA+IFRJRkZfRElSX01BWCApCisrICAgIHsKKysgICAgICAgIFRJRkZFcnJvckV4dCggVElGRkNsaWVudGRhdGEoaFRJRkYpLAorKyAgICAgICAgICAgICAgICAgICAgICAiVElGRl9Xcml0ZU92ZXJ2aWV3IiwKKysgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYCVzJyBoYXMgdG9vIG1hbnkgZGlyZWN0b3JpZXMuXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICBUSUZGRmlsZU5hbWUoaFRJRkYpICk7CisrICAgICAgICBleGl0KC0xKTsKKysgICAgfQorKyAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKGlOdW1EaXIgLSAxKSApOworIAorICAgICBuT2Zmc2V0ID0gVElGRkN1cnJlbnREaXJPZmZzZXQoIGhUSUZGICk7CisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKK2luZGV4IDBiNTk3M2UuLmVmNWQ2YTAgMTAwNjQ0CistLS0gYS90b29scy90aWZmMnBkZi5jCisrKysgYi90b29scy90aWZmMnBkZi5jCitAQCAtNjgsNiArNjgsOCBAQCBleHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIqKiwgY2hhciopOworIAorICNkZWZpbmUgUFNfVU5JVF9TSVpFCTcyLjBGCisgCisrI2RlZmluZSBUSUZGX0RJUl9NQVggICAgNjU1MzQKKysKKyAvKiBUaGlzIHR5cGUgaXMgb2YgUERGIGNvbG9yIHNwYWNlcy4gKi8KKyB0eXBlZGVmIGVudW0geworIAlUMlBfQ1NfQklMRVZFTCA9IDB4MDEsCS8qIEJpbGV2ZWwsIGJsYWNrIGFuZCB3aGl0ZSAqLworQEAgLTEwNTEsNiArMTA1MywxNCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAlmbG9hdCogdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzNdOworIAorIAlkaXJlY3Rvcnljb3VudD1USUZGTnVtYmVyT2ZEaXJlY3RvcmllcyhpbnB1dCk7CisrCWlmKGRpcmVjdG9yeWNvdW50ID4gVElGRl9ESVJfTUFYKSB7CisrCQlUSUZGRXJyb3IoCisrCQkJVElGRjJQREZfTU9EVUxFLAorKwkJCSJUSUZGIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzLCAlcyIsCisrCQkJVElGRkZpbGVOYW1lKGlucHV0KSk7CisrCQl0MnAtPnQycF9lcnJvciA9IFQyUF9FUlJfRVJST1I7CisrCQlyZXR1cm47CisrCX0KKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CisgCWlmKHQycC0+dGlmZl9wYWdlcz09TlVMTCl7CisgCQlUSUZGRXJyb3IoCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZmNyb3AuYyBiL3Rvb2xzL3RpZmZjcm9wLmMKK2luZGV4IGM2OTE3N2UuLmM2MGNiMzggMTAwNjQ0CistLS0gYS90b29scy90aWZmY3JvcC5jCisrKysgYi90b29scy90aWZmY3JvcC5jCitAQCAtMjE3LDYgKzIxNyw4IEBAIGV4dGVybiBpbnQgZ2V0b3B0KGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpOworICNkZWZpbmUgRFVNUF9URVhUICAgMQorICNkZWZpbmUgRFVNUF9SQVcgICAgMgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIC8qIE9mZnNldHMgaW50byBidWZmZXIgZm9yIG1hcmdpbnMgYW5kIGZpeGVkIHdpZHRoIGFuZCBsZW5ndGggc2VnbWVudHMgKi8KKyBzdHJ1Y3Qgb2Zmc2V0IHsKKyAgIHVpbnQzMiAgdG1hcmdpbjsKK0BAIC0yMjMzLDcgKzIyMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgICAgIHBhZ2VOdW0gPSAtMTsKKyAgIGVsc2UKKyAgICAgdG90YWxfaW1hZ2VzID0gMDsKKy0gIC8qIHJlYWQgbXVsdGlwbGUgaW5wdXQgZmlsZXMgYW5kIHdyaXRlIHRvIG91dHB1dCBmaWxlKHMpICovCisrICAvKiBSZWFkIG11bHRpcGxlIGlucHV0IGZpbGVzIGFuZCB3cml0ZSB0byBvdXRwdXQgZmlsZShzKSAqLworICAgd2hpbGUgKG9wdGluZCA8IGFyZ2MgLSAxKQorICAgICB7CisgICAgIGluID0gVElGRk9wZW4gKGFyZ3Zbb3B0aW5kXSwgInIiKTsKK0BAIC0yMjQxLDcgKzIyNDMsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQorICAgICAgIHJldHVybiAoLTMpOworIAorICAgICAvKiBJZiBvbmx5IG9uZSBpbnB1dCBmaWxlIGlzIHNwZWNpZmllZCwgd2UgY2FuIHVzZSBkaXJlY3RvcnkgY291bnQgKi8KKy0gICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOyAKKysgICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOworKyAgICBpZiAodG90YWxfaW1hZ2VzID4gVElGRl9ESVJfTUFYKQorKyAgICAgIHsKKysgICAgICBUSUZGRXJyb3IgKFRJRkZGaWxlTmFtZShpbiksICJGaWxlIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzIik7CisrICAgICAgaWYgKG91dCAhPSBOVUxMKQorKyAgICAgICAgKHZvaWQpIFRJRkZDbG9zZShvdXQpOworKyAgICAgIHJldHVybiAoMSk7CisrICAgICAgfQorICAgICBpZiAoaW1hZ2VfY291bnQgPT0gMCkKKyAgICAgICB7CisgICAgICAgZGlybnVtID0gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidG9vbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAppbmRleCA0NTcyMDJlLi5hODRjNjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaApAQCAtNCwxMyArNCwxMyBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IHRpZmYtMy45LjUvY29uZmlndXJlLmFjCitJbmRleDogdGlmZi00LjAuOS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTMuOS41Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgdGlmZi0zLjkuNS9jb25maWd1cmUuYWMKKy0tLSB0aWZmLTQuMC45Lm9yaWcvY29uZmlndXJlLmFjCisrKysgdGlmZi00LjAuOS9jb25maWd1cmUuYWMKIEBAIC0yNyw3ICsyNyw3IEBAIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHAKICBBQ19QUkVSRVEoMi42NCkKLSBBQ19JTklUKFtMaWJUSUZGIFNvZnR3YXJlXSxbMy45LjVdLFt0aWZmQGxpc3RzLm1hcHRvb2xzLm9yZ10sW3RpZmZdKQorIEFDX0lOSVQoW0xpYlRJRkYgU29mdHdhcmVdLFs0LjAuOV0sW3RpZmZAbGlzdHMubWFwdG9vbHMub3JnXSxbdGlmZl0pCiAgQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQogLUFDX0NPTkZJR19NQUNST19ESVIobTQpCiArZG5sIEFDX0NPTkZJR19NQUNST19ESVIobTQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlZTZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKLQotQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI3LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTdkMWMxMzE4NDE2ZGRmMzZkNWY2ZmE0NjAwMDY5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWQ3YTVhOGNjZDkyMDU5OTEzZjI0Njg3N2RiOTVhMjkxOGU2YzA0ZmI5ZDQzZmQ3NGU1YzMzOTBkYWMyOTEwIgotCi0jIGV4Y2x1ZGUgYmV0YXMKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInRpZmYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImF4X2N2X2NoZWNrX2dsX2xpYmdsPW5vIgotCi1QQUNLQUdFQ09ORklHID89ICJjeHgganBlZyB6bGliIGx6bWEgXAotICAgICAgICAgICAgICAgICAgc3RyaXAtY2hvcHBpbmcgZXh0cmFzYW1wbGUtYXMtYWxwaGEgY2hlY2steWNiY3Itc3Vic2FtcGxpbmciCi0KLVBBQ0tBR0VDT05GSUdbY3h4XSA9ICItLWVuYWJsZS1jeHgsLS1kaXNhYmxlLWN4eCwsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWcsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6LCIKLQotIyBDb252ZXJ0IHNpbmdsZS1zdHJpcCB1bmNvbXByZXNzZWQgaW1hZ2VzIHRvIG11bHRpcGxlIHN0cmlwcyBvZiBzcGVjaWZpZWQKLSMgc2l6ZSAoZGVmYXVsdDogODE5MikgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZQotUEFDS0FHRUNPTkZJR1tzdHJpcC1jaG9wcGluZ10gPSAiLS1lbmFibGUtc3RyaXAtY2hvcHBpbmcsLS1kaXNhYmxlLXN0cmlwLWNob3BwaW5nLCwiCi0KLSMgVHJlYXQgYSBmb3VydGggc2FtcGxlIHdpdGggbm8gRVhUUkFTQU1QTEVfIHZhbHVlIGFzIGJlaW5nIEFTU09DQUxQSEEKLVBBQ0tBR0VDT05GSUdbZXh0cmFzYW1wbGUtYXMtYWxwaGFdID0gIi0tZW5hYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLC0tZGlzYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwsIgotCi0jIENvbnRyb2wgcGlja2luZyB1cCBZQ2JDciBzdWJzYW1wbGUgaW5mby4gRGlzYWJsZSB0byBzdXBwb3J0IGZpbGVzIGxhY2tpbmcKLSMgdGhlIHRhZwotUEFDS0FHRUNPTkZJR1tjaGVjay15Y2Jjci1zdWJzYW1wbGluZ10gPSAiLS1lbmFibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLS1kaXNhYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLCwiCi0KLSMgU3VwcG9ydCBhIG1lY2hhbmlzbSBhbGxvd2luZyByZWFkaW5nIGxhcmdlIHN0cmlwcyAodXN1YWxseSBvbmUgc3RyaXAgZmlsZXMpCi0jIGluIGNodW5rcyB3aGVuIHVzaW5nIFRJRkZSZWFkU2NhbmxpbmUuIEV4cGVyaW1lbnRhbCA0LjArIGZlYXR1cmUKLVBBQ0tBR0VDT05GSUdbY2h1bmt5LXN0cmlwLXJlYWRdID0gIi0tZW5hYmxlLWNodW5reS1zdHJpcC1yZWFkLC0tZGlzYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwsIgotCi1QQUNLQUdFUyA9KyAidGlmZnh4IHRpZmYtdXRpbHMiCi1GSUxFU190aWZmeHggPSAiJHtsaWJkaXJ9L2xpYnRpZmZ4eC5zby4qIgotRklMRVNfdGlmZi11dGlscyA9ICIke2JpbmRpcn0vKiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgb2VfbXVsdGlsaWJfaGVhZGVyIHRpZmZjb25mLmgKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzNiYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgorCitDVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE4MDEzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTU3ODQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjU0YmFkMjExMjc5Y2M5M2ViNGZjYTMxYmE5YmZkYzc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlN2JkZWVjMmMzMTA3MzRlNzM0ZDE5YWFlM2E3MWViZTM3YTRkODQyZTBlMjNkYmIxYjg5MjFjMDAyNmNmY2QiCisKKyMgZXhjbHVkZSBiZXRhcworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCisgICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKKworUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgorCisjIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAorIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCitQQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKKworIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQorUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCisKKyMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZworIyB0aGUgdGFnCitQQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKKworIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKKyMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQorUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCisKK1BBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKK0ZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCitGSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdGlmZmNvbmYuaAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAzNmI5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gMzk3MDRjZTE2ODM1ZTVjMDE5YmIwM2Y2YTk0ZGMxZjA2Nzc0MDZjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9HdWlkbz0yMEc9QzM9QkNudGhlcj89IDxhZ3hAc2lneGNwdS5vcmc+CitEYXRlOiBXZWQsIDE1IE5vdiAyMDE3IDE4OjIyOjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE0NjMyOiB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyX291dDogRG9uJ3QgY2xlYXIgb3BiCisgaWYgbm90IGluaXRpYWxpemVkCisKK0lmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZQord2UgY2FsbCBvZ2diYWNrX3dyaXRlY2xlYXIgYWx0b3VnaCBpdCdzIG5vdCBpbml0aWFsaXplZCB5ZXQuCisKK1RoaXMgZml4ZXMKKworICAgID0yMzM3MT09IEludmFsaWQgZnJlZSgpIC8gZGVsZXRlIC8gZGVsZXRlW10gLyByZWFsbG9jKCkKKyAgICA9PTIzMzcxPT0gICAgYXQgMHg0QzJDRTFCOiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjUzMCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg4MjlDQTMxOiBvZ2dwYWNrX3dyaXRlY2xlYXIgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlib2dnLnNvLjAuOC4yKQorICAgID09MjMzNzE9PSAgICBieSAweDg0Qjk2RUU6IHZvcmJpc19hbmFseXNpc19oZWFkZXJvdXQgKGluZm8uYzo2NTIpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQ0JDQzogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKyAgICA9PTIzMzcxPT0gIEFkZHJlc3MgMHg2ODc2OGM4IGlzIDQ4OCBieXRlcyBpbnNpZGUgYSBibG9jayBvZiBzaXplIDg4MCBhbGxvYydkCisgICAgPT0yMzM3MT09ICAgIGF0IDB4NEMyQkIxRjogbWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjI5OCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0QzJERTlGOiByZWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjc4NSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTU0NUMyOiBsc3hfcmVhbGxvYyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQzlBMDogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKworYXMgc2VlbiB3aGVuIHVzaW5nIHRoZSB0ZXN0Y2FzZSBmcm9tIENWRS0yMDE3LTExMzMzIHdpdGgKKzAwOGQyM2I3ODJiZTA5YzhkNzViYTgxOTBiMTc5NGFiZDY2YzcxMjEgYXBwbGllZC4gSG93ZXZlciB0aGUgZXJyb3Igd2FzCit0aGVyZSBiZWZvcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTQ2MzIKKworUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgoraHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9dm9yYmlzLmdpdDthPWNvbW1pdGRpZmY7aD1jMWMyODMxZmM3MzA2ZDVmYmQ3YmM4MDAzMjRlZmQxMmIyOGQzMjdmCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGxpYi9pbmZvLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCA4MWI3NTU3Li40ZDgyNTY4IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4NCw2ICs1ODQsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorICAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MHx8dmktPmNoYW5uZWxzPjI1Nil7CisrICAgIGIgPSBOVUxMOworICAgICByZXQ9T1ZfRUZBVUxUOworICAgICBnb3RvIGVycl9vdXQ7CisgICB9CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOWU2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDA3ZWRhNTVmMzM2ZTVjNDRkZmMwZTRhMWUyMTYyOGZhZWQ3MjU1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/R3VpZG89MjBHPUMzPUJDbnRoZXI/PSA8YWd4QHNpZ3hjcHUub3JnPgorRGF0ZTogVHVlLCAzMSBPY3QgMjAxNyAxODozMjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDYzMzogRG9uJ3QgYWxsb3cgZm9yIG1vcmUgdGhhbiAyNTYgY2hhbm5lbHMKKworT3RoZXJ3aXNlCisKKyBmb3IoaT0wO2k8dmktPmNoYW5uZWxzO2krKyl7CisgICAgICAvKiB0aGUgZW5jb2RlciBzZXR1cCBhc3N1bWVzIHRoYXQgYWxsIHRoZSBtb2RlcyB1c2VkIGJ5IGFueQorICAgICAgICAgc3BlY2lmaWMgYml0cmF0ZSB0d2Vha2luZyB1c2UgdGhlIHNhbWUgZmxvb3IgKi8KKyAgICAgIGludCBzdWJtYXA9aW5mby0+Y2htdXhsaXN0W2ldOworCitvdmVycmVhZHMgbGF0ZXIgaW4gbWFwcGluZzBfZm9yd2FyZCBzaW5jZSBjaG11eGxpc3QgaXMgYSBmaXhlZCBhcnJheSBvZgorMjU2IGVsZW1lbnRzIG1heC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDYzMworCitSZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6CitodHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTY2N2NlYjRhYWI2MGMxZjc0MDYwMTQzYmIyNGU1ZjQyN2IzY2NlNWYKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgbGliL2luZm8uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCBlNDQ3YTBjLi44MWI3NTU3IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4Myw3ICs1ODMsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgb2dncGFja19idWZmZXIgb3BiOworICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorLSAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MCl7CisrICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKKyAgICAgcmV0PU9WX0VGQVVMVDsKKyAgICAgZ290byBlcnJfb3V0OworICAgfQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0MDUyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gM2EwMTdmNTkxNDU3YmY2ZTgwMjMxYjU2M2JmODNlZTU4M2ZkYmNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBEYWVkZSA8ZGFlZGUwMDNAdW1uLmVkdT4KK0RhdGU6IFRodSwgMTUgTWFyIDIwMTggMTQ6MTU6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTgtNTE0NjogUHJldmVudCBvdXQtb2YtYm91bmRzIHdyaXRlIGluIGNvZGVib29rCisgZGVjb2RpbmcuCisKK0NvZGVib29rcyB0aGF0IGFyZSBub3QgYW4gZXhhY3QgZGl2aXNvciBvZiB0aGUgcGFydGl0aW9uIHNpemUgYXJlIG5vdwordHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIHBhcnRpdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC01MTQ2CisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBsaWIvY29kZWJvb2suYyB8IDQ4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9jb2RlYm9vay5jIGIvbGliL2NvZGVib29rLmMKK2luZGV4IDhiNzY2ZTguLjcwMjJmZDIgMTAwNjQ0CistLS0gYS9saWIvY29kZWJvb2suYworKysrIGIvbGliL2NvZGVib29rLmMKK0BAIC0zODcsNyArMzg3LDcgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2c19hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4peworICAgICAgIHRbaV0gPSBib29rLT52YWx1ZWxpc3QrZW50cnlbaV0qYm9vay0+ZGltOworICAgICB9CisgICAgIGZvcihpPTAsbz0wO2k8Ym9vay0+ZGltO2krKyxvKz1zdGVwKQorLSAgICAgIGZvciAoaj0wO2o8c3RlcDtqKyspCisrICAgICAgZm9yIChqPTA7bytqPG4gJiYgajxzdGVwO2orKykKKyAgICAgICAgIGFbbytqXSs9dFtqXVtpXTsKKyAgIH0KKyAgIHJldHVybigwKTsKK0BAIC0zOTksNDEgKzM5OSwxMiBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICphLG9nZ3BhY2tfYnVmZmVyICpiLGludCBuKXsKKyAgICAgaW50IGksaixlbnRyeTsKKyAgICAgZmxvYXQgKnQ7CisgCistICAgIGlmKGJvb2stPmRpbT44KXsKKy0gICAgICBmb3IoaT0wO2k8bjspeworLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CistICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07CistICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTspCistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgIH0KKy0gICAgfWVsc2V7CistICAgICAgZm9yKGk9MDtpPG47KXsKKy0gICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKKy0gICAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworLSAgICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgaj0wOworLSAgICAgICAgc3dpdGNoKChpbnQpYm9vay0+ZGltKXsKKy0gICAgICAgIGNhc2UgODoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDc6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSA2OgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgNToKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDQ6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAzOgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgMjoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDE6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAwOgorLSAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgICB9CisrICAgIGZvcihpPTA7aTxuOyl7CisrICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworKyAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworKyAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKKysgICAgICBmb3Ioaj0wO2k8biAmJiBqPGJvb2stPmRpbTspCisrICAgICAgICBhW2krK10rPXRbaisrXTsKKyAgICAgfQorICAgfQorICAgcmV0dXJuKDApOworQEAgLTQ3MSwxMiArNDQyLDEzIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2RldnZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICoqYSxsb25nIG9mZnNldCxpbnQgY2gsCisgICBsb25nIGksaixlbnRyeTsKKyAgIGludCBjaHB0cj0wOworICAgaWYoYm9vay0+dXNlZF9lbnRyaWVzPjApeworLSAgICBmb3IoaT1vZmZzZXQvY2g7aTwob2Zmc2V0K24pL2NoOyl7CisrICAgIGludCBtPShvZmZzZXQrbikvY2g7CisrICAgIGZvcihpPW9mZnNldC9jaDtpPG07KXsKKyAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7CisgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CisgICAgICAgeworICAgICAgICAgY29uc3QgZmxvYXQgKnQgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgZm9yIChqPTA7ajxib29rLT5kaW07aisrKXsKKysgICAgICAgIGZvciAoaj0wO2k8bSAmJiBqPGJvb2stPmRpbTtqKyspeworICAgICAgICAgICBhW2NocHRyKytdW2ldKz10W2pdOworICAgICAgICAgICBpZihjaHB0cj09Y2gpeworICAgICAgICAgICAgIGNocHRyPTA7CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCmluZGV4IDU2YzViMGEuLjIwZjg4N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCkBAIC0xMiw2ICsxMiw5IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy92b3JiaXMvJHtCUH0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC01MTQ2LnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjhjYjI4MDk3YzA3YTczNWQ2YWY1NmU1OThlMWM5MGYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmOTRhOTUyN2ZmMGE4ODQ3N2JlMGE3MWMwYmFiMDlhNGMzZmViZTBlZDg3OGIyNDgyNDkwNmNkNGIwZTFkMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTA2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYTMyY2FhNjFkNDFkOGJlNzk3ZjBiMDRhMWI0M2FkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzEzMzdhZWUyZTRiZjk5MzI5OTg1MWM3MGI3ZGIxMWZhZWM3ODUzMDNjZmNhM2E1YzNlYjVmMzI5YmE3MDIzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKKyMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgorUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgorCisjIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6CisjIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODYxOTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgTGF5ZXIgMS8yLzMiCi1ERVNDUklQVElPTiA9ICJUaGUgY29yZSBvZiBtcGcxMjMgaXMgYW4gTVBFRy0xIExheWVyIDEvMi8zIGRlY29kaW5nIGxpYnJhcnksIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHByb2dyYW1zLiBcCi1tcGcxMjMgYWxzbyBjb21lcyB3aXRoIGEgY29tbWFuZC1saW5lIHRvb2wgd2hpY2ggY2FuIHBsYXliYWNrIHVzaW5nIEFMU0EsIFB1bHNlQXVkaW8sIE9TUywgYW5kIHNldmVyYWwgb3RoZXIgQVBJcywgXAotYW5kIGFsc28gY2FuIHdyaXRlIHRoZSBkZWNvZGVkIGF1ZGlvIHRvIFdBVi4iCi1IT01FUEFHRSA9ICJodHRwOi8vbXBnMTIzLmRlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlODY3NTM2MzhkM2NmMjUxMjUyOGI5OTA3OWJjNGYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZzEyMy5kZS9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjQzMzM2YmVmNzhmNjdjMmU2NmM0ZjZjMjg4Y2ExZWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMDQ1OGM5Yjg3Nzk5YmMyYzliZjk0NTUyNzljYzRkMzA1ZTI0NWRiNDNiNTFhMzllZjI3YWZlMDI1YzVhOGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgotIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQotIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCi1QQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCi0KLSMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKLSMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCi1BVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKLSIKLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JwotI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCi0jLi4uCi0jfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKaW5kZXggZmRiZjVhYi4uODE4OWE1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogfQogCiBVU0VSQUREX1BBQ0tBR0VTID0gInB1bHNlYXVkaW8tc2VydmVyIgotR1JPVVBBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAicHVsc2UiCitHUk9VUEFERF9QQVJBTV9wdWxzZWF1ZGlvLXNlcnZlciA9ICItLXN5c3RlbSBwdWxzZSIKIFVTRVJBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1ob21lIC92YXIvcnVuL3B1bHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZ3JvdXBzIGF1ZGlvLHB1bHNlIC0tZ2lkIHB1bHNlIHB1bHNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzkxZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwY2I2NmMwYzVhYWZkNDhiNjNhNzU1ODYwNzQ2ZTcwYWZiMzMyYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogV2VkLCAyNCBKYW4gMjAxOCAwMzo1MTo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBtZW1mZC13cmFwcGVyczogb25seSBkZWZpbmUgbWVtZmRfY3JlYXRlKCkgaWYgbm90IGFscmVhZHkKKyBkZWZpbmVkCisKK2dsaWJjIDIuMjcgaXMgdG8gYmUgcmVsZWFzZWQgc29vbiwgYW5kIGl0IHdpbGwgcHJvdmlkZSBtZW1mZF9jcmVhdGUoKS4KK0lmIGdsaWJjIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiwgd2UgbXVzdCBub3QgZGVmaW5lIGl0IG91cnNlbHZlcywKK290aGVyd2lzZSBidWlsZGluZyBmYWlscyBkdWUgdG8gY29uZmxpY3QgYmV0d2VlbiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworb2YgdGhlIHNhbWUgZnVuY3Rpb24uCisKK0J1Z0xpbms6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9hdHRhY2htZW50LmNnaT9pZD0xMzY5MjddCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgIHwgMyArKysKKyBzcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmggfCA3ICsrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzdiNWZmNS4uM2E3MWZkOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjA3LDYgKzYwNyw5IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9tZW1mZCIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MCJdLAorICAgICBbQUNfTVNHX0VSUk9SKFsqKiogWW91ciBMaW51eCBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBtZW1mZCBzaGFyZWQgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICoqKiBVc2UgbGludXggdjMuMTcgb3IgaGlnaGVyIGZvciBzdWNoIGEgZmVhdHVyZS5dKV0pCisgCisrQVNfSUYoW3Rlc3QgIngkSEFWRV9NRU1GRCIgPSAieDEiXSwKKysgICAgQUNfQ0hFQ0tfRlVOQ1MoW21lbWZkX2NyZWF0ZV0pKQorKworIEFDX1NVQlNUKEhBVkVfTUVNRkQpCisgQU1fQ09ORElUSU9OQUwoW0hBVkVfTUVNRkRdLCBbdGVzdCAieCRIQVZFX01FTUZEIiA9IHgxXSkKKyBBU19JRihbdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MSJdLCBBQ19ERUZJTkUoW0hBVkVfTUVNRkRdLCAxLCBbSGF2ZSBtZW1mZCBzaGFyZWQgbWVtb3J5Ll0pKQorZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaCBiL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAoraW5kZXggM2JlZDliMi4uYzdhYWRmZCAxMDA2NDQKKy0tLSBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAorKysrIGIvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCitAQCAtMjAsMTMgKzIwLDE0IEBACisgICBMaWNlbnNlIGFsb25nIHdpdGggUHVsc2VBdWRpbzsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaWZkZWYgSEFWRV9NRU1GRAorKyNpZiBkZWZpbmVkKEhBVkVfTUVNRkQpICYmICFkZWZpbmVkKEhBVkVfTUVNRkRfQ1JFQVRFKQorIAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorIAorIC8qCistICogTm8gZ2xpYmMgd3JhcHBlcnMgZXhpc3QgZm9yIG1lbWZkX2NyZWF0ZSgyKSwgc28gcHJvdmlkZSBvdXIgb3duLgorKyAqIEJlZm9yZSBnbGliYyB2ZXJzaW9uIDIuMjcgdGhlcmUgd2FzIG5vIHdyYXBwZXIgZm9yIG1lbWZkX2NyZWF0ZSgyKSwKKysgKiBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgb3VyIG93bi4KKyAgKgorICAqIEFsc28gZGVmaW5lIG1lbWZkIGZjbnRsIHNlYWxpbmcgbWFjcm9zLiBXaGlsZSB0aGV5IGFyZSBhbHJlYWR5CisgICogZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlciBmaWxlIDxsaW51eC9mY250bC5oPiwgdGhhdCBmaWxlIGFzCitAQCAtNjMsNiArNjQsNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgI2RlZmluZSBGX1NFQUxfV1JJVEUgICAgMHgwMDA4ICAvKiBwcmV2ZW50IHdyaXRlcyAqLworICNlbmRpZgorIAorLSNlbmRpZiAvKiBIQVZFX01FTUZEICovCisrI2VuZGlmIC8qIEhBVkVfTUVNRkQgJiYgIUhBVkVfTUVNRkRfQ1JFQVRFICovCisgCisgI2VuZGlmCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI1NmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBwYXRjaHdvcmsgU2F0IEZlYiAgNCAxMjoxOTowMSAyMDE3Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVN1YmplY3Q6IFtwdWxzZWF1ZGlvLWRpc2N1c3NdIGlvY2hhbm5lbDogZG9uJ3QgdXNlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbgotIHVuaW9uCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci1YLVBhdGNod29yay1JZDogMTM2ODg1Ci1NZXNzYWdlLUlkOiA8MjAxNzAyMDQxMjE5MDEuMTc0MjgtMS10YW51a0Bpa2kuZmk+Ci1UbzogcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwotRGF0ZTogU2F0LCAgNCBGZWIgMjAxNyAxNDoxOTowMSArMDIwMAotCi1DbGFuZyBkaWRuJ3QgbGlrZSB0aGUgdmFyaWFibGUgbGVuZ3RoIGFycmF5OgotCi1wdWxzZWNvcmUvaW9jaGFubmVsLmM6MzU4OjE3OiBlcnJvcjogZmllbGRzIG11c3QgaGF2ZSBhIGNvbnN0YW50IHNpemU6Ci0ndmFyaWFibGUgbGVuZ3RoIGFycmF5IGluIHN0cnVjdHVyZScgZXh0ZW5zaW9uIHdpbGwgbmV2ZXIgYmUgc3VwcG9ydGVkCi0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07Ci0gICAgICAgICAgICAgICAgXgotCi1Db21taXQgNDUxZDFkNjc2MiBpbnRyb2R1Y2VkIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gb3JkZXIgdG8gaGF2ZQotdGhlIGNvcnJlY3QgdmFsdWUgaW4gbXNnX2NvbnRyb2xsZW4uIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGF0IGNvbW1pdCBhbmQKLXVzZXMgYSBkaWZmZXJlbnQgd2F5IHRvIGFjaGlldmUgdGhlIHNhbWUgZ29hbC4KLQotQnVnTGluazogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTgKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIHNyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgYi9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jCi1pbmRleCA4YWNlMjk3ZmYuLjg5NzMzNzUyMiAxMDA2NDQKLS0tLSBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLSsrKyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLUBAIC0zNTUsNyArMzU1LDcgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBzdHJ1Y3QgaW92ZWMgaW92OwotICAgICB1bmlvbiB7Ci0gICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0tICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCldOwotKyAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBNQVhfQU5DSUxfREFUQV9GRFMpXTsKLSAgICAgfSBjbXNnOwotIAotICAgICBwYV9hc3NlcnQoaW8pOwotQEAgLTM4Miw3ICszODIsMTMgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBtaC5tc2dfaW92ID0gJmlvdjsKLSAgICAgbWgubXNnX2lvdmxlbiA9IDE7Ci0gICAgIG1oLm1zZ19jb250cm9sID0gJmNtc2c7Ci0tICAgIG1oLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2cpOwotKwotKyAgICAvKiBJZiB3ZSBmb2xsb3dlZCB0aGUgZXhhbXBsZSBvbiB0aGUgY21zZyBtYW4gcGFnZSwgd2UnZCB1c2UKLSsgICAgICogc2l6ZW9mKGNtc2cuZGF0YSkgaGVyZSwgYnV0IGlmIG5mZCA8IE1BWF9BTkNJTF9EQVRBX0ZEUywgdGhlbiB0aGUgZGF0YQotKyAgICAgKiBidWZmZXIgaXMgbGFyZ2VyIHRoYW4gbmVlZGVkLCBhbmQgdGhlIGtlcm5lbCBkb2Vzbid0IGxpa2UgaXQgaWYgd2Ugc2V0Ci0rICAgICAqIG1zZ19jb250cm9sbGVuIHRvIGEgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5IHZhbHVlLiBUaGUgY29tbWl0IG1lc3NhZ2UgZm9yCi0rICAgICAqIGNvbW1pdCA0NTFkMWQ2NzYyIGNvbnRhaW5zIGEgbG9uZ2VyIGV4cGxhbmF0aW9uLiAqLwotKyAgICBtaC5tc2dfY29udHJvbGxlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpOwotIAotICAgICBpZiAoKHIgPSBzZW5kbXNnKGlvLT5vZmQsICZtaCwgTVNHX05PU0lHTkFMKSkgPj0gMCkgewotICAgICAgICAgaW8tPndyaXRhYmxlID0gaW8tPmh1bmd1cCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTM0YWZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgcHVsc2VhdWRpby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5NTBkMjc5OWJmNTVhYjkxZjZiN2Y5OTBiN2YwOTcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMTg2ODI0ZGU5ZjBkMjA5NWRlZDVkMGQwZGIwNDA1ZGM3MzEzMzk4M2MyZmJiMzcyOTE1NDdlMzc0NjJmNTciCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDUzMDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9wdWxzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzkwZGUzODIzMWQ1Y2RkNmI0M2FkYTg5MzllYjc0ZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI1MjFjNTI1YTc3MTY2MTg5ZTNjYjkxNjlmNzVjMmVlMmI4MmZhM2ZjZjk0NzYwMjRmYmMyYzNhNmM5Y2Q5ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNTY1ZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViUCBpcyBhbiBpbWFnZSBmb3JtYXQgZGVzaWduZWQgZm9yIHRoZSBXZWIiCi1ERVNDUklQVElPTiA9ICJXZWJQIGlzIGEgbWV0aG9kIG9mIGxvc3N5IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiB0aGF0IGNhbiBiZSBcCi0gICAgICAgICAgICAgICB1c2VkIG9uIGEgbGFyZ2UgdmFyaWV0eSBvZiBwaG90b2dyYXBoaWMsIHRyYW5zbHVjZW50IGFuZCBcCi0gICAgICAgICAgICAgICBncmFwaGljYWwgaW1hZ2VzIGZvdW5kIG9uIHRoZSB3ZWIuIFRoZSBkZWdyZWUgb2YgbG9zc3kgXAotICAgICAgICAgICAgICAgY29tcHJlc3Npb24gaXMgYWRqdXN0YWJsZSBzbyBhIHVzZXIgY2FuIGNob29zZSB0aGUgdHJhZGUtb2ZmIFwKLSAgICAgICAgICAgICAgIGJldHdlZW4gZmlsZSBzaXplIGFuZCBpbWFnZSBxdWFsaXR5LiBXZWJQIHR5cGljYWxseSBhY2hpZXZlcyBcCi0gICAgICAgICAgICAgICBhbiBhdmVyYWdlIG9mIDMwJSBtb3JlIGNvbXByZXNzaW9uIHRoYW4gSlBFRyBhbmQgSlBFRyAyMDAwLCBcCi0gICAgICAgICAgICAgICB3aXRob3V0IGxvc3Mgb2YgaW1hZ2UgcXVhbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZThkZWU5MzJjMjZmMmRhYjUwM2FiZjcwYzk2ZDhiYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQVRFTlRTO21kNT1jNjkyNmQwY2IwN2QyOTZmODg2YWI2ZTBjYzVhODViNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOWE2ZTkyNmFiMTcyMTI2OGRmMDMxNjFiODRiYjRhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTI4MTE5MjI5ZDRmOGYzNWUyMDExM2ZmYjYxZjI4MWVkYTI2NzYzNGE4ZGMyMjg1YWY0YjBlZTI3Y2YyYjQwIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC9pbmRleC5odG1sIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhwZXJpbWVudGFsIFwKLSAgICAtLWRpc2FibGUtd2ljIFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwbXV4IFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwZGVtdXggXAotICAgIC0tZW5hYmxlLXRocmVhZGluZyBcCi0iCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLSMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAotUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCi0KLSMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi0KLSMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCi1QQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCi0KLURFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgotRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkNGQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKK0RFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKKyAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCisgICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAorICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKKyAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImI0OWNlOWMzZTNlOWFjYWU0ZDkxYmNhNDRiYjg1YTcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NTAzYzc4MmQ5ZjE1MWJhYTMyNTU5MWMzNTc5YzY4ZWQ3MDBmZmM2MmQ0ZjVhMzJmZWVhZDBmZjAxN2Q4YWIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1leHBlcmltZW50YWwgXAorICAgIC0tZGlzYWJsZS13aWMgXAorICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAorICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCisgICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKKyIKKyMgRG8gbm90IHRydXN0IGNvbmZpZ3VyZSB0byBkZXRlcm1pbmUgaWYgbmVvbiBpcyBhdmFpbGFibGUuCisjCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L2Rvbi10LWRlZmF1bHQtdG8tY29ydGV4LWE5LXdpdGgtbmVvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCmluZGV4IDczZjJhYWMuLjA2NWUzYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCkBAIC0xLDIwICsxLDMzIEBACi0tbWFyY2ggZmxhZyBpcyBub3QgaW4gQ0ZMQUdTIHNvIHRoaXMgd2lsbCBhbHdheXMgZGVmYXVsdCB0byAtbWNwdT1jb3J0ZXgtYTgKLS1tZnB1PW5lb24uCitGcm9tIGE3MmJmNDk5YTA2NzRmYzc1ZWVkZjE1MDA4YjQyNGUyOGY2N2U0YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMTU6MTA6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9udCBkZWZhdWx0IHRvIGNvcnRleC1hOSB3aXRoIG5lb24KKworLW1hcmNoIGZsYWcgaXMgbm90IGluIENGTEFHUyBzbyB0aGlzIHdpbGwgYWx3YXlzIGRlZmF1bHQgdG8KKyAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9bmVvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOWQxNTg2Yy4uMzEwOWVjNCAxMDA3NTUKK2luZGV4IDBlM2VmMjMuLjk1NWI5OTMgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTg3NCw5ICs4NzQsNiBAQCBpZiBbICRhc20gPSBhdXRvIC1hIFwoICRBUkNIID0gWDg2IC1vICRBUkNIID0gWDg2XzY0IFwpIF0gOyB0aGVuCitAQCAtOTExLDkgKzkxMSw2IEBAIGlmIFsgJGFzbSA9IGF1dG8gLWEgXCggJEFSQ0ggPSBYODYgLW8gJEFSQ0ggPSBYODZfNjQgXCkgXSA7IHRoZW4KICBmaQogIAogIGlmIFsgJGFzbSA9IGF1dG8gLWEgJEFSQ0ggPSBBUk0gXSA7IHRoZW4KIC0gICAgIyBzZXQgZmxhZ3Mgc28gbmVvbiBpcyBidWlsdCBieSBkZWZhdWx0Ci0tICAgIGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgorLSAgICBbICRjb21waWxlciA9PSBDTCBdIHx8IGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgogLQotICAgICBpZiAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInJldiBpcCwgaXAiKTsnIDsgdGhlbiAgICAgIGRlZmluZSBIQVZFX0FSTVY2Ci0gICAgICAgICBjY19jaGVjayAnJyAnJyAnX19hc21fXygibW92dCByMCwgIzAiKTsnICAgICAgICAgJiYgZGVmaW5lIEhBVkVfQVJNVjZUMgotICAgICAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInZhZGQuaTE2IHEwLCBxMCwgcTAiKTsnICYmIGRlZmluZSBIQVZFX05FT04KKyAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oImFkZCByMCwgcjEsIHIyIik7JyAmJiBkZWZpbmUgSEFWRV9BUk1fSU5MSU5FX0FTTQorICAgICBpZiBbICRjb21waWxlciA9IENMIF0gJiYgY3BwX2NoZWNrICcnICcnICdkZWZpbmVkKF9NX0FSTSkgJiYgX01fQVJNID49IDcnIDsgdGhlbgorICAgICAgICAgZGVmaW5lIEhBVkVfQVJNVjYKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgppbmRleCBjNTQ3NmM3Li5jNDQ1ZDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtNiwxNyArNiwxNyBAQAogTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLURFUEVORFMgPSAieWFzbS1uYXRpdmUiCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWlycm9yL3gyNjQ7YnJhbmNoPXN0YWJsZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoIFwKICAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICIyYjc0MWY4MWU1MWY5MmQwNTNkODdhNDlmNTlmZjEwMjY1NTNhMGY2IgorU1JDUkVWID0gImU5YTU5MDNlZGY4Y2E1OWVmMjBlNmY0ODk0YzE5NmYxMzVhZjczNWUiCiAKLVBWID0gInIyNzMxK2dpdCR7U1JDUFZ9IgorUFYgPSAicjI4NTQrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgICAgICAgICcKIAogZG9fY29uZmlndXJlKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LXNkay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCmluZGV4IDdjMWU1YmYuLjBmN2YwOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIlNtYWxsIGltYWdlIGNhcGFibGUgb2YgYm9vdGluZyBhIGRldmljZSB3aXRoIGEgdGVzdCBzdWl0ZSBhbmQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQuYmIKaW5kZXggZDhiYjA0YS4uOWNiOTNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIkEgc21hbGwgaW1hZ2UganVzdCBjYXBhYmxlIG9mIGFsbG93aW5nIGEgZGV2aWNlIHRvIGJvb3QgcGx1cyBhIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvaHdsYXRkZXRlY3RfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKaW5kZXggMDEyYjJkZC4uNWY2MWM0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKQEAgLTIyLDUgKzIyLDUgQEAKIH0KIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vZGlzdC1wYWNrYWdlcy9od2xhdGRldGVjdC5weSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtdGV4dHV0aWxzIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlICIKIFJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtaHdsYXQtZGV0ZWN0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCmluZGV4IDQzMzZjNTAuLjQ5NmYwNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCkBAIC0yNiw2ICsyNiw2IEBACiAgICAgICAgIGNwICR7V09SS0RJUn0vcnRfYm1hcmsucHkgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzdHJlc3MgcHl0aG9uMyBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLXJlIHB5dGhvbjMtbGFuZyBweXRob24zLW1pc2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHN0cmVzcyBweXRob24zIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIHB5dGhvbjMtZGF0ZXRpbWUgcHl0aG9uMy1taXNjIgogCiBGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L3NyYy9iYWNrZmlyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKaW5kZXggOTdjY2VkNy4uMjI0NDI4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKQEAgLTQ2LDcgKzQ2LDcgQEAKIFNVTU1BUllfJHtQTn0tYXBwcyA9ICJTYXRvIGRlc2t0b3AgLSBhcHBsaWNhdGlvbnMiCiBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKICAgICBsM2FmcGFkIFwKLSAgICBnc3QtcGxheWVyIFwKKyAgICBnc3QtZXhhbXBsZXMgXAogICAgIG1hdGNoYm94LXRlcm1pbmFsIFwKICAgICBzYXRvLXNjcmVlbnNob3QgXAogICAgICR7RklMRU1BTkFHRVJ9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCmluZGV4IDc1ZmY3NzMuLjQxMjdhMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgpAQCAtOSw5ICs5LDYgQEAKIFNFQ1RJT04gPSAieDExIgogREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgogCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKnxtaXBzLip8cG93ZXJwYy4qfHNoLiopLShsaW51eHxmcmVlYnNkLiopJwotCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL3BjbWFuZm0tJHtQVn0udGFyLnh6IFwKIAkgICBmaWxlOi8vZ25vbWUtZnMtZGlyZWN0b3J5LnBuZyBcCiAJICAgZmlsZTovL2dub21lLWZzLXJlZ3VsYXIucG5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhYTE1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLUNsYXJpZnktY29uZGl0aW9ucy10by1hdm9pZC1jb21waWxlci1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDcyZjJlOTA0M2VmNTA5OTkyZGZhNjE3OTE2MzhkYjg3YmYwYWUzN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IERlYyAyMDE2IDAxOjIwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENsYXJpZnkgY29uZGl0aW9ucyB0byBhdm9pZCBjb21waWxlciBlcnJvcnMKLQotRml4IGVycm9ycyBwb2ludGVkIG91dCBieSBjbGFuZwotCi1lcnJvcjogbG9naWNhbCBub3QgaXMgb25seSBhcHBsaWVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGlzIGJpdHdpc2Ugb3BlcmF0b3IgWy1XZXJyb3IsLVdsb2dpY2FsLW5vdC1wYXJlbnRoZXNlc10KLXwgICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBzaWducG9zdC5jIHwgMiArLQotIHRyYWNrcy5jICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zaWducG9zdC5jIGIvc2lnbnBvc3QuYwotaW5kZXggYWEyZTEzYS4uMmUyZGZmMiAxMDA2NDQKLS0tLSBhL3NpZ25wb3N0LmMKLSsrKyBiL3NpZ25wb3N0LmMKLUBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGludCBjaGVja19udW1zKGdhbWVfc3RhdGUgKm9yaWcsIGdhbWVfc3RhdGUgKmNvcHksIGludCBvbmx5X2ltbXV0YWJsZSkKLSAgICAgaW50IGksIHJldCA9IDE7Ci0gICAgIGFzc2VydChjb3B5LT5uID09IG9yaWctPm4pOwotICAgICBmb3IgKGkgPSAwOyBpIDwgY29weS0+bjsgaSsrKSB7Ci0tICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotKyAgICAgICAgaWYgKG9ubHlfaW1tdXRhYmxlICYmICEoY29weS0+ZmxhZ3NbaV0gJiBGTEFHX0lNTVVUQUJMRSkpIGNvbnRpbnVlOwotICAgICAgICAgYXNzZXJ0KGNvcHktPm51bXNbaV0gPj0gMCk7Ci0gICAgICAgICBhc3NlcnQoY29weS0+bnVtc1tpXSA8PSBjb3B5LT5uKTsKLSAgICAgICAgIGlmIChjb3B5LT5udW1zW2ldICE9IG9yaWctPm51bXNbaV0pIHsKLWRpZmYgLS1naXQgYS90cmFja3MuYyBiL3RyYWNrcy5jCi1pbmRleCA1YjI3MzUwLi5jYTQ0Y2UxIDEwMDY0NAotLS0tIGEvdHJhY2tzLmMKLSsrKyBiL3RyYWNrcy5jCi1AQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3RhdGljIGludCBzb2x2ZV9jaGVja19zaW5nbGVfc3ViKGdhbWVfc3RhdGUgKnN0YXRlLCBpbnQgc2ksIGludCBpZCwgaW50IG4sCi0gICAgICAgICB4ID0gaSV3OwotICAgICAgICAgeSA9IGkvdzsKLSAgICAgICAgIGlmIChhYnMob3gteCkgPiAxIHx8IGFicyhveS15KSA+IDEpIHsKLS0gICAgICAgICAgICBpZiAoIXN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKQotKyAgICAgICAgICAgIGlmICghKHN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKSkKLSAgICAgICAgICAgICAgICAgZGlkICs9IHNvbHZlX3NldF9zZmxhZyhzdGF0ZSwgeCwgeSwgU19OT1RSQUNLLCB3aGF0KTsKLSAgICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IGRlY2QyYTguLmJmZDgxNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC03LDE4ICs3LDE3IEBACiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTMzYmNkNGJjZThmM2MxOTdmMmFlZmJkYmQyZDI5OWJjIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnRhcnRhcnVzLm9yZy9zaW1vbi9wdXp6bGVzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotU1JDUkVWID0gIjhkZmU1Y2VjMzFlNzg0ZTRlY2UyOTU1ZWNjOGNjMzVlZTdlOGZiYjMiCi1QRSA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorU1JDUkVWID0gIjJhZGYwMDUyZDY2ZWFlODhjN2E1ZTU1ZTY3ZmUxNmUxM2Y3MDE4YjUiCitQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jCmluZGV4IDRkNWRhYTYuLmI1NjhmMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9yeHZ0LXVuaWNvZGUvcnh2dC11bmljb2RlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZS5pbmMKQEAgLTEyLDcgKzEyLDcgQEAKIAkgICBmaWxlOi8vcnh2dC5kZXNrdG9wIFwKIAkgICBmaWxlOi8vcnh2dC5wbmciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIFBST1ZJREVTID0gInZpcnR1YWwveC10ZXJtaW5hbC1lbXVsYXRvciIKIEFMVEVSTkFUSVZFXyR7UE59ID0gIngtdGVybWluYWwtZW11bGF0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2V0dGluZ3MtZGFlbW9uL3NldHRpbmdzLWRhZW1vbl8wLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCmluZGV4IGNlYWVjY2EuLmJiNmI2OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIFNSQ1JFViB0YWdnZWQgMC4wLjIKIFNSQ1JFViA9ICJiMmU1ZGE1MDJmOGM1ZmY3NWU5ZTZkYTc3MTM3MmVmOGU0MGZkOWEyIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94c2V0dGluZ3MtZGFlbW9uIFwKLSAgICAgICAgICAgZmlsZTovL2FkZHNvdW5ka2V5cy5wYXRjaDthcHBseT15ZXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkc291bmRrZXlzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzcwc2V0dGluZ3MtZGFlbW9uLnNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTU3NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGFkZjNkNGM5ZDQxMzNiZDY5OTU1OTBkOTIxYzBjY2FlYzUyNTRkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCaGFyZ2F2YSBTcmVla2FudGFwcGEgR2F5YXRocmkKKyA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE2OjA5OjMxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBnbGVzMyBoZWFkZXIgd2hlbiBnbGVzMiBpcyBlbmFibGVkCisKK0EgR0xFUyAyIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgdXNlIGdsMy5oLgorRml4IHRoZSBnbGVzMyBoZWFkZXIgZmFpbHVyZSB3aGlsZSBjb21waWxpbmcgd2Via2l0Z3RrLgorCitGQUlMRUQ6CitTb3VyY2UvV2ViQ29yZS9DTWFrZUZpbGVzL1dlYkNvcmUuZGlyL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAubworICAgICAgICAgICBefn5+fn5+fn5+fn5+Citjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitJbXBvcnRlZCBwYXRjaCBmcm9tOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDA4CisKK1NpZ25lZC1vZmYtYnk6IEJoYXJnYXZhIFNyZWVrYW50YXBwYSBHYXlhdGhyaSA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KKy0tLQorIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKK2luZGV4IDU5OWRjYzAuLjQ2ZDJmZDQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCitAQCAtMzEsNyArMzEsNiBAQAorICNlbGlmIFVTRShPUEVOR0xfRVNfMikKKyAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQorICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKy0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CisgI2VuZGlmCisKKyAjaWYgVVNFKEdMWCkKKy0tCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKaW5kZXggZGZkYzExNi4uOWZjMTQyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaApAQCAtMTYsNiArMTYsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KICBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSAgICAgICAgICAgfCA2ICsrKy0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCmluZGV4IDlmYWMwNDQuLmMyOWZhN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKQEAgLTIxLDYgKzIxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImMxYTU0ODU5NTEzNWVlNzVhZDNiZjJlMThhYzgzMTEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OGQxOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYjAzZGJmZjYwNzI4YTRmNGMzM2Y1ZDkyOWU4YjM1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODNlZjRkNTllNmFjOWEzNmM3ZDNmZDg3YWQ3YjlkYjdhZDhhZTI5YzA2YjlkZDhmZjIyZGRhMWNjNDE2Mzg5IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKLQkJLS13aXRob3V0LW9kYmMgXAotCQktLXdpdGhvdXQtcGdzcWwgXAotCQktLXdpdGgtZGJtPWdkYm0gXAotCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLQkJLS13aXRob3V0LXNxbGl0ZTIgXAotCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKLQotUFIgPSAicjEiCi0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlpZiBbICIke0NMQVNTT1ZFUlJJREV9IiA9ICJjbGFzcy10YXJnZXQiIF07IHRoZW4KLQkJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotCWZpCi19Ci1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JbWtkaXIgJHtCfS9idWlsZAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlzZWQgLWkgInMjTElCVE9PTD1cJChTSEVMTCkgXCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPVwkKFNIRUxMKSAke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0JIyBzb21ldGltZXMgdGhlcmUgaXNuJ3QgU0hFTEwKLQlzZWQgLWkgInMjTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtTfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRlcnNcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXCh0b3BfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChMSUJUT09MPVwkKGFwcl9idWlsZGRpcilcKS4qI1wxL2xpYnRvb2wjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFVfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFVfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXB1LTEtY29uZmlnCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcnlwdG8iCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tjcnlwdG9dID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXNxbGl0ZTMsc3FsaXRlMyIKLQotI2ZpbGVzICR7bGliZGlyfS9hcHItdXRpbC0xLyouc28gYXJlIG5vdCBzeW1saW5rcyBidXQgbG9hZGFibGUgbW9kdWxlcyB0aHVzIHRoZXkgYXJlIHBhY2thZ2VkIGluICR7UE59Ci1GSUxFU18ke1BOfSAgICAgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU30gJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2FwcnV0aWwuZXhwICR7bGliZGlyfS9hcHItdXRpbC0xLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xLyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIGdsaWJjLWdjb252LWlzbzg4NTktMiBnbGliYy1nY29udi11dGYtNyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQljZCAke0J9L3Rlc3QKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbWtkaXIgJHQKLQlmb3IgaSBpbiB0ZXN0YWxsIGRhdGE7IGRvIFwKLQkgIGNwIC1yICR7Qn0vdGVzdC8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjQzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCkBAIC0wLDAgKzEsOTMgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDUwMmI5YTg2NzBhODAxMmM0ZDkwYzMxYTg0OTU1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjVlNDA3MTNkYTU3ZDAwNDEyM2I2MzE5ODI4YmU3ZjEyNzNmYmM2NDkwZTE0NTg3NGVlMTE3N2UxMTJjNDU5IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKKwkJLS13aXRob3V0LW9kYmMgXAorCQktLXdpdGhvdXQtcGdzcWwgXAorCQktLXdpdGgtZGJtPWdkYm0gXAorCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKwkJLS13aXRob3V0LXNxbGl0ZTIgXAorCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKKworCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWlmIFsgIiR7Q0xBU1NPVkVSUklERX0iID0gImNsYXNzLXRhcmdldCIgXTsgdGhlbgorCQljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCisJZmkKK30KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlta2RpciAke0J9L2J1aWxkCisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCXNlZCAtaSAicyNMSUJUT09MPVwkKFNIRUxMKSBcJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9XCQoU0hFTEwpICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwkjIHNvbWV0aW1lcyB0aGVyZSBpc24ndCBTSEVMTAorCXNlZCAtaSAicyNMSUJUT09MPVwkKGFwcl9idWlsZGRpcikjTElCVE9PTD0ke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke1N9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCXNlZCAtaSAicyNcKGFwcl9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKGFwcl9idWlsZGVyc1wpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKHRvcF9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKExJQlRPT0w9XCQoYXByX2J1aWxkZGlyKVwpLiojXDEvbGlidG9vbCMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisJICAgICAgIC1lICdzLEFQVV9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCisJICAgICAgIC1lICdzLEFQVV9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHUtMS1jb25maWcKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImNyeXB0byIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW2NyeXB0b10gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLXdpdGgtY3J5cHRvLC0td2l0aG91dC1jcnlwdG8sb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS13aXRoLXNxbGl0ZTM9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtc3FsaXRlMyxzcWxpdGUzIgorCisjZmlsZXMgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5zbyBhcmUgbm90IHN5bWxpbmtzIGJ1dCBsb2FkYWJsZSBtb2R1bGVzIHRodXMgdGhleSBhcmUgcGFja2FnZWQgaW4gJHtQTn0KK0ZJTEVTXyR7UE59ICAgICArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTfSAke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXBydXRpbC5leHAgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5hIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1pc284ODU5LTEgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIGdsaWJjLWdjb252LXV0Zi03IgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7Qn0vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAkdAorCWZvciBpIGluIHRlc3RhbGwgZGF0YTsgZG8gXAorCSAgY3AgLXIgJHtCfS90ZXN0LyRpICR0OyBcCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWU5MmFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gZjI2ZThiODhkMmM5MGVkN2ViOWQ0ZTI3NjQxMmIwOTIzYzIzZDEwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE0IERlYyAyMDE2IDE4OjEzOjA4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFwcjogZml4IG9mZl90IHNpemUgZG9lc24ndCBtYXRjaCBpbiBnbGliYyB3aGVuIGNyb3NzCi0gY29tcGlsaW5nCi0KLUluIGNvbmZpZ3VyZS5pbiwgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLQotCUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLQotdGhlIG1hY3JvICJBUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEIiB3YXMgZGVmaW5lZCBpbiBidWlsZC9hcHJfY29tbW9uLm00LAotaXQgdXNlIHRoZSAiQUNfVFJZX1JVTiIgbWFjcm8sIHRoaXMgbWFjcm8gbGV0IHRoZSBvZmZfdCB0byA4LCB3aGVuIGNyb3NzCi1jb21waWxpbmcgZW5hYmxlLgotCi1TbyBpdCB3YXMgaGFyZGNvZGVkIGZvciBjcm9zcyBjb21waWxpbmcsIHdlIHNob3VsZCBkZXRlY3QgaXQgZHluYW1pYyBiYXNlZCBvbgotdGhlIHN5c3Jvb3QncyBnbGliYy4gV2UgY2hhbmdlIGl0IHRvIHRoZSBmb2xsb3dpbmc6Ci0KLQlBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0KLVRoZSBzYW1lIGZvciB0aGUgZm9sbG93aW5nIGhhcmRjb2RlZCB0eXBlcyBmb3IgY3Jvc3MgY29tcGlsaW5nOgotCi0JcGlkX3QJOAotCXNzaXplX3QJOAotCXNpemVfdAk4Ci0Jb2ZmX3QJOAotCi1DaGFuZ2UgdGhlIGFib3ZlIGNvcnJlc3BvbmRpbmdseS4KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuaW4gfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggOWQ1N2FlNi4uNWIxOTk0MCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY4MSw3ICsxNjgxLDcgQEAgZWxzZQotICAgICBzb2NrbGVuX3RfdmFsdWU9ImludCIKLSBmaQotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBwaWRfdCwgOCkKLStBQ19DSEVDS19TSVpFT0YocGlkX3QpCi0gCi0gaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9waWRfdCIgPSAiJGFjX2N2X3NpemVvZl9zaG9ydCI7IHRoZW4KLSAgICAgcGlkX3RfZm10PScjZGVmaW5lIEFQUl9QSURfVF9GTVQgImhkIicKLUBAIC0xNzUwLDcgKzE3NTAsNyBAQCBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzc2l6ZV90LCBsb25nLCBbc3NpemVfdF9mbXQ9ImxkIl0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBpbnQsIFtzaXplX3RfZm10PSJ1Il0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBsb25nLCBbc2l6ZV90X2ZtdD0ibHUiXSkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgc3NpemVfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yoc3NpemVfdCkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc3NpemVfdF9mbXQiOyB0aGVuCi1AQCAtMTc2Nyw3ICsxNzY3LDcgQEAgZmkKLSAKLSBzc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU1NJWkVfVF9GTVQgXCIkc3NpemVfdF9mbXRcIiIKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgc2l6ZV90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihzaXplX3QpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBmb3JtYXQgdG8gdXNlIGZvciBhcHJfc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc2l6ZV90X2ZtdCI7IHRoZW4KLUBAIC0xNzg0LDcgKzE3ODQsNyBAQCBmaQotIAotIHNpemVfdF9mbXQ9IiNkZWZpbmUgQVBSX1NJWkVfVF9GTVQgXCIkc2l6ZV90X2ZtdFwiIgotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0gCi0gaWYgdGVzdCAiJHthY19jdl9zaXplb2Zfb2ZmX3R9JHthcHJfY3ZfdXNlX2xmczY0fSIgPSAiNHllcyI7IHRoZW4KLSAgICAgIyBFbmFibGUgTEZTCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1idWlsZC1idWlsZGNoZWNrLnNoLWltcHJvdmUtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YzE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNGVmZGMwNmZiMTdiOGEwMGE5ZWNhOTIzY2FhMTc2YmU3NDFkMWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxNDo1NjoxMyArMDgwMAorU3ViamVjdDogW1BBVENIIDEvN10gYnVpbGQvYnVpbGRjaGVjay5zaDogaW1wcm92ZSBsaWJ0b29sIGRldGVjdGlvbgorCitTdXBwb3J0IGN1c3RvbWl6ZSBsaWJ0b29sIGJ5IHZhcmlhYmxlIGFzc2lnbmluZywgaXQgaXMgaGVscGZ1bAorZm9yIGNyb3NzIGNvbXBpbGVpbmcgKHN1Y2ggYXMgbGlidG9vbD1hYXJjaDY0LWxpbnV4LWxpYnRvb2wpCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBidWlsZC9idWlsZGNoZWNrLnNoIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGRjaGVjay5zaCBiL2J1aWxkL2J1aWxkY2hlY2suc2gKK2luZGV4IGFiNWRmNDQuLmYxOTFhNDEgMTAwNzU1CistLS0gYS9idWlsZC9idWlsZGNoZWNrLnNoCisrKysgYi9idWlsZC9idWlsZGNoZWNrLnNoCitAQCAtNDAsNyArNDAsOSBAQCBmaQorICMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCisgCisgIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCistbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCisraWYgdGVzdCAteiAiJGxpYnRvb2wiOyB0aGVuCisrICBsaWJ0b29sPWBidWlsZC9QcmludFBhdGggZ2xpYnRvb2wxIGdsaWJ0b29sIGxpYnRvb2wgbGlidG9vbDE1IGxpYnRvb2wxNGAKKytmaQorIGx0X3B2ZXJzaW9uPWAkbGlidG9vbCAtLXZlcnNpb24gMj4vZGV2L251bGx8c2VkIC1lICdzLyhbXildKikvL2c7cy9eW14wLTldKi8vO3MvWy0gXS4qLy9nO3EnYAorIGlmIHRlc3QgLXogIiRsdF9wdmVyc2lvbiI7IHRoZW4KKyAgIGVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmU3MDZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1hcHItUmVtb3ZlLXdvcmtkaXItcGF0aC1yZWZlcmVuY2VzLWZyb20taW5zdGFsbGVkLWFwLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gNTkyNWIyMGRhOGJiYzM0ZDliZjVhNWRjYTEyM2VmMzg4NjRkNDNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMDk6Mzk6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGFwcjogUmVtb3ZlIHdvcmtkaXIgcGF0aCByZWZlcmVuY2VzIGZyb20gaW5zdGFsbGVkIGFwcgorIGZpbGVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1RoZSBnZW5lcmF0ZWQgYGFwci0xLWNvbmZpZycgaXMgdXNlZCBieSBvdGhlciByZWNpcGVzIGF0IGJ1aWxkIHRpbWUgb3IKK3BhY2thZ2VzIGF0IHRhcmdldCBydW4gdGltZSwgdGhlIHdvcmtkaXIgcGF0aCBjYXVzZWQgY29uZnVzaW9uLgorCitSZWJhc2UgdG8gMS42LjMKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXByLWNvbmZpZy5pbiB8IDI2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hcHItY29uZmlnLmluIGIvYXByLWNvbmZpZy5pbgoraW5kZXggODRiNDA3My4uYmJiZjY1MSAxMDA2NDQKKy0tLSBhL2Fwci1jb25maWcuaW4KKysrKyBiL2Fwci1jb25maWcuaW4KK0BAIC0xNTIsMTQgKzE1Miw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIGZsYWdzPSIkZmxhZ3MgJExERkxBR1MiCisgICAgIDs7CisgICAgIC0taW5jbHVkZXMpCistICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgorICAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRpbmNsdWRlZGlyICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZWxpZiB0ZXN0ICIkbG9jYXRpb24iID0gInNvdXJjZSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCistICAgIGVsc2UKKy0gICAgICAgICMgdGhpcyBpcyBmb3IgVlBBVEggYnVpbGRzCistICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9CVUlMRF9ESVIvaW5jbHVkZSAtSSRBUFJfU09VUkNFX0RJUi9pbmNsdWRlICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZmkKKyAgICAgOzsKKyAgICAgLS1zcmNkaXIpCisgICAgIGVjaG8gJEFQUl9TT1VSQ0VfRElSCitAQCAtMTgxLDI5ICsxNzQsMTQgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgZXhpdCAwCisgICAgIDs7CisgICAgIC0tbGluay1sZCkKKy0gICAgaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICBmbGFncz0iJGZsYWdzIC1MJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBlbHNlCistICAgICAgICAjIyMgdGhpcyBzdXJlbHkgY2FuJ3Qgd29yayBzaW5jZSB0aGUgbGlicmFyeSBpcyBpbiAubGlicz8KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkQVBSX0JVSUxEX0RJUiAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBmaQorKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgorICAgICA7OworICAgICAtLWxpbmstbGlidG9vbCkKKyAgICAgIyBJZiB0aGUgTEFfRklMRSBleGlzdHMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlLCB1c2UgaXQuICBJZiB3ZSdyZQorICAgICAjIGluc3RhbGxlZCBhbmQgdGhlIExBX0ZJTEUgZG9lcyBub3QgZXhpc3QsIGFzc3VtZSB0byB1c2UgLUwvLWwKKyAgICAgIyAodGhlIExBX0ZJTEUgbWF5IG5vdCBoYXZlIGJlZW4gaW5zdGFsbGVkKS4gIElmIHdlJ3JlIGJ1aWxkaW5nIG91cnNlbHZlcywKKyAgICAgIyB3ZSdsbCBhc3N1bWUgdGhhdCBhdCBzb21lIHBvaW50IHRoZSAubGEgZmlsZSBiZSBjcmVhdGVkLgorLSAgICBpZiB0ZXN0IC1mICIkTEFfRklMRSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICAjIFNpbmNlIHRoZSB1c2VyIGlzIHNwZWNpZnlpbmcgdGhleSBhcmUgbGlua2luZyB3aXRoIGxpYnRvb2wsIHdlCistICAgICAgICAjICprbm93KiB0aGF0IC1SIHdpbGwgYmUgcmVjb2duaXplZCBieSBsaWJ0b29sLgorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLVIkbGliZGlyIC1sJHtBUFJfTElCTkFNRX0iCistICAgIGVsc2UKKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGZpCisrICAgICAgICBmbGFncz0iJGZsYWdzIC1sJHtBUFJfTElCTkFNRX0iCisgICAgIDs7CisgICAgIC0tc2hsaWItcGF0aC12YXIpCisgICAgIGVjaG8gIiRTSExJQlBBVEhfVkFSIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QwZGRkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAyLWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDk0ZDFjYTAyNjZhMGY5YzA0NDZmMTI5OWI1NGY3NTJlODdiOGE2OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBsaW5rIGxpYmFwciBhZ2FpbnN0IHBodHJlYWQgdG8gbWFrZSBnb2xkIGhhcHB5IG9uCi0gdGVzdAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfaW5pdCcKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3knCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleF90cnlsb2NrJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9jcmVhdGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9qb2luJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZGV0YWNoJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2lnbWFzaycKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX29uY2UnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfY3JlYXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZ2V0c3BlY2lmaWMnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfZGVsZXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2V0c3BlY2lmaWMnCi18IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotfCBNYWtlZmlsZToxMTQ6IHJlY2lwZSBmb3IgdGFyZ2V0ICdnbG9iYWxtdXRleGNoaWxkJyBmYWlsZWQKLXwgbWFrZVsxXTogKioqIFtnbG9iYWxtdXRleGNoaWxkXSBFcnJvciAxCi18IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9zdXBlcmFuZHkvdG1wL29lLWNvcmUtZ2xpYmMvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1hbmdzdHJvbS1saW51eC1nbnVlYWJpL2Fwci8xLjUuMi1yMC9hcHItMS41LjIvdGVzdCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA1YjE5OTQwLi5jZGY0ZDU4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03NjYsNiArNzY2LDcgQEAgZWxzZQotICAgICAgICAgICBBUFJfUFRIUkVBRFNfQ0hFQ0tfUkVTVE9SRSBdICkKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJHB0aHJlYWRoIiA9ICIxIjsgdGhlbgotKyAgICAgICAgQVBSX0FERFRPKExJQlMsWy1scHRocmVhZF0pCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9HRVRTUEVDSUZJQ19UV09fQVJHUwotICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfQVRUUl9HRVRERVRBQ0hTVEFURV9PTkVfQVJHCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9SRUNVUlNJVkVfTVVURVgKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBkNTAyOGMxMGYxNTZjMjI0NDc1YjM0MGNmYjFiYTAyNWQ2Nzk3MjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDE1OjUxOjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBNYWtlZmlsZS5pbi9jb25maWd1cmUuaW46IHN1cHBvcnQgY3Jvc3MgY29tcGlsaW5nCisKK1doaWxlIGNyb3NzIGNvbXBpbGluZywgdGhlIHRvb2xzL2dlbl90ZXN0X2NoYXIgY291bGQgbm90CitiZSBleGVjdXRlZCBhdCBidWlsZCB0aW1lLCB1c2UgQVhfUFJPR19DQ19GT1JfQlVJTEQgdG8KK2J1aWxkIG5hdGl2ZSB0b29scy9nZW5fdGVzdF9jaGFyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICB8IDEwICsrKy0tLS0tLS0KKyBjb25maWd1cmUuaW4gfCAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDVmYjc2MGUuLjg2NzVmOTAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC00Niw3ICs0Niw3IEBAIExUX1ZFUlNJT04gPSBATFRfVkVSU0lPTkAKKyAKKyBDTEVBTl9UQVJHRVRTID0gYXByLWNvbmZpZy5vdXQgYXByLmV4cCBleHBvcnRzLmMgZXhwb3J0X3ZhcnMuYyAubWFrZS5kaXJzIFwKKyAJYnVpbGQvYXByX3J1bGVzLm91dCB0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEAgXAorLQl0b29scy9nZW5fdGVzdF9jaGFyLm8gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyBcCisrCXRvb2xzL2dlbl90ZXN0X2NoYXIubyBcCisgCWluY2x1ZGUvcHJpdmF0ZS9hcHJfZXNjYXBlX3Rlc3RfY2hhci5oCisgRElTVENMRUFOX1RBUkdFVFMgPSBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKKyAJaW5jbHVkZS9hcHIuaCBpbmNsdWRlL2FyY2gvdW5peC9hcHJfcHJpdmF0ZS5oIFwKK0BAIC0xMzEsMTMgKzEzMSw5IEBAIGNoZWNrOiAkKFRBUkdFVF9MSUIpCisgZXRhZ3M6CisgCWV0YWdzIGBmaW5kIC4gLW5hbWUgJyouW2NoXSdgCisgCistT0JKRUNUU19nZW5fdGVzdF9jaGFyID0gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyAkKExPQ0FMX0xJQlMpCistdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbzogdG9vbHMvZ2VuX3Rlc3RfY2hhci5jCisrdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAOiB0b29scy9nZW5fdGVzdF9jaGFyLmMKKyAJJChBUFJfTUtESVIpIHRvb2xzCistCSQoTFRfQ09NUElMRSkKKy0KKy10b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6ICQoT0JKRUNUU19nZW5fdGVzdF9jaGFyKQorLQkkKExJTktfUFJPRykgJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpICQoQUxMX0xJQlMpCisrCSQoQ0NfRk9SX0JVSUxEKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACisgCisgaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAorIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA3MTlmMzMxLi4zNjExMjBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xODMsNiArMTgzLDkgQEAgZG5sIGNhbiBvbmx5IGJlIHVzZWQgb25jZSB3aXRoaW4gYSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGlzIHByZXZlbnRzIGEKKyBkbmwgcHJlbG9hZCBzZWN0aW9uIGZyb20gaW52b2tpbmcgdGhlIG1hY3JvIHRvIGdldCBjb21waWxlciBpbmZvLgorIEFDX1BST0dfQ0MKKyAKKytkbmwgQ2hlY2sgYnVpbGQgQ0MgZm9yIGdlbl90ZXN0X2NoYXIgY29tcGlsaW5nIHdoaWNoIGlzIGV4ZWN1dGVkIGF0IGJ1aWxkIHRpbWUuCisrQVhfUFJPR19DQ19GT1JfQlVJTEQKKysKKyBkbmwgQUNfUFJPR19TRUQgaXMgb25seSBhdmFsaWFibGUgaW4gcmVjZW50IGF1dG9jb25mIHZlcnNpb25zLgorIGRubCBVc2UgQUNfQ0hFQ0tfUFJPRyBpbnN0ZWFkIGlmIEFDX1BST0dfU0VEIGlzIG5vdCBwcmVzZW50LgorIGlmZGVmKFtBQ19QUk9HX1NFRF0sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGZjMDdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3OTI1ZWIxNzY2YTAwY2NlZTA1YzZlODBiMWQzNGYxNjNhMDRiN2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAwOTo0MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIIDQvN10gRml4IHBhY2tldCBkaXNjYXJkcyBIVFRQIHJlZGlyZWN0LgorCitEaXNjb25uZWN0IHRoZSBjb25uZWN0aW9uIGJ5IHBvbGwoKSB0aW1lb3V0LgorSWYgdGltZW91dD0wIGFuZCBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dCgpPUFQUl9USU1FVVAgdGhlbgorYXByX3NvY2tldF9yZWN2KCkgcmV0dXJucyBFQUdBSU4uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBOb3JpYWtpIFlvc2hpdGFuZSA8eW9zaGl0YW5lLm5yc0BjbnQubmNvcy5uZWMuY28uanA+CitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjYuMworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBuZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK2luZGV4IDRjMGUwYTYuLjFiZGFmYmEgMTAwNjQ0CistLS0gYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYworKysrIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK0BAIC04NSw2ICs4NSwxMCBAQCBhcHJfc3RhdHVzX3QgYXByX3NvY2tldF9yZWN2KGFwcl9zb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBhcHJfc2l6ZV90ICpsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICYmIChzb2NrLT50aW1lb3V0ID4gMCkpIHsKKyBkb19zZWxlY3Q6CisgICAgICAgICBhcnYgPSBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dChOVUxMLCBzb2NrLCAxKTsKKysgICAgICAgIGlmICgoYXJ2ID09IEFQUl9USU1FVVApICYmIChzb2NrLT50aW1lb3V0ID09IDApKSB7CisrICAgICAgICAgICAgKmxlbiA9IDA7CisrICAgICAgICAgICAgcmV0dXJuIEVBR0FJTjsKKysgICAgICAgIH0KKyAgICAgICAgIGlmIChhcnYgIT0gQVBSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAqbGVuID0gMDsKKyAgICAgICAgICAgICByZXR1cm4gYXJ2OworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjYzNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMmU2NmNlY2UwYzNhZGZmOTI3MzMzMzIxMTEyMDRkZGMxZDczMGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAxODoyNTozOCAtMDgwMAorU3ViamVjdDogW1BBVENIIDUvN10gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKKworV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCitvdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgorCit8IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgorfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKK3wgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCit8IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDM2MTEyMGYuLjNiMTA0MjIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTI0OSw3ICsyNDksNyBAQCBjYXNlICRob3N0IGluCisgICAgIDs7CisgKikKKyAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgorLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCisrICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1ZTdlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApAQCAtMCwwICsxLDc4IEBACitGcm9tIGY0ZDZlNDVlZDVkMmNjZmZkMWFmNGMyY2NkZjcwOTliYTBkY2UxMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNCBEZWMgMjAxNiAxODoxMzowOCArMDgwMAorU3ViamVjdDogW1BBVENIIDYvN10gYXByOiBmaXggb2ZmX3Qgc2l6ZSBkb2Vzbid0IG1hdGNoIGluIGdsaWJjIHdoZW4gY3Jvc3MKKyBjb21waWxpbmcKKworSW4gY29uZmlndXJlLmluLCBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgorCisJQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorCit0aGUgbWFjcm8gIkFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQiIHdhcyBkZWZpbmVkIGluIGJ1aWxkL2Fwcl9jb21tb24ubTQsCitpdCB1c2UgdGhlICJBQ19UUllfUlVOIiBtYWNybywgdGhpcyBtYWNybyBsZXQgdGhlIG9mZl90IHRvIDgsIHdoZW4gY3Jvc3MKK2NvbXBpbGluZyBlbmFibGUuCisKK1NvIGl0IHdhcyBoYXJkY29kZWQgZm9yIGNyb3NzIGNvbXBpbGluZywgd2Ugc2hvdWxkIGRldGVjdCBpdCBkeW5hbWljIGJhc2VkIG9uCit0aGUgc3lzcm9vdCdzIGdsaWJjLiBXZSBjaGFuZ2UgaXQgdG8gdGhlIGZvbGxvd2luZzoKKworCUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKKworVGhlIHNhbWUgZm9yIHRoZSBmb2xsb3dpbmcgaGFyZGNvZGVkIHR5cGVzIGZvciBjcm9zcyBjb21waWxpbmc6CisKKwlwaWRfdAk4CisJc3NpemVfdAk4CisJc2l6ZV90CTgKKwlvZmZfdAk4CisKK0NoYW5nZSB0aGUgYWJvdmUgY29ycmVzcG9uZGluZ2x5LgorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAzYjEwNDIyLi5hMjI3ZTcyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xNzY5LDcgKzE3NjksNyBAQCBlbHNlCisgICAgIHNvY2tsZW5fdF92YWx1ZT0iaW50IgorIGZpCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIHBpZF90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihwaWRfdCkKKyAKKyBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3BpZF90IiA9ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IjsgdGhlbgorICAgICBwaWRfdF9mbXQ9JyNkZWZpbmUgQVBSX1BJRF9UX0ZNVCAiaGQiJworQEAgLTE4MzgsNyArMTgzOCw3IEBAIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNzaXplX3QsIGxvbmcsIFtzc2l6ZV90X2ZtdD0ibGQiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGludCwgW3NpemVfdF9mbXQ9InUiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGxvbmcsIFtzaXplX3RfZm10PSJsdSJdKQorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBzc2l6ZV90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQorIAorIEFDX01TR19DSEVDS0lORyhbd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgYXByX3NzaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzc2l6ZV90X2ZtdCI7IHRoZW4KK0BAIC0xODU1LDcgKzE4NTUsNyBAQCBmaQorIAorIHNzaXplX3RfZm10PSIjZGVmaW5lIEFQUl9TU0laRV9UX0ZNVCBcIiRzc2l6ZV90X2ZtdFwiIgorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCBzaXplX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzaXplX3RfZm10IjsgdGhlbgorQEAgLTE4NzIsNyArMTg3Miw3IEBAIGZpCisgCisgc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU0laRV9UX0ZNVCBcIiRzaXplX3RfZm10XCIiCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKKyAKKyBpZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9vZmZfdH0ke2Fwcl9jdl91c2VfbGZzNjR9IiA9ICI0eWVzIjsgdGhlbgorICAgICAjIEVuYWJsZSBMRlMKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2MGIwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGM2YWZjNGE0YTc2NjQ3OGNiNmFhNmI0M2E1MDA1MTg4MWI2MzE4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIGV4cGxpY2l0bHkgbGluayBsaWJhcHIgYWdhaW5zdCBwaHRyZWFkIHRvIG1ha2UgZ29sZCBoYXBweQorIG9uIHRlc3QKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95JworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhfdHJ5bG9jaycKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfY3JlYXRlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfam9pbicKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2RldGFjaCcKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NpZ21hc2snCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9vbmNlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2NyZWF0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2dldHNwZWNpZmljJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2RlbGV0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NldHNwZWNpZmljJworfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK3wgTWFrZWZpbGU6MTE0OiByZWNpcGUgZm9yIHRhcmdldCAnZ2xvYmFsbXV0ZXhjaGlsZCcgZmFpbGVkCit8IG1ha2VbMV06ICoqKiBbZ2xvYmFsbXV0ZXhjaGlsZF0gRXJyb3IgMQorfCBtYWtlWzFdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUvc3VwZXJhbmR5L3RtcC9vZS1jb3JlLWdsaWJjL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYW5nc3Ryb20tbGludXgtZ251ZWFiaS9hcHIvMS41LjItcjAvYXByLTEuNS4yL3Rlc3QnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggYTIyN2U3Mi4uY2JjMGY5MCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNzg0LDYgKzc4NCw3IEBAIGVsc2UKKyAgICAgICAgICAgQVBSX1BUSFJFQURTX0NIRUNLX1JFU1RPUkUgXSApCisgICAgIGZpCisgICAgIGlmIHRlc3QgIiRwdGhyZWFkaCIgPSAiMSI7IHRoZW4KKysgICAgICAgIEFQUl9BRERUTyhMSUJTLFstbHB0aHJlYWRdKQorICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfR0VUU1BFQ0lGSUNfVFdPX0FSR1MKKyAgICAgICAgIEFQUl9DSEVDS19QVEhSRUFEX0FUVFJfR0VUREVUQUNIU1RBVEVfT05FX0FSRworICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfUkVDVVJTSVZFX01VVEVYCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODA1YjhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL0ZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZpeCBwYWNrZXQgZGlzY2FyZHMgSFRUUCByZWRpcmVjdC4KLQotRGlzY29ubmVjdCB0aGUgY29ubmVjdGlvbiBieSBwb2xsKCkgdGltZW91dC4KLUlmIHRpbWVvdXQ9MCBhbmQgYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoKT1BUFJfVElNRVVQIHRoZW4KLWFwcl9zb2NrZXRfcmVjdigpIHJldHVybnMgRUFHQUlOLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTm9yaWFraSBZb3NoaXRhbmUgPHlvc2hpdGFuZS5ucnNAY250Lm5jb3MubmVjLmNvLmpwPgotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMgfCAgICA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1pbmRleCBjMTMzYTI2Li5lOGZhZjE1IDEwMDY0NAotLS0tIGEvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKLSsrKyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1AQCAtODUsNiArODUsMTAgQEAgYXByX3N0YXR1c190IGFwcl9zb2NrZXRfcmVjdihhcHJfc29ja2V0X3QgKnNvY2ssIGNoYXIgKmJ1ZiwgYXByX3NpemVfdCAqbGVuKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc29jay0+dGltZW91dCA+IDApKSB7Ci0gZG9fc2VsZWN0OgotICAgICAgICAgYXJ2ID0gYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoTlVMTCwgc29jaywgMSk7Ci0rICAgICAgICBpZiAoKGFydiA9PSBBUFJfVElNRVVQKSAmJiAoc29jay0+dGltZW91dCA9PSAwKSkgewotKyAgICAgICAgICAgICpsZW4gPSAwOwotKyAgICAgICAgICAgIHJldHVybiBFQUdBSU47Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoYXJ2ICE9IEFQUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgKmxlbiA9IDA7Ci0gICAgICAgICAgICAgcmV0dXJuIGFydjsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY2xlYW51cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY3ODRlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHItMS40LjIub3JpZy9idWlsZC9idWlsZGNoZWNrLnNoCTIwMDktMTEtMTMgMDg6Mjc6MTYuMDAwMDAwMDAwICswODAwCi0rKysgYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gJMjAxMC0xMS0yNiAxNTo0NDowMC4wMDAwMDAwMDAgKzA4MDAKLUBAIC0zMiwzNSArMzIsNCBAQAotIGVjaG8gImJ1aWxkY29uZjogYXV0b2NvbmYgdmVyc2lvbiAkYWNfdmVyc2lvbiAob2spIgotIGZpCi0gCi0tIyBTYW1wbGUgbGlidG9vbCAtLXZlcnNpb24gb3V0cHV0czoKLS0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDEuMy4zICgxLjM4NS4yLjE4MSAxOTk5LzA3LzAyIDE1OjQ5OjExKQotLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCAxLjEzNjEgMjAwNC8wMS8wMiAyMzoxMDo1MikgMS41YQotLSMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCi0tCi0tIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCi0tbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCi0tbHRfcHZlcnNpb249YCRsaWJ0b29sIC0tdmVyc2lvbiAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvKFteKV0qKS8vZztzL15bXjAtOV0qLy87cy9bLSBdLiovL2c7cSdgCi0taWYgdGVzdCAteiAiJGx0X3B2ZXJzaW9uIjsgdGhlbgotLWVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLWV4aXQgMQotLWZpCi0tbHRfdmVyc2lvbj1gZWNobyAkbHRfcHZlcnNpb258c2VkIC1lICdzL1woW2Etel0qXCkkLy5cMS8nYAotLUlGUz0uOyBzZXQgJGx0X3ZlcnNpb247IElGUz0nICcKLS1sdF9zdGF0dXM9Imdvb2QiCi0taWYgdGVzdCAiJDEiID0gIjEiOyB0aGVuCi0tICAgaWYgdGVzdCAiJDIiIC1sdCAiNCI7IHRoZW4KLS0gICAgICBsdF9zdGF0dXM9ImJhZCIKLS0gICBmaQotLWZpCi0taWYgdGVzdCAkbHRfc3RhdHVzID0gImdvb2QiOyB0aGVuCi0tICAgZWNobyAiYnVpbGRjb25mOiBsaWJ0b29sIHZlcnNpb24gJGx0X3B2ZXJzaW9uIChvaykiCi0tICAgZXhpdCAwCi0tZmkKLS0KLS1lY2hvICJidWlsZGNvbmY6IGxpYnRvb2wgdmVyc2lvbiAkbHRfcHZlcnNpb24gZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLQotLWV4aXQgMQotK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDVjNGY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IGFwci0xLjMuMy9hcHItY29uZmlnLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXByLTEuMy4zLm9yaWcvYXByLWNvbmZpZy5pbgkyMDA5LTAxLTEyIDE1OjE2OjMxLjAwMDAwMDAwMCArMDAwMAotKysrIGFwci0xLjMuMy9hcHItY29uZmlnLmluCTIwMDktMDEtMTIgMTU6MTk6MjUuMDAwMDAwMDAwICswMDAwCi1AQCAtMTUyLDE0ICsxNTIsNyBAQAotICAgICBmbGFncz0iJGZsYWdzICRMREZMQUdTIgotICAgICA7OwotICAgICAtLWluY2x1ZGVzKQotLSAgICBpZiB0ZXN0ICIkbG9jYXRpb24iID0gImluc3RhbGxlZCI7IHRoZW4KLSAgICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkaW5jbHVkZWRpciAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJzb3VyY2UiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9TT1VSQ0VfRElSL2luY2x1ZGUgJEVYVFJBX0lOQ0xVREVTIgotLSAgICBlbHNlCi0tICAgICAgICAjIHRoaXMgaXMgZm9yIFZQQVRIIGJ1aWxkcwotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRBUFJfQlVJTERfRElSL2luY2x1ZGUgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGZpCi0gICAgIDs7Ci0gICAgIC0tc3JjZGlyKQotICAgICBlY2hvICRBUFJfU09VUkNFX0RJUgotQEAgLTE4MSwyOSArMTY3LDE0IEBACi0gICAgIGV4aXQgMAotICAgICA7OwotICAgICAtLWxpbmstbGQpCi0tICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZWxzZQotLSAgICAgICAgIyMjIHRoaXMgc3VyZWx5IGNhbid0IHdvcmsgc2luY2UgdGhlIGxpYnJhcnkgaXMgaW4gLmxpYnM/Ci0tICAgICAgICBmbGFncz0iJGZsYWdzIC1MJEFQUl9CVUlMRF9ESVIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZmkKLSsgICAgICAgIGZsYWdzPSIkZmxhZ3MgLWwke0FQUl9MSUJOQU1FfSIKLSAgICAgOzsKLSAgICAgLS1saW5rLWxpYnRvb2wpCi0gICAgICMgSWYgdGhlIExBX0ZJTEUgZXhpc3RzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSwgdXNlIGl0LiAgSWYgd2UncmUKLSAgICAgIyBpbnN0YWxsZWQgYW5kIHRoZSBMQV9GSUxFIGRvZXMgbm90IGV4aXN0LCBhc3N1bWUgdG8gdXNlIC1MLy1sCi0gICAgICMgKHRoZSBMQV9GSUxFIG1heSBub3QgaGF2ZSBiZWVuIGluc3RhbGxlZCkuICBJZiB3ZSdyZSBidWlsZGluZyBvdXJzZWx2ZXMsCi0gICAgICMgd2UnbGwgYXNzdW1lIHRoYXQgYXQgc29tZSBwb2ludCB0aGUgLmxhIGZpbGUgYmUgY3JlYXRlZC4KLS0gICAgaWYgdGVzdCAtZiAiJExBX0ZJTEUiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBlbGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgIyBTaW5jZSB0aGUgdXNlciBpcyBzcGVjaWZ5aW5nIHRoZXkgYXJlIGxpbmtpbmcgd2l0aCBsaWJ0b29sLCB3ZQotLSAgICAgICAgIyAqa25vdyogdGhhdCAtUiB3aWxsIGJlIHJlY29nbml6ZWQgYnkgbGlidG9vbC4KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkbGliZGlyIC1SJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgotLSAgICBlbHNlCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBmaQotKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgotICAgICA7OwotICAgICAtLXNobGliLXBhdGgtdmFyKQotICAgICBlY2hvICIkU0hMSUJQQVRIX1ZBUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTIxZWViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGQ0MzkwOTNhYTA3YTQ4NmY1NTkyMDZhYzllNTgwOGE2YTE4MjE4Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTkgTm92IDIwMTUgMTg6MjU6MzggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKLQotV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCi1vdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgotCi18IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLXwgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi18IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDVhNGE5ODguLjlkNTdhZTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTI0Niw3ICsyNDYsNyBAQCBjYXNlICRob3N0IGluCi0gICAgIDs7Ci0gKikKLSAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgotLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCi0rICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MTQwMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlndXJlX2ZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuMy4zL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwci0xLjMuMy5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGFwci0xLjMuMy9jb25maWd1cmUuaW4KLUBAIC03OTQsMzkgKzc5NCw2IEBAIEFDX0NIRUNLX0ZVTkNTKFttbWFwIG11bm1hcCBzaG1fb3BlbiBzaG0KLSAgICAgICAgICAgICAgICAgY3JlYXRlX2FyZWFdKQotIAotIEFQUl9DSEVDS19ERUZJTkUoTUFQX0FOT04sIHN5cy9tbWFuLmgpCi0tQUNfQ0hFQ0tfRklMRSgvZGV2L3plcm8pCi0tCi0tIyBOb3QgYWxsIHN5c3RlbXMgY2FuIG1tYXAgL2Rldi96ZXJvIChzdWNoIGFzIEhQLVVYKS4gIENoZWNrIGZvciB0aGF0LgotLWlmIHRlc3QgIiRhY19jdl9mdW5jX21tYXAiID0gInllcyIgJiYKLS0gICB0ZXN0ICIkYWNfY3ZfZmlsZV9fZGV2X3plcm8iID0gInllcyI7IHRoZW4KLS0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwIHRoYXQgY2FuIG1hcCAvZGV2L3plcm8pCi0tICAgIEFDX1RSWV9SVU4oWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLS0jaWZkZWYgSEFWRV9TWVNfTU1BTl9ICi0tI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tI2VuZGlmCi0tICAgIGludCBtYWluKCkKLS0gICAgewotLSAgICAgICAgaW50IGZkOwotLSAgICAgICAgdm9pZCAqbTsKLS0gICAgICAgIGZkID0gb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKLS0gICAgICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMTsKLS0gICAgICAgIH0KLS0gICAgICAgIG0gPSBtbWFwKDAsIHNpemVvZih2b2lkKiksIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgICAgICBpZiAobSA9PSAodm9pZCAqKS0xKSB7ICAvKiBha2EgTUFQX0ZBSUxFRCAqLwotLSAgICAgICAgICAgIHJldHVybiAyOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG11bm1hcChtLCBzaXplb2Yodm9pZCopKSA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMzsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiAwOwotLSAgICB9XSwgW10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10pCi0tCi0tICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2ZpbGVfX2Rldl96ZXJvKQotLWZpCi0gCi0gIyBOb3cgd2UgZGV0ZXJtaW5lIHdoaWNoIG9uZSBpcyBvdXIgYW5vbnltb3VzIHNobWVtIHByZWZlcmVuY2UuCi0gaGF2ZXNobWdldGFub249IjAiCi1AQCAtMTUxOCwxMyArMTQ4NSwxNCBAQCBlbHNlCi0gICAgIGJpZ2VuZGlhbj0wCi0gZmkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotLWlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc3RydWN0X2lvdmVjIiA9ICIwIjsgdGhlbgotLSAgICBoYXZlX2lvdmVjPTAKLS1lbHNlCi0tICAgIGhhdmVfaW92ZWM9MQotLWZpCi0rI0FQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotKyNpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYyIgPSAiMCI7IHRoZW4KLSsjICAgIGhhdmVfaW92ZWM9MAotKyNlbHNlCi0rIyAgICBoYXZlX2lvdmVjPTEKLSsjZmkKLStoYXZlX2lvdmVjPTEKLSAKLSBBQ19TVUJTVCh2b2lkcF9zaXplKQotIEFDX1NVQlNUKHNob3J0X3ZhbHVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjQ5OWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL3VwZ3JhZGUtYW5kLWZpeC0xLjUuMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLU1ha2VmaWxlLmluOiBmaXggY3Jvc3MgY29tcGlsaW5nIGZhaWxlZAotCi1UaGUgdG9vbHMvZ2VuX3Rlc3RfY2hhciB3YXMgaW52b2tlZCBhdCBidWlsZCB0aW1lLAotYW5kIGl0IGRpZG4ndCB3b3JrIGZvciB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyB3ZQotY29tcGlsZSBpdCB3aXRoICRCVUlMRF9DQy4KLQotUmVtb3ZlIHRoZSAndG9vbHMnIGRpciBjcmVhdGlvbiwgaXQgYWx3YXlzIGV4aXN0ZWQuCi1BbmQgaXQgY2F1c2VkIGdlbl90ZXN0X2NoYXIgdW5leHBlY3RlZCByZWJ1aWx0IGF0Ci1kb19pbnN0YWxsIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMTAgKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBhMmE1MTk0Li41ZmUwMjhmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDYsNyArNDYsNiBAQCBMVF9WRVJTSU9OID0gQExUX1ZFUlNJT05ACi0gCi0gQ0xFQU5fVEFSR0VUUyA9IGFwci1jb25maWcub3V0IGFwci5leHAgZXhwb3J0cy5jIGV4cG9ydF92YXJzLmMgLm1ha2UuZGlycyBcCi0gCWJ1aWxkL2Fwcl9ydWxlcy5vdXQgdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAIFwKLS0JdG9vbHMvZ2VuX3Rlc3RfY2hhci5vIHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gXAotIAlpbmNsdWRlL3ByaXZhdGUvYXByX2VzY2FwZV90ZXN0X2NoYXIuaAotIERJU1RDTEVBTl9UQVJHRVRTID0gY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgY29uZmlnLnN0YXR1cyBcCi0gCWluY2x1ZGUvYXByLmggaW5jbHVkZS9hcmNoL3VuaXgvYXByX3ByaXZhdGUuaCBcCi1AQCAtMTI5LDEzICsxMjgsOCBAQCBjaGVjazogJChUQVJHRVRfTElCKQotIGV0YWdzOgotIAlldGFncyBgZmluZCAuIC1uYW1lICcqLltjaF0nYAotIAotLU9CSkVDVFNfZ2VuX3Rlc3RfY2hhciA9IHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gJChMT0NBTF9MSUJTKQotLXRvb2xzL2dlbl90ZXN0X2NoYXIubG86IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotLQkkKEFQUl9NS0RJUikgdG9vbHMKLS0JJChMVF9DT01QSUxFKQotLQotLXRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQDogJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpCi0tCSQoTElOS19QUk9HKSAkKE9CSkVDVFNfZ2VuX3Rlc3RfY2hhcikgJChBTExfTElCUykKLSt0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotKwkkKEJVSUxEX0NDKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACi0gCi0gaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAotIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmVlZDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlODFhODUxOTY3Yzc5YjVjZTliZmJjOTA5ZTRiZjczNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTEwOWNlYTM3N2JhYjAwMjhiYmExOWE5MmI1YjBlODk2MDNkZjllYWIwNWMwZjdkYmQ0ZGQ4M2Q0OGRjZWJkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLSMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCi0KLSMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCi0jCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCi0KLSMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKLSMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLUNDQUNIRSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKLQkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50Ci0JIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgotCWV4cG9ydCBHUkVQPSJncmVwIgotCi0JY2QgJHtTfQotCS4vYnVpbGRjb25mCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi0KLSNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KLSN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgotCWluc3RhbGwgLWQgJGQvCi0JY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCi0Jc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCi0JY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCi0JY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLwotCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7U30vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAtcCAkdC8ubGlicwotCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LwotCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLwotCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCi0JY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCi0JY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCi19Ci0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiODc4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGZkNGNkMjE2ODI4YzhjYWU1ZGU1YTEyZjM4NDRjOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2Fwcl9saWIuaDtlbmRsaW5lPTE3O21kNT1lZTQyZmE3NTc1ZGM0MDU4MGE5ZTAxYzFiNzVmYWU5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWJ1aWxkY2hlY2suc2gtaW1wcm92ZS1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFwci1SZW1vdmUtd29ya2Rpci1wYXRoLXJlZmVyZW5jZXMtZnJvbS1pbnN0YWxsZWQtYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTJmMmEzNDk0ODNhZDZmMTJkYjQ5YmEwMWZiZmRiZmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTMxZjA2ZDE2ZDdhYWJkMDk3ZmE5OTJhMzNlZWMyYjZhZjM5NjJmOTNlNmQ1NzBhOWJkNGQ4NWU5NTk5MzE3MiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCisjIEFkZGVkIHRvIGZpeCBzb21lIGlzc3VlcyB3aXRoIGNtYWtlLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYm13Y2FyaXQvbWV0YS1yb3MvaXNzdWVzLzY4I2lzc3VlY29tbWVudC0xOTg5NjkyOAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFwcl9jdl9tdXRleF9yZWN1cnNpdmU9eWVzIgorCisjIEFsc28gc3VwcHJlc3MgdHJ5aW5nIHRvIHVzZSBzY3RwLgorIworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyBhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYz15ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfZmlsZV9fZGV2X3plcm89eWVzIgorCisjIE90aGVyd2lzZSBsaWJ0b29sIGZhaWxzIHRvIGNvbXBpbGUgYXByLXV0aWxzCisjIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6ICAgZXJyb3I6IHNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnCitDQ0FDSEUgPSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCisJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudAorCSMgaW5zdGFsbCBwYXRocyBmb3IgZ3JlcC4KKwlleHBvcnQgR1JFUD0iZ3JlcCIKKworCWNkICR7U30KKwlsaWJ0b29sPScke0hPU1RfU1lTfS1saWJ0b29sJyAuL2J1aWxkY29uZgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHIuZXhwICR7ZGF0YWRpcn0vYnVpbGQtMS8qIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCisjZm9yIHNvbWUgcmVhc29uLCBidWlsZC9saWJ0b29sLm00IGhhbmRsZWQgYnkgYnVpbGRjb25mIHN0aWxsIGJlIG92ZXJ3cml0dGVuCisjd2hlbiBhdXRvY29uZiwgc28gaGFuZGxlIGl0IGFnYWluLgorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvbGlidG9vbC5tNAorCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGFwci5oCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke0RFQlVHX1BSRUZJWF9NQVB9LCxnJyBcCisJICAgICAgIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgorCWluc3RhbGwgLWQgJGQvCisJY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCisJc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCisJY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KKwljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLworCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7U30vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAtcCAkdC8ubGlicworCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LworCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLworCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LworCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KKwljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCisJY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCisJY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCit9CisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMGU0MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OTM4OGZiYzRkYzdmMjczOTQ1NTZkZDM4OWFlYjU5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRjOTBhYzRmNzRiOGZmZTk2YTkzNjNjMjUyMDhhNDQzYjM4MWJhY2VjZmVmZWE2ZGU1NDlmMjBlZDY5NTdkIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE3YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZWVlYzZjZWFkMzM1MGRjYTQ4YTIzNTI3MWMxMDViM2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRmMGMyN2I2MWRiZmZiYTdhNWI1YmEyZmY4OGM4Y2VlMTBmZjhkYWM3NzRmYTViNzljZTkwNjg1MzYyM2I3NSIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisjIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKaW5kZXggNDEwM2VhYS4uMWY4YzlmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJmNDdjOTc1ZWJlNTJiNjkxNmE0NWFkZTAyM2FlM2JhYzIxYmIwZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZhMzc2NzYyYjkyNDA0YjllM2M0MzAwNTRiOGMzMzQxY2EwZmRkOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNjowMDowMiArMDMwMAogU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIKQEAgLTgsMjkgKzgsMzAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc5MTFdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KICBidXMvTWFrZWZpbGUuYW0gfCAyICstCi0gY29uZmlndXJlLmFjICAgIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUuYWMgICAgfCA5ICsrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvYnVzL01ha2VmaWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCBiMTg5ZTAyLi41MmZiYjBiIDEwMDY0NAoraW5kZXggNjg4ZjgyYS4uMTBjZGU2MiAxMDA2NDQKIC0tLSBhL2J1cy9NYWtlZmlsZS5hbQogKysrIGIvYnVzL01ha2VmaWxlLmFtCi1AQCAtMjYsNyArMjYsNyBAQCBkYnVzc2VydmljZV9EQVRBID0gb3JnLmExMXkuQnVzLnNlcnZpY2UKLSBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KLSAJc2VkIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACitAQCAtMjksNyArMjksNyBAQCBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KKyBFWFRSQV9ESVNUICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlLmluCisgQ0xFQU5GSUxFUyArPSBvcmcuYTExeS5CdXMuc2VydmljZQogIAogLXN5c3RlbWRfdXNlcmRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC91c2VyCiArc3lzdGVtZF91c2VyZGlyID0gJChzeXN0ZW1kdXNlcnVuaXRkaXIpCiAgc3lzdGVtZF91c2VyX0RBVEEgPSBhdC1zcGktZGJ1cy1idXMuc2VydmljZQogIGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlOiBhdC1zcGktZGJ1cy1idXMuc2VydmljZS5pbiBNYWtlZmlsZQotIAlzZWQgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKKyAJJChBTV9WX0dFTikgJChTRUQpIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmOTA2MWMyLi4yYjhlZWVkIDEwMDY0NAoraW5kZXggOGM0ZmNhMi4uMTQxNWNjYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTgzLDYgKzE4MywxMyBAQCBlbHNlCitAQCAtMTQ2LDYgKzE0NiwxNSBAQCBlbHNlCiAgZmkKICBBQ19TVUJTVChEQlVTX1NFUlZJQ0VTX0RJUikKICAKQEAgLTQxLDkgKzQyLDExIEBACiArICAgICAgICAgICAgW3dpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyPSQoJFBLR19DT05GSUcgLS12YXJpYWJsZT1zeXN0ZW1kdXNlcnVuaXRkaXIgc3lzdGVtZCldKQogK0FDX1NVQlNUKFtzeXN0ZW1kdXNlcnVuaXRkaXJdLCBbJHdpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyXSkKICsKLSBBQ19QQVRIX1BST0coR0xJQl9NS0VOVU1TLCBnbGliLW1rZW51bXMpCisrQUNfUEFUSF9QUk9HKEdMSUJfTUtFTlVNUywgZ2xpYi1ta2VudW1zKQorKworIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMS4zMi4wXSkKICAKLSBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuOS42XSkKKyBBQ19TVUJTVChMSUJUT09MX0VYUE9SVF9PUFRJT05TKQogLS0gCi0yLjEuNAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWE1MWQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGMzMjA3OTljOTQxZDQyYTliN2UzNTE4MDUzNTk2OTRlYTNiMzZkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA1IEFwciAyMDE1IDA5OjA4OjM4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5scy5tNDogVGFrZSBpdCBmcm9tIGdldHRleHQtMC4xNQotCi1JdCBvdGhlcndpc2UgZXhwZWN0cyBnZXR0ZXh0IHRvIHByb3ZpZGUgaXQuIExldHMgZ28gaW5kZXBlbmRlbnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9ubHMubTQgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9ubHMubTQKLQotZGlmZiAtLWdpdCBhL200L25scy5tNCBiL200L25scy5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJjOGZlNjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L25scy5tNAotQEAgLTAsMCArMSwzMCBAQAotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAwNS0yMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSBub3QgaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sIFVscmljaCBEcmVwcGVyIGRyZXBwZXJAY3lnbnVzLmNvbSwgMTk5NS0yMDAwLgotK2RubCBCcnVubyBIYWlibGUgaGFpYmxlQGNsaXNwLmNvbnMub3JnLCAyMDAwLTIwMDMuCi0rCi0rQUNfUFJFUkVRKDIuNTApCi0rCi0rQUNfREVGVU4oW0FNX05MU10sCi0rWwotK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkXSkKLStkbmwgRGVmYXVsdCBpcyBlbmFibGVkIE5MUwotK0FDX0FSR19FTkFCTEUobmxzLAotK1sgLS1kaXNhYmxlLW5scyBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKLStVU0VfTkxTPSRlbmFibGV2YWwsIFVTRV9OTFM9eWVzKQotK0FDX01TR19SRVNVTFQoJFVTRV9OTFMpCi0rQUNfU1VCU1QoVVNFX05MUykKLStdKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ODdhZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjFkMGE0NzFlNjkzMjkyOTM0YTczZjI4OGViZmYzNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5MGQwNjRiOTM3YWFjZmU3OWE5NjIzMmFjN2U2M2QyOGQ3MTZlODViZDlmZjQzMzNmODY1MzA1YTk1OWI1YiIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14ZXZpZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxZWUzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhMDQyZTRjODAxZmRiNzkzNzg4Yjc0OWVhYjIxNDg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MGUwY2RmNWUzZDcxMzQwMDMxNWI2M2M3ZGVmZmE1NjEwMzJhNmMzNzI4OTIxMWQ4YWZjZmFhMjY3YzI2MTUiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IgorCitpbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKKyAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjMxOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNzQ3YTgwMDg5ZGZhM2MwYmJjZjIxYWRmZmY5OTY4YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiMmRhYTlhODA4YzczYTdhNzlkMjk4M2YzMzNlMGJhNzRiZTQyZmM1MWUzYmExZmFmMjU1MWE2MzY0ODdhNDkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODViNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2NkZGNjMzEzYjlhM2VmZDE5YjJkZGYwNzliYTY4ZjUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjAwZmY2YjgzODUxZGRkYzhkYjM4YjRkOWZhZWZmYjk5NTcyYmExNTBiMDY2NGVlMDJlNDZmMDE1ZWE5N2NiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCmluZGV4IDBiMzUwYmUuLmYzOTI0NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2gKQEAgLTM1LDYxICszNSw1NiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdC9jcC50ZXN0ICAgICAgICAgICAgfCAyICstCi0gdGVzdC9taXNjLnRlc3QgICAgICAgICAgfCA2ICsrKy0tLQotIHRlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IHwgNiArKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3QvY3AudGVzdCBiL3Rlc3QvY3AudGVzdAotaW5kZXggMDg2N2Y2My4uYTkyNzE5NSAxMDA2NDQKLS0tLSBhL3Rlc3QvY3AudGVzdAotKysrIGIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmIGAtcCcgaXMgZ2l2ZW4uCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9jcC50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKK0BAIC05LDcgKzksNyBAQCBUaGUgY3AgdXRpbGl0eSBzaG91bGQgb25seSBjb3B5IEFDTHMgaWYKICAJPiAtcnctcnctci0tKwotCisgCQogIAkkIGNwIGYgZwogLQkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiAtcnctci0tci0tCi0KKyAJCiAgCSQgcm0gZwotZGlmZiAtLWdpdCBhL3Rlc3QvbWlzYy50ZXN0IGIvdGVzdC9taXNjLnRlc3QKLWluZGV4IDZlOTgwNTMuLjI5MzcyYjcgMTAwNjQ0Ci0tLS0gYS90ZXN0L21pc2MudGVzdAotKysrIGIvdGVzdC9taXNjLnRlc3QKK0luZGV4OiBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvbWlzYy50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L21pc2MudGVzdAogQEAgLTI1NCw3ICsyNTQsNyBAQCBBZGQgc29tZSB1c2VycyBhbmQgZ3JvdXBzCiAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLQorIAkgCiAgCSQgbG4gLXMgZCBkL2wKIC0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiBscnd4cnd4cnd4Ci0KKyAKICAJJCBscyAtZGwgLUwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JwogQEAgLTM0Myw3ICszNDMsNyBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCiAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0KKyAJIAogIAkkIHNldGZhY2wgLWIgZAogLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gZHJ3eHIteC0tLQotCisgCiAgCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKIEBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCiAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLQorIAkgCiAgCSQgY2htb2QgNzc1IGQKIC0JJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwogIAk+IGRyd3hyd3hyLXgKLQorIAkKICAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotZGlmZiAtLWdpdCBhL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLWluZGV4IGRlMjEzNDAuLjU4OTliMGEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLS1yZXN0b3JlIHdvcmtzCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKK0BAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQogIAkkIHRvdWNoIGQvZwogIAkkIHRvdWNoIGQvdQogIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCkBAIC0xMDMsNiArOTgsMyBAQAogKwkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gLXJ3LXItU3ItLQogIAkkIHJtIC1SZiBkCi0tLQotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKaW5kZXggZTZmNGM3Mi4uMTMzOWVjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCkBAIC0xNyw3ICsxNyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiUEtHX0xJQl9ESVI9JHtiYXNlX2xpYmRpcn0gUEtHX0RFVkxJQl9ESVI9JHtsaWJkaXJ9IgogCiBkb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgaW5zdGFsbC1saWIgaW5zdGFsbC1kZXYgRElTVF9ST09UPSIke0R9IgorCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKaW5kZXggNzBiNmU5MS4uOWQ4MTkxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKQEAgLTksMTAgKzksMTIgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsL2JtYXAtdG9vbHMuZ2l0IgotU1JDUkVWID0gIjlkYWQ3MjQxMDRkZjI2NTQ0MjIyNjk3MmExZTMxMDgxM2Y5ZmZjYmEiCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRneiIKIAotUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ODM0MjAxODM2MTFhYTEzN2NiYWY2OGE5MWVmMGQ3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDY0ODkxMjcwYzE4MGMxOTBmNDE5MjViMGY2ZmI5Y2VjYWMzMDU2ZjExNjhkMjU5MmRiZTkwZTVmMjI2YzBhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcyIKIAogUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1tbWFwIHB5dGhvbjMtc2V0dXB0b29scyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MDEzZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBuYXRpdmUKLQotU1JDX1VSSSArPSAiZmlsZTovL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2giCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KLSAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjODZhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJQb3J0YWJsZSBCb29zdC5KYW0gYnVpbGQgdG9vbCBmb3IgYm9vc3QiCitTRUNUSU9OID0gImRldmVsIgorCitpbmhlcml0IG5hdGl2ZQorCitTUkNfVVJJICs9ICJmaWxlOi8vYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1zdHJhbmdlLWFzc2VydC10eXBvLWhvdy13YXMtdGhpcy1yZWxlYXNlZC13aXRoLnBhdGNoIgorCitkb19jb21waWxlKCkgeworICAgIC4vYm9vdHN0cmFwLnNoIC0td2l0aC10b29sc2V0PWdjYworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAjIGluc3RhbGwgdW5zdHJpcHBlZCB2ZXJzaW9uIGZvciBiamFtCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgYmphbS5kZWJ1ZyAke0R9JHtiaW5kaXJ9L2JqYW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjN2IxYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKLUJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKLUJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5M2VlY2NlMmFiZWQ5ZDI0NDJjOTY3NjkxNDcwOTM0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmNjNWNhYWNlOTdiYWE5NDg5MzFkNzEyZWE1ZjM3MDM4ZGJiMWM1ZDg5YjQzYWQ0ZGVmNGVkN2NiNjgzMzMyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKLQotUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMmI4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYwpAQCAtMCwwICsxLDIxIEBACisjIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKKyMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKKyMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQorIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5CisjIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKKworQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKK0JPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKK0JPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmRmYmQ2YzcxN2JlNGE3YmIyZDg4MDE4ZWFjY2Y3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzIxODE4MjUzZTZhMDk4OTU4MzE5MmY5Njc4MmM0YTk4ZWI2MjA0OTY1MzE2ZGY5ZjVhZDc1ODE5MjI1Y2E5IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCA0MWZjOTBmLi4wNDYxZWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTEzNSwyOSArMTM1LDcgQEAKIAogIyB1c2UgUEFSQUxMRUxfTUFLRSB0byBzcGVlZCB1cCB0aGUgYnVpbGQsIGJ1dCBsaW1pdCBpdCBieSAtaiA2NCwgZ3JlYXRlciBwYXJhbGxlbGlzbSBjYXVzZXMgYmphbSB0byBzZWdmYXVsdCBvciB0byBpZ25vcmUgLWoKICMgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzc2MzQKLWRlZiBnZXRfYm9vc3RfcGFyYWxsZWxfbWFrZShkKToKLSAgICBwbSA9IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykKLSAgICBpZiBwbToKLSAgICAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKLSAgICAgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBpbiBiamFtCi0gICAgICAgIHBtID0gcG0uc3BsaXQoKQotICAgICAgICB3aGlsZSBwbToKLSAgICAgICAgICAgIHYgPSBOb25lCi0gICAgICAgICAgICBvcHQgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6Ci0gICAgICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gTm9uZQotCi0gICAgICAgICAgICBpZiB2OgotICAgICAgICAgICAgICAgIHYgPSBtaW4oNjQsIGludCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJy1qJyArIHN0cih2KQotCi0gICAgcmV0dXJuICIiCi0KLUJPT1NUX1BBUkFMTEVMX01BS0UgPSAiJHtAZ2V0X2Jvb3N0X3BhcmFsbGVsX21ha2UoZCl9IgorQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfSIKIEJKQU1fT1BUUyAgICA9ICcke0JPT1NUX1BBUkFMTEVMX01BS0V9IC1kKzIgLXEgXAogCQkke0JKQU1fVE9PTFN9IFwKIAkJLXNCT09TVF9CVUlMRF9VU0VSX0NPTkZJRz0ke1dPUktESVJ9L3VzZXItY29uZmlnLmphbSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4NWFhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA0MDE5MjMwMTEzMGRjZDkxM2FhNmQ5Y2I5ZGJhOWU1ZjhkYmQ5ZDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogV2VkLCAyNCBBdWcgMjAxNiAyMTowMTo0MyArMDEwMAotU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIFBPU0lYIHBvbGwuaCBpbnN0ZWFkIG9mIHN5cy9wb2xsLmgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUE9TSVggc3BlY2lmaWVzIHRoYXQgPHBvbGwuaD4gaXMgdGhlIGNvcnJlY3QgaGVhZGVyIHRvCi1pbmNsdWRlIGZvciBwb2xsKCkKLSAgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvcG9sbC5odG1sCi13aGVyZWFzIDxzeXMvcG9sbC5oPiBpcyBvbmx5IG5lZWRlZCBmb3IgYW5jaWVudCBnbGliYyAoPDIuMyksCi1zbyBsZXQncyBmb2xsb3cgUE9TSVggaW5zdGVhZC4KLQotQXMgYSBzaWRlLWVmZmVjdCwgdGhpcyBzaWxlbmNlcyBhIHdhcm5pbmcgd2hlbiBjb21waWxpbmcKLWFnYWluc3QgdGhlIG11c2wgQy1saWJyYXJ5OgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwOjYxOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi9ib29zdC9hc2lvL2lwL2FkZHJlc3NfdjQuaHBwOjIxLAotICAgICAgICAgICAgICAgICBmcm9tIC4vYm9vc3QvYXNpby9pcC9hZGRyZXNzLmhwcDoyMSwKLSAgICAgICAgICAgICAgICAgZnJvbSBsaWJzL2xvZy9zcmMvaW5pdF9mcm9tX3NldHRpbmdzLmNwcDo2NToKLTxzeXNyb290Pi91c3IvaW5jbHVkZS9zeXMvcG9sbC5oOjE6Mjogd2FybmluZzogI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPiBbLVdjcHBdCi0gI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPgotICBefn5+fn5+Ci0KLWV0Yy4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMTI0MTkKLSBib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3QvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcCBiL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLWluZGV4IGU4YzcxMDkuLjdlNjVkM2MgMTAwNjQ0Ci0tLS0gYS9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi0rKysgYi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi1AQCAtNTgsNyArNTgsNyBAQAotICNlbHNlCi0gIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjIGlmICFkZWZpbmVkKF9fU1lNQklBTjMyX18pCi0tIyAgaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjICBpbmNsdWRlIDxwb2xsLmg+Ci0gIyBlbmRpZgotICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk2MDA1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAwMmZhNWNlZTFiOGQwMzIxNzg3MTEzZTJkYzEwYjE2MmM2NTdmMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFJhbWV5IDxyYW1leUBycnNkLmNvbT4KLURhdGU6IFdlZCwgMSBGZWIgMjAxNyAxNjo0Mzo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjb3JyZWN0IGVycm9yIHdoaWNoIGFwcGVhcmVkIHdoZW4gY29tcGlsaW5nIG5vbiBjKysgY29tcGxpYW50Ci0gY29kZSBmb3IgYXJyYXlzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2V4cGVjdGVkIHRvIGJlIHJlbGVhc2VkIGluIHYxLjY1XQotCi0tLS0KLSBib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1pbmRleCA2MTcwOGIzLi42MTJkMWE2IDEwMDY0NAotLS0tIGEvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKLSsrKyBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1AQCAtMjMsNiArMjMsOCBAQCBuYW1lc3BhY2Ugc3RkewotIH0gLy8gbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAotKyNpbmNsdWRlIDxib29zdC9zZXJpYWxpemF0aW9uL2FycmF5X3dyYXBwZXIuaHBwPgotKwotICNpZm5kZWYgQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gCi0gI2luY2x1ZGUgPGFycmF5PgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCmluZGV4IGU5YzdlNGMuLjI2ZjNjYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCkBAIC0xLDk3ICsxLDY1IEBACi1Gcm9tIGMwZTc4NWY4ZGEyY2FhNjYxNzA1MmIxYzdiMzQ3ZTBkZmZiMTUyMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU0ZDNhNzQ3MGIzMDc2OTM2NjBkMDQxMjczMmU3MjY2ZDE3MzhkOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxMDoyOToxNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gRG9uJ3Qgc2V0IHVwIC1tMzIvLW02NCwgd2UgZG8gdGhhdCBvdXJzZWx2ZXMKK1N1YmplY3Q6IFtQQVRDSCA2LzZdIERvbid0IHNldCB1cCAtbTMyLy1tNjQsIHdlIGRvIHRoYXQgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMCAtLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggMGYzNDZhNS4uOTQyZjE0MSAxMDA2NDQKK2luZGV4IGU0ZmM2YzMyLi4zNzkxNGZkMCAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTUwOSw3ICs1MDksNiBAQCBydWxlIGNvbXBpbGUuYysrLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7CitAQCAtMzM3LDQ1ICszMzcsNiBAQCBydWxlIHNldC1hZGRyZXNzLW1vZGVsLW9wdGlvbnMgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQorICAgICB7CisgICAgICAgICBsb2NhbCBvcHRpb24gOworICAgICAgICAgbG9jYWwgdGFyZ2V0LW9zID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgdGFyZ2V0LW9zIDogJChwcm9wZXJ0aWVzKSBdIDsKKy0gICAgICAgIGlmICQodGFyZ2V0LW9zKSA9IGFpeAorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4MzIgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWFpeDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlIGlmICQodGFyZ2V0LW9zKSA9IGhwdXgKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWlscDMyIDsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1scDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgICAgbG9jYWwgYXJjaCA9IFsgZmVhdHVyZS5nZXQtdmFsdWVzIGFyY2hpdGVjdHVyZSA6ICQocHJvcGVydGllcykgXSA7CistICAgICAgICAgICAgaWYgJChhcmNoKSA9IHBvd2VyIHx8ICQoYXJjaCkgPSBzcGFyYyB8fCAkKGFyY2gpID0geDg2CistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tMzIgOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgJChtb2RlbCkgPSA2NAorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAtbTY0IDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAjIEZvciBkYXJ3aW4sIHRoZSBtb2RlbCBjYW4gYmUgMzJfNjQuIGRhcndpbi5qYW0gd2lsbCBoYW5kbGUgdGhhdAorLSAgICAgICAgICAgICMgb24gaXRzIG93bi4KKy0gICAgICAgIH0KKyAgICAgICAgIE9QVElPTlMgb24gJCh0YXJnZXRzKSArPSAkKG9wdGlvbikgOworICAgICB9CiAgfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysucGNoCi1AQCAtNTIxLDcgKzUyMCw2IEBAIHJ1bGUgY29tcGlsZS5jLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jLnBjaAotQEAgLTUzMyw3ICs1MzEsNiBAQCBydWxlIGNvbXBpbGUuYysrLnByZXByb2Nlc3MgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU0OCw3ICs1NDUsNiBAQCBydWxlIGNvbXBpbGUuYy5wcmVwcm9jZXNzICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAKLSAgICAgIyBJZiB3ZSB1c2UgdGhlIG5hbWUgZysrIHRoZW4gZGVmYXVsdCBmaWxlIHN1ZmZpeCAtPiBsYW5ndWFnZSBtYXBwaW5nIGRvZXMKLSAgICAgIyBub3Qgd29yay4gU28gaGF2ZSB0byBwYXNzIC14IG9wdGlvbi4gTWF5YmUsIHdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5Ci1AQCAtNTY0LDcgKzU2MCw2IEBAIHJ1bGUgY29tcGlsZS5jKysgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU5NCw3ICs1ODksNiBAQCBydWxlIGNvbXBpbGUuYyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gCi0gICAgICMgSWYgd2UgdXNlIHRoZSBuYW1lIGcrKyB0aGVuIGRlZmF1bHQgZmlsZSBzdWZmaXggLT4gbGFuZ3VhZ2UgbWFwcGluZyBkb2VzCi0gICAgICMgbm90IHdvcmsuIFNvIGhhdmUgdG8gcGFzcyAteCBvcHRpb24uIE1heWJlLCB3ZSBjYW4gd29yayBhcm91bmQgdGhpcyBieQotQEAgLTYxMCw3ICs2MDQsNiBAQCBydWxlIGNvbXBpbGUuZm9ydHJhbiAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysgYmluZCBQQ0hfRklMRQotQEAgLTY0MSw3ICs2MzQsNiBAQCBhY3Rpb25zIGNvbXBpbGUuZm9ydHJhbgotIHJ1bGUgY29tcGlsZS5hc20gKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIExBTkcgb24gJCg8KSA9ICIteCBhc3NlbWJsZXItd2l0aC1jcHAiIDsKLSB9Ci0gCi1AQCAtOTUwLDcgKzk0Miw2IEBAIHJ1bGUgcXVvdGUtcnBhdGggKCB0YXJnZXRzICogKQotIHJ1bGUgbGluayAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBTUEFDRSBvbiAkKHRhcmdldHMpID0gIiAiIDsKLSAgICAgIyBTZXJpYWxpemUgZXhlY3V0aW9uIG9mIHRoZSAnbGluaycgYWN0aW9uLCBzaW5jZSBydW5uaW5nIE4gbGlua3MgaW4KLSAgICAgIyBwYXJhbGxlbCBpcyBqdXN0IHNsb3dlci4gRm9yIG5vdywgc2VyaWFsaXplIG9ubHkgZ2NjIGxpbmtzLCBpdCBtaWdodCBiZSBhCi1AQCAtMTAxOCw3ICsxMDA5LDYgQEAgYWN0aW9ucyBwaWVjZW1lYWwgYXJjaGl2ZQotIHJ1bGUgbGluay5kbGwgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgU1BBQ0Ugb24gJCh0YXJnZXRzKSA9ICIgIiA7Ci0gICAgIEpBTV9TRU1BUEhPUkUgb24gJCh0YXJnZXRzKSA9IDxzPmdjYy1saW5rLXNlbWFwaG9yZSA7Ci0gICAgIHF1b3RlLXJwYXRoICQodGFyZ2V0cykgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCmluZGV4IDZiYjI1ZjguLmZiNmQ5NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSA3YzQ5NTI1ODEyNTY3ZjEyMTk3MDZjNGVkMzMwYjNiZDJjYzhlOTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwODY4NzYxZTdkMmQ3NWQ0NzIwOTBlM2VmOTZmM2QyZjljZWQyN2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIERhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTA6Mjk6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIERvbid0IHNldCB1cCBhcmNoL2luc3RydWN0aW9uLXNldCBmbGFncywgd2UgZG8gdGhhdAorU3ViamVjdDogW1BBVENIIDUvNl0gRG9uJ3Qgc2V0IHVwIGFyY2gvaW5zdHJ1Y3Rpb24tc2V0IGZsYWdzLCB3ZSBkbyB0aGF0CiAgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMjEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyMSBkZWxldGlvbnMoLSkKKyB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEyNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTI3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggOTQyZjE0MS4uZDA2MmMyMCAxMDA2NDQKK2luZGV4IGUzYjFiOTUyLi5lNGZjNmMzMiAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTEwNjgsMTI0ICsxMDY4LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgorQEAgLTEyNzYsMTMwICsxMjc2LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgogICAgICAgICAgPGFyY2hpdGVjdHVyZT4kKGFyY2hpdGVjdHVyZSkvPGluc3RydWN0aW9uLXNldD4kKGluc3RydWN0aW9uLXNldCkKICAgICAgICAgIDogJCh2YWx1ZXMpIDsKICB9CkBAIC02MCw2ICs2MSwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGNvcmUtYXZ4LWkgOiAtbWFyY2g9Y29yZS1hdngtaSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogaXZ5LWJyaWRnZSA6IC1tYXJjaD1jb3JlLWF2eC1pIDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBoYXN3ZWxsIDogLW1hcmNoPWNvcmUtYXZ4LWkgLW1hdngyIC1tZm1hIC1tYm1pIC1tYm1pMiAtbWx6Y250IDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBicm9hZHdlbGwgOiAtbWFyY2g9YnJvYWR3ZWxsIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBza3lsYWtlIDogLW1hcmNoPXNreWxha2UgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHNreWxha2UtYXZ4NTEyIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBjYW5ub25sYWtlIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIC1tYXZ4NTEydmJtaSAtbWF2eDUxMmlmbWEgLW1zaGEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2IDogLW1hcmNoPWs2IDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBrNi0yIDogLW1hcmNoPWs2LTIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2LTMgOiAtbWFyY2g9azYtMyA7CkBAIC04MSw4ICs4NiwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMSA6IC1tYXJjaD1iZHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMiA6IC1tYXJjaD1iZHZlcjIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMyA6IC1tYXJjaD1iZHZlcjMgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyNCA6IC1tYXJjaD1iZHZlcjQgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMSA6IC1tYXJjaD1idHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMiA6IC1tYXJjaD1idHZlcjIgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHpudmVyMSA6IC1tYXJjaD16bnZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHdpbmNoaXAtYzYgOiAtbWFyY2g9d2luY2hpcC1jNiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogd2luY2hpcDIgOiAtbWFyY2g9d2luY2hpcDIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGMzIDogLW1hcmNoPWMzIDsKQEAgLTE0MCw0ICsxNDcsNSBAQAogLSMgQUlYIHZhcmlhbnQgb2YgUlMvNjAwMCAmIFBvd2VyUEMKIC10b29sc2V0LmZsYWdzIGdjYyBBUk9QVElPTlMgPGFkZHJlc3MtbW9kZWw+NjQvPHRhcmdldC1vcz5haXggOiAiLVg2NCIgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42NC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWMyMGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotcmVxdWlyZSBib29zdC5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9hcm0taW50cmluc2ljcy5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUFwcGx5LWJvb3N0LTEuNjIuMC1uby1mb3JjZWQtZmxhZ3MucGF0Y2gucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjgyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1MTMzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1Njg1NTI3MzY0MTk4NTk3ZjI1ZmMxYzYyMzZjYjY0Y2JjM2RlNDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMTg6MTY6MDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGEgc3RyYW5nZSBhc3NlcnQgdHlwbzsgaG93IHdhcyB0aGlzIHJlbGVhc2VkIHdpdGhvdXQKKyBub3RpY2luZz8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKK2luZGV4IDgwMmYyNjIuLjE1MmE3ZTYgMTAwNjQ0CistLS0gYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKKysrKyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYworQEAgLTEwOTIsNyArMTA5Miw3IEBAIHN0YXRpYyB2b2lkIGRlYnVnX3N0YXJ0X2NoaWxkKCBpbnQgYXJnYywgY29uc3QgY2hhciAqICogYXJndiApCisgICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGkgPSB7IE5VTEwsIE5VTEwsIDAsIDAgfTsKKyAgICAgU1RBUlRVUElORk8gc2kgPSB7IHNpemVvZiggU1RBUlRVUElORk8gKSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAgfTsKKy0gICAgYXNzZXJ0KCBERUJVR19TVEFURSA9PSBERUJVR19OT19DSElMRCApOworKyAgICBhc3NlcnQoIGRlYnVnX3N0YXRlID09IERFQlVHX05PX0NISUxEICk7CisgICAgIGlmICggISBDcmVhdGVQaXBlKCAmcGlwZTFbIDAgXSwgJnBpcGUxWyAxIF0sICZzYSwgMCApICkKKyAgICAgeworICAgICAgICAgcHJpbnRmKCJpbnRlcm5hbCBlcnJvclxuIik7CitAQCAtMTE3Niw3ICsxMTc2LDcgQEAgc3RhdGljIHZvaWQgZGVidWdfc3RhcnRfY2hpbGQoIGludCBhcmdjLCBjb25zdCBjaGFyICogKiBhcmd2ICkKKyAgICAgaW50IHJlYWRfZmQ7CisgICAgIGludCBwaWQ7CisgICAgIGludCBpOworLSAgICBhc3NlcnQoIERFQlVHX1NUQVRFID09IERFQlVHX05PX0NISUxEICk7CisrICAgIGFzc2VydCggZGVidWdfc3RhdGUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKKyAgICAgcGlwZShwaXBlMSk7CisgICAgIHBpcGUocGlwZTIpOworICAgICBwaWQgPSBmb3JrKCk7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJkOTY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGE5ZmMxM2IyYWVlNTU2NTVkNThmY2I3N2EzMTgwZmE5OWY5NjQzOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorRGF0ZTogV2VkLCAyOCBNYXIgMjAxOCAxNjo0NTowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB1cGRhdGUtY2EtY2VydGlmaWNhdGVzOiB1c2UgcmVsYXRpdmUgc3ltbGlua3MgZnJvbQorICRFVENDRVJUU0RJUgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit1cGRhdGUtY2EtY2VydGlmaWNhdGVzIHN5bWxpbmtzICh0cnVzdGVkKSBjZXJ0aWZpY2F0ZXMKK2Zyb20gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGludG8gJEVUQ0NFUlRTRElSLgordXBkYXRlLWNhLWNlcnRpZmljYXRlcyBjYW4gY2FsbCBob29rIHNjcmlwdHMgaW5zdGFsbGVkCitpbnRvIC9ldGMvY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kLiBUaG9zZSBzY3JpcHRzIGFyZQorcGFzc2VkIHRoZSBwZW0gZmlsZSBpbiAvZXRjL3NzbC9jZXJ0cy8gdGhhdCB3YXMgYWRkZWQgb3IKK3JlbW92ZWQgaW4gdGhpcyBydW4gYW5kIHRob3NlIHBlbSBmaWxlcyBhcmUgYWJzb2x1dGUKK3N5bWxpbmtzIGludG8gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGF0IHRoZSBtb21lbnQuCisKK1doZW4gcnVubmluZyB1cGRhdGUtY2EtY2VydGlmaWNhdGVzIGR1cmluZyBpbWFnZSBidWlsZAordGltZSwgdGhleSB0aHVzbHkgYWxsIHBvaW50IGludG8gdGhlIGhvc3QncyBmaWxlIHN5c3RlbSwKK25vdCBpbnRvIHRoZSAkU1lTUk9PVC4gVGhpcyBtZWFuczoKKyogdGhlIGhvc3QncyBmaWxlIHN5c3RlbSBsYXlvdXQgbXVzdCBtYXRjaCB0aGUgb25lCisgIHByb2R1Y2VkIGJ5IE9FLCBhbmQKKyogaXQgYWxzbyBtZWFucyB0aGF0IHRoZSBob3N0IG11c3QgaGF2ZSBpbnN0YWxsZWQgdGhlIHNhbWUKKyAgKG9yIG1vcmUpIGNlcnRpZmljYXRlcyBhcyB0aGUgdGFyZ2V0IGluICRDRVJUU0RJUiBhbmQKKyAgJExPQ0FMQ0VSVFNESVIKKworVGhpcyBpcyBhIHByb2JsZW0gd2hlbiB3YW50aW5nIHRvIGV4ZWN1dGUgaG9vayBzY3JpcHRzLAorYmVjYXVzZSB0aGV5IGFsbCBuZWVkIHRvIGJlIHRhdWdodCBhYm91dCAkU1lTUk9PVCwgYW5kCitiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSdyZSBjYWxsZWQKK2F0IGltYWdlIGJ1aWxkIHRpbWUsIG9yIG9uIHRoZSB0YXJnZXQsIGFzIG90aGVyd2lzZSB0aGV5Cit3aWxsIGJlIHRyeWluZyB0byBhY3R1YWxseSByZWFkIHRoZSBob3N0J3MgY2VydGlmaWNhdGVzCitmcm9tICRDRVJUU0RJUiBvciAkTE9DQUxDRVJUU0RJUi4KKworVGhpcyBhbHNvIGlzIGEgcHJvYmxlbSB3aGVuIHJ1bm5pbmcgYW55dGhpbmcgZWxzZSBkdXJpbmcKK2ltYWdlIGJ1aWxkIHRpbWUgdGhhdCBkZXBlbmRzIG9uIHRoZSB0cnVzdGVkIENBCitjZXJ0aWZpY2F0ZXMuCisKK0NoYW5naW5nIHRoZSBzeW1saW5rIHRvIGJlIHJlbGF0aXZlIHNvbHZlcyBhbGwgb2YgdGhlc2UKK3Byb2JsZW1zLiBEbyBzby4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CistLS0KKyBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgYi9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK2luZGV4IDAwZjgwYzcuLjdlOTExYTkgMTAwNzU1CistLS0gYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKKysrKyBiL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworQEAgLTI5LDYgKzI5LDcgQEAgQ0VSVFNESVI9JFNZU1JPT1QvdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIExPQ0FMQ0VSVFNESVI9JFNZU1JPT1QvdXNyL2xvY2FsL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIENFUlRCVU5ETEU9Y2EtY2VydGlmaWNhdGVzLmNydAorIEVUQ0NFUlRTRElSPSRTWVNST09UL2V0Yy9zc2wvY2VydHMKKytGU1JPT1Q9Li4vLi4vLi4vICMgdG8gZ2V0IGZyb20gJEVUQ0NFUlRTRElSIHRvIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbQorIEhPT0tTRElSPSRTWVNST09UL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAKKyB3aGlsZSBbICQjIC1ndCAwIF07CitAQCAtMTI1LDkgKzEyNiwxMCBAQCBhZGQoKSB7CisgICBQRU09IiRFVENDRVJUU0RJUi8kKGJhc2VuYW1lICIkQ0VSVCIgLmNydCB8IHNlZCAtZSAncy8gL18vZycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvWygpXS89L2cnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywvXy9nJykucGVtIgorLSAgaWYgISB0ZXN0IC1lICIkUEVNIiB8fCBbICIkKHJlYWRsaW5rICIkUEVNIikiICE9ICIke0NFUlQjIyRTWVNST09UfSIgXQorKyAgRFNUPSIkKGVjaG8gJHtDRVJUfSB8IHNlZCAtZSAic3xeJFNZU1JPT1R8fCIgLWUgInN8Xi98JEZTUk9PVHwiICkiCisrICBpZiAhIHRlc3QgLWUgIiRQRU0iIHx8IFsgIiQocmVhZGxpbmsgIiRQRU0iKSIgIT0gIiR7RFNUfSIgXQorICAgdGhlbgorLSAgICBsbiAtc2YgIiR7Q0VSVCMjJFNZU1JPT1R9IiAiJFBFTSIKKysgICAgbG4gLXNmICIke0RTVH0iICIkUEVNIgorICAgICBlY2hvICIrJFBFTSIgPj4gIiRBRERFRCIKKyAgIGZpCisgICAjIEFkZCB0cmFpbGluZyBuZXdsaW5lIHRvIGNlcnRpZmljYXRlLCBpZiBpdCBpcyBtaXNzaW5nICgjNjM1NTcwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgppbmRleCBlNGZmYmQzLi4zNTAyOTQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpAQCAtMTYsMTUgKzE2LDE3IEBACiAKIFNSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgogCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2NhLWNlcnRpZmljYXRlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1TWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIvZXRjIgorU1lTUk9PVF9ESVJTX2NsYXNzLW5hdGl2ZSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyIKIAogaW5oZXJpdCBhbGxhcmNoCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaAppbmRleCA3NGU1ZDk5Li5hN2RiMWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoCkBAIC0xLDE3ICsxLDIxIEBACi1bUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCitGcm9tIGVkNzBmMDYyMzcwOGI4YTZjMWY1OGE1ZDI0M2Q4N2M1ZmY0NWIyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IEFwciAyMDE2IDEzOjEzOjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCiAKIFVwc3RyZWFtLVN0YXR1czogIFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU5OWIzMDMuLmRjOTNmMzkgMTAwNjQ0CitpbmRleCA1NTY5YTI2Li41NmIwMzgwIDEwMDc1NQogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTk2LDcgKzExOTYsNyBAQCBBQ19BUkdfV0lUSChnc3NhcGksCitAQCAtMTI5MCw3ICsxMjkwLDcgQEAgQUNfQVJHX1dJVEgoZ3NzYXBpLAogICAgZmkKICBdKQogIApAQCAtMjAsNyArMjQsNyBAQAogIAogIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIEdTUy1BUEkgc3VwcG9ydCBpcyByZXF1ZXN0ZWRdKQotQEAgLTEyMDcsNyArMTIwNyw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzMDEsNyArMTMwMSw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgaWYgdGVzdCAtbiAiJGhvc3RfYWxpYXMiIC1hIC1mICIkR1NTQVBJX1JPT1QvYmluLyRob3N0X2FsaWFzLWtyYjUtY29uZmlnIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9YCRHU1NBUElfUk9PVC9iaW4vJGhvc3RfYWxpYXMta3JiNS1jb25maWcgLS1jZmxhZ3MgZ3NzYXBpYAogICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KQEAgLTI5LDcgKzMzLDcgQEAKICAgICAgIGVsaWYgdGVzdCAiJEdTU0FQSV9ST09UIiAhPSAieWVzIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9Ii1JJEdTU0FQSV9ST09UL2luY2x1ZGUiCiAgICAgICBmaQotQEAgLTEzMDAsNyArMTMwMCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzOTQsNyArMTM5NCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KICAgICAgICAgICAgIGRubCBrcmI1LWNvbmZpZyBkb2Vzbid0IGhhdmUgLS1saWJzLW9ubHktTCBvciBzaW1pbGFyLCBwdXQgZXZlcnl0aGluZwogICAgICAgICAgICAgZG5sIGludG8gTElCUwpAQCAtMzgsNiArNDIsMyBAQAogICAgICAgICAgICAgTElCUz0iJGdzc19saWJzICRMSUJTIgogICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZmYxYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBjOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNzowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaWxlOiBvdXRwdXQgdGhlIGNvcnJlY3QgYnVmZmVyIHRvIHRoZSB1c2VyCi0KLVJlZ3Jlc3Npb24gYnJvdWdodCBieSA3YzMxMmY4NGVhOTMwZDggKEFwcmlsIDIwMTcpCi0KLUNWRTogQ1ZFLTIwMTctMTAwMDA5OQotCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qy5odG1sCi0KLUNyZWRpdCB0byBPU1MtRnV6eiBmb3IgdGhlIGRpc2NvdmVyeQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC9jOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2ZpbGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCi1pbmRleCBiZDQyNmVhYzIuLjY2NmNiZTc1YiAxMDA2NDQKLS0tLSBhL2xpYi9maWxlLmMKLSsrKyBiL2xpYi9maWxlLmMKLUBAIC00OTksMTEgKzQ5OSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgZmlsZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCi0gICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCi0gICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgIHRtLT50bV9zZWMpOwotLSAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOwotKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBoZWFkZXIsIDApOwotICAgICBpZighcmVzdWx0KQotICAgICAgIC8qIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QgdHJhbnNmZXIgKi8KLSAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7Ci0gICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNThiMmIxMzFhZDZjMDk1Njk2ZjIwZGNmYTYyYjgzMDUyNjNmODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIFN0ZW5iZXJnIDxkYW5pZWxAaGF4eC5zZT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNjo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSB0ZnRwOiByZWplY3QgZmlsZSBuYW1lIGxlbmd0aHMgdGhhdCBkb24ndCBmaXQKLQotLi4uIGFuZCB0aGVyZWJ5IGF2b2lkIHRlbGxpbmcgc2VuZCgpIHRvIHNlbmQgb2ZmIG1vcmUgYnl0ZXMgdGhhbiB0aGUKLXNpemUgb2YgdGhlIGJ1ZmZlciEKLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMTAwCi0KLUJ1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzA4MDlCLmh0bWwKLVJlcG9ydGVkLWJ5OiBFdmVuIFJvdWF1bHQKLQotQ3JlZGl0IHRvIE9TUy1GdXp6IGZvciB0aGUgZGlzY292ZXJ5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTgKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvdGZ0cC5jIHwgICAgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKLWluZGV4IDAyYmQ4NDIuLmY2ZjRiY2UgMTAwNjQ0Ci0tLS0gYS9saWIvdGZ0cC5jCi0rKysgYi9saWIvdGZ0cC5jCi1AQCAtNSw3ICs1LDcgQEAKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICAqCi0tICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSsgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1AQCAtNDkxLDYgKzQ5MSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgdGZ0cF9ldmVudF90IGV2ZW50KQotICAgICBpZihyZXN1bHQpCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAKLSsgICAgaWYoc3RybGVuKGZpbGVuYW1lKSA+IChzdGF0ZS0+Ymxrc2l6ZSAtIHN0cmxlbihtb2RlKSAtIDQpKSB7Ci0rICAgICAgZmFpbGYoZGF0YSwgIlRGVFAgZmlsZSBuYW1lIHRvbyBsb25nXG4iKTsKLSsgICAgICByZXR1cm4gQ1VSTEVfVEZUUF9JTExFR0FMOyAvKiB0b28gbG9uZyBmaWxlIG5hbWUgZmllbGQgKi8KLSsgICAgfQotKwotICAgICBzbnByaW50ZigoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErMiwKLSAgICAgICAgICAgICAgc3RhdGUtPmJsa3NpemUsCi0gICAgICAgICAgICAgICIlcyVjJXMlYyIsIGZpbGVuYW1lLCAnXDAnLCAgbW9kZSwgJ1wwJyk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzAwZmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gNDUzZTdhN2EwM2EyY2VjNzQ5YWJkMzg3OGE0OGU3MjhjNTE1Y2NhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+Ci1EYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MTY6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2xvYjogZG8gbm90IGNvbnRpbnVlIHBhcnNpbmcgYWZ0ZXIgYSBzdHJ0b3VsKCkgb3ZlcmZsb3cKLSByYW5nZQotCi1BZGRlZCB0ZXN0IDEyODkgdG8gdmVyaWZ5LgotCi1DVkU6IENWRS0yMDE3LTEwMDAxMDEKLQotQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUEuaHRtbAotUmVwb3J0ZWQtYnk6IEJyaWFuIENhcnBlbnRlcgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC80NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3Ci0KLVJlYmFzZSB0aGUgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgY2hhbmdlcyBmb3IgY3VybCA3LjU0LjEuCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rvb2xfdXJsZ2xvYi5jICAgICAgfCAgNSArKysrLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKy0KLSB0ZXN0cy9kYXRhL3Rlc3QxMjg5ICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9kYXRhL3Rlc3QxMjg5Ci0KLWRpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKLWluZGV4IDZiMWVjZTAuLmQ1NmRjZDkgMTAwNjQ0Ci0tLS0gYS9zcmMvdG9vbF91cmxnbG9iLmMKLSsrKyBiL3NyYy90b29sX3VybGdsb2IuYwotQEAgLTI3Myw3ICsyNzMsMTAgQEAgc3RhdGljIENVUkxjb2RlIGdsb2JfcmFuZ2UoVVJMR2xvYiAqZ2xvYiwgY2hhciAqKnBhdHRlcm5wLAotICAgICAgICAgfQotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgbWF4X24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci0tICAgICAgICBpZihlcnJubyB8fCAoKmVuZHAgPT0gJzonKSkgewotKyAgICAgICAgaWYoZXJybm8pCi0rICAgICAgICAgIC8qIG92ZXJmbG93ICovCi0rICAgICAgICAgIGVuZHAgPSBOVUxMOwotKyAgICAgICAgZWxzZSBpZigqZW5kcCA9PSAnOicpIHsKLSAgICAgICAgICAgcGF0dGVybiA9IGVuZHArMTsKLSAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICBzdGVwX24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotaW5kZXggMTU1MzIwYS4uN2FkYmVlNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotQEAgLTEzMiw3ICsxMzIsNyBAQCB0ZXN0MTI1MiB0ZXN0MTI1MyB0ZXN0MTI1NCB0ZXN0MTI1NSB0ZXN0MTI1NiB0ZXN0MTI1NyB0ZXN0MTI1OCB0ZXN0MTI1OSBcCi0gdGVzdDEyNjAgdGVzdDEyNjEgdGVzdDEyNjIgXAotIFwKLSB0ZXN0MTI4MCB0ZXN0MTI4MSB0ZXN0MTI4MiB0ZXN0MTI4MyB0ZXN0MTI4NCB0ZXN0MTI4NSB0ZXN0MTI4NiB0ZXN0MTI4NyBcCi0tdGVzdDEyODggXAotK3Rlc3QxMjg4IHRlc3QxMjg5IFwKLSBcCi0gdGVzdDEzMDAgdGVzdDEzMDEgdGVzdDEzMDIgdGVzdDEzMDMgdGVzdDEzMDQgdGVzdDEzMDUgdGVzdDEzMDYgdGVzdDEzMDcgXAotIHRlc3QxMzA4IHRlc3QxMzA5IHRlc3QxMzEwIHRlc3QxMzExIHRlc3QxMzEyIHRlc3QxMzEzIHRlc3QxMzE0IHRlc3QxMzE1IFwKLWRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjg5IGIvdGVzdHMvZGF0YS90ZXN0MTI4OQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ2NzljYzAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyODkKLUBAIC0wLDAgKzEsMzUgQEAKLSs8dGVzdGNhc2U+Ci0rPGluZm8+Ci0rPGtleXdvcmRzPgotK0hUVFAKLStIVFRQIEdFVAotK2dsb2JiaW5nCi0rPC9rZXl3b3Jkcz4KLSs8L2luZm8+Ci0rCi0rIwotKyMgU2VydmVyLXNpZGUKLSs8cmVwbHk+Ci0rPC9yZXBseT4KLSsKLSsjIENsaWVudC1zaWRlCi0rPGNsaWVudD4KLSs8c2VydmVyPgotK2h0dHAKLSs8L3NlcnZlcj4KLSs8bmFtZT4KLStnbG9iYmluZyB3aXRoIG92ZXJmbG93IGFuZCBiYWQgc3ludHh4Ci0rPC9uYW1lPgotKzxjb21tYW5kPgotK2h0dHA6Ly91ciUyMFswLTYwMDAwMDAwMDAwMDAwMDAwMDAwCi0rPC9jb21tYW5kPgotKzwvY2xpZW50PgotKwotKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCi0rPHZlcmlmeT4KLSsjIGN1cmw6ICgzKSBbZ2xvYmJpbmddIGJhZCByYW5nZSBpbiBjb2x1bW4gCi0rPGVycm9yY29kZT4KLSszCi0rPC9lcnJvcmNvZGU+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwNzk4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotRnJvbSAxYjJlYmE2Zjk3NDVjMDY0ZjcyODNlMGFkYThmNDZkZjlkOWQ2ZTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAwMDoyNjo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGVFA6IHplcm8gdGVybWluYXRlIHRoZSBlbnRyeSBwYXRoIGV2ZW4gb24gYmFkIGlucHV0Ci0KLS4uLiBhIHNpbmdsZSBkb3VibGUgcXVvdGUgY291bGQgbGVhdmUgdGhlIGVudHJ5IHBhdGggYnVmZmVyIHdpdGhvdXQgYSB6ZXJvCi10ZXJtaW5hdGluZyBieXRlLiBDVkUtMjAxNy0xMDAwMjU0Ci0KLVRlc3QgMTE1MiBhZGRlZCB0byB2ZXJpZnkuCi0KLVJlcG9ydGVkLWJ5OiBNYXggRHltb25kCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcxMDA0Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xMDAwMjU0Ci1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZnRwLmMgICAgICAgICAgICAgICB8ICA3ICsrKystLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKysKLSB0ZXN0cy9kYXRhL3Rlc3QxMTUyICAgICB8IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDExNTIKLQotZGlmZiAtLWdpdCBhL2xpYi9mdHAuYyBiL2xpYi9mdHAuYwotaW5kZXggNWVkZWMzNy4uNDkzZGJmOSAxMDA2NDQKLS0tLSBhL2xpYi9mdHAuYwotKysrIGIvbGliL2Z0cC5jCi1AQCAtMjgyNiw2ICsyODI2LDcgQEAgc3RhdGljIENVUkxjb2RlIGZ0cF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLSAgICAgICAgIGNvbnN0IHNpemVfdCBidWZfc2l6ZSA9IGRhdGEtPnNldC5idWZmZXJfc2l6ZTsKLSAgICAgICAgIGNoYXIgKmRpcjsKLSAgICAgICAgIGNoYXIgKnN0b3JlOwotKyAgICAgICAgYm9vbCBlbnRyeV9leHRyYWN0ZWQgPSBGQUxTRTsKLSAKLSAgICAgICAgIGRpciA9IG1hbGxvYyhucmVhZCArIDEpOwotICAgICAgICAgaWYoIWRpcikKLUBAIC0yODU3LDcgKzI4NTgsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBwYXRoICovCi0tICAgICAgICAgICAgICAgICpzdG9yZSA9ICdcMCc7IC8qIHplcm8gdGVybWluYXRlICovCi0rICAgICAgICAgICAgICAgIGVudHJ5X2V4dHJhY3RlZCA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBnZXQgb3V0IG9mIHRoaXMgbG9vcCAqLwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLUBAIC0yODY2LDcgKzI4NjcsOSBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgIHN0b3JlKys7Ci0gICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgICAgIH0KLS0KLSsgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KLSsgICAgICAgIH0KLSsgICAgICAgIGlmKGVudHJ5X2V4dHJhY3RlZCkgewotICAgICAgICAgICAvKiBJZiB0aGUgcGF0aCBuYW1lIGRvZXMgbm90IGxvb2sgbGlrZSBhbiBhYnNvbHV0ZSBwYXRoIChpLmUuOiBpdAotICAgICAgICAgICAgICBkb2VzIG5vdCBzdGFydCB3aXRoIGEgJy8nKSwgd2UgcHJvYmFibHkgbmVlZCBzb21lIHNlcnZlci1kZXBlbmRlbnQKLSAgICAgICAgICAgICAgYWRqdXN0bWVudHMuIEZvciBleGFtcGxlLCB0aGlzIGlzIHRoZSBjYXNlIHdoZW4gY29ubmVjdGluZyB0bwotZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLWluZGV4IDdhZGJlZTYuLjUyODQ2NTQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLUBAIC0xMjEsNiArMTIxLDggQEAgdGVzdDExMjAgdGVzdDExMjEgdGVzdDExMjIgdGVzdDExMjMgdGVzdDExMjQgdGVzdDExMjUgdGVzdDExMjYgdGVzdDExMjcgXAotIHRlc3QxMTI4IHRlc3QxMTI5IHRlc3QxMTMwIHRlc3QxMTMxIHRlc3QxMTMyIHRlc3QxMTMzIHRlc3QxMTM0IHRlc3QxMTM1IFwKLSB0ZXN0MTEzNiB0ZXN0MTEzNyB0ZXN0MTEzOCB0ZXN0MTEzOSB0ZXN0MTE0MCB0ZXN0MTE0MSB0ZXN0MTE0MiB0ZXN0MTE0MyBcCi0gdGVzdDExNDQgdGVzdDExNDUgdGVzdDExNDYgXAotK3Rlc3QxMTUyIFwKLStcCi0gdGVzdDEyMDAgdGVzdDEyMDEgdGVzdDEyMDIgdGVzdDEyMDMgdGVzdDEyMDQgdGVzdDEyMDUgdGVzdDEyMDYgdGVzdDEyMDcgXAotIHRlc3QxMjA4IHRlc3QxMjA5IHRlc3QxMjEwIHRlc3QxMjExIHRlc3QxMjEyIHRlc3QxMjEzIHRlc3QxMjE0IHRlc3QxMjE1IFwKLSB0ZXN0MTIxNiB0ZXN0MTIxNyB0ZXN0MTIxOCB0ZXN0MTIxOSBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTE1MiBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYThjMGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTUyCi1AQCAtMCwwICsxLDYxIEBACi0rPHRlc3RjYXNlPgotKzxpbmZvPgotKzxrZXl3b3Jkcz4KLStGVFAKLStQQVNWCi0rTElTVAotKzwva2V5d29yZHM+Ci0rPC9pbmZvPgotKyMKLSsjIFNlcnZlci1zaWRlCi0rPHJlcGx5PgotKzxzZXJ2ZXJjbWQ+Ci0rUkVQTFkgUFdEIDI1NyAianVzdCBvbmUKLSs8L3NlcnZlcmNtZD4KLSsKLSsjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKLSsjIEZUUCBzZXJ2ZXIKLSs8ZGF0YSBtb2RlPSJ0ZXh0Ij4KLSt0b3RhbCAyMAotK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KLStkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgotK2Ryd3hyLXhyLXggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5ICAyICAxOTk2IGN1cmwtcmVsZWFzZXMKLSstci0tci0tci0tICAgMSAwICAgICAgICAxICAgICAgICAgICAgIDM1IEp1bCAxNiAgMTk5NiBSRUFETUUKLStscnd4cnd4cnd4ICAgMSAwICAgICAgICAxICAgICAgICAgICAgICA3IERlYyAgOSAgMTk5OSBiaW4gLT4gdXNyL2JpbgotK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IGRldgotK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5IDI5IDE2OjA0IGRvd25sb2FkLmh0bWwKLStkci14ci14ci14ICAgMiAwICAgICAgICAxICAgICAgICAgICAgNTEyIE5vdiAzMCAgMTk5NSBldGMKLStkcnd4cnd4cnd4ICAgMiA5OCAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAzMCAxNDozMyBwdWIKLStkci14ci14ci14ICAgNSAwICAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAgMSAgMTk5NyB1c3IKLSs8L2RhdGE+Ci0rPC9yZXBseT4KLSsKLSsjCi0rIyBDbGllbnQtc2lkZQotKzxjbGllbnQ+Ci0rPHNlcnZlcj4KLStmdHAKLSs8L3NlcnZlcj4KLSsgPG5hbWU+Ci0rRlRQIHdpdGggdW5ldmVuIHF1b3RlIGluIFBXRCByZXNwb25zZQotKyA8L25hbWU+Ci0rIDxjb21tYW5kPgotK2Z0cDovLyVIT1NUSVA6JUZUUFBPUlQvdGVzdC0xMTUyLwotKzwvY29tbWFuZD4KLSs8L2NsaWVudD4KLSsKLSsjCi0rIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKLSs8dmVyaWZ5PgotKzxwcm90b2NvbD4KLStVU0VSIGFub255bW91cwotK1BBU1MgZnRwQGV4YW1wbGUuY29tCi0rUFdECi0rQ1dEIHRlc3QtMTE1MgotK0VQU1YKLStUWVBFIEEKLStMSVNUCi0rUVVJVAotKzwvcHJvdG9jb2w+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvY29uZmlndXJlX2FjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YmQzMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6ICBQZW5kaW5nCi0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjgxLDcgKzI4MSw3IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLSBDVVJMX0NIRUNLX0NPTVBJTEVSCi0gQ1VSTF9TRVRfQ09NUElMRVJfQkFTSUNfT1BUUwotLUNVUkxfU0VUX0NPTVBJTEVSX0RFQlVHX09QVFMKLStkbmwgQ1VSTF9TRVRfQ09NUElMRVJfREVCVUdfT1BUUwotIENVUkxfU0VUX0NPTVBJTEVSX09QVElNSVpFX09QVFMKLSBDVVJMX1NFVF9DT01QSUxFUl9XQVJOSU5HX09QVFMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4YmJlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDFmZTkyZmQzZGQ2NGM3MjI4ZjZmZjQxZTNmYzE2YzRmMjM5MjQ3MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAwODoyODoyNSAtMDcwMAotU3ViamVjdDogbWtoZWxwLnBsOiBzdXBwb3J0IHJlcHJvZHVjaWJsZSBidWlsZAotCi1EbyBub3QgZ2VuZXJhdGUgbGluZSB3aXRoIHRoZSBjdXJyZW50IGRhdGUsIHN1Y2ggYXM6Ci0KLSogR2VuZXJhdGlvbiB0aW1lOiBUdWUgT2N0LTI0IDE4OjAxOjQxIDIwMTcKLQotVGhpcyB3aWxsIGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5LiBUaGUgZ2VuZXJhdGVkIHN0cmluZyBpcyBvbmx5Ci1wYXJ0IG9mIGEgY29tbWVudCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIGFkdmVyc2UgY29uc2VxdWVuY2VzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvcHVsbC8yMDI2IF0KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9ta2hlbHAucGwgYi9zcmMvbWtoZWxwLnBsCi1pbmRleCAyNzBkYWEyLi43NTdmMDI0IDEwMDc1NQotLS0tIGEvc3JjL21raGVscC5wbAotKysrIGIvc3JjL21raGVscC5wbAotQEAgLTEwMiwxMSArMTAyLDkgQEAgd2hpbGUoPFJFQUQ+KSB7Ci0gfQotIGNsb3NlKFJFQUQpOwotIAotLSRub3cgPSBsb2NhbHRpbWU7Ci0gcHJpbnQgPDxIRUFECi0gLyoKLSAgKiBORVZFUiBFVkVSIGVkaXQgdGhpcyBtYW51YWxseSwgZml4IHRoZSBta2hlbHAucGwgc2NyaXB0IGluc3RlYWQhCi0tICogR2VuZXJhdGlvbiB0aW1lOiAkbm93Ci0gICovCi0gI2lmZGVmIFVTRV9NQU5VQUwKLSAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjU0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmMDUzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBcCi0iCi0KLSMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAotIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucwotIwotU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjZlYjcyMmY1MTJlN2EyNDg1NWZmMDg0ZjU0ZmU1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGZjNGRmMmQwMDFlZTBjNDRlYzA3MTE4NmU3NzAwNDYyNDkyNjNjNDkxZmNhZTQ4ZGYwZTFhM2NhOGYyNWEwIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLQotIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQotUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLVBBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAotICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0gICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKLSAgICAtLXdpdGhvdXQtbGlicHNsIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwNGZhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiCkBAIC0wLDAgKzEsNzAgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQyYWFiZjc4ZGVkNmE5YWVjOGE1NDUzMmZkNmI1ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk3ZGZiMjIwNGJkOTliZTMyODI3OWY4OGY1NWI3YzYxNTkyMjE2YjA1NDJmY2JlOTk1YzYwYWE5Mjg3MWU5YiIKKworQ1ZFX1BST0RVQ1QgPSAibGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCisKKyMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKK1BBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCitQQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgorUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCitQQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKK1BBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCisJc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKK30KKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCBmYjRiZWZiLi4wOTNlZTQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTEyLDkgKzEyLDExIEBACiBTVU1NQVJZID0gIkJlcmtlbGV5IERhdGFiYXNlIHY1IgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RhdGFiYXNlL2RhdGFiYXNlLXRlY2hub2xvZ2llcy9iZXJrZWxleWRiL292ZXJ2aWV3L2luZGV4Lmh0bWwiCiBMSUNFTlNFID0gIlNsZWVweWNhdCIKLVZJUlRVQUxfTkFNRSA/PSAidmlydHVhbC9kYiIKIFJDT05GTElDVFNfJHtQTn0gPSAiZGIzIgogCitDVkVfUFJPRFVDVCA9ICJvcmFjbGVfYmVya2VsZXlfZGIiCitDVkVfVkVSU0lPTiA9ICIxMS4yLiR7UFZ9IgorCiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKQEAgLTM3LDE1ICszOSw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKLSMgUHV0IHZpcnR1YWwvZGIgaW4gYW55IGFwcHJvcHJpYXRlIHByb3ZpZGVyIG9mIGEKLSMgcmVsYXRpb25hbCBkYXRhYmFzZSwgdXNlIGl0IGFzIGEgZGVwZW5kZW5jeSBpbgotIyBwbGFjZSBvZiBhIHNwZWNpZmljIGRiIGFuZCB1c2U6Ci0jCi0jIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiCi0jCi0jIHRvIHNlbGVjdCB0aGUgY29ycmVjdCBkYiBpbiB0aGUgYnVpbGQgKGRpc3RybykgLmNvbmYKLVBST1ZJREVTICs9ICIke1ZJUlRVQUxfTkFNRX0iCi0KICMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZSAtIHR5cGljYWxseSB0aGVyZQogIyBpcyBubyBuZWVkIHRvIGluc3RhbGwgdGhlc2UgdW5sZXNzIGRvaW5nIHJlYWwgZGF0YWJhc2UKICMgbWFuYWdlbWVudCBvbiB0aGUgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1N2Q0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTcwNDAyVDIxMTczMlovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlNWZjZWNhYWIwNzFiZDBjOTNlOGEwY2VlNjVkNmM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NDQ2Y2Q0YzBkMzA5ZmQzMWEwNjgyYzVjMmYwN2Y3NjEzZmI4NjdmNzY5NDE0YjljYzUxZjE1NWFkNzMxNzIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwZTZmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE4MDEyOVQxNjQ3MjdaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNmRjZDQ5NmI0Zjc5YjNjNDUyYzNhNzRjMmQzZjg5YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDYxYWI5OWFlYTYxZjg5MjA0M2I3NjI0YjAyMWFiNWIxOTNlOWM2YmJmZDQ3NGRhMGZiY2RkNTA2YmUxZWIyIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJlMTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCi0KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTI5ZGNkYTJhOGRlM2ZkMjM2N2JkYmY2Njc2OTM3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDI1MmNiZDdkNzkzZjdiMTJiY2NlYWRkZGE5OGQyNTdjMTRmNGQxODkwZDg1MWMzODZjMzcyMDcwMDBhMjUzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKLQotIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKLQotIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKLSAgICAjIHRoZXNlIGhlYWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KLSAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAotICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAotICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTU2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgorCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkZGNiMzg5N2VmYTBmNTc0ODRhZjJiZDRmNGY4NDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjZWZmMDBmZmUwMTQ0OTViZWQzYWVkNzFjNzkxMGFhODhiZjI5Mzc5Zjc5NWFiYzBmNDZkNGVlNWY4YmM1ZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0CisKKyMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQorRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCisKKyMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCisgICAgIyB0aGVzZSBoZWFkZXJzCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCisgICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKKyAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKaW5kZXggNjY1MzY3Ni4uMWU0NzkyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0xOCwxMyArMTgsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU3ZWEzYi4uMzU5ZTkxOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjA3LDE1ICs2MDcsNiBAQCBjYXNlICRob3N0IGluCi0gICAgIEdNUF9JTkNMVURFX01QTihhcm0vYXJtLWRlZnMubTQpCi0gICAgIENBTExJTkdfQ09OVkVOVElPTlNfT0JKUz0nYXJtMzJjYWxsLmxvIGFybTMyY2hlY2subG8nCitJbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKK0BAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgorICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCiAgCiAtICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgogLSAgICAjIGFsb25lLgpAQCAtMzgsNyArMzgsNyBAQAogICAgICAjIEZJWE1FOiBXZSBtYWtlIG1hbmRhdG9yeSBjb21waWxlciBvcHRpb25zIG9wdGlvbmFsIGhlcmUuICBXZSBzaG91bGQKICAgICAgIyBlaXRoZXIgZW5mb3JjZSB0aGVtLCBvciBvcmdhbmlzZSB0byBzdHJpcCBwYXRocyBhcyB0aGUgY29ycmVzcG9uZGluZwogICAgICAjIG9wdGlvbnMgZmFpbC4KLUBAIC02ODYsOCArNjc3LDYgQEAgY2FzZSAkaG9zdCBpbgorQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCiAgCTs7CiAgICAgICAgKikKICAJcGF0aD0iYXJtIgpAQCAtNDcsNiArNDcsMyBAQAogIAk7OwogICAgICBlc2FjCiAgICAgIDs7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL2FtZDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKaW5kZXggNTY0ZDEyZC4uMzkzNTU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogZ21wLTUuMC4zL2xvbmdsb25nLmgKK0luZGV4OiBnbXAtNi4xLjIvbG9uZ2xvbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC01LjAuMy5vcmlnL2xvbmdsb25nLmgKLSsrKyBnbXAtNS4wLjMvbG9uZ2xvbmcuaAotQEAgLTk5NCw4ICs5OTQsMTAgQEAgZXh0ZXJuIFVXdHlwZSBfX01QTih1ZGl2X3Fybm5kKSBfUFJPVE8gKAorLS0tIGdtcC02LjEuMi5vcmlnL2xvbmdsb25nLmgKKysrKyBnbXAtNi4xLjIvbG9uZ2xvbmcuaAorQEAgLTEwMzYsOCArMTAzNiwxMCBAQCBleHRlcm4gVVd0eXBlIF9fTVBOKHVkaXZfcXJubmQpIChVV3R5cGUKICAgICBjb3VudCBpcyBvbmx5IGFuIGludC4gKi8KICAjZGVmaW5lIGNvdW50X3RyYWlsaW5nX3plcm9zKGNvdW50LCB4KQkJCQkJXAogICAgZG8gewkJCQkJCQkJCVwKQEAgLTE0LDUgKzE0LDUgQEAKICsgICAgX19hc21fXyAoImJzZnEgJTEsJTAiIDogIj1yIiAoX19jYnRtcCkgOiAicm0iICgoVURJdHlwZSkoeCkpKTsJXAogKyAgICAoY291bnQpID0gX19jYnRtcDsJCQkJCQkJXAogICAgfSB3aGlsZSAoMCkKLSAjZW5kaWYgLyogeDg2XzY0ICovCisgI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvdXNlLWluY2x1ZGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAppbmRleCA3NDkwNGEyLi42YjA4OWNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaApAQCAtMSwxNSArMSwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBnbXAtNC4yLjQvTWFrZWZpbGUuYW0KK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbXAtNC4yLjQub3JpZy9NYWtlZmlsZS5hbQkyMDA4LTA5LTEwIDE5OjMxOjI3LjAwMDAwMDAwMCArMDAwMAotKysrIGdtcC00LjIuNC9NYWtlZmlsZS5hbQkyMDA5LTA3LTA2IDIwOjE5OjE5LjAwMDAwMDAwMCArMDAwMAotQEAgLTEwNiw3ICsxMDYsNyBAQAotICMgYnV0IGFueW9uZSBrbm93bGVkZ2FibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQogICMgdG8gYWRkcmVzcyB0aGF0LgogICMKIC1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKICtpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKICBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQotIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmggJChNUEJTRF9IRUFERVJTX09QVElPTikKLSBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pICQoTVBCU0RfTFRMSUJSQVJJRVNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNhNjRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDBiOTcxNDhjM2FhZDA5OTNhOWFlYjA4ODU5NmZhNjNhMmZlYzUzMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjIgSmFuIDIwMTggMTg6MDA6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiB1c2UgYSBjdXN0b20gdmFsdWUgZm9yIHRoZSBsb2NhdGlvbiBvZgorIGdwZy1hZ2VudCBzb2NrZXQgaW4gdGhlIGZpbGVzeXN0ZW0KKworVGhpcyBzaG91bGQgYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBob3N0IGdwZy1hZ2VudCBvYnNlcnZlZCBvbiBhdXRvYnVpbGRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpYywgYW5kIG9ubHkgZm9yIC1uYXRpdmVdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzgyZWYxZC4uMDU3MGQ3YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTgxOCw3ICsxODE4LDcgQEAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR0NPTkZfRElTUF9OQU1FLCAiR1BHQ29uZiIsCisgCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR1RBUl9OQU1FLCAiZ3BndGFyIiwgW1RoZSBuYW1lIG9mIHRoZSBncGd0YXIgdG9vbF0pCisgCistQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudCIsCisrQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC55b2N0by1uYXRpdmUiLAorICAgICAgICAgICAgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGFnZW50IHNvY2tldF0pCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9FWFRSQV9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC5leHRyYSIsCisgICAgICAgICAgICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgYWdlbnQgc29ja2V0IGZvciByZW1vdGUgYWNjZXNzXSkKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3NmRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKLQotREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg5ZjE2OTQ5ZmFlMmQwMDNkMzg3ZjQ5ZTlkYTRiNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQ1MTRhMGJlMGY3YTFmZjI2MzE5MzMzMDAxOWViNGI1M2M4MmYwZjVlMjMwYWYzYzE0ZGYzNzEyNzFhNDVlNiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2YxYThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2giCisKKworU1JDX1VSSVttZDVzdW1dID0gIjcwOWU1YWY1YmJhODRkMjUxYzUyMDIyMmU3MjA5NzJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMWEzZTY0NzgwZmRmYTZkNzY3MGRlMDg4MGFhNWM5ZDU4OWIzZGI3YTcwOTg5NzlkNzYwNmNlYzU0NmYyZWMiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmluZGV4IDI5YjVkZDYuLjdiY2I5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKQEAgLTIxLDcgKzIxLDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UgZ3RrLWRvYwogCi1QQUNLQUdFQ09ORklHID8/PSAibGliaWRuIHpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAibGliaWRuIgogCiAjIFlvdSBtdXN0IGFsc28gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkIGluIHRoZSBrZXJuZWwgZm9yCiAjIHNlY2NvbXAgdG8gd29yay4KQEAgLTMyLDcgKzMyLDYgQEAKIFBBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCiBQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCiBQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLWVuYWJsZS1kb2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoCmluZGV4IGYwYjdjYTIuLmI2ZTdiYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2gKQEAgLTE0LDE5ICsxNCwxNiBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjkwN2IyMS4uN2M3MGQ5ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTQ4LDcgKzk0OCw3IEBAIFlFQVI9YGRhdGUgKyVZYAorSW5kZXg6IGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ251dGxzLTMuNS4xNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCitAQCAtOTU1LDcgKzk1NSw3IEBAIFlFQVI9YGRhdGUgKyVZYAogIEFDX1NVQlNUKFtZRUFSXSwgJFlFQVIpCiAgCiAgZm9yIGkgaW4gJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuYy5iYWsgJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuaC5iYWs7IGRvCiAtCW5hbT0kKGJhc2VuYW1lICRpfHNlZCAncy8uYmFrLy9nJykKICsJbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzL1wuYmFrJC8vJykKICAJaWYgdGVzdCAiJGNyZWF0ZV9saWJvcHRzX2xpbmtzIiA9ICJ5ZXMiO3RoZW4KKyAJCXJtIC1mICJzcmMvJG5hbS5zdGFtcCIKICAJCXJtIC1mICJzcmMvJG5hbSIKLSAJCUFDX0NPTkZJR19MSU5LUyhbc3JjLyRuYW06JGldKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxNDFhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gMTgwODEwNjhhOTdjMDAwMTVhYWJjNWZhMzIxNjY0OTUxNDU4ZWEwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDkgSnVuIDIwMTcgMTU6MjA6MzEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSBjZWU4MGFmMWZlOTNmNWI3Njc2NWFmZWViZmNjM2I5MDI3NjhmNWQ2IE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+IERhdGU6IFR1ZSwgMjYgTWF5Ci0gMjAxNSAyMTo0MToyNCAtMDcwMCBTdWJqZWN0OiBbUEFUQ0hdIHVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSB6bGliCi0KLUFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gc29tZXRpbWVzIGZpbmQgaG9zdCBsaWJzIGFuZCBpcyB0aGVyZWZvcmUgbm90Ci1yb2J1c3Qgd2hlbiBjcm9zcy1jb21waWxpbmcuIFJlbW92ZSBpdCBmb3IgemxpYiBhbmQgdXNlIFBLR19DSEVDS19NT0RVTEVTCi1pbnN0ZWFkLgotCi1SZW1vdmluZyBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgZm9yIHpsaWIgYWxzbyByZW1vdmVzIHRoZSAtLXdpdGgtbGliei1wcmVmaXgKLWNvbmZpZ3VyZSBvcHRpb24uIElmIHpsaWIgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIGZhaWx1cmUgdG8gZmluZCB6bGliIHZpYQotcGtnLWNvbmZpZyBpcyBub3cgdHJlYXRlZCBhcyBhIGZhdGFsIGVycm9yLgotCi1DaGFuZ2UgYmFzZWQgb24gQ2hyb21lT1MgZ251dGxzIDIuMTIuMjMgY3Jvc3MtY29tcGlsZSBmaXhlcyBwYXRjaDoKLQotICBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLyMvYy8yNzE2NjEvCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotUmViYXNlIG9uIGdudXRscyAzLjUuMTMKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDI1ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzY1MjY4ZS4uZjZhMThhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzM1LDI4ICs3MzUsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnRdKQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKLS0gQUNfTElCX0hBVkVfTElOS0ZMQUdTKHosLCBbI2luY2x1ZGUgPHpsaWIuaD5dLCBbY29tcHJlc3MgKDAsIDAsIDAsIDApO10pCi0tIGlmIHRlc3QgeCRhY19jdl9saWJ6ICE9IHh5ZXM7IHRoZW4KLS0gICBBQ19NU0dfV0FSTigKLS0qKiogCi0tKioqIFpMSUIgd2FzIG5vdCBmb3VuZC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gdXNlIFpMSUIgY29tcHJlc3Npb24uKQotLSBmaQotIGVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLSBmaQotIAotLVBLR19DSEVDS19FWElTVFMoemxpYiwgWkxJQl9IQVNfUEtHQ09ORklHPXksIFpMSUJfSEFTX1BLR0NPTkZJRz1uKQotLQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotLSAgaWYgdGVzdCAiJFpMSUJfSEFTX1BLR0NPTkZJRyIgPSAieSIgOyB0aGVuCi0tICAgIGlmIHRlc3QgIngkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUiID0geDsgdGhlbgotLSAgICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSJSZXF1aXJlcy5wcml2YXRlOiB6bGliIgotLSAgICBlbHNlCi0tICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLS0gICAgZmkKLS0gICAgTElCWl9QQz0iIgotKyAgUEtHX0NIRUNLX01PRFVMRVMoWkxJQiwgemxpYikKLSsgIEhBVkVfTElCWj15ZXMKLSsgIEFDX0RFRklORShbSEFWRV9MSUJaXSwgWzFdLCBbemxpYiBpcyBlbmFibGVkXSkKLSsgIEFDX1NVQlNUKEhBVkVfTElCWikKLSsgIExUTElCWj0kWkxJQl9MSUJTCi0rICBBQ19TVUJTVChMVExJQlopCi0rICBpZiB0ZXN0ICJ4JEdOVVRMU19SRVFVSVJFU19QUklWQVRFIiA9IHg7IHRoZW4KLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IlJlcXVpcmVzLnByaXZhdGU6IHpsaWIiCi0gICBlbHNlCi0tICAgIExJQlpfUEM9JExJQloKLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLSAgIGZpCi0gZmkKLSBBQ19TVUJTVChMSUJaX1BDKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZDdkMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmQ0MWFkODY1NzI5MzNjMjM3OWI0Y2MzMjFhMDk1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY1NDgwYWQxOThkYWQ1YmM3OGUwNzVmNGE0MGM0YTMxNWExYjIwNzI2NjY5MTlkMmQwNWEwOGFlYzEzMDk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjRhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgZ251dGxzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YjY1YWUzZmZlZjU5ZjNlZWVkNTFhNjE2NmZmMTJiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGIxMGQyYzk5OTRiYzAzMjgyNDMxNDcxNGQwZTg0YzBmMTliZGIzZDcxNWQ4ZWQ1NWJlYjczNjRhOGViYWVkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9DVkUtMjAxNy0xMDc5MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NDM4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSBkOGQ4MDVlMWYyZTY3OTliYjJkZmY0ODcxYTg1OThkYzgzMDg4YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjIgSnVuIDIwMTcgMTY6MzE6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gX2FzbjFfY2hlY2tfaWRlbnRpZmllcjogc2FmZXIgYWNjZXNzIHRvIHZhbHVlcyByZWFkCi0KLVNpZ25lZC1vZmYtYnk6IE5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QHJlZGhhdC5jb20+Ci0KLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9bGlidGFzbjEuZ2l0O2E9Y29tbWl0O2g9ZDhkODA1ZTFmMmU2Nzk5YmIyZGZmNDg3MWE4NTk4ZGM4MzA4OGEzOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTEwNzkwCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPFl1ZS5UYW9Ad2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL3BhcnNlcl9hdXguYyB8ICAgMTcgKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9wYXJzZXJfYXV4LmMgYi9saWIvcGFyc2VyX2F1eC5jCi1pbmRleCA5NzZhYjM4Li43ODZlYTY0IDEwMDY0NAotLS0tIGEvbGliL3BhcnNlcl9hdXguYwotKysrIGIvbGliL3BhcnNlcl9hdXguYwotQEAgLTk1NSw3ICs5NTUsNyBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgaWYgKHAtPnZhbHVlKQotLQkJX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcC0+dmFsdWUpOwotKwkJX2FzbjFfc3RyX2NweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsIHNpemVvZihfYXNuMV9pZGVudGlmaWVyTWlzc2luZyksIChjaGFyKilwLT52YWx1ZSk7Ci0gCSAgICAgIGVsc2UKLSAJCV9hc24xX3N0cmNweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsICIobnVsbCkiKTsKLSAJICAgICAgcmV0dXJuIEFTTjFfSURFTlRJRklFUl9OT1RfRk9VTkQ7Ci1AQCAtOTY4LDkgKzk2OCwxNSBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgJiYgKHR5cGVfZmllbGQgKHAyLT50eXBlKSA9PSBBU04xX0VUWVBFX0RFRkFVTFQpKQotIAkgICAgewotIAkgICAgICBfYXNuMV9zdHJfY3B5IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIG5vZGUtPm5hbWUpOwotLQkgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0tCSAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgKGNoYXIgKikgcDItPnZhbHVlKTsKLS0JICAgICAgX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcDItPnZhbHVlKTsKLSsJICAgICAgaWYgKHAyLT52YWx1ZSkKLSsJICAgICAgICB7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIChjaGFyICopIHAyLT52YWx1ZSk7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCSAgICAgICAgfQotKwkgICAgICBlbHNlCi0rCQlfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCAiKG51bGwpIik7Ci0rCi0gCSAgICAgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJICAgICAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKSB8fAotIAkJICAhKHAyLT50eXBlICYgQ09OU1RfQVNTSUdOKSkKLUBAIC05OTAsNyArOTk2LDggQEAgX2FzbjFfY2hlY2tfaWRlbnRpZmllciAoYXNuMV9ub2RlIG5vZGUpCi0gCQkgIF9hc24xX3N0cl9jcHkgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgbm9kZS0+bmFtZSk7Ci0gCQkgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgIi4iKTsKLSAJCSAgX2FzbjFfc3RyX2NhdCAobmFtZTIsIHNpemVvZiAobmFtZTIpLCAoY2hhciAqKSBwMi0+dmFsdWUpOwotLQkJICBfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBwMi0+dmFsdWUpOwotKwkJICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCi0gCQkgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJCSAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKQotIAkJICAgICAgfHwgIShwMi0+dHlwZSAmIENPTlNUX0FTU0lHTikpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc1NzFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgotCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVjNzI0YmQxZjczYWFmNGEzMTE4MzNlMWNkMjk3YjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NTNkYTJlNjIxMjU3ZjMzZjViMDUxY2MxMTRkNDE3ZTUyMDZhMDgxOGZlMGIxZWNmZDYxNTNmNzA5MzQ3NTMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMjM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMy5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7ZW5kbGluZT04O21kNT1jMzgwM2EzZThjYTVhYjVlYjFlNTkxMmZhYTQwNTM1MSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGludC5tNC1yZWludHJvZHVjZS1HTlVMSUJfT1ZFUlJJREVTX1dJTlRfVC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTJiYTRkMzA4ODExOWI0OGU3NTMxYTcwMzY2OWM1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTUyOGU4YzMxN2RkZDE1NjIzMGM0ZTMxZDA4MmNkMTNlN2RkZWI3YTU0ODI0YmU4MjYzMjIwOTU1MGM4Y2NhIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCmluZGV4IDE0YTQzZWUuLmYxOTk3ZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDhhZTE0OTAzNWM5N2QyN2NkMmM2MjQ3MDRkMTY1MTgwNmM1MzU3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI2NWZhZjhmZTBhY2FjYTIwNDNhMjQ4YTRkZjAyYjA4NjhmZmE2ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIHBrZ2NvbmZpZworU3ViamVjdDogW1BBVENIIDEvNF0gcGtnY29uZmlnCiAKIFVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKIHNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCkBAIC0yNSwxMCArMjUsMTAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBkYWM2Y2UuLjZhOWU1MDcgMTAwNjQ0CitpbmRleCA2ZWE0YmNkLi4yYTBkNTI4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NjYsNiArODY2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlIHNyYy9NYWtlZmlsZQorQEAgLTg4Nyw2ICs4ODcsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYwogICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKICBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKQEAgLTI5OSw1ICsyOTksNSBAQAogK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKIC0tIAotMi44LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKaW5kZXggZjFmOGM5MS4uZDIwMjcxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCkBAIC0xLDI5ICsxLDI4IEBACi1Gcm9tIGZiMTY1YzliZDk2YWNhOGM5ZWUzZTQ1MDljOWI2ZTM1ZDIzOGFkMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjAyOjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCitGcm9tIDMwZjdhNjk0Y2M0NTY4ZWNiMjRmNzdjODNhNjEyM2VkM2Y0MDc1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDEwOjQ0OjE5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZAogCi1ncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLiAgU28gd2Ugd2FudAotdG8gZmluZCBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8gcmV0cmlldmUgd2hhdGV2ZXIgaXQgaXMgd2UgbmVlZC4gIEl0IHR1cm5zCi1vdXQgdGhhdCB0aGUgc3lzdGVtIGlzIGp1c3QgdHJ5aW5nIHRvIGZpbmQgdGhlIHBhdGggdG8gdGhlIGdwZy1lcnJvci5oLCB3aGljaAotd2UgY2FuIHB1bGwgaW4gZnJvbSB0aGUgU1RBR0lOR19JTkMgZW52aXJvbm1lbnQuCitncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLgorU28gd2Ugd2FudCB0byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdAoraXMgd2UgbmVlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KIAogU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogCi1SZWJhc2UgdG8gMS45LjAKK1Jld29yayB0byAxLjEwLjAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gbGFuZy9weXRob24vc2V0dXAucHkuaW4gfCAxNSArKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKyBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDEwICstLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbiBiL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1pbmRleCBiZjRlZmEzLi43YzM0NDg3IDEwMDc1NQoraW5kZXggZjlkZGEyMC4uOWY1ZDYxZiAxMDA3NTUKIC0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgotQEAgLTI0LDcgKzI0LDYgQEAgaW1wb3J0IGdsb2IKK0BAIC0yNiw3ICsyNiw2IEBAIGltcG9ydCBzaHV0aWwKICBpbXBvcnQgc3VicHJvY2VzcwogIAogICMgT3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGdwZyBiaW5kaW5ncy4KQEAgLTMxLDM1ICszMCwyMiBAQAogIGdwZ21lX2NvbmZpZ19mbGFncyA9IFsiLS10aHJlYWQ9cHRocmVhZCJdCiAgZ3BnbWVfY29uZmlnID0gWyJncGdtZS1jb25maWciXSArIGdwZ21lX2NvbmZpZ19mbGFncwogIGdwZ21lX2ggPSAiIgotQEAgLTUyLDEzICs1MSw2IEBAIGVsc2U6Ci0gICAgIGRldm51bGwgPSBvcGVuKG9zLmRldm51bGwsICJ3IikKK0BAIC0xNzQsMTQgKzE3Myw3IEBAIGNsYXNzIEJ1aWxkRXh0Rmlyc3RIYWNrKGJ1aWxkKToKICAKLSB0cnk6Ci0tICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotLWV4Y2VwdDoKLS0gICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKLS0gICAgICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHRoZSBsaWJncGctZXJyb3IgZGV2ZWxvcG1lbnQgcGFja2FnZS4iKQorICAgICBkZWYgX2dlbmVyYXRlX2Vycm9yc19pKHNlbGYpOgorIAorLSAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCistICAgICAgICBleGNlcHQ6CistICAgICAgICAgICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKKy0gICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCiAtCi0tdHJ5OgotICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotIGV4Y2VwdDoKLUBAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWlub3IgPj0gNykpOgotIGlmIG5vdCBncGdtZV9oOgotICAgICBncGdtZV9oID0gb3MucGF0aC5qb2luKGdldGNvbmZpZygicHJlZml4IilbMF0sICJpbmNsdWRlIiwgImdwZ21lLmgiKQorLSAgICAgICAgZ3BnX2Vycm9yX2NvbnRlbnQgPSBzZWxmLl9yZWFkX2hlYWRlcigiZ3BnLWVycm9yLmgiLCBnZXRjb25maWcoImNmbGFncyIsIGNvbmZpZz1ncGdfZXJyb3JfY29uZmlnKSkKKysgICAgICAgIGdwZ19lcnJvcl9jb250ZW50ID0gc2VsZi5fcmVhZF9oZWFkZXIoImdwZy1lcnJvci5oIiwgb3MuZW52aXJvbi5nZXQoJ0NGTEFHUycpLnNwbGl0KCkpCiAgCi0tZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCi0tZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQotK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKLSBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgotLSAgICBncGdfZXJyb3JfaCA9IFwKLS0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQotKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKLSAKLSBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKLSAKKyAgICAgICAgIGZpbHRlcl9yZSA9IHJlLmNvbXBpbGUocidHUEdfRVJSX1teIF0qID0nKQorICAgICAgICAgcmV3cml0ZV9yZSA9IHJlLmNvbXBpbGUocicgKiguKikgPSAuKicpCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKaW5kZXggZDM4MzMxMS4uN2M5Y2NjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDYyMzMyZWVjNzUyZGQ3OTBmNGRkMDcxZGZiMGRiZTg2YmUzNzcyMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDU6MzQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCitGcm9tIDkzYWFlMzRlZTcwYjhkNTBiMzFhMTlhNjVkNmFjODI5MGNiMTQ4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDE1OjI4OjQ5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KQEAgLTksMjIgKzksMjUgQEAKIFJlYmFzZSB0byAxLjkuMAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjEwLjAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBkOTFlYWQ5Li42N2Y3Y2RjIDEwMDY0NAoraW5kZXggOGQ3NGNiZC4uY2U0ZjBhNSAxMDA2NDQKIC0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCiArKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTEwNiw2ICsxMDYsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0gCSAgY2QgcHl0aG9uJCR7VkVSU0lPTn0tZ3BnIDsgXAotIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAotIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAorQEAgLTkxLDYgKzkxLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIC0tYnVpbGQtYmFzZT0iJCQoYmFzZW5hbWUgIiQke1BZVEhPTn0iKS1ncGciIFwKKyAJICBpbnN0YWxsIFwKKyAJICAtLXByZWZpeCAiJChERVNURElSKSQocHJlZml4KSIgXAogKwkgIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCi0gCSAgLS1yZWNvcmQgZmlsZXMudHh0IFwKICAJICAtLXZlcmJvc2UgOyBcCi0gCSAgY2F0IGZpbGVzLnR4dCA+PiAuLi9pbnN0YWxsX2ZpbGVzLnR4dCA7IFwKKyAJZG9uZQorIAogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaAppbmRleCA5MzA3MTAzLi5kMmIwMzlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNjYmYwMjhlZWE4ODE1ZDNiMTZkNmMzNGI1MjcyNTNhNmIxMDhlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMyZWNjM2YwNTgzMDcwNjBlNDBhZjg2MTI3Y2QyMjYyNDhhNzNjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAotU3ViamVjdDogW1BBVENIIDQvNV0gcHl0aG9uIGltcG9ydAorU3ViamVjdDogW1BBVENIIDMvNF0gcHl0aG9uIGltcG9ydAogCiBEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKIHN5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KQEAgLTMwLDUgKzMwLDUgQEAKICAJZWxzZQogIAkJQUNfTVNHX1JFU1VMVChbbm9dKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaAppbmRleCA3YTZjYzdiLi45NjNhZTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDA2NGFlNDQ0MWUyYzExMzI5NzQ4YTE4MTU3OTg4ZjllOTUzZjk3NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkY2VkYzRkZDA1NWFmOTAyNzE5YjFhMWNiMTBkYWE5MzVhMjdmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTMgQXByIDIwMTcgMTY6NDA6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgogIG91dHB1dAogCiBUaGUgbG9naWMgd2FzIG5vdCB3b3JraW5nIGluIG11bHRpbGliIHNldHVwcyB3aGljaCB1c2Ugb3RoZXIKQEAgLTI3LDUgKzI3LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzg5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDE4MGE1NjY5ZTRhMTNhNTUwYjFiMGRjZWYxNjg5YjZjMDQ3MGZlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDExOjAxOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCBwYXRoIGlzc3VlCisKK0dldCB0aGUgIi0tcm9vdCIgZGlyZWN0b3J5IHN1cHBsaWVkIHRvIHRoZSAiaW5zdGFsbCIgY29tbWFuZCwKK2FuZCB1c2UgaXQgYXMgYSBwcmVmaXggdG8gc3RyaXAgb2ZmIHRoZSBwdXJwb3J0ZWQgZmlsZW5hbWUKK2VuY29kZWQgaW4gYnl0ZWNvZGUgZmlsZXMuCisKK1NpbmNlIC0tcm9vdCBhZGRlZCwgd2UgbmVlZCB0byB0d2VhayAtLXByZWZpeCBhbmQgLS1pbnN0YWxsLWxpYgordG8gdXNlIHJlbGF0aXZlIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggY2U0ZjBhNS4uNWE0NjhmMSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTkwLDggKzkwLDkgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIGJ1aWxkIFwKKyAJICAtLWJ1aWxkLWJhc2U9IiQkKGJhc2VuYW1lICIkJHtQWVRIT059IiktZ3BnIiBcCisgCSAgaW5zdGFsbCBcCistCSAgLS1wcmVmaXggIiQoREVTVERJUikkKHByZWZpeCkiIFwKKy0JICAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAorKwkgIC0tcm9vdD0ke0RFU1RESVJ9IFwKKysJICAtLXByZWZpeCAiJChwcmVmaXgpIiBcCisrCSAgLS1pbnN0YWxsLWxpYj0ke3B5dGhvbmRpcn0gXAorIAkgIC0tdmVyYm9zZSA7IFwKKyAJZG9uZQorIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzNzQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gZjQ3ZThjNmY5ZTQ2MTgwMzQ2OGE2NDU4MWQzNjQwZDg3MzM1MmVhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxMDoxNDozMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBxdC9weXRob246IEFkZCB2YXJpYWJsZXMgdG8gdGVzdHMKKworKiBjb25maWd1cmUuYWMsIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcHl0aG9uJywgc2V0IHRvIGBsYW5nL3B5dGhvbicgaWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisKKyogY29uZmlndXJlLmFjLCBsYW5nL3F0L01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcXQnLCBzZXQgdG8gYGxhbmcvcXQnIGlmIFJVTl9MQU5HX1FUX1RFU1RTCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgMTEgKysrKysrKysrKysKKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8ICAzICsrKworIGxhbmcvcXQvTWFrZWZpbGUuYW0gICAgIHwgIDggKysrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjA4YzM3Ni4uZmFkNzQ2NyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTM2LDYgKzUzNiwxNyBAQCBBQ19BUkdfRU5BQkxFKGcxMy10ZXN0LAorICAgICAgICAgIHJ1bl9nMTNfdGVzdD0kZW5hYmxldmFsKQorIEFNX0NPTkRJVElPTkFMKFJVTl9HMTNfVEVTVFMsIHRlc3QgIiRydW5fZzEzX3Rlc3QiID0gInllcyIpCisgCisrcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9InllcyIKKytBQ19BUkdfRU5BQkxFKGxhbmctcHl0aG9uLXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcHl0aG9uLXRlc3RdLCBbZGlzYWJsZSBQeXRob24gcmVncmVzc2lvbiB0ZXN0XSksCisrICAgICAgICAgcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19QWVRIT05fVEVTVFMsIHRlc3QgIiRydW5fbGFuZ19weXRob25fdGVzdCIgPSAieWVzIikKKysKKytydW5fbGFuZ19xdF90ZXN0PSJ5ZXMiCisrQUNfQVJHX0VOQUJMRShsYW5nLXF0LXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcXQtdGVzdF0sIFtkaXNhYmxlIFF0IHJlZ3Jlc3Npb24gdGVzdF0pLAorKyAgICAgICAgIHJ1bl9sYW5nX3F0X3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19RVF9URVNUUywgdGVzdCAiJHJ1bl9sYW5nX3F0X3Rlc3QiID0gInllcyIpCisgCisgIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KKyBBQ19DSEVDS19IRUFERVJTX09OQ0UoW2xvY2FsZS5oIHN5cy9zZWxlY3QuaCBzeXMvdWlvLmggYXJncC5oCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggOGQ3NGNiZC4uNDNiNWQxZSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTI0LDcgKzI0LDEwIEBAIEVYVFJBX0RJU1QgPSBcCisgCWV4YW1wbGVzIFwKKyAJc3JjCisgCisraWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisgU1VCRElSUyA9IC4gdGVzdHMKKytlbmRpZgorKworIAorIC5QSE9OWTogcHJlcGFyZQorIHByZXBhcmU6IGNvcHlzdGFtcAorZGlmZiAtLWdpdCBhL2xhbmcvcXQvTWFrZWZpbGUuYW0gYi9sYW5nL3F0L01ha2VmaWxlLmFtCitpbmRleCBhYjg1OTYwLi5hMjQ0ZWRlIDEwMDY0NAorLS0tIGEvbGFuZy9xdC9NYWtlZmlsZS5hbQorKysrIGIvbGFuZy9xdC9NYWtlZmlsZS5hbQorQEAgLTE5LDYgKzE5LDEyIEBACisgIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyAjIDAyMTExLTEzMDcsIFVTQQorIAorLVNVQkRJUlMgPSBzcmMgdGVzdHMgZG9jCisraWYgUlVOX0xBTkdfUVRfVEVTVFMKKytxdHRlc3RzID0gdGVzdHMKKytlbHNlCisrcXR0ZXN0cyA9CisrZW5kaWYKKysKKytTVUJESVJTID0gc3JjICR7cXR0ZXN0c30gZG9jCisgCisgRVhUUkFfRElTVCA9IFJFQURNRQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTVmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCkBAIC0wLDAgKzEsODYgQEAKK1NVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgorREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OGIxNTMzYzU5MzQ3ODk4MmVlMmZjNTQ4MjYwYzU2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYThmZWQxMTk3YzNiOTljMzVmNDAzMDY2YmIzNDRhMjYyMjRkMjkyYWZjMDQ4Y2ZkZmM0Y2NkNTY5MGEwNjkzIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdjb25mLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3Bnc20tdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nMTMtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXF0LXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1weXRob24tdGVzdCBcCisnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyAke1BZVEhPTl9JTkhFUklUfQorCitleHBvcnQgUEtHX0NPTkZJRz0ncGtnLWNvbmZpZycKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3BwIgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uMi1ncGcgJywgJycsIGQpfSIKK1BBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtZ3BnICcsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59LWNwcCA9ICIke2xpYmRpcn0vbGliZ3BnbWVwcC5zby4qIgorRklMRVNfcHl0aG9uMi1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTX3B5dGhvbjMtZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY29tbW9uLWxpc3Avc291cmNlL2dwZ21lLyogXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvKiBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fZXJyb3JfdF9kZWZpbmVkICIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L3B5dGhvbi5tNAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjVjMzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLVNVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgotREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlMDBiYjhlZjA0ZDFkMDVkNWEwZjE5ZTE0Mzg1NGMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMjlmZWRiOGJmYWQ3NzVlNzBlYWZhYzViMDU5MDYyMTY4M2IyZDk4NjlkYjk5NDU2OGU2NDAxZjQwMzRjZWIiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9weXRob24ubTQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwppbmRleCBhMWVmOWVjLi45ODMxMThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCkBAIC0xNyw2ICsxNyw4IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vaWN1LWNvbmZpZyIKIAorSUNVX01BSk9SX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZwogCiAjIElDVSBuZWVkcyB0aGUgbmF0aXZlIGJ1aWxkIGRpcmVjdG9yeSBhcyBhbiBhcmd1bWVudCB0byBpdHMgLS13aXRoLWNyb3NzLWJ1aWxkIG9wdGlvbiB3aGVuCkBAIC0yNiw2ICsyOCw4IEBACiBFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLWNyb3NzLWJ1aWxkPSR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0iCiAKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtLXdpdGgtZGF0YS1wYWNrYWdpbmc9YXJjaGl2ZScsICcnLCBkKX0iCitUQVJHRVRfQ1hYRkxBR1NfYXBwZW5kID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtRElDVV9EQVRBX0RJUj1cXCIiJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn1cXCIiJywgJycsIGQpfSIKIAogIyBzdHJ0b2RfbCgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgbXVzbDsgYWxzbyB4bG9jYWxlLmggaXMgbWlzc2luZwogIyBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSBpdHMgdXNlIHZpYSBjb25maWd1cmUgc3dpdGNoZXMgb3IgZW52IHZhcnMKQEAgLTM0LDYgKzM4LDE1IEBACiAgICAgc2VkIC1pIC1lICdzLERVX0hBVkVfU1RSVE9EX0w9MSxEVV9IQVZFX1NUUlRPRF9MPTAsJyAke1N9L2NvbmZpZ3VyZS5hYwogfQogCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIE1ha2Ugc3VyZSBjZXJ0YWluIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBkbyBub3QgZW5kIHVwIGJlaW5nIGNvbXBpbGVkCisJIyBpbiB0aGUgaW1hZ2UuIFRoaXMgb25seSBhZmZlY3RzIGxpYmljdXR1IGFuZCBpY3UtZGJnCisJc2VkICBcCisJICAgIC1lICdzLERVX0JVSUxEPSxEVV9CVUlMRF91bnVzZWQ9LGcnIFwKKwkgICAgLWUgJy9eQ1BQRkxBR1MuKi8gcywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1pICR7Qn0vdG9vbHMvdG9vbHV0aWwvTWFrZWZpbGUKK30KKwogUFJFUFJPQ0VTU19SRUxPQ0FURV9ESVJTID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9IgogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewogCW1rZGlyIC1wICR7RH0vJHtTVEFHSU5HX0lDVV9ESVJfTkFUSVZFfS9jb25maWcKQEAgLTQ0LDYgKzU3LDIzIEBACiAJY3AgLXIgJHtCfS90b29scyAke0R9LyR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0KIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgVGhlIG5hdGl2ZSBwa2dkYXRhIGNhbiBub3QgZ2VuZXJhdGUgdGhlIGNvcnJlY3QgZGF0YSBmaWxlLgorICAgICMgVXNlIGljdXBrZyB0byByZS1nZW5lcmF0ZSBpdC4KKyAgICBpZiBbICIke1NJVEVJTkZPX0VORElBTk5FU1N9IiA9ICJiZSIgXSA7IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfS9pY3VkdCR7SUNVX01BSk9SX1ZFUn1iLmRhdAorICAgICAgICBpY3Vwa2cgLXRiICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdCAke0R9LyR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWIuZGF0CisgICAgZmkKKwkKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KKwlzZWQgLWkgIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgICR7RH0vJHtiaW5kaXJ9L2ljdS1jb25maWcgJHtEfS8ke2xpYmRpcn0vJHtCUE59LyR7UFZ9L01ha2VmaWxlLmluYyBcCisJICAgICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS8ke1BWfS9wa2dkYXRhLmluYworfQorCiBQQUNLQUdFUyA9KyAibGliaWN1ZGF0YSBsaWJpY3V1YyBsaWJpY3VpMThuIGxpYmljdXR1IGxpYmljdWlvIgogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAppbmRleCBhZGQwZDc2Li5mMGM0OWUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaApAQCAtMSwzMSArMSwzNCBAQAotRnJvbSBjNDI1NGZkOGZmMTg4OGNhMjg1ZTMyNDJiODEyMDEwMzU3Y2UyYjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNmI1N2MxYjRlYjlhMjRkOWQ5NTM0MmE5NjFjOTM5NDY1MzljOTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjQgSnVuIDIwMTcgMjI6NTI6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaTE4bjogRHJvcCBpbmNsdWRlIDx4bG9jYWxlLmg+CitTdWJqZWN0OiBbUEFUQ0ggMy80XSBpMThuOiBEcm9wIGluY2x1ZGUgPHhsb2NhbGUuaD4KIAogZ2xpYmMgMi4yNiBkcm9wcyB0aGlzIGhlYWRlcgogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLSBpMThuL2RpZ2l0bHN0LmNwcCB8IDYgKy0tLS0tCistLS0KKyBzb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgfCA2ICstLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHNvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNvdXJjZS5vcmlnL2kxOG4vZGlnaXRsc3QuY3BwCi0rKysgc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwCi1AQCAtNjEsMTEgKzYxLDcgQEAKK2RpZmYgLS1naXQgYS9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgYi9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAKK2luZGV4IDhlODZmYTcuLjBiZGJiMmMgMTAwNjQ0CistLS0gYS9pMThuL2RpZ2l0bHN0LmNwcAorKysrIGIvaTE4bi9kaWdpdGxzdC5jcHAKK0BAIC02MiwxMSArNjIsNyBAQAogICNlbmRpZgogIAogICNpZiBVX1VTRV9TVFJUT0RfTAotLSMgaWYgVV9QTEFURk9STV9VU0VTX09OTFlfV0lOMzJfQVBJIHx8IFVfUExBVEZPUk0gPT0gVV9QRl9DWUdXSU4KLS0jICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tIyBlbHNlCistIyBpZiBVX0hBVkVfWExPQ0FMRV9ICiAtIyAgIGluY2x1ZGUgPHhsb2NhbGUuaD4KKy0jIGVsc2UKKy0jICAgaW5jbHVkZSA8bG9jYWxlLmg+CiAtIyBlbmRpZgogKyMgaW5jbHVkZSA8bG9jYWxlLmg+CiAgI2VuZGlmCiAgCiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU5ZWZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmYzgzY2Q4MzI3MjVkMzk2ODAxMWYxMTg2MzdiOWY1ZDIxMmU4NzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxMCBOb3YgMjAxNyAxNjo1MToyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmVkIHJlZHVuZGFudCBVVmVjdG9yIGVudHJ5IGNsZWFuIHVwIGZ1bmN0aW9uIGNhbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTQ5NTIKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaTE4bi96b25lbWV0YS5jcHAgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaTE4bi96b25lbWV0YS5jcHAgYi9pMThuL3pvbmVtZXRhLmNwcAotaW5kZXggODRhOTY1Ny4uZTE2M2IwMCAxMDA2NDQKLS0tLSBhL2kxOG4vem9uZW1ldGEuY3BwCi0rKysgYi9pMThuL3pvbmVtZXRhLmNwcAotQEAgLTY5MCw3ICs2OTAsNiBAQCBab25lTWV0YTo6Y3JlYXRlTWV0YXpvbmVNYXBwaW5ncyhjb25zdCBVbmljb2RlU3RyaW5nICZ0emlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICBtek1hcHBpbmdzID0gbmV3IFVWZWN0b3IoZGVsZXRlT2xzb25Ub01ldGFNYXBwaW5nRW50cnksIE5VTEwsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbXpNYXBwaW5nczsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeShlbnRyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdXBydl9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maXgtaW5zdGFsbC1tYW54LnBhdGNoCmluZGV4IGVjNjNmNTAuLjgxODZmYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZml4LWluc3RhbGwtbWFueC5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2M2E5MjExNjY5YmVlNjczODQwZWU4MWY4MWQzMDY5OWI5YjcwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDkgT2N0IDIwMTUgMTc6NTA6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGljdTogZml4IGluc3RhbGwgcmFjZQorCiBUaGUgZ2VuZXJpYyByZWN1cnNpdmUgdGFyZ2V0IGNhbGxzIHRhcmdldC1sb2NhbCBzbyBhbHNvIGFkZGluZyBpdCB0byB0aGUKIGRlcGVuZGVuY3kgbGlzdCByZXN1bHRzIGluIHJhY2VzIGR1ZSB0byBpbnN0YWxsLWxvY2FsIGJlaW5nIGV4ZWN1dGVkIHR3aWNlIGluCiBwYXJhbGxlbC4gIEZvciBleGFtcGxlLCBpbnN0YWxsLW1hbnggY2FuIGZhaWwgaWYgdGhlIHR3byBpbnN0YWxsIHByb2Nlc3NlcyByYWNlCkBAIC05LDEyICsxNCwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBzb3VyY2UvTWFrZWZpbGUuaW4gfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDlkYjZjNTIuLjM0NDFhZmEgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvc291cmNlL01ha2VmaWxlLmluIGIvc291cmNlL01ha2VmaWxlLmluCitpbmRleCBjMWRiMTViLi40OTQ4ZGViIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzEsNyArNzEsNyBAQCBFWFRSQV9EQVRBID0KK0BAIC03Myw3ICs3Myw3IEBAIEVYVFJBX0RBVEEgPQogIAogICMjIExpc3Qgb2YgcGhvbnkgdGFyZ2V0cwogIC5QSE9OWSA6IGFsbCBhbGwtbG9jYWwgYWxsLXJlY3Vyc2l2ZSBpbnN0YWxsIGluc3RhbGwtbG9jYWwgaW5zdGFsbC11ZGF0YSBpbnN0YWxsLXVkYXRhLWZpbGVzIGluc3RhbGwtdWRhdGEtZGxscwkJXApAQCAtMjMsNyArMzEsNyBAQAogIGRpc3RjbGVhbi1sb2NhbCBkaXN0Y2xlYW4tcmVjdXJzaXZlIGRvYyBkaXN0IGRpc3QtbG9jYWwgZGlzdC1yZWN1cnNpdmUJXAogIGNoZWNrIGNoZWNrLWxvY2FsIGNoZWNrLXJlY3Vyc2l2ZSBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBpbnN0YWxsLWljdSBcCiAgZG9jIGluc3RhbGwtZG9jIHRlc3RzIGljdTRqLWRhdGEgaWN1NGotZGF0YS1pbnN0YWxsIHVwZGF0ZS13aW5kb3dzLW1ha2VmaWxlcyB4Y2hlY2stbG9jYWwgeGNoZWNrLXJlY3Vyc2l2ZSB4cGVyZiB4Y2hlY2sgeHBlcmYtcmVjdXJzaXZlIFwKLUBAIC04MiwxMCArODIsMTAgQEAgY2hlY2stZXhoYXVzdGl2ZSBjaGVjay1leGhhdXN0aXZlLWxvY2FsIGNoZWNrLWV4aGF1c3RpdmUtcmVjdXJzaXZlIHJlbGVhc2VEaXN0CitAQCAtODQsOSArODQsOSBAQCBjaGVjay1leGhhdXN0aXZlIGNoZWNrLWV4aGF1c3RpdmUtbG9jYWwgY2hlY2stZXhoYXVzdGl2ZS1yZWN1cnNpdmUgcmVsZWFzZURpc3QKICAKICAjIyBMaXN0IG9mIHN0YW5kYXJkIHRhcmdldHMKICBhbGw6IGFsbC1sb2NhbCBhbGwtcmVjdXJzaXZlCkBAIC0zMSwxMyArMzksMTEgQEAKICtpbnN0YWxsOiBpbnN0YWxsLXJlY3Vyc2l2ZQogIGNsZWFuOiBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBjbGVhbi1sb2NhbAogLWRpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUgZGlzdGNsZWFuLWxvY2FsCi0tZGlzdDogZGlzdC1yZWN1cnNpdmUgZGlzdC1sb2NhbAogK2Rpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUKLStkaXN0OiBkaXN0LXJlY3Vyc2l2ZQorIGRpc3Q6IGRpc3QtcmVjdXJzaXZlCiAgY2hlY2s6IGFsbCBjaGVjay1yZWN1cnNpdmUKICBjaGVjay1yZWN1cnNpdmU6IGFsbAotIHhjaGVjazogYWxsIHhjaGVjay1yZWN1cnNpdmUKLUBAIC0zNTIsNyArMzUyLDcgQEAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSAkKHNyY2RpcikvY29tbW9uL3VuaWNvZGUvdXZlcm51bS5oCitAQCAtMzUwLDcgKzM1MCw3IEBAIGNvbmZpZy5zdGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgJChzcmNkaXIpL2NvbW1vbi91bmljb2RlL3V2ZXJudW0uaAogIAogIGluc3RhbGwtbWFueDogJChNQU5YX0ZJTEVTKQogIAkkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKG1hbmRpcikvbWFuJChTRUNUSU9OKQpAQCAtNDYsMyArNTIsNiBAQAogIAogIGNvbmZpZy8lLiQoU0VDVElPTik6ICQoc3JjZGlyKS9jb25maWcvJS4kKFNFQ1RJT04pLmluCiAgCWNkICQodG9wX2J1aWxkZGlyKSBcCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMWJlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWZlOWUxZjJjNTAwNDY2ZDhmMThkZjJjZDA2OGU0Yjc0IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0OTUyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NDkyM2ZhOWZhYjViMmI4M2YyMzVmYjcyNTIzZGUzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTMyZmRhZjkzNzk0MjlkMDA0MDA1MjE3ZjEwZTAwYjdkMjMxOWQwZmVhMjJiZGZkZGVmODk5MWM0NWI3NWZlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1YTkyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTY3NWYyZDA2OTQzNGQ4YTFlNGU2YjBkY2Y0Mzc5MjI2IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Mzg2MWIxMjc3NDRiM2MwYjlkN2YzODZmNGI5ZmE0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDczZWE4ZjM1YjkyNmQ3MGJiMzNlNjU3NzUwOGFhNjQyYThiMzE2YTgwM2YxMWJlMjBhZjM4NDgxMWRiNDE4IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmM2Q1M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YmExNzNiNjlkNDM2MDAwMzQxNGYyMzgzNzU5N2E5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzM1ZTAzMDFjZDc3Y2Q0ZWUwMTliZjVkMzcwOWFhNzkzMDlkNDlkZDY2ZTg1YmEzNTBjYWY2N2UwMGIwMGNkIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2MTNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjlkMGQwNmNmYjQ2MzQ0MjhiMzAwODQ1ZWRjZDcxNDBhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxY2Q3M2E0YzZmOTVkOTQ3NGViZmNmZmQ0ZTA2NTIyMzg1NzcyMGYyNDg1OGU1NjRmNDQwOWIxOWY3ZjBkOTAiCisKKyMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKKyMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW4vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAppbmRleCBiNmNjZGRhLi41MjViMDc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKQEAgLTYsMzIgKzYsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFzc3Vhbi0yLjEuMi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL01ha2VmaWxlLmFtCi0rKysgbGliYXNzdWFuLTIuMS4yL01ha2VmaWxlLmFtCi1AQCAtMjQsMTAgKzI0LDEzIEBAIEFVVE9NQUtFX09QVElPTlMgPSBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3oKLSAjIChBIHN1aXRhYmxlIGdpdGxvZy10by1jaGFuZ2Vsb2cgc2NyaXB0IGNhbiBiZSBmb3VuZCBpbiBHbnVQRyBtYXN0ZXIuKQotIEdJVExPR19UT19DSEFOR0VMT0c9Z2l0bG9nLXRvLWNoYW5nZWxvZwotIAotK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKLStwa2djb25maWdfREFUQSA9IGxpYmFzc3Vhbi5wYwotKwotIEVYVFJBX0RJU1QgPSBhdXRvZ2VuLnNoIGF1dG9nZW4ucmMgUkVBRE1FLkdJVCAgICAgICAgIAkgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCi0gICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAotLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4Ci0rICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCi0gCi0gU1VCRElSUyA9IG00IHNyYyBkb2MgdGVzdHMKLSAKLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvbGliYXNzdWFuLnBjLmluCitmb3J3YXJkIHBvcnRlZCB0byAyLjQuNAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgbGliYXNzdWFuLTIuMS4yL2xpYmFzc3Vhbi5wYy5pbgotQEAgLTAsMCArMSwxNCBAQAotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKysrKyBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCitAQCAtMCwwICsxLDEzIEBACisrcHJlZml4PUBleGVjX3ByZWZpeEAKICtsaWJkaXI9QGxpYmRpckAKICtpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAogK2FwaV92ZXJzaW9uPUBMSUJBU1NVQU5fQ09ORklHX0FQSV9WRVJTSU9OQApAQCAtNDQsMjQgKzI3LDQyIEBACiArTGliczogLUwke2xpYmRpcn0gLWxhc3N1YW4KICtMaWJzLnByaXZhdGU6IC1sZ3BnLWVycm9yCiArQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvY29uZmlndXJlLmFjCitJbmRleDogbGliYXNzdWFuLTIuNC40L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXNzdWFuLTIuMS4yLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliYXNzdWFuLTIuMS4yL2NvbmZpZ3VyZS5hYwotQEAgLTQzOSw3ICs0MzksNyBAQCBBQ19DT05GSUdfRklMRVMoW2RvYy9NYWtlZmlsZV0pCistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0yNSwxMCArMjUsMTMgQEAgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUyA9IC0tZW5hYmxlLWRvYworICMgKEEgc3VpdGFibGUgZ2l0bG9nLXRvLWNoYW5nZWxvZyBzY3JpcHQgY2FuIGJlIGZvdW5kIGluIEdudVBHIG1hc3Rlci4pCisgR0lUTE9HX1RPX0NIQU5HRUxPRz1naXRsb2ctdG8tY2hhbmdlbG9nCisgCisrcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZworK3BrZ2NvbmZpZ19EQVRBID0gbGliYXNzdWFuLnBjCisrCisgRVhUUkFfRElTVCA9IGF1dG9nZW4uc2ggYXV0b2dlbi5yYyBSRUFETUUuR0lUIFZFUlNJT04gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCisgICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAorLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4CisrICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCisgCisgaWYgQlVJTERfRE9DCisgZG9jID0gZG9jCitJbmRleDogMi40LjQtcjAvbGliYXNzdWFuLTIuNC40L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00ODUsNiArNDg1LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtkb2MvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbdGVzdHMvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL2xpYmFzc3Vhbi1jb25maWddLCBbY2htb2QgK3ggc3JjL2xpYmFzc3Vhbi1jb25maWddKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL3ZlcnNpb25pbmZvLnJjXSkKLS0KICtBQ19DT05GSUdfRklMRVMoW2xpYmFzc3Vhbi5wY10pCisgCiAgQUNfT1VUUFVUCiAgCi0gZWNobyAiCi1JbmRleDogbGliYXNzdWFuLTIuMS4yL3NyYy9saWJhc3N1YW4ubTQKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvc3JjL2xpYmFzc3Vhbi5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL3NyYy9saWJhc3N1YW4ubTQKLSsrKyBsaWJhc3N1YW4tMi4xLjIvc3JjL2xpYmFzc3Vhbi5tNAotQEAgLTE1LDE4ICsxNSw2IEBAIGRubCBSZXR1cm5zIG9rIHNldCB0byB5ZXMgb3Igbm8uCistLS0gYS9zcmMvbGliYXNzdWFuLm00CisrKysgYi9zcmMvbGliYXNzdWFuLm00CitAQCAtMTYsMTggKzE2LDYgQEAgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KICBkbmwKICBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCiAgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCkBAIC04MCw3ICs4MSw3IEBACiAgCiAgICB0bXA9aWZlbHNlKFskMV0sICwxOjAuOS4yLCQxKQogICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotQEAgLTM3LDUxICsyNSwxMiBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCitAQCAtMzgsNTEgKzI2LDEyIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKICAgICAgbWluX2xpYmFzc3Vhbl92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEwNSw3ICsxMDYsNyBAQAogLQogLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgIG9rPXllcwotLSAgICBlbHNlIAorLSAgICBlbHNlCiAtICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KIC0gICAgICAgICAgICAgICBvaz15ZXMKQEAgLTEzNCw3ICsxMzUsNyBAQAogICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgogICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJBU1NVQU4gQVBJIHZlcnNpb25dKQogICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJhc3N1YW5fYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTk2LDcgKzQ1LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorQEAgLTk3LDcgKzQ2LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAogIAogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KICAgICAgaWYgdGVzdCB4IiRob3N0IiAhPSB4IDsgdGhlbgpAQCAtMTQzLDcgKzE0NCw3IEBACiAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgogICAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgogICAgQUNfTVNHX1dBUk4oW1sKLUBAIC0xMzcsMTIgKzg2LDggQEAgZG5sCitAQCAtMTM4LDEyICs4Nyw4IEBAIGRubAogIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkFTU1VBTl0sCiAgWyBfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmMyNzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIklQQyBsaWJyYXJ5IHVzZWQgYnkgR251UEcgYW5kIEdQR01FIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJhc3N1YW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Fzc3Vhbi5jO2VuZGxpbmU9MjA7bWQ1PTBmNDY1NTQ0MTgzNDA1MDU1ZWMxNzk4NjlmYzViNWJhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4tZGVmcy5oO2VuZGxpbmU9MjA7bWQ1PTIwY2Q1NTUzNTI2MGNhMTc3OWVkYWU1YzdiODBiMjFlIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJhc3N1YW4vbGliYXNzdWFuLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGUwMWE3YzcyZDNlNWQxNTQ0ODEyMzA2NjhlNmViNWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI4NDNhM2JkYjI1NmY1OWJlNDk4NDJhYmYyNGRhNzY3MDAzNTQyOTNhMDY2ZDgyYWRlODEzNGJiNWFhMmI3MSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC8qLm00Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkNWYxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiSVBDIGxpYnJhcnkgdXNlZCBieSBHbnVQRyBhbmQgR1BHTUUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmFzc3Vhbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tZG9jID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLmM7ZW5kbGluZT0yMDttZDU9YWI5MjE0M2E1YTJhZGFiZDA2ZDc5OTRkMTQ2N2VhNWNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLWRlZnMuaDtlbmRsaW5lPTIwO21kNT0xNWQ5NTBjODNlODI5NzhlMzViMzVlNzkwZDdlNGQzOSIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliYXNzdWFuL2xpYmFzc3Vhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzNTRiN2FlMjk2ODk0ZjIzMmFkYTIyNmEwNjJkN2Q3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3Zjk2YzM3YjRmMmFhYzI4OWYwYmMxYmFjZmE4YmQ4YjRiMjA5YTQ4OGQzZDE1ZTIyMjljYjZjYzliMjY0NDkiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliYXNzdWFuLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvKi5tNAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTEwNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wcy8wMDAxLUFkZC1pbml0aWFsLW5pb3MyLWFyY2hpdGVjdHVyZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA0YjAwNWVlNTY4OTgzMDllOGFmYmE5YjNjNDhjZjk0ZjBmNWY3OGU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1EYXRlOiBUdWUsIDE1IE1hciAyMDE2IDEwOjA5OjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBpbml0aWFsIG5pb3MyIGFyY2hpdGVjdHVyZSBzdXBwb3J0Ci0KLSogc3JjL01ha2VmaWxlLmFtIChub2Jhc2VfcHJpdmF0ZV9IRUFERVJTKTogQWRkIG5pb3MyLmguCi0qIHNyYy9hdG9taWNfb3BzLmg6IEluY2x1ZGUgbmlvczIuaCBpZiBfX25pb3MyX18uCi0qIHNyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmg6IE5ldyBmaWxlLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy5naXQgNGIwMDVlZTU2ODk4MzA5ZThhZmJhOWIzYzQ4Y2Y5NGYwZjVmNzhlNCBdCi0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9hdG9taWNfb3BzLmggICAgICAgICAgICAgICAgICAgfCAgMyArKysKLSBzcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oIHwgMTcgKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBmYzA5YjI3Li5kNDYzNDI3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC03OSw2ICs3OSw3IEBAIG5vYmFzZV9wcml2YXRlX0hFQURFUlMgPSBhdG9taWNfb3BzL2FvX3ZlcnNpb24uaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvaWE2NC5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL21pcHMuaCBcCi0rICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9zMzkwLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL3NoLmggXAotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzLmggYi9zcmMvYXRvbWljX29wcy5oCi1pbmRleCAzM2ZlMDBlLi5lYzAyYmE0IDEwMDY0NAotLS0tIGEvc3JjL2F0b21pY19vcHMuaAotKysrIGIvc3JjL2F0b21pY19vcHMuaAotQEAgLTI2Miw2ICsyNjIsOSBAQAotICMgaWYgZGVmaW5lZChfX202OGtfXykKLSAjICAgaW5jbHVkZSAiYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmgiCi0gIyBlbmRpZiAvKiBfX202OGtfXyAqLwotKyMgaWYgZGVmaW5lZChfX25pb3MyX18pCi0rIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCIKLSsjIGVuZGlmIC8qIF9fbmlvczJfXyAqLwotICMgaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pIFwKLSAgICAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pCi0gIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIgotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmggYi9zcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjQwMmNiYgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotQEAgLTAsMCArMSwxNyBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotKyAqCi0rICogVEhJUyBNQVRFUklBTCBJUyBQUk9WSURFRCBBUyBJUywgV0lUSCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZIEVYUFJFU1NFRAotKyAqIE9SIElNUExJRUQuIEFOWSBVU0UgSVMgQVQgWU9VUiBPV04gUklTSy4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIG9yIGNvcHkgdGhpcyBwcm9ncmFtCi0rICogZm9yIGFueSBwdXJwb3NlLCBwcm92aWRlZCB0aGUgYWJvdmUgbm90aWNlcyBhcmUgcmV0YWluZWQgb24gYWxsIGNvcGllcy4KLSsgKiBQZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgY29kZSBhbmQgdG8gZGlzdHJpYnV0ZSBtb2RpZmllZCBjb2RlIGlzIGdyYW50ZWQsCi0rICogcHJvdmlkZWQgdGhlIGFib3ZlIG5vdGljZXMgYXJlIHJldGFpbmVkLCBhbmQgYSBub3RpY2UgdGhhdCB0aGUgY29kZSB3YXMKLSsgKiBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi90ZXN0X2FuZF9zZXRfdF9pc19hb190LmgiCi0rI2luY2x1ZGUgImdlbmVyaWMuaCIKLSsKLSsjZGVmaW5lIEFPX1RfSVNfSU5UCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDYzZDg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKLVNFQ1RJT04gPSAib3B0aW9uYWwiCi1QUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKLQkJICAgIgotUFYgLj0gIitnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjczYzYwYzVlZjFlZDM3MDExMTU0OWVlNWFhYjZkNDAyMGJhNzBlZDQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjQxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgorU0VDVElPTiA9ICJvcHRpb25hbCIKK1BST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAorCQkgICAiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorU1JDQlJBTkNIID89ICJyZWxlYXNlLTdfNiIKKworU1JDUkVWID0gIjVhZTRiNGFlZWEyYmFmMTM3NTJkMDdlMzAzOGM0N2Y3MGYwNmRjYWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wczticmFuY2g9JHtTUkNCUkFOQ0h9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCmluZGV4IGU5N2UzMGUuLjU0NjE3YjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZXBsYWNlIF9fQkVHSU5fREVDTFMgYW5kIF9fRU5EX0RFQ0xTCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMywxNCArMTQsMTQgQEAKICBpbmNsdWRlL2JzZC9ubGlzdC5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2Qvc3RkaW8uaCAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9zdGRsaWIuaCAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMCArKysrKysrKy0tCisgaW5jbHVkZS9ic2Qvc3RkbGliLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQorIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMiArKysrKysrKystLS0KICBpbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3VuaXN0ZC5oICAgICAgICAgfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2QvdmlzLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KICBpbmNsdWRlL2JzZC93Y2hhci5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIHNyYy9oYXNoL3NoYTUxMi5oICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gMTMgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQorIDEzIGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL2Vyci5oIGIvaW5jbHVkZS9ic2QvZXJyLmgKIGluZGV4IDEyZmQwNTEuLjQzZGZjMzIgMTAwNjQ0CkBAIC01MCw3ICs1MSw3IEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCi1pbmRleCBlYmI2MTYwLi4yOGI5MTlkIDEwMDY0NAoraW5kZXggNDViM2IxNS4uOWM5MzZlNSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL2xpYnV0aWwuaAogKysrIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCiBAQCAtNTMsNyArNTMsMTAgQEAgc3RydWN0IHBpZGZoIHsKQEAgLTc4LDcgKzc5LDcgQEAKICAvKiBodW1hbml6ZV9udW1iZXIoMykgKi8KICAjZGVmaW5lIEhOX0RFQ0lNQUwgICAgICAgICAgICAgIDB4MDEKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9tZDUuaCBiL2luY2x1ZGUvYnNkL21kNS5oCi1pbmRleCA5YTc1ZmFkLi4zNTMxZmQ2IDEwMDY0NAoraW5kZXggNWYzYWU0Ni4uNWQ4MGU1YyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL21kNS5oCiArKysgYi9pbmNsdWRlL2JzZC9tZDUuaAogQEAgLTMwLDcgKzMwLDEwIEBAIHR5cGVkZWYgc3RydWN0IE1ENUNvbnRleHQgewpAQCAtMTAzLDE0ICsxMDQsMTQgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiBfTUQ1X0hfICovCisgI2VuZGlmIC8qIExJQkJTRF9NRDVfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1pbmRleCAyNzMwMjM3Li4wMzg5YWI3IDEwMDY0NAoraW5kZXggY2IyOTdlOC4uZTYzYmJiZCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL25saXN0LmgKICsrKyBiL2luY2x1ZGUvYnNkL25saXN0LmgKLUBAIC0zMCw4ICszMCwxNCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8YS5vdXQuaD4KK0BAIC04OCw4ICs4OCwxNCBAQCBzdHJ1Y3Qgbmxpc3QgeworIAorICNkZWZpbmUgTl9GT1JNQVQJIiUwOHgiCS8qIG5hbWVsaXN0IHZhbHVlIGZvcm1hdDsgWFhYICovCiAgCiAtX19CRUdJTl9ERUNMUwogKy8qIF9fQkVHSU5fREVDTFMgKi8KQEAgLTEyNiw3ICsxMjcsNyBAQAogIAogICNlbmRpZgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggYi9pbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oCi1pbmRleCBlMWRhY2MzLi43NmUwZDMzIDEwMDY0NAoraW5kZXggMTQ3NDRiOC4uZmE3MzM2MSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKICsrKyBiL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKIEBAIC0zNCw4ICszNCwxNCBAQApAQCAtMTQ1LDEzICsxNDYsMTMgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1JFQURQQVNTUEhSQVNFX0hfICovCisgI2VuZGlmIC8qICFMSUJCU0RfUkVBRFBBU1NQSFJBU0VfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0ZGlvLmggYi9pbmNsdWRlL2JzZC9zdGRpby5oCi1pbmRleCA3Njk3NDI1Li5iNWIzZWZkIDEwMDY0NAoraW5kZXggNGI2OTk4My4uMTg2NDViNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3N0ZGlvLmgKICsrKyBiL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLUBAIC00MSw3ICs0MSwxMCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK0BAIC00NSw3ICs0NSwxMCBAQAorICNlbmRpZgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAKIC1fX0JFR0lOX0RFQ0xTCkBAIC0xNjIsNyArMTYzLDcgQEAKICBjb25zdCBjaGFyICpmbXRjaGVjayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgCiAgLyogWFhYOiBUaGUgZnVuY3Rpb24gcmVxdWlyZXMgY29vcGVyYXRpb24gZnJvbSB0aGUgc3lzdGVtIGxpYmMgdG8gc3RvcmUgdGhlCi1AQCAtNjksNyArNzIsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCitAQCAtNzMsNyArNzYsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCiAgI2RlZmluZSBmd29wZW4oY29va2llLCBmbikgZnVub3Blbihjb29raWUsIE5VTEwsIGZuLCBOVUxMLCBOVUxMKQogIAogIGludCBmcHVyZ2UoRklMRSAqZnApOwpAQCAtMTc1LDcgKzE3Niw3IEBACiAgI2VuZGlmCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RkbGliLmggYi9pbmNsdWRlL2JzZC9zdGRsaWIuaAotaW5kZXggMDYwNGNhZC4uYjlmMDUxNSAxMDA2NDQKK2luZGV4IGViYzk2MzguLmM0YjU0YjYgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdGRsaWIuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RkbGliLmgKIEBAIC00Niw3ICs0NiwxMCBAQApAQCAtMTg5LDggKzE5MCwxNyBAQAogKyNlbmRpZgogIHVpbnQzMl90IGFyYzRyYW5kb20odm9pZCk7CiAgdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7Ci0gdm9pZCBhcmM0cmFuZG9tX2FkZHJhbmRvbSh1X2NoYXIgKmRhdCwgaW50IGRhdGxlbik7Ci1AQCAtNzMsNiArNzYsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKKyB2b2lkIGFyYzRyYW5kb21fYWRkcmFuZG9tKHVuc2lnbmVkIGNoYXIgKmRhdCwgaW50IGRhdGxlbik7CitAQCAtNjcsNyArNzAsNyBAQCBpbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqYmFzZSwgaW50IG5tZW1iLAorICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhYmxlLCB1bnNpZ25lZCBlbmRieXRlKTsKKyAKKyB2b2lkICpyZWFsbG9jZih2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKKy0jaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFfX0dMSUJDX1BSRVJFUSgyLCAyNikKKysjaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgdm9pZCAqcmVhbGxvY2FycmF5KHZvaWQgKnB0ciwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CisgI2VuZGlmCisgCitAQCAtNzUsNiArNzgsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVycnN0cik7CiAgCiAgY2hhciAqZ2V0YnNpemUoaW50ICpoZWFkZXJsZW5wLCBsb25nICpibG9ja3NpemVwKTsKQEAgLTIwMiwxMCArMjEyLDEwIEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RyaW5nLmggYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotaW5kZXggZWUyZjk1My4uZmJmOGM1NCAxMDA2NDQKK2luZGV4IDY3OThiZjYuLmZhMTE5M2YgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdHJpbmcuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RyaW5nLmgKLUBAIC0zNiwxMyArMzYsMTkgQEAKK0BAIC0zNiwxNSArMzYsMjEgQEAKICAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIApAQCAtMjE5LDcgKzIyOSwxMCBAQAogIGNoYXIgKnN0cm5zdHIoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpmaW5kLCBzaXplX3Qgc3RyX2xlbik7CiAgdm9pZCBzdHJtb2RlKG1vZGVfdCBtb2RlLCBjaGFyICpzdHIpOwogIAorLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI1KQorKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKICB2b2lkIGV4cGxpY2l0X2J6ZXJvKHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7CisgI2VuZGlmCiAtX19FTkRfREVDTFMKICsjaWZkZWYgX19jcGx1c3BsdXMKICt9CkBAIC0yMjgsNyArMjQxLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKLWluZGV4IGUzYzQyZTkuLjQwZDBhNTIgMTAwNjQ0CitpbmRleCBmZjMwY2FjLi40NjAwZjZiIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2Qvc3RyaW5nbGlzdC5oCiArKysgYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKIEBAIC00MywxMiArNDMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgX3N0cmluZ2xpc3QgewpAQCAtMjUxLDcgKzI2NCw3IEBACiArI2VuZGlmCiArLyogX19FTkRfREVDTFMgKi8KICAKLSAjZW5kaWYgLyogX1NUUklOR0xJU1RfSCAqLworICNlbmRpZiAvKiBMSUJCU0RfU1RSSU5HTElTVF9IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvdW5pc3RkLmggYi9pbmNsdWRlL2JzZC91bmlzdGQuaAogaW5kZXggMWY5YzVmOC4uNWIyZjRjNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3VuaXN0ZC5oCkBAIC0yODAsNyArMjkzLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC92aXMuaCBiL2luY2x1ZGUvYnNkL3Zpcy5oCi1pbmRleCA4MzVkMmQ2Li42M2M5NTFlIDEwMDY0NAoraW5kZXggOTcwZGZkZC4uNjIxZDNjNiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3Zpcy5oCiArKysgYi9pbmNsdWRlL2JzZC92aXMuaAogQEAgLTc0LDcgKzc0LDEwIEBACkBAIC0zMDUsNyArMzE4LDcgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1ZJU19IXyAqLworICNlbmRpZiAvKiAhTElCQlNEX1ZJU19IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvd2NoYXIuaCBiL2luY2x1ZGUvYnNkL3djaGFyLmgKIGluZGV4IDMzYTUwMGUuLmFhNzA3NDIgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC93Y2hhci5oCkBAIC0zNTksNSArMzcyLDUgQEAKICAKICAjZW5kaWYgLyogIV9TSEE1MTJfSF8gKi8KIC0tIAotMi4xMC4yCisxLjkuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODI1NDNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YWI3YmVjNjM5YWYxN2QwYWFjYjUwMjIyYjQ3OTExMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjdmYmY5ZGYxZjQ5YWYxMWY3ZjY4NjY5MTA1N2M4YzBhNzYxM2FlNWE4NzA1NzdiZWY5MTU1ZGUzOWY5Njg3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJhODVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIKQEAgLTAsMCArMSw1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAorICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKKyAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAorICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6CisjIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQorIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCisjIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJlZXJ3YXJlCisjIExpY2Vuc2U6IEV4cGF0CisjIExpY2Vuc2U6IElTQworIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKKyMgTGljZW5zZTogcHVibGljLWRvbWFpbgorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCitMSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCitTRUNUSU9OID0gImxpYnMiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWU2OTgwZmJmZTQ0Zjk0ZmQ5MmI4OWEzM2NjZTY3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTQ4ZjEwZTVhZjVhMDhiMWUyMjg4OWNlODQzMTViMWViZTQxNTA1YjAxNWM5NTk2YmFkMDNmZDEzYTEyYjMxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMzQxOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFICA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2NoZWNrL2NoZWNrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNjNWU1Yzc3ZDA5MGUxMDNhMTdmM2VkN2ZkN2Q4YjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjVmNTA3NjZhYTZmOGZlNWEyZGY3NTI2NjZjYTAxYTk1MGFkZDQ1MDc5YWEwNjQxNmI4Mzc2NWIxY2Y3MTA1MiIKLQotUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKLQotUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCi1SREVQRU5EU18ke1BOfSArPSAiZ2F3ayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NDZkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFICA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzFiMTdjNjA3NTgyMGE0MzQxMTk1OTI5NDExODZmNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY0MjAxMDk4YmVlMDBlOTBmNWM0YmRmYTk0YTVkM2VhZDhkNjQxZjkwMjViNTYwYTI3NzU1YTgzYjgyNDIzNCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgorCitTID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgorCitSUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKK1JERVBFTkRTXyR7UE59ICs9ICJnYXdrIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIKaW5kZXggYjBhZjc1OS4uZDg2ZGRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC05LDEyICs5LDEyIEBACiAKIFNFQ1RJT04gPSAieDExL3V0aWxzIgogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyIHpsaWIiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIEVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vY3JvY28tMC42LWNvbmZpZyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBiaW5jb25maWctZGlzYWJsZWQKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzQwZGEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRmMWNmYWVlOGQ3NWVhM2ZiYmZlYjk5YTk4NzMwOTUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZTU5ZTM3YTJmMGQzOTdmZmQ3ZTgzYjczYWYwZTYzOGRiODNiOGRkMDg5MDJlZjBmNjUxYTIxY2MxZGQ0MjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzgwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzI1YThjMzkzOWU0YWQ1OWE1ZTllNWUxZTM1NDgzMmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4M2Q4MWU0NjYwOWRhOGJhODBjYjgyNmMwMmQ5MDgwNzY0YTZkZWMzM2M4MjY3Y2NiN2UxNTg4MzNkNGM2ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQwODIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDY5YTM4MTNjNTEzYzg0ZTAyMjEyMjUwYzNkNWI4YTAyZWNlZmE2OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNSBKYW4gMjAxOCAwODowMDozMyArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0OiBmaXggMzJiaXQgbGludXggcmVncmVzcworCitUaGlzIHBhdGNoIGNvbWVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50LmdpdCwKK3RoZSBjb21taXQgaXMgNjNjNGJmNzhkNmFmM2M2ZmY0NmQyZThlNGI1M2RkOWY1NzdhOWNhOQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCisgdGVzdC9yZWdyZXNzX3V0aWwuYyB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3NTI4ZDM3Li5lNjRjYjFmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NjMsNiArNjYzLDcgQEAgQUNfQ0hFQ0tfU0laRU9GKHNob3J0KQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKikKKyBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCisrQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKKyAKKyBBQ19DSEVDS19UWVBFUyhbc3RydWN0IGluNl9hZGRyLCBzdHJ1Y3Qgc29ja2FkZHJfaW42LCBzYV9mYW1pbHlfdCwgc3RydWN0IGFkZHJpbmZvLCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZV0sICwgLAorIFsjZGVmaW5lIF9HTlVfU09VUkNFCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWdyZXNzX3V0aWwuYyBiL3Rlc3QvcmVncmVzc191dGlsLmMKK2luZGV4IGVmNmExNDguLjBjN2VhZmIgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfdXRpbC5jCisrKysgYi90ZXN0L3JlZ3Jlc3NfdXRpbC5jCitAQCAtMTQxMiwxMCArMTQxMiwxMiBAQCBzdGF0aWMgc3RydWN0IGRhdGVfcmZjMTEyM19jYXNlIHsKKyAJeyAgMTI4OTQzMzYwMCwgIlRodSwgMTEgTm92IDIwMTAgMDA6MDA6MDAgR01UIn0sCisgCXsgIDEzMjM2NDgwMDAsICJNb24sIDEyIERlYyAyMDExIDAwOjAwOjAwIEdNVCJ9LAorICNpZm5kZWYgX1dJTjMyCisrI2lmIEVWRU5UX19TSVpFT0ZfVElNRV9UID4gNAorIAkvKiogSW4gd2luMzIgY2FzZSB3ZSBoYXZlIG1heCAgICIyMzo1OTo1OSBKYW51YXJ5IDE4LCAyMDM4LCBVVEMiIGZvciB0aW1lMzIgKi8KKyAJeyAgNDI5NDk2NzI5NiwgIlN1biwgMDcgRmViIDIxMDYgMDY6Mjg6MTYgR01UIn0gLyogMl4zMiAqLywKKyAJLyoqIEluIHdpbjMyIGNhc2Ugd2UgaGF2ZSBtYXggIjIzOjU5OjU5LCBEZWNlbWJlciAzMSwgMzAwMCwgVVRDIiBmb3IgdGltZTY0ICovCisgCXsyNTM0MDIzMDA3OTksICJGcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCJ9IC8qIGxvbmcgbG9uZyBmdXR1cmUgbm8gb25lIGNhbiBpbWFnaW5lICovLAorKyNlbmRpZiAvKiB0aW1lX3QgIT0gMzJiaXQgKi8KKyAJeyAgMTQ1NjcwNDAwMCwgIk1vbiwgMjkgRmViIDIwMTYgMDA6MDA6MDAgR01UIn0gLyogbGVhcCB5ZWFyICovLAorICNlbmRpZgorIAl7ICAxNDM1NzA4ODAwLCAiV2VkLCAwMSBKdWwgMjAxNSAwMDowMDowMCBHTVQifSAvKiBsZWFwIHNlY29uZCAqLywKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgppbmRleCAxMjcwZDYyLi44M2NlNDY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCkBAIC05LDYgKzksNyBAQAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKICAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaAppbmRleCAxZTkwMTI1Li44MGM0MGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCkBAIC0xMSwxMiArMTEsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotLS0tIGEvY29uZmlndXJlLmFjfgkyMDE0LTExLTEyIDExOjU2OjUxLjAwMDAwMDAwMCArMDAwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTYtMDItMDQgMTQ6MDI6NTMuNzY1NzEwNTMyICswMDAwCi1AQCAtNTkzLDUgKzU5Myw1IEBACitJbmRleDogbGliZmZpLTMuMi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmZmaS0zLjIuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmZmaS0zLjIuMS9jb25maWd1cmUuYWMKK0BAIC01OTIsNyArNTkyLDcgQEAgQUNfQVJHX0VOQUJMRShwdXJpZnktc2FmZXR5LAorIAogICMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KICAjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KIC1pZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KICtpZiBmYWxzZTsgdGhlbgogICAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgICB0b29sZXhlY2Rpcj0iJHtleGVjX3ByZWZpeH0iLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIKaW5kZXggMDEzNDU3Mi4uYzBmZDgzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9mbS1leHRyYS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IgogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggXApAQCAtMTgsNiArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWV4dHJhLW9ubHkgLS13aXRoLWd0az1ubyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGU1MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbSBlZDRjYThjMGIxN2ZmNWQzYzc2OGI5MjQwOWMxNzg3ZTNmM2YxODQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcml5IEdyeXRzZW5rbyA8YW5kcmVqQHJlcC5raWV2LnVhPgorRGF0ZTogU3VuLCAyNiBOb3YgMjAxNyAyMjozMDoxNSArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRW5jbG9zZSB0ZXh0IGluIDxwcm9ncmFtbGlzdGluZz4gaW50byA8IVtDREFUQVsKKworTmV3IGd0ay1kb2MgZmFpbHMgb24gdGFnLWxpa2UgZGF0YSBpbiBpdC4KK1NlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1ODUKK1RoYXQgaXMgZGVmaW5pdGVseSBidWcgb2YgZ3RrLWRvYyBidXQgbGV0IHdvcmthcm91bmQgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmx4ZGUub3JnL2dpdHdlYi8/cD1seGRlL2xpYmZtLmdpdDthPWNvbW1pdDtoPWIwNzJlZTA0MDA0MzJkNzJmZGY4NmJhOWZlZDc0YTdlMGVjMTFlYzFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNlL2ZtLW1vZHVsZS5jIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK2luZGV4IGQzNjRiMmQuLjJlOGM5NzggMTAwNjQ0CistLS0gYS9zcmMvYmFzZS9mbS1tb2R1bGUuYworKysrIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK0BAIC00NCw3ICs0NCw3IEBACisgICogb2YgdGhhdCB0eXBlIHNob3VsZCBpbmNsdWRlOgorICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LWgiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgZm0tZHVtbXkuaDwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSA8bGliZm0vZm0uaD4KKyAgKgorICAqICNkZWZpbmUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gMQorQEAgLTU0LDcgKzU0LDcgQEAKKyAgKiB9IEZtRHVtbXlJbml0OworICAqCisgICogZXh0ZXJuIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15OworLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+CisrICogXV0+PC9wcm9ncmFtbGlzdGluZz4KKyAgKiA8L2V4YW1wbGU+CisgICogVGhlIEZNX01PRFVMRV9kdW1teV9WRVJTSU9OIGlzIGEgbnVtYmVyIHdoaWNoIHNob3VsZCBiZSBpbmNyZWFzZWQgZWFjaAorICAqIHRpbWUgc29tZXRoaW5nIGluIEZtRHVtbXlJbml0IHN0cnVjdHVyZSBpcyBjaGFuZ2VkLiBUaGUgRm1EdW1teUluaXQKK0BAIC02NSw3ICs2NSw3IEBACisgICogbW9kdWxlIGhhbmRsaW5nIGluIHlvdXIgY29kZToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS13aWRnZXQtYyI+CisgICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS13aWRnZXQuYzwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKKyAgKgorICAqIEZNX01PRFVMRV9ERUZJTkVfVFlQRShkdW1teSwgRm1EdW1teUluaXQsIDEpCitAQCAtODcsNyArODcsNyBAQAorICAqICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLT5nZXRfbmV3KCJ0ZXN0IHNhbXBsZSIpOworICAqICAgICByZXR1cm4gcmVzdWx0OworICAqIH0KKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqCisgICogVGhpcmQgdGhpbmcgYXBwbGljYXRpb24gc2hvdWxkIGRvIGlzIHRvIHJlZ2lzdGVyIG1vZHVsZSB0eXBlIG9uIHRoZQorQEAgLTEwOCw3ICsxMDgsNyBAQAorICAqIGludGVyZmFjZSAoc2VlIHRoZSBmbS1kdW1teS5oIGhlYWRlciBleGFtcGxlIGFib3ZlKToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS10ZXN0LWMiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgbW9kdWxlIGR1bW15L3Rlc3Q8L3RpdGxlPgorLSAqIDxwcm9ncmFtbGlzdGluZz4KKysgKiA8cHJvZ3JhbWxpc3Rpbmc+PCFbQ0RBVEFbCisgICogI2luY2x1ZGUgImZtLWR1bW15LmgiCisgICoKKyAgKiBGTV9ERUZJTkVfTU9EVUxFKGR1bW15LCB0ZXN0KQorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAqIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15ID0geworICAqICAgICBmbV9kdW1teV90ZXN0X2dldF9uZXc7CisgICogfTsKKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqIFRoZSBmbV9tb2R1bGVfaW5pdF9kdW1teSBzaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBpcworICAqIGRlZmluZWQgaW4gdGhlIGhlYWRlciBmaWxlIGFib3ZlLgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCmluZGV4IDFkZGRkZmQuLjU5NjQwODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKQEAgLTksMjIgKzksMzYgQEAKIAogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIGdldHRleHQtbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgcGFuZ28gZ3RrKzMgbWVudS1jYWNoZSBpbnRsdG9vbC1uYXRpdmUgbGliZXhpZiBsaWJmbS1leHRyYSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhMWJhOWFlNWU5MjBmMzhiNjQ3ZGQ1MTFlZGQ2YzgwNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzA2YmIxMDIwY2Y1ZjJkNmY1YTkyMjZmNjkyY2UxOTg1OTQ3MTM0ZGNmMmJkZTY0Mjc4YmQwNDIwNzc5YjVhIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgogCitQQUNLQUdFUyA9KyAibGliZm0tZ3RrIgogUEFDS0FHRVMgKz0gIiR7UE59LW1pbWUiCitGSUxFU19saWJmbS1ndGsgPSAiIFwKKyAgICAke2xpYmRpcn0vbGliZm0tZ3RrKnNvLiogXAorICAgICR7bGliZGlyfS9saWJmbS9tb2R1bGVzL2d0ayogXAorICAgICR7YmluZGlyfS9saWJmbS1wcmVmLWFwcHMgXAorICAgICR7YmluZGlyfS9seHNob3J0Y3V0IFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9saWJmbS1wcmVmLWFwcHMuZGVza3RvcCBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbHhzaG9ydGN1dC5kZXNrdG9wIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy9mb2xkZXIucG5nIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy91bmtub3duLnBuZyBcCisgICAgJHtkYXRhZGlyfS9saWJmbS91aS8qLnVpIFwKKyIKIEZJTEVTXyR7UE59LW1pbWUgPSAiJHtkYXRhZGlyfS9taW1lLyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmZkZDc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1Gcm9tIGVmNTcwZTNkMjc3M2MxMjEyNmU3ZDNmY2RjNGRiOWVmODBhNWUyMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTg6MTM6MjggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZWNjOiBBZGQgaW5wdXQgdmFsaWRhdGlvbiBmb3IgWDI1NTE5LgotCi0qIGNpcGhlci9lY2MuYyAoZWNjX2RlY3J5cHRfcmF3KTogQWRkIGlucHV0IHZhbGlkYXRpb24uCi0qIG1waS9lYy5jIChlY19wX2luaXQpOiBVc2Ugc2NyYXRjaCBidWZmZXIgZm9yIGJhZCBwb2ludHMuCi0oX2djcnlfbXBpX2VjX2JhZF9wb2ludCk6IE5ldy4KLQotLS0KLQotRm9sbG93aW5nIGlzIHRoZSBwYXBlciBkZXNjcmliaW5nIHRoZSBhdHRhY2s6Ci0KLSAgICBNYXkgdGhlIEZvdXJ0aCBCZSBXaXRoIFlvdTogQSBNaWNyb2FyY2hpdGVjdHVyYWwgU2lkZSBDaGFubmVsIEF0dGFjawotICAgIG9uIFJlYWwtV29ybGQgQXBwbGljYXRpb25zIG9mIEN1cnZlMjU1MTkKLSAgICBieSBEYW5pZWwgR2Vua2luLCBMdWtlIFZhbGVudGEsIGFuZCBZdXZhbCBZYXJvbQotCi1JbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgd2UgZG8gb3V0cHV0IGNoZWNraW5nIGFuZCBpdCByZXN1bHRzIGFuCi1lcnJvciBmb3IgdGhvc2UgYmFkIHBvaW50cy4gIEhvd2V2ZXIsIHdoZW4gYXR0YWNrZWQsIHRoZSBjb21wdXRhdGlvbgotd2lsbCBkb25lIHdpdGggbGVhayBvZiBwcml2YXRlIGtleSwgZXZlbiBpdCB3aWxsIHJlc3VsdHMgZXJyb3JzLiAgVG8KLW1pdGlnYXRlIGxlYWssIHdlIGFkZGVkIGlucHV0IHZhbGlkYXRpb24uCi0KLU5vdGUgdGhhdCB3ZSBvbmx5IGxpc3QgYmFkIHBvaW50cyB3aXRoIE1TQj0wLiAgQnkgWDI1NTE5LCBNU0IgaXMKLWFsd2F5cyBjbGVhcmVkLgotCi1JbiBmdXR1cmUsIHdlIHNob3VsZCBpbXBsZW1lbnQgY29uc3RhbnQtdGltZSBmaWVsZCBjb21wdXRhdGlvbi4gIFRoZW4sCi10aGlzIGlucHV0IHZhbGlkYXRpb24gY291bGQgYmUgcmVtb3ZlZCwgaWYgcGVyZm9ybWFuY2UgaXMgaW1wb3J0YW50Ci1hbmQgd2UgYXJlIHN1cmUgZm9yIG5vIGxlYWsuCi0KLUNWRS1pZDogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyL2VjYy5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSBtcGkvZWMuYyAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBzcmMvbXBpLmggICAgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2VjYy5jIGIvY2lwaGVyL2VjYy5jCi1pbmRleCBlMjViZjA5Li40ZTNlNWIxIDEwMDY0NAotLS0tIGEvY2lwaGVyL2VjYy5jCi0rKysgYi9jaXBoZXIvZWNjLmMKLUBAIC0xNjI4LDkgKzE2MjgsMjIgQEAgZWNjX2RlY3J5cHRfcmF3IChnY3J5X3NleHBfdCAqcl9wbGFpbiwgZ2NyeV9zZXhwX3Qgc19kYXRhLCBnY3J5X3NleHBfdCBrZXlwYXJtcykKLSAgIGlmIChEQkdfQ0lQSEVSKQotICAgICBsb2dfcHJpbnRwbnQgKCJlY2NfZGVjcnlwdCAgICBrRyIsICZrRywgTlVMTCk7Ci0gCi0tICBpZiAoIShmbGFncyAmIFBVQktFWV9GTEFHX0RKQl9UV0VBSykKLSsgIGlmICgoZmxhZ3MgJiBQVUJLRVlfRkxBR19ESkJfVFdFQUspKQotKyAgICB7Ci0gICAgICAgLyogRm9yIFgyNTUxOSwgYnkgaXRzIGRlZmluaXRpb24sIHZhbGlkYXRpb24gc2hvdWxkIG5vdCBiZSBkb25lLiAgKi8KLS0gICAgICAmJiAhX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAvKiAoSW5zdGVhZCwgd2UgZG8gb3V0cHV0IGNoZWNrLikKLSsgICAgICAgKgotKyAgICAgICAqIEhvd2V2ZXIsIHRvIG1pdGlnYXRlIHNlY3JldCBrZXkgbGVhayBmcm9tIG91ciBpbXBsZW1lbnRhdGlvbiwKLSsgICAgICAgKiB3ZSBhbHNvIGRvIGlucHV0IHZhbGlkYXRpb24gaGVyZS4gIEZvciBjb25zdGFudC10aW1lCi0rICAgICAgICogaW1wbGVtZW50YXRpb24sIHdlIGNhbiByZW1vdmUgdGhpcyBpbnB1dCB2YWxpZGF0aW9uLgotKyAgICAgICAqLwotKyAgICAgIGlmIChfZ2NyeV9tcGlfZWNfYmFkX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgcmMgPSBHUEdfRVJSX0lOVl9EQVRBOwotKyAgICAgICAgICBnb3RvIGxlYXZlOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmICghX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSAgICAgewotICAgICAgIHJjID0gR1BHX0VSUl9JTlZfREFUQTsKLSAgICAgICBnb3RvIGxlYXZlOwotZGlmZiAtLWdpdCBhL21waS9lYy5jIGIvbXBpL2VjLmMKLWluZGV4IGEwZjczNTcuLjRjMTY2MDMgMTAwNjQ0Ci0tLS0gYS9tcGkvZWMuYwotKysrIGIvbXBpL2VjLmMKLUBAIC0zOTYsNiArMzk2LDI5IEBAIGVjX2dldF90d29faW52X3AgKG1waV9lY190IGVjKQotIH0KLSAKLSAKLStzdGF0aWMgY29uc3QgY2hhciAqY3VydmUyNTUxOV9iYWRfcG9pbnRzW10gPSB7Ci0rICAiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKLSsgICIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEiLAotKyAgIjB4MDBiODQ5NWYxNjA1NjI4NmZkYjEzMjljZWI4ZDA5ZGE2YWM0OWZmMWZhZTM1NjE2YWViODQxM2I3YzdhZWJlMCIsCi0rICAiMHg1NzExOWZkMGRkNGUyMmQ4ODY4ZTFjNThjNDVjNDQwNDViZWY4MzljNTViMWQwYjEyNDhjNTBhM2JjOTU5YzVmIiwKLSsgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWMiLAotKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZCIsCi0rICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVlIiwKLSsgIE5VTEwKLSt9OwotKwotK3N0YXRpYyBnY3J5X21waV90Ci0rc2NhbnZhbCAoY29uc3QgY2hhciAqc3RyaW5nKQotK3sKLSsgIGdwZ19lcnJfY29kZV90IHJjOwotKyAgZ2NyeV9tcGlfdCB2YWw7Ci0rCi0rICByYyA9IF9nY3J5X21waV9zY2FuICgmdmFsLCBHQ1JZTVBJX0ZNVF9IRVgsIHN0cmluZywgMCwgTlVMTCk7Ci0rICBpZiAocmMpCi0rICAgIGxvZ19mYXRhbCAoInNjYW5uaW5nIEVDQyBwYXJhbWV0ZXIgZmFpbGVkOiAlc1xuIiwgZ3BnX3N0cmVycm9yIChyYykpOwotKyAgcmV0dXJuIHZhbDsKLSt9Ci0rCi0gCi0gLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplZCBhIGNvbnRleHQgZm9yIGVsbGlwdGljIGN1cnZlIGJhc2VkIG9uIHRoZQotICAgIGZpZWxkIEdGKHApLiAgUCBpcyB0aGUgcHJpbWUgc3BlY2lmeWluZyB0aGlzIGZpZWxkLCBBIGlzIHRoZSBmaXJzdAotQEAgLTQzNCw5ICs0NTcsMTcgQEAgZWNfcF9pbml0IChtcGlfZWNfdCBjdHgsIGVudW0gZ2NyeV9tcGlfZWNfbW9kZWxzIG1vZGVsLAotIAotICAgX2djcnlfbXBpX2VjX2dldF9yZXNldCAoY3R4KTsKLSAKLS0gIC8qIEFsbG9jYXRlIHNjcmF0Y2ggdmFyaWFibGVzLiAgKi8KLS0gIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0tICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gbXBpX2FsbG9jX2xpa2UgKGN0eC0+cCk7Ci0rICBpZiAobW9kZWwgPT0gTVBJX0VDX01PTlRHT01FUlkpCi0rICAgIHsKLSsgICAgICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKSAmJiBjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbaV07IGkrKykKLSsgICAgICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gc2NhbnZhbCAoY3VydmUyNTUxOV9iYWRfcG9pbnRzW2ldKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogQWxsb2NhdGUgc2NyYXRjaCB2YXJpYWJsZXMuICAqLwotKyAgICAgIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0rICAgICAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IG1waV9hbGxvY19saWtlIChjdHgtPnApOwotKyAgICB9Ci0gCi0gICAvKiBQcmVwYXJlIGZvciBmYXN0IHJlZHVjdGlvbi4gICovCi0gICAvKiBGSVhNRTogbmVlZCBhIHRlc3QgZm9yIE5JU1QgdmFsdWVzLiAgSG93ZXZlciBpdCBkb2VzIG5vdCBnYWluIHVzCi1AQCAtMTU3MiwzICsxNjAzLDE3IEBAIF9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotIAotICAgcmV0dXJuIHJlczsKLSB9Ci0rCi0rCi0raW50Ci0rX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotK3sKLSsgIGludCBpOwotKyAgZ2NyeV9tcGlfdCB4X2JhZDsKLSsKLSsgIGZvciAoaSA9IDA7ICh4X2JhZCA9IGN0eC0+dC5zY3JhdGNoW2ldKTsgaSsrKQotKyAgICBpZiAoIW1waV9jbXAgKHBvaW50LT54LCB4X2JhZCkpCi0rICAgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL21waS5oIGIvc3JjL21waS5oCi1pbmRleCBiNTM4NWI1Li5hZWJhN2Y4IDEwMDY0NAotLS0tIGEvc3JjL21waS5oCi0rKysgYi9zcmMvbXBpLmgKLUBAIC0yOTYsNiArMjk2LDcgQEAgdm9pZCBfZ2NyeV9tcGlfZWNfbXVsX3BvaW50IChtcGlfcG9pbnRfdCByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X21waV90IHNjYWxhciwgbXBpX3BvaW50X3QgcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGlfZWNfdCBjdHgpOwotIGludCAgX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotK2ludCBfZ2NyeV9tcGlfZWNfYmFkX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotIAotIGdjcnlfbXBpX3QgX2djcnlfbXBpX2VjX2VjMm9zIChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBlY3R4KTsKLSAKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWI5ZmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSA0YTdhYTMwYWU5ZjNjZTc5OGRkODg2YzJmMmQ0MTY0YzQzMDI3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotRGF0ZTogU2F0LCAyOSBKdWwgMjAxNyAxNDozNDoyMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGRpbmcgQUFyY2gzMiBDRSBpbXBsZW1lbnRhdGlvbnMgd2hlbiB0YXJnZXQgaXMgQVJNdjYKLSBhcmNoCi0KLSogY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TOiBTZWxlY3QgQVJNdjggYXJjaGl0ZWN1cmUuCi0qIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCi0qIGNvbmZpZ3VyZS5hYyAoZ2NyeV9jdl9nY2NfaW5saW5lX2FzbV9hYXJjaDMyX2NyeXB0byk6IERpdHRvLgotLS0KLQotUmFzcGJpYW4gZGlzdHJpYnV0aW9uIGRlZmF1bHRzIHRvIEFSTXY2IGFyY2hpdGVjdHVyZSB0aHVzICdyYml0JwotaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aXRoIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuIFBhdGNoCi1hZGRzIGV4cGxpY2l0IGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gZm9yIEFSTXY4IHRvIGVuYWJsZSAncmJpdCcKLXVzYWdlIHdpdGggQVJNdjgvQUFyY2gzMi1DRSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbnMgb2YgU0hBLAotR0hBU0ggYW5kIEFFUy4KLQotUmVwb3J0ZWQtYnk6IENocmlzIEhvcnJ5IDx6ZXJiZXlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgfCAxICsKLSBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TICAgfCAxICsKLSBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgICAgICAgfCAxICsKLSBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyAgICAgfCAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiNjFhNzg3MS4uMWRlNjZhMTYgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBmMzc1ZjY3My4uNWM4ZmEzYzAgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiMGJjNWZmZS4uYmYyYjIzM2IgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEExKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IDIwNDFhMjM3Li4yYjE3YWIxYiAxMDA2NDQKLS0tLSBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEEyNTYpCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyN2ZhYTdmNC4uNjZlN2NkNjcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2MTksNiArMTYxOSw3IEBAIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIEdDQyBpbmxpbmUgYXNzZW1ibGVyIHN1cHBvcnRzIEFBcmNoMzIgQ3J5cHRvIEV4dGVuc2lvbiBpCi0gICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRSgKLSAgICAgICAgICAgW1tfX2FzbV9fKAotICAgICAgICAgICAgICAgICAiLnN5bnRheCB1bmlmaWVkXG5cdCIKLSsgICAgICAgICAgICAgICAgIi5hcmNoIGFybXY4LWFcblx0IgotICAgICAgICAgICAgICAgICAiLmFybVxuXHQiCi0gICAgICAgICAgICAgICAgICIuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4XG5cdCIKLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOTgyZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLVNFQ1RJT04gPSAibGlicyIKLQotIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxMTBjZTQzNTJmOWVhNmY1NjBiZGM2YzU2NDRhZTkzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmU0NzBiN2YyZDNhNzAzZTg3NDdmMDVhOGMxOWQ5ZTEwZTI2ZWJmMmQ1ZjNkNzFmZjc1YTQwZjUwNGUxMmVlIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjYXBhYmlsaXRpZXMiCi1QQUNLQUdFQ09ORklHW2NhcGFiaWxpdGllc10gPSAiLS13aXRoLWNhcGFiaWxpdGllcywtLXdpdGhvdXQtY2FwYWJpbGl0aWVzLGxpYmNhcCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGlzIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgb25lIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci19Ci0KLSMgbGliZ2NyeXB0LnBjIGlzIGFkZGVkIGxvY2FsbHkgYW5kIHRodXMgaW5zdGFsbGVkIGhlcmUKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL2xpYmdjcnlwdC5wYyAke0R9LyR7bGliZGlyfS9wa2djb25maWcvCi19Ci0KLVBBQ0tBR0VTID0rICJkdW1wc2V4cC1kZXYiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2htYWMyNTYiCi1GSUxFU19kdW1wc2V4cC1kZXYgKz0gIiR7YmluZGlyfS9kdW1wc2V4cCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZlNjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIKQEAgLTAsMCArMSw1MyBAQAorU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCitIT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCitTRUNUSU9OID0gImxpYnMiCisKKyMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNmYjBiNWM3OWVhYjA3Njg2YjY4OTgxNjBhNDA3MTM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDY0Y2FlNzU1ODE0NGIxM2VmMGViODcwOTM0MTIzODBlZmExNmM0ZWUzMGFkMTJlY2I1NDg4NmE1MjRjMDciCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKK1BBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKK30KKworIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KK30KKworUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKK0ZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgppbmRleCBiMmUyZDUwLi5iNzRmMDc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKQEAgLTIxLDcgKzIxLDcgQEAKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIKIENQUEZMQUdTICs9ICItUCIKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlUQVJHRVRfRklMRT1saW51eC1nbnUKQEAgLTUzLDYgKzUzLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQogCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgorCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCiB9CiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWwvUmVtb3ZlLWNtYWtlLWNoZWNrLWZvci1QZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKaW5kZXggYzVjMGNiMC4uYjUwZjUwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKQEAgLTE0LDExICsxNCwxMSBAQAogIENNYWtlTGlzdHMudHh0IHwgMyArLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkNWFhZDgwLi41Y2M5ODYzIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtOTEsOCArOTEsNyBAQCBpZihTSEFSRURfT05MWSkKK0luZGV4OiBsaWJpY2FsLTIuMC4wL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliaWNhbC0yLjAuMC5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgbGliaWNhbC0yLjAuMC9DTWFrZUxpc3RzLnR4dAorQEAgLTExNiw4ICsxMTYsNyBAQCBpZihTSEFSRURfT05MWSkKICAgIHNldChMSUJSQVJZX1RZUEUgU0hBUkVEKQogIGVuZGlmKCkKICAKQEAgLTI2LDggKzI2LDUgQEAKIC1maW5kX3BhY2thZ2UoUGVybCBSRVFVSVJFRCkKICtzZXQoUEVSTF9FWEVDVVRBQkxFIHBlcmwpCiAgCi0gIyBNU1ZDIHNwZWNpZmljIGRlZmluaXRpb25zCi0gaWYoV0lOMzIpCi0tLSAKLTIuMS40Ci0KKyAjIEVuc3VyZSBmaW5kaW5nIDY0Yml0IGxpYnMgd2hlbiB1c2luZyA2NC1iaXQgY29tcGlsZXJzCisgaWYoQ01BS0VfQ0xfNjQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgppbmRleCBkNGZlODY4Li5kY2MyMWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKQEAgLTE3LDUgKzE3LDMgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmEva3NiYS1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKaW5kZXggZDI4ZGZkOS4uNWFmZTZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhL2tzYmEtYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCkBAIC02LDEzICs2LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGxpYmtzYmEtMS4zLjAvTWFrZWZpbGUuYW0KK0luZGV4OiBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL01ha2VmaWxlLmFtCTIwMTQtMDUtMTMgMjE6Mzk6MjIuMzkwMzg1NjQ2ICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9NYWtlZmlsZS5hbQkyMDE0LTA1LTEzIDIxOjM5OjIyLjQ2MjM4NTY0NiArMDAwMAotQEAgLTIxLDYgKzIxLDkgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsOSBAQAorIAogIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00IC1JIGdsL200Ci0gQVVUT01BS0VfT1BUSU9OUyA9IGRpc3QtYnppcDIgbm8tZGlzdC1nemlwCiAgCiArcGtnY29uZmlnZGlyID0gJHtsaWJkaXJ9L3BrZ2NvbmZpZwogK3BrZ2NvbmZpZ19EQVRBID0ga3NiYS5wYwpAQCAtMjAsMTEgKzIwLDExIEBACiAgIyAoQSBzdWl0YWJsZSBnaXRsb2ctdG8tY2hhbmdlbG9nIHNjcmlwdCBjYW4gYmUgZm91bmQgaW4gR251UEcgbWFzdGVyLikKICBHSVRMT0dfVE9fQ0hBTkdFTE9HPWdpdGxvZy10by1jaGFuZ2Vsb2cKICAKLUluZGV4OiBsaWJrc2JhLTEuMy4wL2NvbmZpZ3VyZS5hYworSW5kZXg6IGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTEzIDIxOjM5OjIyLjM5MDM4NTY0NiArMDAwMAotKysrIGxpYmtzYmEtMS4zLjAvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCi1AQCAtNDAwLDYgKzQwMCw3IEBACistLS0gbGlia3NiYS0xLjMuNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCitAQCAtNDE0LDYgKzQxNCw3IEBAIGdsL01ha2VmaWxlCiAgc3JjL01ha2VmaWxlCiAgc3JjL2tzYmEtY29uZmlnCiAgc3JjL3ZlcnNpb25pbmZvLnJjCkBAIC0zMiwxMCArMzIsMTAgQEAKICB0ZXN0cy9NYWtlZmlsZQogIGRvYy9NYWtlZmlsZQogIF0pCi1JbmRleDogbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCitJbmRleDogbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCistLS0gL2Rldi9udWxsCisrKysgbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiBAQCAtMCwwICsxLDE3IEBACiArcHJlZml4PUBwcmVmaXhACiArZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QApAQCAtNTQsMTEgKzU0LDExIEBACiArTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbGdwZy1lcnJvcgogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CiArCi1JbmRleDogbGlia3NiYS0xLjMuMC9zcmMva3NiYS5tNAorSW5kZXg6IGxpYmtzYmEtMS4zLjUvc3JjL2tzYmEubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJrc2JhLTEuMy4wLm9yaWcvc3JjL2tzYmEubTQJMjAxNC0wNS0xMyAyMTozOToyMi4zOTAzODU2NDYgKzAwMDAKLSsrKyBsaWJrc2JhLTEuMy4wL3NyYy9rc2JhLm00CTIwMTQtMDUtMTMgMjE6NDk6MDMuNjUwMzgyNjk2ICswMDAwCi1AQCAtMjIsMTggKzIyLDcgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvc3JjL2tzYmEubTQKKysrKyBsaWJrc2JhLTEuMy41L3NyYy9rc2JhLm00CitAQCAtMjIsMTggKzIyLDcgQEAgZG5sIHdpdGggYSBjaGFuZ2VkIEFQSS4KICBkbmwKICBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQpAQCAtNzcsNyArNzcsNyBAQAogICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjAuMCwkMSkKICAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KICAgICAgIHJlcV9rc2JhX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC00Myw0OCArMzIsMTMgQEAKK0BAIC00Myw0OCArMzIsMTMgQEAgQUNfREVGVU4oW0FNX1BBVEhfS1NCQV0sCiAgICAgICBtaW5fa3NiYV92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCiAgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0tTQkEgQVBJIHZlcnNpb25dKQogICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9rc2JhX2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLUBAIC05NywxMCArNTEsOCBAQAorQEAgLTk3LDEwICs1MSw4IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0tTQkFdLAogICAgICAgZmkKICAgIGZpCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgIGlmIHRlc3QgeCIkbGlia3NiYV9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCiAgICAgICAgaWYgdGVzdCB4IiRsaWJrc2JhX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KICAgIEFDX01TR19XQVJOKFtbCi1AQCAtMTE0LDggKzY2LDYgQEAKK0BAIC0xMTQsOCArNjYsNiBAQCBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICAgICAgICBmaQogICAgICBmaQogICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmFfMS4zLjUuYmIKaW5kZXggMzZiNjY3MC4uYTdlYTUzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy41LmJiCkBAIC0yNCwzICsyNCw1IEBACiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJtcGMvbGlibXBjXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODEzMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGxpYm1wYy5pbmMKLQotREVQRU5EUyA9ICJnbXAgbXBmciIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9tcGMvbXBjLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2YTFkNWY4ZGRlYTNhYmQyY2MzZTk4ZjU4MzUyZDI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxN2RlY2M2ZWEwOTg4OWZiMDhlZGUzMzA5MTdhMDBiMTY4MDliOGRiODhjMjljMzFiZmJiNDljYmY4OGVjYzMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm11bHRpcHJlY2lzaW9uLm9yZy9pbmRleC5waHA/cHJvZz1tcGMmcGFnZT1kb3dubG9hZCIKLQotUyA9ICIke1dPUktESVJ9L21wYy0ke1BWfSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDI1ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBsaWJtcGMuaW5jCisKK0RFUEVORFMgPSAiZ21wIG1wZnIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvbXBjL21wYy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTI1NDA0ZTQxZTQ4MmVjNjgyODJhMmU2ODdmNmM3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg1YzUzODE0M2MxMjA4ZGNiMWFjNDJjZWRhZDZmZjUyZTI2N2I0N2U1Zjk3MDE4M2EzZTc1MTI1YjQzYzJlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tdWx0aXByZWNpc2lvbi5vcmcvbXBjL2Rvd25sb2FkLmh0bWwiCisKK1MgPSAiJHtXT1JLRElSfS9tcGMtJHtQVn0iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBhMjk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGxpYm5sLTMuNC4wIG11c2wgY29tcGlsZSBwcm9ibGVtICAKK0F2b2lkIGluNl9hZGRyIHJlZGVmaW5pdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIHwgMSAtCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaCAgICAgIHwgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCitpbmRleCBmMjQwNTBiLi44Zjc0OTBjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCisrKysgYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKK0BAIC0xNSw3ICsxNSw2IEBACisgCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorICNkZWZpbmUgU1lTRlNfQlJJREdFX0FUVFIJImJyaWRnZSIKKyAjZGVmaW5lIFNZU0ZTX0JSSURHRV9GREIJImJyZm9yd2FyZCIKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAoraW5kZXggZTA1ZTY4NC4uZjE2MzQ5ZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKKysrKyBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKK0BAIC0yLDcgKzIsNiBAQAorICNkZWZpbmUgX0lQVjZfSAorIAorICNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorIC8qIFRoZSBsYXRlc3QgZHJhZnRzIGRlY2xhcmVkIGluY3JlYXNlIGluIG1pbmltYWwgbXR1IHVwIHRvIDEyODAuICovCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFhMGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWxpYm5sIGhhcyBwcm9ncmVzc2VkIHRvIDAuMy4yIGFuZCB0aGVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW55Ci0ibWFrZSAtaiIgaXNzdWVzIHdpdGggdGhpcyBidWlsZCBhZnRlciBteSBsaW1pdGVkIHRlc3Rpbmcgb24gdGhhdAotbmV3ZXIgdmVyc2lvbiBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXNzdWUgaXMgZml4ZWQgdXBzdHJlYW0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotCi1JbmRleDogbGlibmwtMy4yLjI1L2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYm5sLTMuMi4yNS5vcmlnL2xpYi9NYWtlZmlsZS5hbQotKysrIGxpYm5sLTMuMi4yNS9saWIvTWFrZWZpbGUuYW0KLUBAIC00Niw5ICs0NiwxMiBAQCBDTEVBTkZJTEVTID0gXAotIAotICMgSGFjayB0byBhdm9pZCB1c2luZyB5bHdyYXAuIEl0IGRvZXMgbm90IGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBjb21iaW5hdGlvbgotICMgd2l0aCAtLWhlYWRlci1maWxlPQotK3JvdXRlL3BrdGxvYy5sbzogcm91dGUvcGt0bG9jX3N5bnRheC5oIHJvdXRlL3BrdGxvY19ncmFtbWFyLmgKLStyb3V0ZS9wa3Rsb2NfZ3JhbW1hci5oOiByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5jCi0gcm91dGUvcGt0bG9jX2dyYW1tYXIuYzogcm91dGUvcGt0bG9jX2dyYW1tYXIubAotIAkkKEFNX1ZfR0VOKSAkKE1LRElSX1ApIHJvdXRlOyAkKEZMRVgpIC0taGVhZGVyLWZpbGU9cm91dGUvcGt0bG9jX2dyYW1tYXIuaCAkKExGTEFHUykgLW8gJEAgJF4KLSAKLStyb3V0ZS9wa3Rsb2Nfc3ludGF4Lmg6IHJvdXRlL3BrdGxvY19zeW50YXguYwotIHJvdXRlL3BrdGxvY19zeW50YXguYzogcm91dGUvcGt0bG9jX3N5bnRheC55Ci0gCSQoQU1fVl9HRU4pICQoTUtESVJfUCkgcm91dGU7ICQoWUFDQykgLWQgJChZRkxBR1MpIC1vICRAICReCi0gCi1AQCAtMTAyLDcgKzEwNSw5IEBAIEJVSUxUX1NPVVJDRVMgPSBcCi0gCXJvdXRlL2Nscy9lbWF0Y2hfZ3JhbW1hci5jIFwKLSAJcm91dGUvY2xzL2VtYXRjaF9zeW50YXguYyBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmMgXAotLQlyb3V0ZS9wa3Rsb2Nfc3ludGF4LmMKLSsgICByb3V0ZS9wa3Rsb2Nfc3ludGF4LmMgXAotKyAgIHJvdXRlL3BrdGxvY19zeW50YXguaCBcCi0rICAgcm91dGUvcGt0bG9jX2dyYW1tYXIuaAotIAotIEVYVFJBX0RJU1QgPSBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjIuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDgzOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1QRSA9ICIxIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYy1maWxlLnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOGJhNjJhNWM0Zjg4M2Y0ZTQ5M2E0NmQxZjM3MzNmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmViNTkzZGM2YWJmZmZhMThhNWM3ODdiMjc4ODQ5NzljMWI3ZTdmMWZkNDY4YzgwMWUzY2M5MzhhNjg1OTIyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5sLTMuc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwuc28uKiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYm5sMiIKLVJDT05GTElDVFNfJHtQTn0gPSAibGlibmwyIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibmwvY2xpLyovKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouYSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWNsaSAke1BOfS1nZW5sICR7UE59LWlkaWFnICR7UE59LW5mICR7UE59LXJvdXRlICR7UE59LXhmcm0iCi1GSUxFU18ke1BOfS1jbGkgICA9ICIke2xpYmRpcn0vbGlibmwtY2xpLTMuc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwvY2xpLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2VubC1jdHJsLWxpc3QgXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2lkaWFnLXNvY2tldC1kZXRhaWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZi0qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ubC0qIgotRklMRVNfJHtQTn0tZ2VubCAgPSAiJHtsaWJkaXJ9L2xpYm5sLWdlbmwtMy5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC1nZW5sLnNvLioiCi1GSUxFU18ke1BOfS1pZGlhZyA9ICIke2xpYmRpcn0vbGlibmwtaWRpYWctMy5zby4qIgotRklMRVNfJHtQTn0tbmYgICAgPSAiJHtsaWJkaXJ9L2xpYm5sLW5mLTMuc28uKiIKLUZJTEVTXyR7UE59LXJvdXRlID0gIiR7bGliZGlyfS9saWJubC1yb3V0ZS0zLnNvLioiCi1GSUxFU18ke1BOfS14ZnJtICA9ICIke2xpYmRpcn0vbGlibmwteGZybS0zLnNvLioiCi1SUkVQTEFDRVNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKLVJDT05GTElDVFNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGRjNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitQRSA9ICIxIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2ggXAorIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY3MTkxMGMwM2RiMzYzYjQxZTJlYTYyMDU3YTQzMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcyODc2MzdhZTcxYzZkYjZmODllMTQyMmM5OTVmMDQwN2ZmMmZlNTBjZWNkNjFhMzEyYjZhOWIwOTIxZjViZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLnNvLiogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJubDIiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYm5sMiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJubC9jbGkvKi8qLmEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1jbGkgJHtQTn0tZ2VubCAke1BOfS1pZGlhZyAke1BOfS1uZiAke1BOfS1yb3V0ZSAke1BOfS14ZnJtIgorRklMRVNfJHtQTn0tY2xpICAgPSAiJHtsaWJkaXJ9L2xpYm5sLWNsaS0zLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dlbmwtY3RybC1saXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9pZGlhZy1zb2NrZXQtZGV0YWlscyBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmYtKiBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmwtKiIKK0ZJTEVTXyR7UE59LWdlbmwgID0gIiR7bGliZGlyfS9saWJubC1nZW5sLTMuc28uKiBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwtZ2VubC5zby4qIgorRklMRVNfJHtQTn0taWRpYWcgPSAiJHtsaWJkaXJ9L2xpYm5sLWlkaWFnLTMuc28uKiIKK0ZJTEVTXyR7UE59LW5mICAgID0gIiR7bGliZGlyfS9saWJubC1uZi0zLnNvLioiCitGSUxFU18ke1BOfS1yb3V0ZSA9ICIke2xpYmRpcn0vbGlibmwtcm91dGUtMy5zby4qIgorRklMRVNfJHtQTn0teGZybSAgPSAiJHtsaWJkaXJ9L2xpYm5sLXhmcm0tMy5zby4qIgorUlJFUExBQ0VTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCitSQ09ORkxJQ1RTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhM2JmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotbGlicGNyZTItMTAuMjM6IEZpeCBDVkUtMjAxNy03MTg2Ci0KLUEgZnV6eiBvbiBsaWJwY3JlMSB0aHJvdWdoIHRoZSBwY3JldGVzdCB1dGlsaXR5IHJldmVhbGVkIGFuIGludmFsaWQgcmVhZCBpbiB0aGUKLWxpYnJhcnkuIEZvciB3aG8gaXMgaW50ZXJlc3RlZCBpbiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcsIHdpbGwKLWZvbGxvdyBhIGZlZWRiYWNrIGZyb20gdXBzdHJlYW06Ci0KLVRoaXMgd2FzIGEgZ2VudWluZSBidWcgaW4gdGhlIDMyLWJpdCBsaWJyYXJ5LiBUaGFua3MgZm9yIGZpbmRpbmcgaXQuIFRoZSBjcmFzaAotd2FzIGNhdXNlZCBieSB0cnlpbmcgdG8gZmluZCBhIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSB2YWx1ZSBncmVhdGVyIHRoYW4KLTB4MTBmZmZmLCB0aGUgVW5pY29kZSBtYXhpbXVtLCB3aGVuIHJ1bm5pbmcgaW4gbm9uLVVURiBtb2RlICh3aGVyZSBjaGFyYWN0ZXIKLXZhbHVlcyBjYW4gYmUgdXAgdG8gMHhmZmZmZmZmZikuCi0KLVRoZSBjb21wbGV0ZSBBU2FuIG91dHB1dDoKLQotIyBwY3JldGVzdCAtMzIgLWQgJEZJTEUKLT09MTQ3ODg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIG9uIHVua25vd24gYWRkcmVzcyAweDdmMWJiZmZlZDRkZiAocGMgMHg3ZjFiYmVlM2ZlNmIgYnAgMHg3ZmZmOGI1MGQ4YzAgc3AgMHg3ZmZmOGI1MGQzYTAgVDApCi09PTE0Nzg4PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KLSAgICAjMCAweDdmMWJiZWUzZmU2YSBpbiBtYXRjaCAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTgKLSAgICAjMSAweDdmMWJiZWUwOTIyNiBpbiBwY3JlMzJfZXhlYyAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjY5MzY6OAotICAgICMyIDB4NTI3ZDZjIGluIG1haW4gL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JldGVzdC5jOjUyMTg6OQotICAgICMzIDB4N2YxYmJkZGQ2NzhmIGluIF9fbGliY19zdGFydF9tYWluIC90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjIzLXIzL3dvcmsvZ2xpYmMtMi4yMy9jc3UvLi4vY3N1L2xpYmMtc3RhcnQuYzoyODkKLSAgICAjNCAweDQxYjQzOCBpbiBfaW5pdCAoL3Vzci9iaW4vcGNyZXRlc3QrMHg0MWI0MzgpCi0KLUFkZHJlc3NTYW5pdGl6ZXIgY2FuIG5vdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mby4KLVNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1YgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4IGluIG1hdGNoCi09PTE0Nzg4PT1BQk9SVElORwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl91Y2QuYz92aWV3PXBhdGNoJnIxPTMxNiZyMj02NzAmc29ydGJ5PWRhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaD92aWV3PXBhdGNoJnIxPTYwMCZyMj02NzAmc29ydGJ5PWRhdGVdCi1DVkU6IENWRS0yMDE3LTcxODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTUvMDcvMTcgMTU6NDQ6NTEgMzE2Ci0rKysgdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAotQEAgLTQxLDYgKzQxLDIwIEBACi0gCi0gY29uc3QgY2hhciAqUFJJVih1bmljb2RlX3ZlcnNpb24pID0gIjguMC4wIjsKLSAKLSsvKiBJZiB0aGUgMzItYml0IGxpYnJhcnkgaXMgcnVuIGluIG5vbi0zMi1iaXQgbW9kZSwgY2hhcmFjdGVyIHZhbHVlcwotK2dyZWF0ZXIgdGhhbiAweDEwZmZmZiBtYXkgYmUgZW5jb3VudGVyZWQuIEZvciB0aGVzZSB3ZSBzZXQgdXAgYQotK3NwZWNpYWwgcmVjb3JkLiAqLwotKwotKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKLStjb25zdCB1Y2RfcmVjb3JkIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXSA9IHt7Ci0rICB1Y3BfQ29tbW9uLCAgICAvKiBzY3JpcHQgKi8KLSsgIHVjcF9DbiwgICAgICAgIC8qIHR5cGUgdW5hc3NpZ25lZCAqLwotKyAgdWNwX2diT3RoZXIsICAgLyogZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgKi8KLSsgIDAsICAgICAgICAgICAgIC8qIGNhc2Ugc2V0ICovCi0rICAwLCAgICAgICAgICAgICAvKiBvdGhlciBjYXNlICovCi0rICB9fTsKLSsjZW5kaWYKLSsKLSAvKiBXaGVuIHJlY29tcGlsaW5nIHRhYmxlcyB3aXRoIGEgbmV3IFVuaWNvZGUgdmVyc2lvbiwgcGxlYXNlIGNoZWNrIHRoZQotIHR5cGVzIGluIHRoaXMgc3RydWN0dXJlIGRlZmluaXRpb24gZnJvbSBwY3JlMl9pbnRlcm5hbC5oICh0aGUgYWN0dWFsCi0gZmllbGQgbmFtZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgotLS0tIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTYvMTEvMTkgMTI6NDY6MjQgNjAwCi0rKysgdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKLUBAIC0xNzc0LDEwICsxNzc0LDE3IEBACi0gLyogVUNEIGFjY2VzcyBtYWNyb3MgKi8KLSAKLSAjZGVmaW5lIFVDRF9CTE9DS19TSVpFIDEyOAotLSNkZWZpbmUgR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAotKyNkZWZpbmUgUkVBTF9HRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCi0gICAgICAgICBQUklWKHVjZF9zdGFnZTIpW1BSSVYodWNkX3N0YWdlMSlbKGludCkoY2gpIC8gVUNEX0JMT0NLX1NJWkVdICogXAotICAgICAgICAgVUNEX0JMT0NLX1NJWkUgKyAoaW50KShjaCkgJSBVQ0RfQkxPQ0tfU0laRV0pCi0gCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgR0VUX1VDRChjaCkgKChjaCA+IE1BWF9VVEZfQ09ERV9QT0lOVCk/IFwKLSsgIFBSSVYoZHVtbXlfdWNkX3JlY29yZCkgOiBSRUFMX0dFVF9VQ0QoY2gpKQotKyNlbHNlCi0rI2RlZmluZSBHRVRfVUNEKGNoKSBSRUFMX0dFVF9VQ0QoY2gpCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBVQ0RfQ0hBUlRZUEUoY2gpICAgIEdFVF9VQ0QoY2gpLT5jaGFydHlwZQotICNkZWZpbmUgVUNEX1NDUklQVChjaCkgICAgICBHRVRfVUNEKGNoKS0+c2NyaXB0Ci0gI2RlZmluZSBVQ0RfQ0FURUdPUlkoY2gpICAgIFBSSVYodWNwX2dlbnR5cGUpW1VDRF9DSEFSVFlQRShjaCldCi1AQCAtMTgzNCw2ICsxODQxLDkgQEAKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dCBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0XykKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHQgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dF8pCi0gI2RlZmluZSBfcGNyZTJfZGVmYXVsdF90YWJsZXMgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X3RhYmxlc18pCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgX3BjcmUyX2R1bW15X3VjZF9yZWNvcmQgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZHVtbXlfdWNkX3JlY29yZF8pCi0rI2VuZGlmCi0gI2RlZmluZSBfcGNyZTJfaHNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9oc3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdnNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl92c3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHMgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0c18pCi1AQCAtMTg1OCw2ICsxODY4LDkgQEAKLSBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHZzcGFjZV9saXN0KVtdOwotIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX2Nhc2VsZXNzX3NldHMpW107Ci0gZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVih1Y2RfcmVjb3JkcylbXTsKLSsjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCi0rZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCB1aW50OF90ICAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMSlbXTsKLSBleHRlcm4gY29uc3QgdWludDE2X3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW107Ci0gZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y3BfZ2J0YWJsZSlbXTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWZhZmMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1saWJwY3JlMi0xMC4yMzogRml4IENWRS0yMDE3LTg3ODYKLQotVGhlIHBjcmUydGVzdC5jIGluIFBDUkUyIDEwLjIzIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIGNhdXNlIGEgZGVuaWFsIG9mCi1zZXJ2aWNlIChoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdykgb3IgcG9zc2libHkgaGF2ZSB1bnNwZWNpZmllZCBvdGhlciBpbXBhY3QKLXZpYSBhIGNyYWZ0ZWQgcmVndWxhciBleHByZXNzaW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMnRlc3QuYz9yMT02OTImcjI9Njk3JnZpZXc9cGF0Y2hdCi1DVkU6IENWRS0yMDE3LTg3ODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTY6MTg6NTQgNjkyCi0rKysgdHJ1bmsvc3JjL3BjcmUydGVzdC5jICAyMDE3LzAzLzIxIDE4OjM2OjEzIDY5NwotQEAgLTEwMTcsOSArMTAxNyw5IEBACi0gICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKLSAgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzgoYSxHKGIsOCksRyhHKGIsOCksX3NpemUpKTsgXAotICAgZWxzZSBpZiAodGVzdF9tb2RlID09IFBDUkUxNl9NT0RFKSBcCi0tICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSk7IFwKLSsgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpOyBcCi0gICBlbHNlIFwKLS0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFOF9NT0RFKSBcCi1AQCAtMTM5OSw2ICsxMzk5LDkgQEAKLSAKLSAvKiAtLS0tLSBDb21tb24gbWFjcm9zIGZvciB0d28tbW9kZSBjYXNlcyAtLS0tLSAqLwotIAotKyNkZWZpbmUgQllURU9ORSAoQklUT05FLzgpCi0rI2RlZmluZSBCWVRFVFdPIChCSVRUV08vOCkKLSsKLSAjZGVmaW5lIENBU1RGTEQodCxhLGIpIFwKLSAgICgodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKT8gKHQpKEcoYSxCSVRPTkUpLT5iKSA6IFwKLSAgICAgKHQpKEcoYSxCSVRUV08pLT5iKSkKLUBAIC0xNDgxLDkgKzE0ODQsOSBAQAotIAotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLSAgIGlmICh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpIFwKLS0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplKSk7IFwKLSsgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplL0JZVEVPTkUpKTsgXAotICAgZWxzZSBcCi0tICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZSkpCi0rICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZS9CWVRFVFdPKSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAotQEAgLTE5MDQsNyArMTkwNyw3IEBACi0gI2RlZmluZSBQQ1JFMl9ERkFfTUFUQ0goYSxiLGMsZCxlLGYsZyxoLGksaikgXAotICAgYSA9IHBjcmUyX2RmYV9tYXRjaF8xNihHKGIsMTYpLChQQ1JFMl9TUFRSMTYpYyxkLGUsZixHKGcsMTYpLGgsaSxqKQotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLS0gIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSkKLSsgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplLzIpKQotICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBhID0gcGNyZTJfZ2V0X292ZWN0b3JfY291bnRfMTYoRyhiLDE2KSkKLSAjZGVmaW5lIFBDUkUyX0dFVF9TVEFSVENIQVIoYSxiKSBhID0gcGNyZTJfZ2V0X3N0YXJ0Y2hhcl8xNihHKGIsMTYpKQotICNkZWZpbmUgUENSRTJfSklUX0NPTVBJTEUocixhLGIpIHIgPSBwY3JlMl9qaXRfY29tcGlsZV8xNihHKGEsMTYpLGIpCi1AQCAtMjAwMCw3ICsyMDAzLDcgQEAKLSAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCi0gICBhID0gcGNyZTJfZGZhX21hdGNoXzMyKEcoYiwzMiksKFBDUkUyX1NQVFIzMiljLGQsZSxmLEcoZywzMiksaCxpLGopCi0gI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAotLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUvNCkpCi0gI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8zMihHKGIsMzIpKQotICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzMyKEcoYiwzMikpCi0gI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzMyKEcoYSwzMiksYikKLUBAIC0yODg5LDcgKzI4OTIsNyBAQAotICAgewotICAgaWYgKHBidWZmZXIzMiAhPSBOVUxMKSBmcmVlKHBidWZmZXIzMik7Ci0gICBwYnVmZmVyMzJfc2l6ZSA9IDQqbGVuICsgNDsKLS0gIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDI1NikgcGJ1ZmZlcjMyX3NpemUgPSAyNTY7Ci0rICBpZiAocGJ1ZmZlcjMyX3NpemUgPCA1MTIpIHBidWZmZXIzMl9zaXplID0gNTEyOwotICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKLSAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgewotQEAgLTc2MDAsNyArNzYwMyw4IEBACi0gICBpbnQgZXJyY29kZTsKLSAgIGNoYXIgKmVuZHB0cjsKLSAKLS0vKiBFbnN1cmUgdGhlIHJlbGV2YW50IG5vbi04LWJpdCBidWZmZXIgaXMgYXZhaWxhYmxlLiAqLwotKy8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuIEVuc3VyZSB0aGF0IGl0IGlzIGF0IAotK2xlYXN0IDEyOCBjb2RlIHVuaXRzLCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHJpZXZpbmcgZXJyb3IgbWVzc2FnZXMuICovCi0gCi0gI2lmZGVmIFNVUFBPUlRfUENSRTJfMTYKLSAgIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpCi1AQCAtNzYyMCw3ICs3NjI0LDcgQEAKLSAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8zMgotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMzJfTU9ERSkKLSAgICAgewotLSAgICBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKLSsgICAgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7Ci0gICAgIHBidWZmZXIzMiA9ICh1aW50MzJfdCAqKW1hbGxvYyhwYnVmZmVyMzJfc2l6ZSk7Ci0gICAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvcGNyZS1jcm9zcy5wYXRjaAppbmRleCA5NTE2Y2FmLi44NzFjZGZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL3BjcmUtY3Jvc3MucGF0Y2gKQEAgLTksMTEgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzOGYxZDQxLi4yYmRlMDgzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjk4LDkgKzI5OCwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZworSW5kZXg6IHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNyZTItMTAuMzAub3JpZy9NYWtlZmlsZS5hbQorKysrIHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCitAQCAtMzI1LDkgKzMyNSwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZwogICMjIHRvIGNvcHkgYSBkaXN0cmlidXRlZCBzZXQgb2YgdGFibGVzIHRoYXQgYXJlIGRlZmluZWQgZm9yIEFTQ0lJIGNvZGUuIEluIHRoaXMKICAjIyBjYXNlLCBkZnRhYmxlcyBpcyBub3QgbmVlZGVkLgogIApAQCAtMzUsMTMgKzM1LDEzIEBACiAgc3JjL3BjcmUyX2NoYXJ0YWJsZXMuYzogZGZ0YWJsZXMkKEVYRUVYVCkKICAJcm0gLWYgJEAKICAJLi9kZnRhYmxlcyQoRVhFRVhUKSAkQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZDdjNTdhYS4uZDZlYjBhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTksNiArNTksMjMgQEAgdGhlbgotICAgZmkKLSBmaQorSW5kZXg6IHBjcmUyLTEwLjMwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBjcmUyLTEwLjMwLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGNyZTItMTAuMzAvY29uZmlndXJlLmFjCitAQCAtNjAsNiArNjAsMjMgQEAgZmkKKyAjIFRoaXMgaXMgYSBuZXcgdGhpbmcgcmVxdWlyZWQgdG8gc3RvcCBhIHdhcm5pbmcgZnJvbSBhdXRvbWFrZSAxLjEyCisgbTRfaWZkZWYoW0FNX1BST0dfQVJdLCBbQU1fUFJPR19BUl0pCiAgCiAraWYgdGVzdCB4IiRjcm9zc19jb21waWxpbmciID0geHllczsgdGhlbgogKyAgICBDQ19GT1JfQlVJTEQ9IiR7Q0NfRk9SX0JVSUxELWdjY30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJiMDI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zZGUzNGRmNDllMWZlM2MzYjU5YTA4ZGZmMjE0NDg4YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyY2QwMGNhN2UyNDA0OTA0MDA5OWIwYTQ2YmIzNjQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzc5YjkxODc3MWYwMmQzMzk2OGJkMzRhNzQ5YWQ3NDg3ZmExMDE0YWViNzg3ZmFkMjlkZDM5MmI3OGM1NmUiCi0KLUNWRV9QUk9EVUNUID0gInBjcmUyIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlMiIKLURFUEVORFMgKz0gImJ6aXAyIHpsaWIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSIKLQotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgotQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCi1DWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCi0KLWV4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCi0KLVBBQ0tBR0VTID0rICJwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKLQotU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YzJkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTEyZDU1ZTE1YTBjNmRhNWM2NDViYTQwMzgyYmQzMjkzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2FkZjRiMTMwZWVkODU0YTUzMDM5MGYwMDAyMGE2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGJkNDFjNjA1ZDMwZTM3NDU3NzFlYjgxOTI4ZDc3OWYxNTgwODFhNTFiMmYzMTRiYmNjMWY3M2RlNTc3M2RiIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgppbmRleCAwZWFlZDE4Li4wMTg3YzA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCkBAIC04MCw0ICs4MCw4IEBACiAJZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAogCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAogCWRvbmUKKwkjIFNraXAgdGhlIGZyX0ZSIGxvY2FsZSB0ZXN0LiBJZiB0aGUgbG9jYWxlIGZyX0ZSIGlzIGZvdW5kLCBpdCBpcyB0ZXN0ZWQuCisJIyBJZiBub3QgZm91bmQsIHRoZSB0ZXN0IGlzIHNraXBwZWQuIFRoZSB0ZXN0IHByb2dyYW0gYXNzdW1lcyBmcl9GUiBpcyBub24tVVRGLTgKKwkjIGxvY2FsZSBzbyB0aGUgdGVzdCBmYWlscyBpZiBmcl9GUiBpcyBVVEYtOCBsb2NhbGUuCisJc2VkIC1pIC1lICdzOmRvMz15ZXM6ZG8zPW5vOmcnICR7RH0ke1BURVNUX1BBVEh9L1J1blRlc3QgCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMzOWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvaXNzdWVzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91dGlscy9wcm94eS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTU1MTUyYTEwMDZkN2RhZmJlZjMyYmFmOWMzMGE5OWMwIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzUxNGY3OGY1NDMyMjEwZTE3YTAxYjZiNjE4ZGRlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjVkMDQ2ODUwMzQ2YTUwNWMwNjE3NjQ2ZjFlNjhiNjYwMDkyZWZhZGY2NjU1NDhhODljMjgwOTAwMjYyZWE2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGlicHJveHktKD9QPHB2ZXI+LiopXC50YXIiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dub21lJywgJycsIGQpfSBnbm9tZTMiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRFdJVEhfR05PTUU9eWVzLC1EV0lUSF9HTk9NRT1ubyxnY29uZiIKLVBBQ0tBR0VDT05GSUdbZ25vbWUzXSA9ICItRFdJVEhfR05PTUUzPXllcywtRFdJVEhfR05PTUUzPW5vIgotCi1FWFRSQV9PRUNNQUtFICs9ICIgXAotICAgIC1EV0lUSF9LREU0PW5vIFwKLSAgICAtRFdJVEhfTU9aSlM9bm8gXAotICAgIC1EV0lUSF9OTT1ubyBcCi0gICAgLURXSVRIX1BFUkw9bm8gXAotICAgIC1EV0lUSF9QWVRIT049bm8gXAotICAgIC1EV0lUSF9XRUJLSVQ9bm8gXAotICAgIC1ETElCX0lOU1RBTExfRElSPSR7bGliZGlyfSBcCi0gICAgLURMSUJFWEVDX0lOU1RBTExfRElSPSR7bGliZXhlY2Rpcn0gXAotIgotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vJHtQVn0vbW9kdWxlcyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MWM5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgYXV0b21hdGljIHByb3h5IGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXRpbHMvcHJveHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT01NTE1MmExMDA2ZDdkYWZiZWYzMmJhZjljMzBhOTljMCIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZjZiMWQyYTFlMTdhOTljZDNkZWJhYWU2ZDA0YWIxNTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU0ZGI0NjQxMjBjOTUzNDY1NDU5MGI2NjgzYzdmYTM4ODdiM2RhZDBjYTFjNGNkNDEyYWYyNGZiZmNhNmQ0ZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnByb3h5LSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbm9tZScsICcnLCBkKX0gZ25vbWUzIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURXSVRIX0dOT01FPXllcywtRFdJVEhfR05PTUU9bm8sZ2NvbmYiCitQQUNLQUdFQ09ORklHW2dub21lM10gPSAiLURXSVRIX0dOT01FMz15ZXMsLURXSVRIX0dOT01FMz1ubyIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRFdJVEhfS0RFND1ubyBcCisgICAgLURXSVRIX01PWkpTPW5vIFwKKyAgICAtRFdJVEhfTk09bm8gXAorICAgIC1EV0lUSF9QRVJMPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OPW5vIFwKKyAgICAtRFdJVEhfV0VCS0lUPW5vIFwKKyAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAorICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKKyIKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5Zjk1ZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWIzM2FkYjQ1OWMyMjgzZWZjNWM3ZDA5Y2NkYmJjZmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMzAwY2ExYjFiZjhhM2JiZjJmNzg4MjAzMjg3ZmY4NjI1NDJkNGZjMDQ4ZjE5YTkyYTA2OGEyN2QxN2I3MiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmU3ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRjZjg5MzdkMTYxZDNkZDcxYTY1ZjE2ODRlMzE3ODI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMGRjNzYyZjIzYWJlNGUwZDI5Yjc3MzcwZTUzOWZkMzVmMzFkOGU4ZTAzMThkNmRkY2NmZjM5NWJlNjhhMjIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKaW5kZXggZDQ0ODkxNi4uOWU4Y2UyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmcvaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gOGQ5OWEzNjg2MTU2NTZhODM1ZjU1MDIzMjZhZmQzMWNlYzJjZWJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzA1NjIwNjViYTllNGMyMzhlNzYxMDBiNWY5ZjBjNWFkZDBlNjM1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE2IFNlcCAyMDEzIDE4OjE2OjEyICswODAwCitEYXRlOiBUdWUsIDUgRGVjIDIwMTcgMDk6MzA6MzYgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCiAKIFJlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKQEAgLTEzLDI4ICsxMyw0NCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gZ251bGliLW00L2ljb252Lm00IHwgICAxMSAtLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKy0tLQorIGdudWxpYi1tNC9pY29udi5tNCB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlidW5pc3RyaW5nLTAuOS40L2dudWxpYi1tNC9pY29udi5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnVuaXN0cmluZy0wLjkuNC5vcmlnL2dudWxpYi1tNC9pY29udi5tNAkyMDE0LTExLTAzIDE3OjQxOjI5Ljc1NTAxMTkxNyArMDAwMAotKysrIGxpYnVuaXN0cmluZy0wLjkuNC9nbnVsaWItbTQvaWNvbnYubTQJMjAxNC0xMS0wMyAxNzo0MzowMy43OTUwMTQ0ODAgKzAwMDAKLUBAIC0xNTksMTcgKzE1OSw2IEBACitkaWZmIC0tZ2l0IGEvZ251bGliLW00L2ljb252Lm00IGIvZ251bGliLW00L2ljb252Lm00CitpbmRleCBiMzNlY2QwLi43M2I2YWExIDEwMDY0NAorLS0tIGEvZ251bGliLW00L2ljb252Lm00CisrKysgYi9nbnVsaWItbTQvaWNvbnYubTQKK0BAIC0xNjUsMjkgKzE2NSw2IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKICAgICAgICB9CiAgICB9CiAgI2VuZGlmCiAtICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKIC0gICAgIHByb3ZpZGVkLiAgKi8KLS0gIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KLS0gICAgICBpY29udl9vcGVuICgiVVRGLTgiLCAiRVVDLUpQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCi0tICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBBSVggbmFtZXMuICAqLwotLSAgICAgICYmIGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpCi0tICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLS0gICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0tICAgIHJlc3VsdCB8PSAxNjsKKy0gIHsKKy0gICAgLyogVHJ5IHN0YW5kYXJkaXplZCBuYW1lcy4gICovCistICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworLSAgICAvKiBUcnkgSVJJWCwgT1NGLzEgbmFtZXMuICAqLworLSAgICBpY29udl90IGNkMiA9IGljb252X29wZW4gKCJVVEYtOCIsICJldWNKUCIpOworLSAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDMgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiSUJNLWV1Y0pQIik7CistICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCistICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKy0gICAgaWYgKGNkMSA9PSAoaWNvbnZfdCkoLTEpICYmIGNkMiA9PSAoaWNvbnZfdCkoLTEpCistICAgICAgICAmJiBjZDMgPT0gKGljb252X3QpKC0xKSAmJiBjZDQgPT0gKGljb252X3QpKC0xKSkKKy0gICAgICByZXN1bHQgfD0gMTY7CistICAgIGlmIChjZDEgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2QxKTsKKy0gICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIGljb252X2Nsb3NlIChjZDIpOworLSAgICBpZiAoY2QzICE9IChpY29udl90KSgtMSkpCistICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CistICAgIGlmIChjZDQgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2Q0KTsKKy0gIH0KICAgIHJldHVybiByZXN1bHQ7Ci0gfV1dKV0sCi0gICAgICAgICBbYW1fY3ZfZnVuY19pY29udl93b3Jrcz15ZXNdLAorIF1dKV0sCisgICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sICwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3YTIxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKLQotREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCi0gY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAotIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAotIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAotIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCi0gcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCi0gQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAotIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCi0gVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCi0gc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1iODZjOWZkN2FjYWFjNjIzMDE3MjM5NjQwNjMxOTEyYyBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjhlNjYzNDU0YWEzNzIxODFlZThlNDZlZGFhM2JhNGM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZTA4MWNiZWUxOTUxYjU1NTk3YjMwZTcwMzBiZGE5ZDdiMmYwMzRlZjkwMWExMzVmZjNhMDIwYmU1YTQxZTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI3Y2JhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKKworREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCisgY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAorIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAorIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAorIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCisgcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCisgQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAorIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCisgVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCisgc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1lZmI4MGEzNzk5YTYwZjk1ZmVhZjgwNjYxZDRmMjA0YyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjRmNjg5ZTM3ZTRjM2JkNjdkZTU3ODZhYTUxZDk4YjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1ZTkwYzA4ZjllNTQyN2NhM2EyYzBjNTNmMTlhYTM4YjI1YzUwMDkxMzUxMGFkMjVhZmVmODY0NDhiZWE4NGEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKaW5kZXggMGRmZjJjOC4uYzhmYWNhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKQEAgLTI4LDEwICsyOCwxMCBAQAogIGluY2x1ZGUvbGlidW53aW5kX2kuaCB8IDEgKwogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCA0OTdmN2MyLi45YzE1YWYxIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvYWNpbmNsdWRlLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvYWNpbmNsdWRlLm00CisrKysgbGlidW53aW5kLTEuMi4xL2FjaW5jbHVkZS5tNAogQEAgLTIyLDExICsyMiw1IEBAIGZpXSkKICBBQ19ERUZVTihbQ0hFQ0tfQVRPTUlDX09QU10sCiAgW2RubCBDaGVjayB3aGV0aGVyIHRoZSBzeXN0ZW0gaGFzIHRoZSBhdG9taWNfb3BzIHBhY2thZ2UgaW5zdGFsbGVkLgpAQCAtNDUsMTggKzQ1LDE1IEBACiAtIyAgQUNfQ0hFQ0tfTElCKGF0b21pY19vcHMsIG1haW4pCiArICBBQ19DSEVDS19MSUIoYXRvbWljX29wcywgbWFpbikKICBdKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlidW53aW5kX2kuaCBiL2luY2x1ZGUvbGlidW53aW5kX2kuaAotaW5kZXggMjNmNjE1ZS4uZGVhYmRmZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGlidW53aW5kX2kuaAotKysrIGIvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi1AQCAtOTUsNiArOTUsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0gCShwdGhyZWFkX211dGV4X3VubG9jayAhPSBOVUxMID8gcHRocmVhZF9tdXRleF91bmxvY2sgKGwpIDogMCkKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvaW5jbHVkZS9saWJ1bndpbmRfaS5oCisrKysgbGlidW53aW5kLTEuMi4xL2luY2x1ZGUvbGlidW53aW5kX2kuaAorQEAgLTExNiw2ICsxMTYsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFCisgICAgICAgICAocHRocmVhZF9tdXRleF91bmxvY2sgIT0gTlVMTCA/IHB0aHJlYWRfbXV0ZXhfdW5sb2NrIChsKSA6IDApCiAgCiAgI2lmZGVmIEhBVkVfQVRPTUlDX09QU19ICiArIyBkZWZpbmUgQU9fUkVRVUlSRV9DQVMKICAjIGluY2x1ZGUgPGF0b21pY19vcHMuaD4KICBzdGF0aWMgaW5saW5lIGludAogIGNtcHhjaGdfcHRyICh2b2lkICphZGRyLCB2b2lkICpvbGQsIHZvaWQgKm5ldykKLS0tIAotMS45LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvZml4LW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyMjIzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDVmMzU0Y2I3YjljODRkYWUwMDZmMGViZDhhZDdhNzhkN2UyYWFkMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZlIFdhdHNvbiA8ZGF2ZWp3YXRzb25AZmIuY29tPgotRGF0ZTogV2VkLCAyNSBKYW4gMjAxNyAxNjoxODowMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBtaXBzL3RpbGVneDogQWRkIG1pc3NpbmcgdW53aW5kX2kuaCBoZWFkZXIgZmlsZQotCi1yZXBvcnRlZC1ieTogSm9obiBLbmlnaHQgPEpvaG4uS25pZ2h0QGJlbGtpbi5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1ZDg3NDc1NS4uN2RlNGM0MjUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTI4MCw3ICsyODAsNyBAQCBsaWJ1bndpbmRfaHBwYV9sYV9TT1VSQ0VTX2hwcGEgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2hwcGFfY29tbW9uKQlcCi0gCWhwcGEvR3Jlc3VtZS5jIGhwcGEvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLW1pcHM6Ci0tbm9pbnN0X0hFQURFUlMgKz0gbWlwcy9pbml0LmggbWlwcy9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSBtaXBzL2luaXQuaCBtaXBzL29mZnNldHMuaCBtaXBzL3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbiA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfY29tbW9uKQkgICAgXAotIAltaXBzL2lzX2ZwcmVnLmMgbWlwcy9yZWduYW1lLmMKLSAKLUBAIC0yOTksNyArMjk5LDcgQEAgbGlidW53aW5kX21pcHNfbGFfU09VUkNFU19taXBzID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbikJICAgIFwKLSAJbWlwcy9HaXNfc2lnbmFsX2ZyYW1lLmMgbWlwcy9HcmVncy5jIG1pcHMvR3Jlc3VtZS5jIG1pcHMvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLXRpbGVneDoKLS1ub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmggdGlsZWd4L3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU190aWxlZ3hfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi0gCXRpbGVneC9pc19mcHJlZy5jIHRpbGVneC9yZWduYW1lLmMKLSAKLWRpZmYgLS1naXQgYS9zcmMvbWlwcy91bndpbmRfaS5oIGIvc3JjL21pcHMvdW53aW5kX2kuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMzODJkY2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9taXBzL3Vud2luZF9pLmgKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2lmbmRlZiB1bndpbmRfaV9oCi0rI2RlZmluZSB1bndpbmRfaV9oCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKwotKyNpbmNsdWRlIDxsaWJ1bndpbmQtbWlwcy5oPgotKwotKyNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgotKwotKyNkZWZpbmUgbWlwc19sb2NrICAgICAgICAgICAgICAgICAgICAgICBVTldfT0JKKGxvY2spCi0rI2RlZmluZSBtaXBzX2xvY2FsX3Jlc3VtZSAgICAgICAgICAgICAgIFVOV19PQkoobG9jYWxfcmVzdW1lKQotKyNkZWZpbmUgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgICAgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IG1pcHNfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpOwotKwotKyNlbmRpZiAvKiB1bndpbmRfaV9oICovCi1kaWZmIC0tZ2l0IGEvc3JjL3RpbGVneC91bndpbmRfaS5oIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWFjN2JlMwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpZm5kZWYgdW53aW5kX2lfaAotKyNkZWZpbmUgdW53aW5kX2lfaAotKwotKyNpbmNsdWRlIDxtZW1vcnkuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCi0rI2luY2x1ZGUgPGxpYnVud2luZC10aWxlZ3guaD4KLSsKLSsjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKLSsKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9yZXN1bWUgICAgICAgICAgICBVTldfT0JKKGxvY2FsX3Jlc3VtZSkKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IHRpbGVneF9sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgdGlsZWd4X2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAodm9pZCk7Ci0rCi0rI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhNzYyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgbGlidW53aW5kLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMDZiYTllNjBkOTJmZDZmNTVjZDlkYWRiMDg0ZGYxOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2YzZWNiOTBlMjhjYmU1M2ZiYTdhNGEyN2NjY2U3YWFkMTg4ZDMyMTBiYjE5NjRhOTIzYTczMWEyN2E3NWFjYiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcy9saWJ1bndpbmQvbGlidW53aW5kLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0xERkxBR1MgKz0gIi1XbCwteixyZWxybywteixub3cgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzMTJmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGxpYnVud2luZC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVlZmNiNWQ3Zjc4ZmRjOGYxZWQxNzJhMjZlYTQyMDJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTM4ZmZiZGM4OGJkNjk0ZDEwMDgxODY1ODcxY2QyYmZiYjAyYWQ4ZWY5ZTE2MDZhZWUxOGQ2NTUzMmI5OTIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbGlidW53aW5kL2xpYnVud2luZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWNiMjBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY5ZGFiODViNjkyOWMzNzgzMzhiOTUwNGFkYzZhZWE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYjU4YTdiYTUxNTExOTgwODdmMDI1ZGM4ZDE5ZDg5MThlOWM2ZDU2NzcyZjAzOTY5NmMxMTFkOWFhZDMxOTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5YzA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODFhMmY5MmZkYzM5YzQwYWQ2Yjc2ZjY2MzFmZGJkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzA5MjIwYmU0NDM1ZGMyN2ZjZDIyZDI5MTcwN2I5NGI5N2YxNTllMGM0NDJmYmNkNjBjMTY4ZjhmNzllYjA2IgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2FhYWNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1DaGVjay1mb3ItaW50ZWdlci1vdmVyZmxvdy1pbi14c2x0QWRkVGV4dFN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gMDhhYjI3NzRiODcwZGUxYzdiNWE0ODY5M2RmNzVlODE1NGFkZGFlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgV2VsbG5ob2ZlciA8d2VsbG5ob2ZlckBhZXZ1bS5kZT4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTU6Mzk6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgaW4geHNsdEFkZFRleHRTdHJpbmcKLQotTGltaXQgYnVmZmVyIHNpemUgaW4geHNsdEFkZFRleHRTdHJpbmcgdG8gSU5UX01BWC4gVGhlIGlzc3VlIGNhbiBiZQotZXhwbG9pdGVkIHRvIHRyaWdnZXIgYW4gb3V0IG9mIGJvdW5kcyB3cml0ZSBvbiA2NC1iaXQgc3lzdGVtcy4KLQotT3JpZ2luYWxseSByZXBvcnRlZCB0byBDaHJvbWl1bToKLQotaHR0cHM6Ly9jcmJ1Zy5jb20vNjc2NjIzCi0KLUNWRTogQ1ZFLTIwMTctNTAyOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0dXMuY29tPgotCi0tLS0KLSBsaWJ4c2x0L3RyYW5zZm9ybS5jICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJ4c2x0L3hzbHRJbnRlcm5hbHMuaCB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ4c2x0L3RyYW5zZm9ybS5jIGIvbGlieHNsdC90cmFuc2Zvcm0uYwotaW5kZXggNTE5MTMzZi4uMDJiZmYzNCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvdHJhbnNmb3JtLmMKLSsrKyBiL2xpYnhzbHQvdHJhbnNmb3JtLmMKLUBAIC04MTMsMTMgKzgxMywzMiBAQCB4c2x0QWRkVGV4dFN0cmluZyh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjdHh0LCB4bWxOb2RlUHRyIHRhcmdldCwKLSAgICAgICAgIHJldHVybih0YXJnZXQpOwotIAotICAgICBpZiAoY3R4dC0+bGFzdHRleHQgPT0gdGFyZ2V0LT5jb250ZW50KSB7Ci0rICAgICAgICBpbnQgbWluU2l6ZTsKLSAKLS0JaWYgKGN0eHQtPmxhc3R0dXNlICsgbGVuID49IGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgYWNjb3VudGluZyBmb3IgTlVMIHRlcm1pbmF0b3IuICovCi0rICAgICAgICBpZiAobGVuID49IElOVF9NQVggLSBjdHh0LT5sYXN0dHVzZSkgewotKyAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi0rICAgICAgICAgICAgICAgICJ4c2x0Q29weVRleHQ6IHRleHQgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwotKyAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsgICAgICAgIH0KLSsgICAgICAgIG1pblNpemUgPSBjdHh0LT5sYXN0dHVzZSArIGxlbiArIDE7Ci0rCi0rICAgICAgICBpZiAoY3R4dC0+bGFzdHRzaXplIDwgbWluU2l6ZSkgewotIAkgICAgeG1sQ2hhciAqbmV3YnVmOwotIAkgICAgaW50IHNpemU7Ci0rICAgICAgICAgICAgaW50IGV4dHJhOwotKwotKyAgICAgICAgICAgIC8qIERvdWJsZSBidWZmZXIgc2l6ZSBidXQgaW5jcmVhc2UgYnkgYXQgbGVhc3QgMTAwIGJ5dGVzLiAqLwotKyAgICAgICAgICAgIGV4dHJhID0gbWluU2l6ZSA8IDEwMCA/IDEwMCA6IG1pblNpemU7Ci0rCi0rICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cuICovCi0rICAgICAgICAgICAgaWYgKGV4dHJhID4gSU5UX01BWCAtIGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNpemUgPSBjdHh0LT5sYXN0dHNpemUgKyBleHRyYTsKLSsgICAgICAgICAgICB9Ci0gCi0tCSAgICBzaXplID0gY3R4dC0+bGFzdHRzaXplICsgbGVuICsgMTAwOwotLQkgICAgc2l6ZSAqPSAyOwotIAkgICAgbmV3YnVmID0gKHhtbENoYXIgKikgeG1sUmVhbGxvYyh0YXJnZXQtPmNvbnRlbnQsc2l6ZSk7Ci0gCSAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKLSAJCXhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi1kaWZmIC0tZ2l0IGEvbGlieHNsdC94c2x0SW50ZXJuYWxzLmggYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotaW5kZXggMDYwYjE3OC4uNWFkMTc3MSAxMDA2NDQKLS0tLSBhL2xpYnhzbHQveHNsdEludGVybmFscy5oCi0rKysgYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotQEAgLTE3NTQsOCArMTc1NCw4IEBAIHN0cnVjdCBfeHNsdFRyYW5zZm9ybUNvbnRleHQgewotICAgICAgKiBTcGVlZCBvcHRpbWl6YXRpb24gd2hlbiBjb2FsZXNjaW5nIHRleHQgbm9kZXMKLSAgICAgICovCi0gICAgIGNvbnN0IHhtbENoYXIgICpsYXN0dGV4dDsJCS8qIGxhc3QgdGV4dCBub2RlIGNvbnRlbnQgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0c2l6ZTsJCS8qIGxhc3QgdGV4dCBub2RlIHNpemUgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0dXNlOwkJLyogbGFzdCB0ZXh0IG5vZGUgdXNlICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHNpemU7CQkvKiBsYXN0IHRleHQgbm9kZSBzaXplICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHVzZTsJCS8qIGxhc3QgdGV4dCBub2RlIHVzZSAqLwotICAgICAvKgotICAgICAgKiBQZXIgQ29udGV4dCBEZWJ1Z2dpbmcKLSAgICAgICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmZmZWJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDQ4N2UyZjdlMzVkYWQzZGVlYzc5NzhjZTQ0NzhhM2Q0ZWE1MDcwZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAxNDoyNjo1OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBMaW5rIGxpYnJhcmllcyB3aXRoIGxpYm0KLQotT3RoZXJ3aXNlIGxpbmtpbmcgdGhlIHJlc3VsdGluZyBsaWJyYXJpZXMgdG8gYSBiaW5hcnkgKGUuZy4geHNsdHByb2MpCi1mYWlscyB3aGVuIHVzaW5nIGdvbGQgbGlua2VyOgotfMKgLi4vbGlieHNsdC8ubGlicy9saWJ4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZm1vZCcKLXzCoC4uL2xpYnhzbHQvLmxpYnMvbGlieHNsdC5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3BvdycKLXzCoC4uL2xpYmV4c2x0Ly5saWJzL2xpYmV4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZmxvb3InCi18wqBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21haWxpbmcgbGlzdCwgRmViIDEwIDIwMTddCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gbGliZXhzbHQvTWFrZWZpbGUuYW0gfCAyICstCi0gbGlieHNsdC9NYWtlZmlsZS5hbSAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJleHNsdC9NYWtlZmlsZS5hbSBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1pbmRleCAxY2Y1MTM4Li41NDQ5NTI0IDEwMDY0NAotLS0tIGEvbGliZXhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1AQCAtMjcsNyArMjcsNyBAQCBsaWJleHNsdF9sYV9TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgXAotIAlsaWJleHNsdC5oCQkJXAotIAlkeW5hbWljLmMKLSAKLS1saWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykKLStsaWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykgJChNX0xJQlMpCi0gbGliZXhzbHRfbGFfTERGTEFHUyA9ICQoV0lOMzJfRVhUUkFfTERGTEFHUykgLXZlcnNpb24taW5mbyAkKExJQkVYU0xUX1ZFUlNJT05fSU5GTykKLSAKLSBtYW5fTUFOUyA9IGxpYmV4c2x0LjMKLWRpZmYgLS1naXQgYS9saWJ4c2x0L01ha2VmaWxlLmFtIGIvbGlieHNsdC9NYWtlZmlsZS5hbQotaW5kZXggZDlmZWQ2OC4uOWQ0NGMzZCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnhzbHQvTWFrZWZpbGUuYW0KLUBAIC02Miw3ICs2Miw3IEBAIGVsc2UKLSBMSUJYU0xUX1ZFUlNJT05fU0NSSVBUID0KLSBlbmRpZgotIAotLWxpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChFWFRSQV9MSUJTKQotK2xpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChNX0xJQlMpICQoRVhUUkFfTElCUykKLSBsaWJ4c2x0X2xhX0xERkxBR1MgPQkJCQkJXAotIAkJJChXSU4zMl9FWFRSQV9MREZMQUdTKQkJCVwKLSAJCSQoTElCWFNMVF9WRVJTSU9OX1NDUklQVCkJCVwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTg2NzA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLWdjcnlwdC1hbmQtbGlieG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGVkNzFhYzk1NDhhMmJiNmVjZDJkYzVhZDg4MGM2MDQ5NzVmODcyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMiBKdW4gMjAxNiAxNDoyMDowNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIGdjcnlwdCBhbmQgbGlieG1sMi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtsaWJ4bWwyIGlzIHVwc3RyZWFtYWJsZV0KLQotUlAgMjAxNC81LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNzAgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA4YmRmNDVhLi4wYjJiMzEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0zNzcsNiArMzc3LDggQEAgQUNfU1VCU1QocHl0aG9uZGlyKQotIEFDX1NVQlNUKFBZVEhPTl9TVUJESVIpCi0gQUNfU1VCU1QoUFlUSE9OX0xJQlMpCi0gCi0rUEtHX1BST0dfUEtHX0NPTkZJRwotKwotIEFDX0FSR19XSVRIKGNyeXB0bywgWyAgLS13aXRoLWNyeXB0byAgICAgICAgICAgQWRkIGNyeXB0byBzdXBwb3J0IHRvIGV4c2x0IChvbildKQotIFdJVEhfQ1JZUFRPPTAKLSBDUllQVE9fVEVTVERJUj0KLUBAIC0zOTQsMjcgKzM5NiwxNCBAQCBjYXNlICRob3N0IGluCi0gICAgIENSWVBUT19URVNURElSPWNyeXB0bwotICAgICA7OwotICAgKikKLS0gICAgQUNfUEFUSF9UT09MKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQotLSAgICBpZiB0ZXN0ICIkTElCR0NSWVBUX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgICBMSUJHQ1JZUFRfVkVSU0lPTj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAotLSAgICAgIGlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkTElCR0NSWVBUX1ZFUlNJT04pIC1sdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICIxLjEuNDIiKQotLSAgICAgIHRoZW4KLS0gICAgICAgIExJQkdDUllQVF9DRkxBR1M9IiIKLS0gICAgICAgIExJQkdDUllQVF9MSUJTPSIiCi0tICAgICAgICBlY2hvICdnY3J5cHQgbGlicmFyeSB2ZXJzaW9uIDwgMS4xLjQyIC0gQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLicKLS0gICAgICBlbHNlCi0tICAgICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAkbGliZ2NyeXB0X2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAotLSAgICAgICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHICRsaWJnY3J5cHRfY29uZmlnX2FyZ3MgLS1saWJzYAotLSAgICAgICAgQUNfREVGSU5FKEhBVkVfR0NSWVBULCAxLCBbRGVmaW5lIGlmIGdjcnlwdCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS5dKQotLSAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBiZSBhdmFpbGFibGUuJwotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHQ1JZUFQsIFtsaWJnY3J5cHQgPj0gMS4xLjQyXSwgWwotKyAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9HQ1JZUFQsIDEsIFtEZWZpbmUgaWYgZ2NyeXB0IGxpYnJhcnkgaXMgYXZhaWxhYmxlLl0pCi0rICAgICAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgYmUgYXZhaWxhYmxlLicKLSAgICAgICAgIFdJVEhfQ1JZUFRPPTEKLSAgICAgICAgIENSWVBUT19URVNURElSPWNyeXB0bwotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCi0tICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEluc3RhbGwgbGliZ2NyeXB0IGFuZCByZWNvbmZpZ3VyZSB0byBtYWtlIGF2YWlsYWJsZS4nCi0tICAgIGZpCi0rICAgICAgIF0sIFsKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0YWxsIGxpYmdjcnlwdCA+PSAxLjEuNDIgYW5kIHJlY29uZmlndXJlIHRvIG1ha2UgYXZhaWxhYmxlLicKLSsgICAgICAgIF0pCi0gZXNhYwotIGZpCi0gQUNfU1VCU1QoV0lUSF9DUllQVE8pCi1AQCAtNDc2LDI0ICs0NjUsOCBAQCBkbmwgb3JpZ2luYWwgd29yayAtIE1hdGhpZXUgTGFjYWdlIDMwLzAzLzIwMDAKLSBkbmwgc29tZSB0d2Vha2luZyAtIERhdmlkIEjDpHJkZW1hbiAzMC8xMC8yMDAxCi0gZG5sCi0gCi0tTElCWE1MX0NPTkZJR19QUkVGSVg9IiIKLSBMSUJYTUxfU1JDPSIiCi0gCi0tQUNfQVJHX1dJVEgobGlieG1sLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtcHJlZml4PVtQRlhdCQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBjb25maWddLAotLQlMSUJYTUxfQ09ORklHX1BSRUZJWD0kd2l0aHZhbAotLSkKLS0gICAgICAgIAotLUFDX0FSR19XSVRIKGxpYnhtbC1pbmNsdWRlLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtaW5jbHVkZS1wcmVmaXg9W1BGWF0JU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgaGVhZGVyc10sCi0tICAgICAgICBMSUJYTUxfQ0ZMQUdTPSItSSR3aXRodmFsIgotLSkKLS0KLS1BQ19BUkdfV0lUSChsaWJ4bWwtbGlicy1wcmVmaXgsCi0tICAgICAgICBbICAtLXdpdGgtbGlieG1sLWxpYnMtcHJlZml4PVtQRlhdCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGxpYnNdLAotLSAgICAgICAgTElCWE1MX0xJQlM9Ii1MJHdpdGh2YWwiCi0tKQotLQotIEFDX0FSR19XSVRIKGxpYnhtbC1zcmMsCi0gCVsgIC0td2l0aC1saWJ4bWwtc3JjPVtESVJdICAgICAgICAgICAgICBGb3IgbGlieG1sIHRoYXRzIG5vdCBpbnN0YWxsZWQgeWV0IChzZXRzIGFsbCB0aHJlZSBhYm92ZSldLAotIAlMSUJYTUxfU1JDPSIkd2l0aHZhbCIKLUBAIC01NTYsMjggKzUyOSw5IEBAIHRoZW4KLSAJZmkKLSBmaQotIAotLWRubAotLWRubCBtYWtlIHN1cmUgeG1sMi1jb25maWcgaXMgZXhlY3V0YWJsZSwKLS1kbmwgdGVzdCB2ZXJzaW9uIGFuZCBpbml0IG91ciB2YXJpYWJsZXMKLS1kbmwKLS0KLS1pZiAke1hNTF9DT05GSUd9IC0tbGlicyBwcmludCA+IC9kZXYvbnVsbCAyPiYxCi0tdGhlbgotLQlYTUxWRVJTPWAkWE1MX0NPTkZJRyAtLXZlcnNpb25gCi0tCWlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkWE1MVkVSUykgLWdlIFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OKQotLQl0aGVuCi0tCQlBQ19NU0dfUkVTVUxUKCRYTUxWRVJTIGZvdW5kKQotLQllbHNlCi0tCQlBQ19NU0dfRVJST1IoVmVyc2lvbiAkWE1MVkVSUyBmb3VuZC4gWW91IG5lZWQgYXQgbGVhc3QgbGlieG1sMiAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04gZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJ4c2x0KQotLQlmaQotLQlMSUJYTUxfTElCUz0iJExJQlhNTF9MSUJTIGAkWE1MX0NPTkZJRyAtLWxpYnNgIgotLQlpZiB0ZXN0ICJ4JExJQlhNTF9TUkMiID0gIngiOyB0aGVuCi0tCQlMSUJYTUxfQ0ZMQUdTPSIkTElCWE1MX0NGTEFHUyBgJFhNTF9DT05GSUcgLS1jZmxhZ3NgIgotLQlmaQotLWVsc2UKLS0JQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ4bWwyIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSkKLS1maQotLQotK1BLR19DSEVDS19NT0RVTEVTKExJQlhNTCwgW2xpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OXSwsCi0rICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSldCi0rKQotIAotIEFDX1NVQlNUKENGTEFHUykKLSBBQ19TVUJTVChDUFBGTEFHUykKLUBAIC02MDIsNyArNTU2LDcgQEAgZmkKLSAKLSBpZiB0ZXN0ICIkd2l0aF9wbHVnaW5zIiA9ICJ5ZXMiIDsgdGhlbgotICAgQUNfTVNHX0NIRUNLSU5HKFtsaWJ4bWwyIG1vZHVsZSBzdXBwb3J0XSkKLS0gIFdJVEhfTU9EVUxFUz0iYCRYTUxfQ09ORklHIC0tbW9kdWxlc2AiCi0rICBXSVRIX01PRFVMRVM9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1vZHVsZXMgbGlieG1sLTIuMGAiCi0gICBpZiB0ZXN0ICIke1dJVEhfTU9EVUxFU30iID0gIjEiOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgZWxzZQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YTgwMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9wa2djb25maWdfZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYmV4c2x0LnBjLmluCi0rKysgbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLUBAIC04LDUgKzgsNSBAQCBOYW1lOiBsaWJleHNsdAotIFZlcnNpb246IEBMSUJFWFNMVF9WRVJTSU9OQAotIERlc2NyaXB0aW9uOiBFWFNMVCBFeHRlbnNpb24gbGlicmFyeQotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQEVYU0xUX0xJQkRJUkAgQEVYU0xUX0xJQlNACi0rTGliczogLWxleHNsdCBARVhTTFRfTElCRElSQCBARVhTTFRfTElCU0AKLSBDZmxhZ3M6IEBFWFNMVF9JTkNMVURFRElSQAotSW5kZXg6IGxpYnhzbHQtMS4xLjI3L2xpYnhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYnhzbHQucGMuaW4KLSsrKyBsaWJ4c2x0LTEuMS4yNy9saWJ4c2x0LnBjLmluCi1AQCAtOCw1ICs4LDUgQEAgTmFtZTogbGlieHNsdAotIFZlcnNpb246IEBWRVJTSU9OQAotIERlc2NyaXB0aW9uOiBYU0xUIGxpYnJhcnkgdmVyc2lvbiAyLgotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLStMaWJzOiAtbHhzbHQgQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLSBDZmxhZ3M6IEBYU0xUX0lOQ0xVREVESVJACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjExYmMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBYU0xUIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8veG1sc29mdC5vcmcvWFNMVC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTBjZDlhMDdhZmJlYjI0MDI2YzliMDNhZWNmZWJhNDU4IgotCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYnhtbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWludGVnZXItb3ZlcmZsb3ctaW4teHNsdEFkZFRleHRTdHJpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTI5ZDNjNDRjMDIyZGUzYjlkY2Y2ZDZmMjg4ZDcyZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTk3NmUzODU3ODM3ZTc2MTdiMjlmMjI0OWViYjVlZWFjMzRlMjQ5MjA4ZDMxZjFmYmY3YTZiYTdhNDA5MGNlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJ4c2x0LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TID0gIiR7V09SS0RJUn0vbGlieHNsdC0ke1BWfSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94c2x0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBsaWJfcGFja2FnZQotCi0jIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlzZWQgLWkgLWUgJ3MvYW5zaWRlY2wuaC8vJyAke1N9L2NvbmZpZ3VyZS5pbgotCi0JIyBUaGUgdGltZXN0YW1wcyBpbiB0aGUgMS4xLjI4IHRhcmJhbGwgYXJlIG1lc3NlZCB1cCBjYXVzaW5nIHRoaXMgZmlsZSB0bwotCSMgYXBwZWFyIG91dCBvZiBkYXRlLiAgVG91Y2ggaXQgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gcmVnZW5lcmF0ZSBpdC4KLQl0b3VjaCAke1N9L2RvYy94c2x0cHJvYy4xCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbWVtLWRlYnVnIC0td2l0aG91dC1jcnlwdG8iCi0jIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgcmVjaXBlIGhhZCAke1BOfS11dGlscwotUlBST1ZJREVTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SQ09ORkxJQ1RTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SUkVQTEFDRVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cueG1sCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwM2Y3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiR05PTUUgWFNMVCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3htbHNvZnQub3JnL1hTTFQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0wY2Q5YTA3YWZiZWIyNDAyNmM5YjAzYWVjZmViYTQ1OCIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJsaWJ4bWwyIgorCitTUkNfVVJJID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhzbHQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjFmYzcyZjk4ZTk4YmY0NDQzZjE2NTExNjVmM2FhMTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNmVjZDBhYmFmNGE3Nzg5MDQxNjIyYzM5NTBjMGU3ZjJjNGM4ODM1NDcxNTE1ZmQ3N2VlYzY4NGEzNTU0NjAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnhzbHQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ4c2x0LSR7UFZ9IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCisKKyMgV2UgZG9uJ3QgREVQRU5EIG9uIGJpbnV0aWxzIGZvciBhbnNpZGVjbC5oIHNvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhlIGhlYWRlcgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXNlZCAtaSAtZSAncy9hbnNpZGVjbC5oLy8nICR7U30vY29uZmlndXJlLmFjCisKKwkjIFRoZSB0aW1lc3RhbXBzIGluIHRoZSAxLjEuMjggdGFyYmFsbCBhcmUgbWVzc2VkIHVwIGNhdXNpbmcgdGhpcyBmaWxlIHRvCisJIyBhcHBlYXIgb3V0IG9mIGRhdGUuICBUb3VjaCBpdCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZWdlbmVyYXRlIGl0LgorCXRvdWNoICR7U30vZG9jL3hzbHRwcm9jLjEKK30KKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1weXRob24gLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1tZW0tZGVidWcgLS13aXRob3V0LWNyeXB0byIKKyMgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyByZWNpcGUgaGFkICR7UE59LXV0aWxzCitSUFJPVklERVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JDT05GTElDVFNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JSRVBMQUNFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgorCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0veHNsdHByb2MgWE1MX0NBVEFMT0dfRklMRVM9JHtzeXNjb25mZGlyfS94bWwvY2F0YWxvZy54bWwKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJ4c2x0LXBsdWdpbnMiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94c2x0Q29uZi5zaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGQyY2NkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvL2FjaW5jbHVkZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0KLUFDX0RFRlVOKFttZnhfQUNDX0NIRUNLX0VORElBTl0sIFsKLUFDX0NfQklHRU5ESUFOKFtBQ19ERUZJTkUoQUNDX0FCSV9CSUdfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBiaWcgZW5kaWFuLl0pXSxbQUNfREVGSU5FKEFDQ19BQklfTElUVExFX0VORElBTiwxLFtEZWZpbmUgdG8gMSBpZiB5b3VyIG1hY2hpbmUgaXMgbGl0dGxlIGVuZGlhbi5dKV0pCi1dKSMKLQotQUNfREVGVU4oW21meF9BQ0NfQ0hFQ0tfSEVBREVSU10sIFsKLUFDX0hFQURFUl9USU1FCi1BQ19DSEVDS19IRUFERVJTKFthc3NlcnQuaCBjdHlwZS5oIGRpcmVudC5oIGVycm5vLmggZmNudGwuaCBmbG9hdC5oIGxpbWl0cy5oIG1hbGxvYy5oIG1lbW9yeS5oIHNldGptcC5oIHNpZ25hbC5oIHN0ZGFyZy5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGlvLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHRpbWUuaCB1bmlzdGQuaCB1dGltZS5oIHN5cy9zdGF0Lmggc3lzL3RpbWUuaCBzeXMvdHlwZXMuaCBzeXMvd2FpdC5oXSkKLV0pIwotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19GVU5DU10sIFsKLUFDX0NIRUNLX0ZVTkNTKGFjY2VzcyBhbGxvY2EgYXRleGl0IGF0b2kgYXRvbCBjaG1vZCBjaG93biBjdGltZSBkaWZmdGltZSBmc3RhdCBnZXR0aW1lb2ZkYXkgZ210aW1lIGxvY2FsdGltZSBsb25nam1wIGxzdGF0IG1lbWNtcCBtZW1jcHkgbWVtbW92ZSBtZW1zZXQgbWt0aW1lIHFzb3J0IHJhaXNlIHNldGptcCBzaWduYWwgc25wcmludGYgc3RyY2FzZWNtcCBzdHJjaHIgc3RyZHVwIHN0cmVycm9yIHN0cmZ0aW1lIHN0cmljbXAgc3RybmNhc2VjbXAgc3RybmljbXAgc3RycmNociBzdHJzdHIgdGltZSB1bWFzayB1dGltZSB2c25wcmludGYpCi1dKSMKLQotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0Yoc2hvcnQpCi1BQ19DSEVDS19TSVpFT0YoaW50KQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0KLUFDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCi1BQ19DSEVDS19TSVpFT0YoX19pbnQxNikKLUFDX0NIRUNLX1NJWkVPRihfX2ludDMyKQotQUNfQ0hFQ0tfU0laRU9GKF9faW50NjQpCi0KLUFDX0NIRUNLX1NJWkVPRih2b2lkICopCi1BQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHB0cmRpZmZfdCkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIENoZWNrIGZvciBBQ0NfY29uZm9ybWFuY2UKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1BQ19ERUZVTihbbWZ4X0FDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2luY2x1ZGUgImFjYy9hY2MuaCIKLSNpbmNsdWRlICJhY2MvYWNjX2luY2QuaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUX0hFQURFUihleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLXN0YXRpYyB2b2lkIHRlc3RfYWNjX2NvbXBpbGVfdGltZV9hc3NlcnQodm9pZCkgewotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLX0KLSN1bmRlZiBOREVCVUcKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLXN0YXRpYyBpbnQgdGVzdF9hY2NfcnVuX3RpbWVfYXNzZXJ0KGludCByKSB7Ci0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIGFzc2VydChleHByKTsKLSNpbmNsdWRlICJhY2MvYWNjX2Noay5jaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9BQ0NfQUNDQ0hLCi0KLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8gQ2hlY2sgZm9yIEFDQ19jb25mb3JtYW5jZQotIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLUFDX0RFRlVOKFttZnhfTUlOSUFDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2RlZmluZSBBQ0NfV0FOVF9BQ0NfSU5DRF9IIDEKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVF9IRUFERVIoZXhwcikKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotc3RhdGljIHZvaWQgdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCh2b2lkKSB7Ci0jaW5jbHVkZSAkMgotfQotCi0jdW5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jZGVmaW5lIEFDQ19XQU5UX0FDQ19DSEtfQ0ggMQotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLSNkZWZpbmUgQUNDQ0hLX0FTU0VSVChleHByKSAgYXNzZXJ0KGV4cHIpOwotc3RhdGljIGludCB0ZXN0X2FjY19ydW5fdGltZV9hc3NlcnQoaW50IHIpIHsKLSNpbmNsdWRlICQyCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9NSU5JQUNDX0FDQ0NISwotCi0KLQotIyBzZXJpYWwgMQotCi1BQ19ERUZVTihbbWZ4X1BST0dfQ1BQRkxBR1NdLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIEMgcHJlcHJvY2Vzc29yIG5lZWRzIHNwZWNpYWwgZmxhZ3NdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGluY2x1ZGUgInlvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIDEiCi0jZWxpZiAoMHhmZmZmdSA9PSAweGZmZmZmZmZmdWwpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAyIgotI2VsaWYgKDMyNzY3ID49IFVMT05HX01BWCkgfHwgKDY1NTM1dSA+PSBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAzIgotI2VuZGlmCi1dXSwgW1sgXV0KLSldKQotCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLW1meF90bXA9RVJST1IKLWZvciBtZnhfYXJnIGluICIiIC1uby1jcHAtcHJlY29tcAotZG8KLSAgQ1BQRkxBR1M9IiRtZnhfYXJnICRtZnhfc2F2ZV9DUFBGTEFHUyIKLSAgX0FDX0NPTVBJTEVfSUZFTFNFKFtdLAotW21meF90bXA9JG1meF9hcmcKLWJyZWFrXSkKLWRvbmUKLUNQUEZMQUdTPSRtZnhfc2F2ZV9DUFBGTEFHUwotcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0Ci1jYXNlIHgkbWZ4X3RtcCBpbgotICB4KQotICAgIEFDX01TR19SRVNVTFQoW25vbmUgbmVlZGVkXSkgOzsKLSAgeEVSUk9SKQotICAgIEFDX01TR19SRVNVTFQoW0VSUk9SXSkKLSAgICBBQ19NU0dfRVJST1IoW3lvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gZm9yIGRldGFpbHMgc2VlIGNvbmZpZy5sb2ddKQotICAgIDs7Ci0gICopCi0gICAgQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotICAgIENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0gICAgOzsKLWVzYWMKLV0pIyBtZnhfUFJPR19DUFBGTEFHUwotCi0KLQotIyBzZXJpYWwgMwotCi1BQ19ERUZVTihbbWZ4X0NIRUNLX0hFQURFUl9TQU5FX0xJTUlUU19IXSwgWwotQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbGltaXRzLmggaXMgc2FuZV0sCi1tZnhfY3ZfaGVhZGVyX3NhbmVfbGltaXRzX2gsCi1bQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKQotIyAgICBlcnJvciAieW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gdXNlIGNvbXBpbGVyIG9wdGlvbiAtbm8tY3BwLXByZWNvbXAiCi0jICBlbHNlCi0jICAgIGluY2x1ZGUgInlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiIKLSMgIGVuZGlmCi0jZW5kaWYKLSNkZWZpbmUgTUZYXzB4ZmZmZiAgICAgICAgICAweGZmZmYKLSNkZWZpbmUgTUZYXzB4ZmZmZmZmZmZMICAgICA0Mjk0OTY3Mjk1dWwKLSNpZiAhZGVmaW5lZChDSEFSX0JJVCkgfHwgKENIQVJfQklUICE9IDgpCi0jICBpbmNsdWRlICJlcnJvciBDSEFSX0JJVCIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFVDSEFSX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAxIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoVVNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgVVNIUlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVSU5UX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgU0hSVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKElOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChMT05HX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIExPTkdfTUFYIDEiCi0jZW5kaWYKLSNpZiAoVUNIQVJfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAyIgotI2VuZGlmCi0jaWYgKFVTSFJUX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggMiIKLSNlbmRpZgotI2lmIChVSU5UX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCAyIgotI2VuZGlmCi0jaWYgKFVMT05HX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMiIKLSNlbmRpZgotI2lmIChVQ0hBUl9NQVggPCAweGZmKQotIyAgaW5jbHVkZSAiZXJyb3IgVUNIQVJfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVTSFJUX01BWCAzIgotI2VuZGlmCi0jaWYgKFVJTlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVUxPTkdfTUFYIDwgTUZYXzB4ZmZmZmZmZmZMKQotIyAgaW5jbHVkZSAiZXJyb3IgVUxPTkdfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID4gVUlOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggdnMgVUlOVF9NQVgiCi0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPiBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCB2cyBVTE9OR19NQVgiCi0jZW5kaWYKLV1dLCBbWwotI2lmIChVU0hSVF9NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSAyKV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYlsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA+IDIpXTsgfQotI2VuZGlmCi0jaWYgKFVJTlRfTUFYID09IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2ludDJhWzEgLSAyICogIShzaXplb2YoaW50KSA9PSAyKV07IH0KLSNlbGlmIChVSU5UX01BWCA+PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQyYlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiAyKV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfbG9uZzJhWzEgLSAyICogIShzaXplb2YobG9uZykgPT0gMildOyB9Ci0jZWxpZiAoVUxPTkdfTUFYID49IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2xvbmcyYlsxIC0gMiAqICEoc2l6ZW9mKGxvbmcpID4gMildOyB9Ci0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID09IE1GWF8weGZmZmZmZmZmTCkKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQ0YVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSA0KV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDRiWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID4gNCldOyB9Ci0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YVsxIC0gMiAqICEoc2l6ZW9mKGludCkgPT0gNCldOyB9Ci0jZWxpZiAoVUlOVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiA0KV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGFbMSAtIDIgKiAhKHNpemVvZihsb25nKSA9PSA0KV07IH0KLSNlbGlmIChVTE9OR19NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGJbMSAtIDIgKiAhKHNpemVvZihsb25nKSA+IDQpXTsgfQotI2VuZGlmCi1dXSldLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD15ZXNdLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD1ub10pXSkKLV0pCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIHN0YW5kYXJkCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotQUNfREVGVU4oW21meF9MWk9fQ0hFQ0tfRU5ESUFOXSwgWwotQUNfQ19CSUdFTkRJQU4oW0FDX0RFRklORShMWk9fQUJJX0JJR19FTkRJQU4sMSxbRGVmaW5lIHRvIDEgaWYgeW91ciBtYWNoaW5lIGlzIGJpZyBlbmRpYW4uXSldLFtBQ19ERUZJTkUoTFpPX0FCSV9MSVRUTEVfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBsaXR0bGUgZW5kaWFuLl0pXSkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotZG5sIG1vcmUgdHlwZXMgd2hpY2ggYXJlIG5vdCB5ZXQgY292ZXJlZCBieSBBQ0MKLQotQUNfREVGVU4oW21meF9DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0YoX19pbnQzMikKLUFDX0NIRUNLX1NJWkVPRihpbnRtYXhfdCkKLUFDX0NIRUNLX1NJWkVPRih1aW50bWF4X3QpCi1BQ19DSEVDS19TSVpFT0YoaW50cHRyX3QpCi1BQ19DSEVDS19TSVpFT0YodWludHB0cl90KQotCi1BQ19DSEVDS19TSVpFT0YoZmxvYXQpCi1BQ19DSEVDS19TSVpFT0YoZG91YmxlKQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlKQotCi1BQ19DSEVDS19TSVpFT0YoZGV2X3QpCi1BQ19DSEVDS19TSVpFT0YoZnBvc190KQotQUNfQ0hFQ0tfU0laRU9GKG1vZGVfdCkKLUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKLUFDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKLV0pIwotCi0KLQotQUNfREVGVU4oW21meF9DSEVDS19MSUJfV0lOTU1dLCBbCi1pZiB0ZXN0ICJYJEdDQyIgPSBYeWVzOyB0aGVuCi1jYXNlICRob3N0X29zIGluCi1jeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gICAgIHRlc3QgIlgkTElCUyIgIT0gIlgiICYmIExJQlM9IiRMSUJTICIKLSAgICAgTElCUz0iJHtMSUJTfS1sd2lubW0iIDs7Ci0qKQotICAgICA7OwotZXNhYwotZmkKLV0pIwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgppbmRleCA0OTBkMjMwLi44ZWVmZWMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIKQEAgLTgsNyArOCw2IEBACiBTUkNfVVJJID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by9kb3dubG9hZC9sem8tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW1lbWNweS1pbnN0ZWFkLW9mLXJlaW52ZW50aW5nLWl0LnBhdGNoIFwKIAkgICBmaWxlOi8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUubTQgXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIgogCkBAIC0xOSwxMCArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KLX0KLQogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAl0PSR7RH0ke1BURVNUX1BBVEh9CiAJY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjNmOTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1TVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2MysiCi1TRUNUSU9OID0gImRldmVsIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuNS5iYgppbmRleCAyZDU5YzRhLi5hNzhjMGJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKQEAgLTEsNiArMSwxMCBAQAotcmVxdWlyZSBtcGZyLmluYworU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorTElDRU5TRSA9ICJMR1BMdjMrIgorU0VDVElPTiA9ICJkZXZlbCIKIAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAogCQkgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKIERFUEVORFMgPSAiZ21wIgpAQCAtMTMsNiArMTcsNCBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLWN1cnJlbnQvIgogCi1TID0gIiR7V09SS0RJUn0vbXBmci0ke1BWfSIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbi9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5ZGJhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotLS0tCi0gbmVvbi5wYy5pbiB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIG5lb24tMC4zMC4xLm9yaWcvbmVvbi5wYy5pbgotKysrIG5lb24tMC4zMC4xL25lb24ucGMuaW4KLUBAIC03LDUgKzcsNSBAQCBOYW1lOiBuZW9uCi0gRGVzY3JpcHRpb246IEhUVFAvV2ViREFWIGNsaWVudCBsaWJyYXJ5Ci0gVmVyc2lvbjogQE5FT05fVkVSU0lPTkAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbG5lb24gQE5FT05fUENfTElCU0AKLS1MaWJzLnByaXZhdGU6IEBORU9OX0xJQlNACi0rTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbHogLWxnY3J5cHQgLWxncGctZXJyb3IgLWxleHBhdCAtbGdudXRscwotIENmbGFnczogLUkke2luY2x1ZGVkaXJ9L25lb24gQE5FT05fQ0ZMQUdTQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbl8wLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5MmM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gSFRUUCBhbmQgV2ViREFWIGNsaWVudCBsaWJyYXJ5IHdpdGggYSBDIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2ViZGF2Lm9yZy9uZW9uLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9DT1BZSU5HLkxJQjttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25lX3V0aWxzLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNhY2E2MDk1MzhlZGRhYTZmNmFkZjEyMGEyMTgwMzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJkYXYub3JnLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI4ZDc3YmYxNDAzMmQ3ZjUwNDZiMzkzMDcwNGVmNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGIwYmQ4Y2RlYzMyOWI0OGY1M2E2ZjAwMTk5YzkyZDViYTQwYjBmMDE1YjE1MzcxOGQxYjE1ZDNkOTY3ZmJjYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi0jIEVuYWJsZSBnbnV0bHMgb3Igb3BlbnNzbCwgbm90IGJvdGgKLVBBQ0tBR0VDT05GSUcgPz0gImV4cGF0IGdudXRscyBsaWJwcm94eSB3ZWJkYXYgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImV4cGF0IGdudXRscyB3ZWJkYXYgemxpYiIKLQotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtc3NsPWdudXRscywsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLS13aXRoLWxpYnByb3h5LC0td2l0aG91dC1saWJwcm94eSxsaWJwcm94eSIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXNzbD1vcGVuc3NsLCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXZdID0gIi0tZW5hYmxlLXdlYmRhdiwtLWRpc2FibGUtd2ViZGF2LCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1zaGFyZWQiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgdGVzdAotfQotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25lb24tY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNkYTc3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL2ZpbGVzL0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDQ2ZWRmMDFjYzk4ZGI5ZjlmZWVjOTg0ODk3ODM2ZGZkZDI2YmRjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMzoyNzoyNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgdGFyZ2V0IHRvIG9ubHkgYnVpbGQgdGVzdHMgKG5vdCBydW4gdGhlbSkKLQotTm90IHNlbmRpbmcgdXBzdHJlYW0gYXMgdGhpcyBpcyBvbmx5IGEgc3RhcnQgb2YgYSBzb2x1dGlvbiB0bwotaW5zdGFsbGFibGUgdGVzdHM6IEl0J3MgdXNlZnVsIGZvciB1cyBhbHJlYWR5IGFzIGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhIGNvbXBsZXRlIHNvbHV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICAgICAgIHwgMyArKysKLSB0ZXN0c3VpdGUvTWFrZWZpbGUuaW4gfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDA4ZWZiN2QuLjc5MDkzNDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWNsZWFuIHRhZ3M6Ci0gCSAgZWNobyAiTWFraW5nICRAIGluICQkZCIgOyAoY2QgJCRkICYmICQoTUFLRSkgJEApOyBkb25lCi0gCSQoTUFLRSkgJEAtaGVyZQotIAotK2J1aWxkdGVzdDoKLSsJZWNobyAiTWFraW5nICRAIGluIHRlc3RzdWl0ZSIgOyAoY2QgdGVzdHN1aXRlICYmICQoTUFLRSkgJEApCi0rCi0gY2hlY2staGVyZToKLSAJdHJ1ZQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbiBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotaW5kZXggNmJjMTkwNy4uYmI2NWJmMCAxMDA2NDQKLS0tLSBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotKysrIGIvdGVzdHN1aXRlL01ha2VmaWxlLmluCi1AQCAtMTE2LDYgKzExNiw4IEBAICQoVEFSR0VUUykgJChFWFRSQV9UQVJHRVRTKTogdGVzdHV0aWxzLiQoT0JKRVhUKSAuLi9uZXR0bGUtaW50ZXJuYWwuJChPQkpFWFQpIFwKLSAjIGRhdGEuCi0gVkFMR1JJTkQgPSB2YWxncmluZCAtLWVycm9yLWV4aXRjb2RlPTEgLS1sZWFrLWNoZWNrPWZ1bGwgLS1zaG93LXJlYWNoYWJsZT15ZXMgQElGX0FTTUAgLS1wYXJ0aWFsLWxvYWRzLW9rPXllcwotIAotK2J1aWxkdGVzdDogJChUU19BTEwpCi0rCi0gIyBUaGUgUEFUSCB1cGRhdGUgaXMgZm9yIGxvY2F0aW5nIGRsbHMgb24gdypuZG93cy4KLSBjaGVjazogJChUU19BTEwpCi0gCUxEX0xJQlJBUllfUEFUSD0uLi8ubGliIFBBVEg9Ii4uLy5saWI6JCRQQVRIIiBzcmNkaXI9IiQoc3JjZGlyKSIgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcyMTZiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCi0gJ2VuYWJsZV9vcGVuc3NsPXllcycuCi0KLVRoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQotY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50Ci1idWlsZGluZyBmb3IgbmV0dGxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRlYWQ1MmMuLjk4Mjc2MGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4NSw5ICsxODUsMTEgQEAgQUNfSEVBREVSX1RJTUUKLSBBQ19DSEVDS19TSVpFT0YobG9uZykKLSBBQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotIAotLUFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvYmxvd2Zpc2guaCBvcGVuc3NsL2Rlcy5oIG9wZW5zc2wvY2FzdC5oIG9wZW5zc2wvYWVzLmggb3BlbnNzbC9lY2RzYS5oXSwsCi0tW2VuYWJsZV9vcGVuc3NsPW5vCi0tIGJyZWFrXSkKLStpZiB0ZXN0ICJ4JGVuYWJsZV9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ibG93ZmlzaC5oIG9wZW5zc2wvZGVzLmggb3BlbnNzbC9jYXN0Lmggb3BlbnNzbC9hZXMuaCBvcGVuc3NsL2VjZHNhLmhdLCwKLSsgIFtlbmFibGVfb3BlbnNzbD1ubwotKyAgYnJlYWtdKQotK2ZpCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhbdmFsZ3JpbmQvbWVtY2hlY2suaF0pCi0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNzA2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0FkZCB0YXJnZXQgdG8gb25seSBidWlsZCB0ZXN0cyAobm90IHJ1biB0aGVtKQorCitOb3Qgc2VuZGluZyB1cHN0cmVhbSBhcyB0aGlzIGlzIG9ubHkgYSBzdGFydCBvZiBhIHNvbHV0aW9uIHRvCitpbnN0YWxsYWJsZSB0ZXN0czogSXQncyB1c2VmdWwgZm9yIHVzIGFscmVhZHkgYXMgaXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGEgY29tcGxldGUgc29sdXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitSZWZhY3RvcmVkIGZvciAzLjQKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogbmV0dGxlLTMuNC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldHRsZS0zLjQub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ldHRsZS0zLjQvTWFrZWZpbGUuaW4KK0BAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWMKKyAJICBlY2hvICJNYWtpbmcgJEAgaW4gJCRkIiA7IChjZCAkJGQgJiYgJChNQUtFKSAkQCk7IGRvbmUKKyAJJChNQUtFKSAkQC1oZXJlCisgCisrYnVpbGR0ZXN0OgorKwllY2hvICJNYWtpbmcgJEAgaW4gdGVzdHN1aXRlIiA7IChjZCB0ZXN0c3VpdGUgJiYgJChNQUtFKSAkQCkKKysKKyBjaGVjay1oZXJlOgorIAl0cnVlCisgCitJbmRleDogbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXR0bGUtMy40Lm9yaWcvdGVzdHN1aXRlL01ha2VmaWxlLmluCisrKysgbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KK0BAIC0xMzEsNiArMTMxLDggQEAgJChUQVJHRVRTKSAkKEVYVFJBX1RBUkdFVFMpOiB0ZXN0dXRpbHMuJAorICMgZGF0YS4KKyBWQUxHUklORCA9IHZhbGdyaW5kIC0tZXJyb3ItZXhpdGNvZGU9MSAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyBASUZfQVNNQCAtLXBhcnRpYWwtbG9hZHMtb2s9eWVzCisgCisrYnVpbGR0ZXN0OiAkKFRTX0FMTCkKKysKKyAjIFRoZSBQQVRIIHVwZGF0ZSBpcyBmb3Igd2luZG93cyBkbGxzLCBEWUxEX0xJQlJBUllfUEFUSCBpcyBmb3IgT1NYLgorIGNoZWNrOiAkKFRTX0FMTCkKKyAJTERfTElCUkFSWV9QQVRIPS4uLy5saWIgUEFUSD0iLi4vLmxpYjokJFBBVEgiIERZTERfTElCUkFSWV9QQVRIPS4uLy5saWIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMjY2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCisgJ2VuYWJsZV9vcGVuc3NsPXllcycuCisKK1RoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQorY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50CitidWlsZGluZyBmb3IgbmV0dGxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorCityZWZhY3RvcmVkIGZvciAzLjQuIHBlbmRpbmcgbm90IGluIGFzIG9mIDMuNAorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0dGxlLTMuNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCitAQCAtMTg1LDkgKzE4NSwxMSBAQCBBQ19IRUFERVJfVElNRQorIEFDX0NIRUNLX1NJWkVPRihsb25nKQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgCistQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ldnAuaCBvcGVuc3NsL2VjZHNhLmhdLCwKKy1bZW5hYmxlX29wZW5zc2w9bm8KKy0gYnJlYWtdKQorK2lmIHRlc3QgIngkZW5hYmxlX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisrICBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2V2cC5oIG9wZW5zc2wvZWNkc2EuaF0sLAorKyAgW2VuYWJsZV9vcGVuc3NsPW5vCisrICAgYnJlYWtdKQorK2ZpCisgCisgIyBGb3IgdXNlIGJ5IHRoZSB0ZXN0c3VpdGUKKyBBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC9tZW1jaGVjay5oXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9kbG9wZW4tdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9kbG9wZW4tdGVzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvZGxvcGVuLXRlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1MWZiNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgKz0gImdtcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL35uaXNzZS9hcmNoaXZlLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wZW5zc2wiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCAtYSAtZSAke1N9L2FjbG9jYWwubTQgXTsgdGhlbgotICAgICAgICAgICAgICAgY3AgJHtTfS9hY2xvY2FsLm00ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi0gICAgICAgIGluc3RhbGwgJHtTfS90ZXN0c3VpdGUvZ29sZC1idWcudHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KLSAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS8qLXRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLwotICAgICAgICAjIHRvb2xzIGNhbiBiZSBmb3VuZCBpbiBQQVRILCBub3QgaW4gLi4vdG9vbHMvCi0gICAgICAgIHNlZCAtaSAtZSAnc3wuLi90b29scy98fCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLyotdGVzdAotICAgICAgICBpbnN0YWxsICR7Qn0vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk1MTY3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIG5ldHRsZS5pbmMKLQotTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtZGVjcnlwdC5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zZXJwZW50LXNldC1rZXkuYztiZWdpbmxpbmU9MTQ7ZW5kbGluZT0zNjttZDU9Y2EwZDIyMGJjNDEzZTE4NDJlY2M1MDc2OTBjZTQxNmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICAgZmlsZTovL2Rsb3Blbi10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwZjk2OWY3OGE0NjM3MDRhZTczNTI5OTc4MTQ4ZGJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2OTQyNjI3ZDVkMGNhMTE3MjBmZWMxOGQ4MWZjMzhmN2VmODM3ZWE0MTk3YzFmNjMwZTcxY2UwZDQ3MGIxMWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzY2M2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuNC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MysgfCBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VycGVudC1kZWNyeXB0LmM7YmVnaW5saW5lPTE0O2VuZGxpbmU9MzY7bWQ1PWNhMGQyMjBiYzQxM2UxODQyZWNjNTA3NjkwY2U0MTZlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtc2V0LWtleS5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSIKKworREVQRU5EUyArPSAiZ21wIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgICBmaWxlOi8vZGxvcGVuLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGMwZjEzMDI4MjY0OTkyZjU4ZTY3YjRlODkxNWY1M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU3YTQyZGYwMjY1NTBiODVkYWNhODM4OWI2YTYwYmE2MzEzYjA1NjdmMzc0MzkyZTU0OTE4NTg4YTQxMWU5NCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1vcGVuc3NsIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KKyAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS9nb2xkLWJ1Zy50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworICAgICAgICBpbnN0YWxsICR7U30vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgICMgdG9vbHMgY2FuIGJlIGZvdW5kIGluIFBBVEgsIG5vdCBpbiAuLi90b29scy8KKyAgICAgICAgc2VkIC1pIC1lICdzfC4uL3Rvb2xzL3x8JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvKi10ZXN0CisgICAgICAgIGluc3RhbGwgJHtCfS90ZXN0c3VpdGUvKi10ZXN0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgppbmRleCA1NGRlNzBjLi5lN2RiNmFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpAQCAtMTksMyArMTksNSBAQAogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVNTSVpFX01BWC1hbmQtU0laRV9NQVgtZGVmaW5pdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiZGQ4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZjc1NTFlYzU4ZTJmMGE4OTIyOTVlMGMyYTY1MDA4MzEwMWUxMmM1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDEzOjI0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIFNTSVpFX01BWCBhbmQgU0laRV9NQVggZGVmaW5pdGlvbnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwci90ZXN0cy9wcmZ6LmMgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wci90ZXN0cy9wcmZ6LmMgYi9wci90ZXN0cy9wcmZ6LmMKLWluZGV4IDBjNWE0MzIuLjljMTc1OTAgMTAwNjQ0Ci0tLS0gYS9wci90ZXN0cy9wcmZ6LmMKLSsrKyBiL3ByL3Rlc3RzL3ByZnouYwotQEAgLTEwLDcgKzEwLDkgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0KLSsjaWZkZWYgWFBfVU5JWAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSB7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKaW5kZXggYzJiNzI1OC4uZjEyYWNjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaApAQCAtNDksNCArNDksNCBAQAogLSAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfcHBjLnMKICAgICAgICAgIGZpCiAgICAgICAgICA7OwotICAgICBtNjhrKQorICAgICBlc2FjICAgIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKaW5kZXggYTdlNzg1My4uZWNjNmQzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCkBAIC0xMSwxMiArMTEsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbnNwci00LjguOS9tb3ppbGxhL25zcHJwdWIvcHIvdGVzdHMvTWFrZWZpbGUuaW4KK0luZGV4OiBuc3ByL3ByL3Rlc3RzL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwcnB1Yi5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCTIwMTItMDItMTEgMDA6MDE6MTAuNDc2MjIwNTA1ICswMjAwCi0rKysgbnNwcnB1Yi9wci90ZXN0cy9NYWtlZmlsZS5pbgkyMDEyLTAyLTEwIDIzOjU3OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3OSw3ICszNzksNyBAQAotIGVuZGlmCistLS0gbnNwci5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCisrKysgbnNwci9wci90ZXN0cy9NYWtlZmlsZS5pbgorQEAgLTMxNSw3ICszMTUsNyBAQCBpZmVxICgkKE9TX0FSQ0gpLCBTdW5PUykKKyBlbmRpZiAjIFN1bk9TCiAgCiAgaWZlcSAoLCQoZmlsdGVyLW91dCBMaW51eCBHTlUgR05VXyUsJChPU19BUkNIKSkpCiAtICAgIExET1BUUyArPSAtWGxpbmtlciAtcnBhdGggJChBQlNPTFVURV9MSUJfRElSKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGVmOTk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKLUhPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgotTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmZkODk2M2E0YjM5NGY2MmQ0M2JhNjA0ZjAzZmFiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMxMDJkOTc2NjU1MDRhZWVlNzMzNjNjMTFhMjFjMDYyYWQ2N2EyNTIyMjQyMzY4YjdmMDE5Zjk2YTUzY2QxIgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Ci19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotICAgIHNlZCAtaSAgXAotICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKLSAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAotICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKLSAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0KLSAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBjZCAke0J9L3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotCi0gICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCi0gICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKLSAgICAjIHRpbWUKLSAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMmM4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKQEAgLTAsMCArMSwxOTAgQEAKK1NVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCitMSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCisiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTFkMjcyODJhZDYyODZiNjlkNmI5ZmQwNzIwMWQzZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkOTU5MTdmYTIyNzc5MTBkMWQxY2YzNjAzMDYwN2RjY2MwYmE1MjJiYmEwOGUyYWYxM2MxMTNkY2Q4ZjcyOSIKKworQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKKworUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK1RFU1RTID0gIiBcCisgICAgYWNjZXB0IFwKKyAgICBhY2NlcHRyZWFkIFwKKyAgICBhY2NlcHRyZWFkZW11IFwKKyAgICBhZmZpbml0eSBcCisgICAgYWxhcm0gXAorICAgIGFub25mbSBcCisgICAgYXRvbWljIFwKKyAgICBhdHRhY2ggXAorICAgIGJpZ2ZpbGUgXAorICAgIGNsZWFudXAgXAorICAgIGNsdHNydiAgXAorICAgIGNvbmN1ciBcCisgICAgY3ZhciBcCisgICAgY3ZhcjIgXAorICAgIGRsbHRlc3QgXAorICAgIGR0b2EgXAorICAgIGVycmNvZGVzIFwKKyAgICBleGl0IFwKKyAgICBmZGNhY2ggXAorICAgIGZpbGVpbyBcCisgICAgZm9yZWlnbiBcCisgICAgZm9ybWF0dG0gXAorICAgIGZzeW5jIFwKKyAgICBnZXRob3N0IFwKKyAgICBnZXRwcm90byBcCisgICAgaTJsIFwKKyAgICBpbml0Y2xrIFwKKyAgICBpbnJ2YWwgXAorICAgIGluc3RydW10IFwKKyAgICBpbnRyaW8gXAorICAgIGludHJ1cHQgXAorICAgIGlvX3RpbWVvdXQgXAorICAgIGlvY29udGhyIFwKKyAgICBqb2luIFwKKyAgICBqb2lua2sgXAorICAgIGpvaW5rdSBcCisgICAgam9pbnVrIFwKKyAgICBqb2ludXUgXAorICAgIGxheWVyIFwKKyAgICBsYXp5aW5pdCBcCisgICAgbGliZmlsZW5hbWUgXAorICAgIGxsdGVzdCBcCisgICAgbG9jayBcCisgICAgbG9ja2ZpbGUgXAorICAgIGxvZ2ZpbGUgXAorICAgIGxvZ2dlciBcCisgICAgbWFueV9jdiBcCisgICAgbXVsdGl3YWl0IFwKKyAgICBuYW1lc2htMSBcCisgICAgbmJsYXllciBcCisgICAgbm9uYmxvY2sgXAorICAgIG50aW90byBcCisgICAgbnRvaCBcCisgICAgb3BfMmxvbmcgXAorICAgIG9wX2V4Y2wgXAorICAgIG9wX2ZpbG5mIFwKKyAgICBvcF9maWxvayBcCisgICAgb3Bfbm9maWwgXAorICAgIHBhcmVudCBcCisgICAgcGFyc2V0bSBcCisgICAgcGVlayBcCisgICAgcGVyZiBcCisgICAgcGlwZXBpbmcgXAorICAgIHBpcGVwaW5nMiBcCisgICAgcGlwZXNlbGYgXAorICAgIHBvbGxfbm0gXAorICAgIHBvbGxfdG8gXAorICAgIHBvbGxhYmxlIFwKKyAgICBwcmZ0ZXN0IFwKKyAgICBwcmltYmxvayBcCisgICAgcHJvdmlkZXIgXAorICAgIHBycG9sbG1sIFwKKyAgICByYW5maWxlIFwKKyAgICByYW5kc2VlZCBcCisgICAgcmVpbml0IFwKKyAgICByd2xvY2t0ZXN0IFwKKyAgICBzZWxfc3BkIFwKKyAgICBzZWxjdF9lciBcCisgICAgc2VsY3Rfbm0gXAorICAgIHNlbGN0X3RvIFwKKyAgICBzZWxpbnRyIFwKKyAgICBzZW1hIFwKKyAgICBzZW1hZXJyIFwKKyAgICBzZW1hcGluZyBcCisgICAgc2VuZHpsZiBcCisgICAgc2VydmVyX3Rlc3QgXAorICAgIHNlcnZyX2trIFwKKyAgICBzZXJ2cl91ayBcCisgICAgc2VydnJfa3UgXAorICAgIHNlcnZyX3V1IFwKKyAgICBzaG9ydF90aHJlYWQgXAorICAgIHNpZ3BpcGUgXAorICAgIHNvY2tldCBcCisgICAgc29ja29wdCBcCisgICAgc29ja3BpbmcgXAorICAgIHNwcmludGYgXAorICAgIHN0YWNrIFwKKyAgICBzdGRpbyBcCisgICAgc3RyMmFkZHIgXAorICAgIHN0cm9kIFwKKyAgICBzd2l0Y2ggXAorICAgIHN5c3RlbSBcCisgICAgdGVzdGJpdCBcCisgICAgdGVzdGZpbGUgXAorICAgIHRocmVhZHMgXAorICAgIHRpbWVtYWMgXAorICAgIHRpbWV0ZXN0IFwKKyAgICB0cGQgXAorICAgIHVkcHNydiBcCisgICAgdmVyY2hlY2sgXAorICAgIHZlcnNpb24gXAorICAgIHdyaXRldiBcCisgICAgeG5vdGlmeSBcCisgICAgemVyb2xlbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxMGYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoCkBAIC0wLDAgKzEsMTE5IEBACitGcm9tIDZmN2Q3YmU5OTk3YmE2NzI3YTVhZDdjMzgwMGRmOTA1MTE2MGRjMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gVGhvbXNvbiA8bWFydGluLnRob21zb25AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAxMjozMDo1OCArMTEwMAorU3ViamVjdDogW1BBVENIXSBCdWcgMTQzNzczNCAtIFVzZSBzbnByaW50ZiBpbiBzaWduLmMsIHI9dHRhdWJlcnQKKworLS1IRy0tCitleHRyYSA6IHJlYmFzZV9zb3VyY2UgOiA5NzkyMWVjZTcxZmY4NmIxOGQzMmI4OTE1OTE2MDgyOTBlZWQ0ZDgzCistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnNzLWRldi9uc3MvY29tbWl0LzBhOTA3OGIzY2RlOTdhZGQ3YzgyNWM5ZDEzNDY3YTg0MDFhZDBjODgjZGlmZi1iNDI1MTIxNTFkYzEzNzUzNzA5MWY4MjNmNzcwMTgwNC5wYXRjaF0KKworIG5zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIGIvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKK2luZGV4IDZlNzc2MDY5YS4uNmY4ZTQzOTQ2IDEwMDY0NAorLS0tIGEvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKKysrKyBiL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCitAQCAtNDMsNiArNDMsNyBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCisgICAgIGludCBzdGF0dXM7CisgICAgIGNoYXIgdGVtcGZuW0ZOU0laRV0sIGZ1bGxmbltGTlNJWkVdOworICAgICBpbnQga2V5VHlwZSA9IHJzYUtleTsKKysgICAgaW50IGNvdW50OworIAorICAgICBtZXRhZmlsZSA9IG1ldGFfZmlsZTsKKyAgICAgb3B0aW1pemUgPSBfb3B0aW1pemU7CitAQCAtODEsOSArODIsMTggQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAorICAgICAgICAgfQorIAorICAgICAgICAgLyogcnNhL2RzYSB0byB6aXAgKi8KKy0gICAgICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyc2EiKSk7CistICAgICAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIgOiAicnNhIikpOworKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7CisrICAgICAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgICAgIGV4aXQoRVJSWCk7CisrICAgICAgICB9CisrICAgICAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKyAgICAgICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKKyAKKyAgICAgICAgIC8qIExvb3AgdGhyb3VnaCBhbGwgZmlsZXMgJiBzdWJkaXJlY3RvcmllcywgYWRkIHRvIGFyY2hpdmUgKi8KK0BAIC05MywyMCArMTAzLDQ0IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKKyAgICAgfQorICAgICAvKiBtZiB0byB6aXAgKi8KKyAgICAgc3RyY3B5KHRlbXBmbiwgIk1FVEEtSU5GL21hbmlmZXN0Lm1mIik7CistICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIG1hbmlmZXN0XG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBzZiB0byB6aXAgKi8KKy0gICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy5zZiIsIGJhc2UpOworLSAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuc2YiLCBiYXNlKTsKKysgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgc2YgbWV0YWRhdGFcbiIpOworKyAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgZXhpdChFUlJYKTsKKysgICAgfQorKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIHNmIG1ldGFkYXRhXG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBBZGQgdGhlIHJzYS9kc2EgZmlsZSB0byB0aGUgemlwIGFyY2hpdmUgbm9ybWFsbHkgKi8KKyAgICAgaWYgKCF4cGlfYXJjKSB7CisgICAgICAgICAvKiByc2EvZHNhIHRvIHppcCAqLworLSAgICAgICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJzYSIpKTsKKy0gICAgICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICAgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIiA6ICJyc2EiKSk7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKysgICAgICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOworKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgICAgICBleGl0KEVSUlgpOworKyAgICAgICAgfQorICAgICAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworICAgICB9CisgCitAQCAtNDA4LDYgKzQ0Miw3IEBAIHN0YXRpYyBpbnQKKyBtYW5pZmVzdG9feHBpX2ZuKGNoYXIgKnJlbHBhdGgsIGNoYXIgKmJhc2VkaXIsIGNoYXIgKnJlbGRpciwgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZykKKyB7CisgICAgIGNoYXIgZnVsbG5hbWVbRk5TSVpFXTsKKysgICAgaW50IGNvdW50OworIAorICAgICBpZiAodmVyYm9zaXR5ID49IDApIHsKKyAgICAgICAgIFBSX2ZwcmludGYob3V0cHV0RkQsICItLT4gJXNcbiIsIHJlbHBhdGgpOworQEAgLTQyMSw3ICs0NTYsMTAgQEAgbWFuaWZlc3RvX3hwaV9mbihjaGFyICpyZWxwYXRoLCBjaGFyICpiYXNlZGlyLCBjaGFyICpyZWxkaXIsIGNoYXIgKmZpbGVuYW1lLCB2b2kKKyAgICAgICAgIGlmICghUExfSGFzaFRhYmxlTG9va3VwKGV4dGVuc2lvbnMsIGV4dCkpCisgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgc3ByaW50ZihmdWxsbmFtZSwgIiVzLyVzIiwgYmFzZWRpciwgcmVscGF0aCk7CisrICAgIGNvdW50ID0gc25wcmludGYoZnVsbG5hbWUsIHNpemVvZihmdWxsbmFtZSksICIlcy8lcyIsIGJhc2VkaXIsIHJlbHBhdGgpOworKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxuYW1lKSkgeworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsbmFtZSwgcmVscGF0aCwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzZmODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKyMgSEcgY2hhbmdlc2V0IHBhdGNoCisjIFVzZXIgRGFpa2kgVWVubyA8ZHVlbm9AcmVkaGF0LmNvbT4KKyMgRGF0ZSAxNTE2NzEwNTc0IC0zNjAwCisjICAgICAgVHVlIEphbiAyMyAxMzoyOTozNCAyMDE4ICswMTAwCisjIE5vZGUgSUQgMjdmMjdjZTIxYzJjNmZmNWE0N2ZhOWUxN2M0MzhiMDAwMzY2YzljOQorIyBQYXJlbnQgIGJlMWRjYTVhYzgwNTQxZDNiODFhOGRhOWQ0Mjg1NGQ4YjFjY2VlZmIKK0J1aWxkIEhhY2xfUG9seTEzMDVfNjQubyBvbiBhYXJjaDY0IGV2ZW4gd2l0aCBtYWtlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHBzOi8vYnVnMTQzMjQ1NS5ibW9hdHRhY2htZW50cy5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9ODk0NDY5MQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjM1Lm9yaWcvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKKysrKyBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorQEAgLTUzMyw3ICs1MzMsMTIgQEAgaWZuZGVmIE5TU19ESVNBQkxFX0NIQUNIQVBPTFkKKyAgICAgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwX3ZlYy5jCisgICAgICAgICBlbmRpZgorICAgICBlbHNlCistICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCisrICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBIYWNsX1BvbHkxMzA1XzY0LmMKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGVuZGlmCisrCisgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwLmMKKyAgICAgICAgIFZFUklGSUVEX1NSQ1MgKz0gSGFjbF9DaGFjaGEyMC5jCisgICAgIGVuZGlmICMgeDg2XzY0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYjliZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYmI0NGYxMzk0MjUwZDJjZjZlYzNjMmUzZDcxZmEyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzM0MzkyMTRkYzAzZWU2MGU4NmQxNDE5YzE5ZTE1Njg5OThiMDc3NmRkZTk4N2Y0MWZhNzBjZWQ2Y2QwOGRjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCi0KLWluaGVyaXQgc2l0ZWluZm8KLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKLSAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCi0gICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKLSAgICAjCi0gICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgotICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KLSAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZwotICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KLSAgICAjCi0gICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgbWFrZSAtQyAuL25zcyBcCi0gICAgICAgIENDQz0iJHtDWFh9IiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKLSAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAotICAgICAgICBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LwotICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KLSAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgotICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCi0gICAgZG9uZQotCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKLSAgICAgICAgZmkKLSAgICBkb25lCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICBmaQotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKLSAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKLSAgICBkb25lCi19Ci1kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKLSAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KLSAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCi0gICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKLSAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAotICAgICAgICAgICAgRk49JEROLyRCTi5zbwotICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgotICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZWxzZQotICAgICAgICBzaWdubGlicy5zaAotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKLUZJTEVTXyR7UE59LXNtaW1lID0gIlwKLSAgICAke2JpbmRpcn0vc21pbWUgXAotIgotRklMRVNfJHtQTn0gPSAiXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKLSAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgIgotRklMRVNfJHtQTn0tZGV2ID0gIlwKLSAgICAke2xpYmRpcn0vbnNzIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICR7aW5jbHVkZWRpcn0vKiBcCi0gICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjE5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCkBAIC0wLDAgKzEsMjU1IEBACitTVU1NQVJZID0gIk1vemlsbGEncyBTU0wgYW5kIFRMUyBpbXBsZW1lbnRhdGlvbiIKK0RFU0NSSVBUSU9OID0gIk5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMgKE5TUykgaXMgYSBzZXQgb2YgbGlicmFyaWVzIFwKK2Rlc2lnbmVkIHRvIHN1cHBvcnQgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgb2YgXAorc2VjdXJpdHktZW5hYmxlZCBjbGllbnQgYW5kIHNlcnZlciBhcHBsaWNhdGlvbnMuIFwKK0FwcGxpY2F0aW9ucyBidWlsdCB3aXRoIE5TUyBjYW4gc3VwcG9ydCBTU0wgdjIgYW5kIHYzLCBcCitUTFMsIFBLQ1MgNSwgUEtDUyA3LCBQS0NTIDExLCBQS0NTIDEyLCBTL01JTUUsIFguNTA5IFwKK3YzIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlY3VyaXR5IHN0YW5kYXJkcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1QTC0yLjAgfCAoTVBMLTIuMCAmIEdQTC0yLjArKSB8IChNUEwtMi4wICYgTEdQTC0yLjErKSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbnNzL0NPUFlJTkc7bWQ1PTNiMWU4OGUxYjljMGI1YTRiMjg4MWQ0NmNjZTA2YTE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRTttZDU9NDkxZjE1OGQwOWQ5NDg0NjZhZmNlODVkNmYxZmUxOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFLU1QTDttZDU9NWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCisKK1ZFUlNJT05fRElSID0gIiR7QGQuZ2V0VmFyKCdCUCcpLnVwcGVyKCkucmVwbGFjZSgnLScsICdfJykucmVwbGFjZSgnLicsICdfJykgKyAnX1JUTSd9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL21vemlsbGEub3JnL3NlY3VyaXR5L25zcy9yZWxlYXNlcy8ke1ZFUlNJT05fRElSfS9zcmMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25zcy5wYy5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NDY3ZWM5ZTY1YzVhZWIzMjU0YTUwMjUwNDkwZjVmNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDEyN2RlMDliZWRlMzlmNWZkMGY3ODlkMzNjMzUwNGM1ZDI2MWU2OWVhMDMwMjJkNDZiMzE5YjNlMzJmNmZhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCitSREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgorCitURCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgorVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7CisgICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5taworfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9Citkb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9Citkb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAorICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgorICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KKyAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgZG9uZQorICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisgICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLworICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKKyAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4xLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjEuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTlhY2QzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyIKLURFU0NSSVBUSU9OID0gIlwKLQlQaW5lbnRyeSBpcyBhIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3Mgd2hpY2ggXAotCXV0aWxpemUgdGhlIEFzc3VhbiBwcm90b2NvbCBhcyBkZXNjcmliZWQgYnkgdGhlIGFlZ3lwdGVuIHByb2plY3Q7IHNlZSBcCi0JaHR0cDovL3d3dy5nbnVwZy5vcmcvYWVneXB0ZW4vIGZvciBkZXRhaWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9waW5lbnRyeS9pbmRleC5lbi5odG1sIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmQ3OTRlMmEwYTI4OWI5ZGZjYzlmNTEzZDE5OTZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBsaWJhc3N1YW4gbGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhc3N1YW5fcGtnY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncGctZXJyb3JfcGtjb25mLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhM2ZhZDhiMzFmOWI0YzU1MjZjODgzNzQ5NTAxNWRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2NzJjMmVkYzFmZWIwMzYwNzViMTg3YzA3NzM3ODdiMmFmZDA1NDRmNTUwMjVjNjQ1YTcxYjRjMmY3OTI3NWEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgbGliY2FwIgotCi1QQUNLQUdFQ09ORklHW25jdXJzZXNdID0gIi0tZW5hYmxlLW5jdXJzZXMgIC0td2l0aC1uY3Vyc2VzLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LCAtLWRpc2FibGUtbmN1cnNlcywgbmN1cnNlcyIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLCAtLXdpdGhvdXQtbGliY2FwLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3F0XSA9ICItLWVuYWJsZS1waW5lbnRyeS1xdCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0LCBxdDQteDExIgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKLQotI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCi1QQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhYTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCitERVNDUklQVElPTiA9ICJcCisJUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKKwl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAorCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgbGliYXNzdWFuIGxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3BnLWVycm9yX3BrY29uZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODI5MzE1Y2IwYTFlOWNlZGMwNWZmZTZkZWY3YTJjNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODA3NjY4NmZhNzI0YTI5MGVhNDljZGYwZDFjMGMxNTAwOTA3ZDFiNzU5YTNiY2JmYmVjMDI5M2U4ZjU2NTcwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKKworUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdCwgcXQ0LXgxMSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCisKKyNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQorUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViNzFjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCitwcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAorcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICIxNjQxM2Q3MWNjMDZiMDJhNmQ4NTljMzVhMDE3Y2M0OWI4ODI4M2Y3IgorUFYgPSAiMi4xLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWMxZGFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCi1wcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAotcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ1JFViA9ICI4YTkzODMyZGFkNjIxNTM1ZTkwYWE4ZTFmYjc0YWU1YmE3NDNmYzNlIgotUFYgPSAiMi4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcmVhZF9lcnJvcl9tc2cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMTNiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK3JuZy10b29sczogbW9kaWZ5ICdyZWFkIGVycm9yJyBtZXNzYWdlCisKK01ha2UgdGhlICdyZWFkIGVycm9yJyBtZXNzYWdlIG1vcmUgZGVzY3JpcHRpdmUuCisKK0NvcGllZCBmcm9tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD0xMjk1ODU3CithbmQgbW9kaWZpZWQgaW4gb25lIHBsYWNlIHRvIGFwcGx5IHN1Y2Nlc3NmdWxseS4gIEVycm9yIG1lc3NhZ2UgZHVyaW5nCitib290c3RyYXAgbW9kaWZpZWQgdG8gc2hvdyBkZXZpY2UgbmFtZS4KKworVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCistLS0gYS9ybmdkLmMKKysrKyBiL3JuZ2QuYworQEAgLTI0Nyw4ICsyNDcsMTEgQEAgc3RhdGljIHZvaWQgZG9fbG9vcChpbnQgcmFuZG9tX3N0ZXApCisgCQkJCWNvbnRpbnVlOwkvKiBmYWlsZWQsIG5vIHdvcmsgKi8KKyAKKyAJCQlyZXR2YWwgPSBpdGVyLT54cmVhZChidWYsIHNpemVvZiBidWYsIGl0ZXIpOworLQkJCWlmIChyZXR2YWwpCisrCQkJaWYgKHJldHZhbCkgeworKwkJCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwKKysJCQkJCSJFcnJvciByZWFkaW5nIGZyb20gZW50cm9weSBzb3VyY2VcbiIpOworIAkJCQljb250aW51ZTsJLyogZmFpbGVkLCBubyB3b3JrICovCisrCQkJfQorIAorIAkJCXdvcmtfZG9uZSA9IHRydWU7CisgCistLS0gYS9ybmdkX2VudHNvdXJjZS5jCisrKysgYi9ybmdkX2VudHNvdXJjZS5jCitAQCAtNjMsMTAgKzYzLDggQEAgaW50IHhyZWFkKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdAorIAkJc2l6ZSAtPSByOworIAl9CisgCistCWlmIChzaXplKSB7CistCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwgInJlYWQgZXJyb3JcbiIpOworKwlpZiAoc2l6ZSkKKyAJCXJldHVybiAtMTsKKy0JfQorIAlyZXR1cm4gMDsKKyB9CisgCitAQCAtMTUyLDcgKzE1MCw3IEBAIGVycm9yX291dDoKKyB9CisgCisgLyogSW5pdGlhbGl6ZSBlbnRyb3B5IHNvdXJjZSAqLworLXN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHJuZyAqZW50X3NyYykKKytzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCBybmcgKmVudF9zcmMsIGludCAqYnVmKQorIHsKKyAJLyogVHJhc2ggMzIgYml0cyBvZiB3aGF0IGlzIHByb2JhYmx5IHN0YWxlIChub24tcmFuZG9tKQorIAkgKiBpbml0aWFsIHN0YXRlIGZyb20gdGhlIFJORy4gIEZvciBJbnRlbCdzLCA4IGJpdHMgd291bGQKK0BAIC0xNjQsMTAgKzE2MiwxMiBAQCBzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCByCisgCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisgCisgCS8qIFJldHVybiAzMiBiaXRzIG9mIGJvb3RzdHJhcCBkYXRhICovCistCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisrCWlmICh4cmVhZCh0ZW1wYnVmLCBzaXplb2YodGVtcGJ1ZiksIGVudF9zcmMpICE9IDApCisrCQlyZXR1cm4gLTE7CisgCistCXJldHVybiB0ZW1wYnVmWzBdIHwgKHRlbXBidWZbMV0gPDwgOCkgfAorKwkqYnVmID0gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysJcmV0dXJuIDA7CisgfQorIAorIC8qCitAQCAtMTc1LDYgKzE3NSw4IEBAIHN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHIKKyAgKi8KKyBpbnQgaW5pdF9lbnRyb3B5X3NvdXJjZShzdHJ1Y3Qgcm5nICplbnRfc3JjKQorIHsKKysJaW50IGJvb3RzdHJhcDsKKysKKyAJZW50X3NyYy0+cm5nX2ZkID0gb3BlbihlbnRfc3JjLT5ybmdfbmFtZSwgT19SRE9OTFkpOworIAlpZiAoZW50X3NyYy0+cm5nX2ZkID09IC0xKSB7CisgCQlyZXR1cm4gMTsKK0BAIC0xODIsNyArMTg0LDExIEBAIGludCBpbml0X2VudHJvcHlfc291cmNlKHN0cnVjdCBybmcgKmVudF8KKyAJc3JjX2xpc3RfYWRkKGVudF9zcmMpOworIAkvKiBCb290c3RyYXAgRklQUyB0ZXN0cyAqLworIAllbnRfc3JjLT5maXBzY3R4ID0gbWFsbG9jKHNpemVvZihmaXBzX2N0eF90KSk7CistCWZpcHNfaW5pdChlbnRfc3JjLT5maXBzY3R4LCBkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjKSk7CisrCWlmIChkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjLCAmYm9vdHN0cmFwKSAhPSAwKSB7CisrCQltZXNzYWdlKExPR19FUlJ8TE9HX0lORk8sICJSZWFkIGZhaWx1cmUgaW4gJXMgZHVyaW5nIGJvb3RzdHJhcFxuIixlbnRfc3JjLT5ybmdfbmFtZSk7CisrCQlyZXR1cm4gMTsKKysJfQorKwlmaXBzX2luaXQoZW50X3NyYy0+Zmlwc2N0eCwgYm9vdHN0cmFwKTsKKyAJcmV0dXJuIDA7CisgfQorIAorLS0tIGEvcm5ndGVzdC5jCisrKysgYi9ybmd0ZXN0LmMKK0BAIC0zMzUsNiArMzM1LDcgQEAgc3RhdGljIGludCBkaXNjYXJkX2luaXRpYWxfZGF0YSh2b2lkKQorIAorIAlyZXR1cm4gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysKKyB9CisgCisgc3RhdGljIHZvaWQgZG9fcm5nX2ZpcHNfdGVzdF9sb29wKCB2b2lkICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IDRhNjZiZWQuLmIzYzlmZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtNyw2ICs3LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWFyZ3VtZW50LXRvLWNvbnRyb2wtdGhlLWxpYmFyZ3AtZGVwZW5kZW5jeS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91bmRlcnF1b3RlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlYWRfZXJyb3JfbXNnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCBcCiAgICAgICAgICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoCmluZGV4IDM4MGY1ZDAuLmMzOTI0NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvbm9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmL25vcnBhdGgucGF0Y2gKQEAgLTUsMTEgKzUsMTEgQEAKIAogUlAgMjAxNC83LzE3CiAKLUluZGV4OiBzZXJmLTEuMy42L1NDb25zdHJ1Y3QKK0luZGV4OiBzZXJmLTEuMy45L1NDb25zdHJ1Y3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzZXJmLTEuMy42Lm9yaWcvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDE5OjU3OjU3LjcyNDM4OTE1MCArMDAwMAotKysrIHNlcmYtMS4zLjYvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDIwOjA0OjIxLjc4NDM5OTYxNiArMDAwMAotQEAgLTIxOCw4ICsyMTgsNyBAQAorLS0tIHNlcmYtMS4zLjkub3JpZy9TQ29uc3RydWN0CisrKysgc2VyZi0xLjMuOS9TQ29uc3RydWN0CitAQCAtMjI0LDggKzIyNCw3IEBAIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogIGVsc2U6CiAgICBMSUJOQU1FU1RBVElDID0gJ3NlcmYtJHtNQUpPUn0nCiAgCkBAIC0xNyw5ICsxNyw5IEBACiAtICAgICAgICAgICBQREI9JyR7VEFSR0VULmZpbGViYXNlfS5wZGInKQogK2Vudi5BcHBlbmQoUERCPScke1RBUkdFVC5maWxlYmFzZX0ucGRiJykKICAKLSAjZm9yIGkgaW4gZW52OgotICMgICAgcHJpbnQoc3RyKGVudltpXSkpCi1AQCAtMzcxLDEyICszNzAsNiBAQAorIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAjICBsaW5rZmxhZ3MuYXBwZW5kKCctV2wsLWluc3RhbGxfbmFtZSxAZXhlY3V0YWJsZV9wYXRoLyVzLmR5bGliJyAlIChMSUJOQU1FLCkpCitAQCAtMzg1LDEyICszODQsNiBAQCBpZiBnc3NhcGkgYW5kIENBTExPVVRfT0tBWToKICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgIGVudi5BcHBlbmQoQ1BQREVGSU5FUz1bJ1NFUkZfSEFWRV9TU1BJJ10pCiAgCkBAIC0zMiw4ICszMiw4IEBACiAgIyBTZXQgdXAgdGhlIGNvbnN0cnVjdGlvbiBvZiBzZXJmLSoucGMKICBwa2djb25maWcgPSBlbnYuVGV4dGZpbGUoJ3NlcmYtJWQucGMnICUgKE1BSk9SLCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5GaWxlKCdidWlsZC9zZXJmLnBjLmluJyksCi1AQCAtNDQ2LDcgKzQzOSw2IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFTlY9eydQQVRIJyA6IG9zLmVudmlyb25bJ1BBVEgnXX0pKQorQEAgLTQ2MSw3ICs0NTQsNiBAQCBlbHNlOgorICAgVEVTVF9FWEVTID0gWyBvcy5wYXRoLmpvaW4oJ3Rlc3QnLCAnJXMnICUgKHByb2cpKSBmb3IgcHJvZyBpbiBURVNUX1BST0dSQU1TIF0KICAKICAjIEZpbmQgdGhlIChkeW5hbWljKSBsaWJyYXJ5IGluIHRoaXMgZGlyZWN0b3J5CiAtdGVudi5SZXBsYWNlKFJQQVRIPXRoaXNkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaAppbmRleCAzYzlmMWVhLi4yNjJmZjc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKQEAgLTgsMTYgKzgsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw5IEBAICQocGtnY29uZmlnX0RBVEEpOiBjb25maWcuc3RhdHVzCi0gQElOVExUT09MX1hNTF9SVUxFQAotIEBJTlRMVE9PTF9ERVNLVE9QX1JVTEVACitJbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCisrKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KK0BAIC01MCw3ICs1MCw5IEBAIGVsc2UKKyAgIHVwZGF0ZV9taW1lX2RhdGFiYXNlPSIkKHRvcF9idWlsZGRpcikvdXBkYXRlLW1pbWUtZGF0YWJhc2UkKEVYRUVYVCkiCisgZW5kaWYKICAKIC1pbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1iaW5QUk9HUkFNUwogKyMgZG8gTk9UIG1ha2UgdGhpcyBkZXBlbmRlbnQgb24gYW55dGhpbmchCiArIwogK2luc3RhbGwtZGF0YS1ob29rOgogIGlmIEVOQUJMRV9VUERBVEVfTUlNRURCCi0gCSQoREVTVERJUikiJChiaW5kaXIpL3VwZGF0ZS1taW1lLWRhdGFiYXNlIiAtViAiJChERVNURElSKSQoZGF0YWRpcikvbWltZSIKKyAJJCh1cGRhdGVfbWltZV9kYXRhYmFzZSkgLVYgIiQoREVTVERJUikkKGRhdGFkaXIpL21pbWUiCiAgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKaW5kZXggODRjNGQwMy4uZmVhMzRhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKQEAgLTExLDE3ICsxMSwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CiAKLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuMC9NYWtlZmlsZS5hbQorSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjAub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS4wL01ha2VmaWxlLmFtCistLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQorKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiBAQCAtMSw1ICsxLDMgQEAKIC1TVUJESVJTPS4gcG8KIC0KICBBTV9DUFBGTEFHUyA9ICQoQUxMX0NGTEFHUykKICAKICBwYWNrYWdlc2RpciA9ICQoZGF0YWRpcikvbWltZS9wYWNrYWdlcwotQEAgLTcyLDggKzcwLDcgQEAgdW5pbnN0YWxsLWhvb2s6CitAQCAtODEsOCArNzksNyBAQCBlbmRpZgogIAogIGFsbDogJChkZWZhdWx0bWFrZWRlcHMpCiAgCkBAIC0yOSw1ICsyOSw1IEBACiAtCSQoQU1fVl9HRU4pICQoTUFLRSkgLUMgcG8gc2hhcmVkLW1pbWUtaW5mby5wb3QKICtjcmVhdGUtcG90OiBwbwogIAotIGNoZWNrOiBjcmVhdGUtcG90IGZyZWVkZXNrdG9wLm9yZy54bWwgdXBkYXRlLW1pbWUtZGF0YWJhc2UgY2hlY2stdHJhbnNsYXRpb25zCi0gCWlmIHRlc3QgLWUgJCh0b3BfYnVpbGRkaXIpL2ZyZWVkZXNrdG9wLm9yZy54bWw7IHRoZW4gXAorIGxvY2FsLXRlc3Q6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKQorIGlmIENST1NTX0NPTVBJTElORwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5ZDk5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZkY2FkY2U3NjQ2MDU1NTJmYzk1NjU2M2VmYTA1OGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmFmNTVlZjFhMDMxOTgwNWI3NGFiNDBkMzMxYTM5NjJjOTA1NDc3ZDc2YzA4NmY0OWUzNGRjOTYzNjM1ODllOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliMjczZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKKwkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDUxMDM4ODliOTEyNDI4NTBhYTQ3ZjA5MzI1ZTc5OGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMTMzZWM0ZTIyOGU0MWJkZjUyZjcyNmQyNzFhMmQ4MjE0OTljMmFiOTdhZmQzYWEzZDZjZjQzZWZjZGM4MyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWM0MjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1GaXggQ1ZFLTIwMTctMTM2ODUKLQotVGhlIGR1bXBfY2FsbGJhY2sgZnVuY3Rpb24gaW4gU1FMaXRlIDMuMjAuMCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0bwotY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAoRVhDX0JBRF9BQ0NFU1MgYW5kIGFwcGxpY2F0aW9uIGNyYXNoKSB2aWEgYQotY3JhZnRlZCBmaWxlLgotCi1SZWZlcmVuY2VzOgotaHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvLzAyZjBmNGM1NGYyODE5YjMKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9zcWxpdGUtdXNlcnMlNDBtYWlsaW5nbGlzdHMuc3FsaXRlLm9yZy9tc2cxMDUzMTQuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vY2YwZDM3MTVjYWFjOTE0OV0KLQotQ1ZFOiBDVkUtMjAxNy0xMzY4NQotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IHNyYy9zaGVsbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcmMvc2hlbGwuYwotKysrIHNyYy9zaGVsbC5jCi1AQCAtMjY1NywxMCArMjY1NywxMSBAQAotICAgaW50ICphaVR5cGUgICAgICAvKiBDb2x1bW4gdHlwZXMgKi8KLSApewotICAgaW50IGk7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUqKXBBcmc7Ci0gCi0rICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKLSAgIHN3aXRjaCggcC0+Y01vZGUgKXsKLSAgICAgY2FzZSBNT0RFX0xpbmU6IHsKLSAgICAgICBpbnQgdyA9IDU7Ci0gICAgICAgaWYoIGF6QXJnPT0wICkgYnJlYWs7Ci0gICAgICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspewotQEAgLTMwMDcsMTAgKzMwMDgsMTEgQEAKLSAqLwotIHN0YXRpYyBpbnQgY2FwdHVyZU91dHB1dENhbGxiYWNrKHZvaWQgKnBBcmcsIGludCBuQXJnLCBjaGFyICoqYXpBcmcsIGNoYXIgKipheil7Ci0gICBTaGVsbFRleHQgKnAgPSAoU2hlbGxUZXh0KilwQXJnOwotICAgaW50IGk7Ci0gICBVTlVTRURfUEFSQU1FVEVSKGF6KTsKLSsgIGlmKCBhekFyZz09MCApIHJldHVybiAwOwotICAgaWYoIHAtPm4gKSBhcHBlbmRUZXh0KHAsICJ8IiwgMCk7Ci0gICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7Ci0gICAgIGlmKCBpICkgYXBwZW5kVGV4dChwLCAiLCIsIDApOwotICAgICBpZiggYXpBcmdbaV0gKSBhcHBlbmRUZXh0KHAsIGF6QXJnW2ldLCAwKTsKLSAgIH0KLUBAIC0zODg4LDExICszODkwLDExIEBACi0gICBjb25zdCBjaGFyICp6VHlwZTsKLSAgIGNvbnN0IGNoYXIgKnpTcWw7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUgKilwQXJnOwotIAotICAgVU5VU0VEX1BBUkFNRVRFUihhek5vdFVzZWQpOwotLSAgaWYoIG5BcmchPTMgKSByZXR1cm4gMTsKLSsgIGlmKCBuQXJnIT0zIHx8IGF6QXJnPT0wICkgcmV0dXJuIDA7Ci0gICB6VGFibGUgPSBhekFyZ1swXTsKLSAgIHpUeXBlID0gYXpBcmdbMV07Ci0gICB6U3FsID0gYXpBcmdbMl07Ci0gCi0gICBpZiggc3RyY21wKHpUYWJsZSwgInNxbGl0ZV9zZXF1ZW5jZSIpPT0wICl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwODI1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTcvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICBmaWxlOi8vc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI2MmEyOGI3M2NjMzMwZTdlODM1MjBjOGNlMTRlNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzgxNGM2ZjYyOWZmOTM5NjhiMmIzN2E3MDQ5N2NmZTk4YjM2NmJmNTg3YTIyNjFhNTZhNWY3NTBhZjZhZTZhMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODg2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk2YjU2NDhkNTQyZThhZmE2YWI3ZmZiOGRiOGRkYzNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4MjRhYjEyMzhiNzA2YmM2NjEyNzMyMGFmYmRmZmIwOTYzNjExMzBlMjMyOTFmMjY5MjhhMDI3Yjg4NWM2MTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MjA4NDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40OC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIzMDA2NzVhYzVmMjY5YWE2ZWI0OGZlODlhMGQ3MjZkIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTNhOWZiMTgyNzQwYjM5MmE0NWNkM2Y0NmZhNjFhOTg1ZjY4YmI2YjE4MTdiNTJkYWVjMjIwMzRjNDYxNThjMyIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgotfQotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjllZTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxOTEyY2ZkMWQ5Y2RkMzBjZWJlYjkwODUwN2FjYWRjNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjc5ZGQzMTZiZmFmZjQ4ZjJmYjc0ZDA2NmJhYWUwZDgzMGUxZjQ0NDM2Nzk2ZmU0MTBhNTcyOTdlNWM1ZjA5Y2YiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CmluZGV4IGU2YjlhNzIuLmZiM2M4MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CkBAIC0zLDcgKzMsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMTQyLDcgKzE0MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgppbmRleCA1Y2NjMTRmLi5mZjU1MjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgpAQCAtMTgsNCArMTgsNCBAQAogIyBweXRob246IGRlYWN0aXZhdGUgYSBydW50aW1lIGNoZWNrIGZvciBpcHY2LXN1cHBvcnQgaW4gcHl0aG9uID49Mi43LjEgdGhhdCBmYWlscyB3aGVuIGNyb3NzLWNvbXBpbGluZwogYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8KIAotYWNfY3ZfcGF0aF9TRUQ9c2VkCithY19jdl9wYXRoX1NFRD0ke2FjX2N2X3BhdGhfU0VEPXNlZH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKaW5kZXggMjk1ODcxNi4uNzFlYzk2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogIyBjb3JldXRpbHMKIGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9JHtnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPXllc30KK2dsX2N2X2hhdmVfcHJvY191cHRpbWU9JHtnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPXllc30KIAogIyBteXNxbAogYWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPSR7YWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCmluZGV4IDI2ZmMxMDMuLjFiNGZjMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbApAQCAtMTIsNiArMTIsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CithY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgZ2xpYgogZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggNGZiZjU4Yy4uYzVlMzU0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC01Myw3ICs1Myw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgY3ZzCiBjdnNfY3ZfZnVuY19wcmludGZfcHRyPSR7Y3ZzX2N2X2Z1bmNfcHJpbnRmX3B0cj15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWljcm9ibGF6ZS1saW51eApAQCAtMCwwICsxLDU0IEBACisjIGdlbmVyYWwKK2FjX2N2X3ZhX3ZhbF9jb3B5PSR7YWNfY3ZfdmFfdmFsX2NvcHk9eWVzfQorYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQorYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KK2FjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KK2FjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQorYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQorYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KK2FjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9CithY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9NH0KK2FjX2N2X3NpemVvZl92b2lkX3A9JHthY19jdl9zaXplb2Zfdm9pZF9wPTR9CithY19jdl9zaXplb2ZfZmxvYXQ9JHthY19jdl9zaXplb2ZfZmxvYXQ9NH0KK2FjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CithY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9JHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9OH0KK2FjX2N2X3NpemVvZl91bnNpZ25lZD0ke2FjX2N2X3NpemVvZl91bnNpZ25lZD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PTJ9CithY19jdl9zaXplb2ZfdW5zaWduZWRfaW50PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2ludD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmc9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZz00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0xfQorYWNfY3ZfdWNoYXI9JHthY19jdl91Y2hhcj1ub30KK2FjX2N2X3VpbnQ9JHthY19jdl91aW50PXllc30KK2FjX2N2X3Vsb25nPSR7YWNfY3ZfdWxvbmc9eWVzfQorYWNfY3ZfdXNob3J0PSR7YWNfY3ZfdXNob3J0PXllc30KKworIyBnbGliCitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK2dsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KK2dsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9CitnbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KK2dsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KK2dsaWJfY3ZfdmFfY29weT0ke2dsaWJfY3ZfdmFfY29weT15ZXN9CitnbGliX2N2X3ZhX3ZhbF9jb3B5PSR7Z2xpYl9jdl92YV92YWxfY29weT15ZXN9CitnbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KKworIyBnbGliLTIuMAorZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQorYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKK2FjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04CithY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9NAorZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQorZ2xpYl9jdl9zaXplb2ZfaW50bWF4X3Q9JHtnbGliX2N2X3NpemVvZl9pbnRtYXhfdD04fQorZ2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PSR7Z2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PTR9CitnbGliX2N2X3NpemVvZl9zaXplX3Q9JHtnbGliX2N2X3NpemVvZl9zaXplX3Q9NH0KK2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9JHtnbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPTR9CitnbGliX2N2X3N5c191c2VfcGlkX25pY2VuZXNzX3N1cnJvZ2F0ZT0ke2dsaWJfY3Zfc3lzX3VzZV9waWRfbmljZW5lc3Nfc3Vycm9nYXRlPXllc30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPXllcworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAppbmRleCA1YmFlNzQ4Li42N2EzZmM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKQEAgLTIzMiw3ICsyMzIsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMzcyLDcgKzM3MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAppbmRleCAwNmQ5NjFmLi5mMzdlOTE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eApAQCAtMSw2ICsxLDUgQEAKIGFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwogYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9jaGFyX3A9NH0KIGFjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkZTYyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3YzMi1saW51eApAQCAtMCwwICsxLDExIEBACisjIGdlbmVyYWwKK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9OAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTQKKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YmM1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2NjQtbGludXgKQEAgLTAsMCArMSwxMSBAQAorIyBnZW5lcmFsCithY19jdl9hbGlnbm9mX2d1aW50MzI9NAorYWNfY3ZfYWxpZ25vZl9ndWludDY0PTgKK2FjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz04CisKKyMgZ2xpYi0yLjAKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KaW5kZXggZmM0ZDZhZC4uOTdjOTY5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KQEAgLTIyNyw3ICsyMjcsNiBAQAogY2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPSR7Y2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPXllc30KIGNsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD0ke2NsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9eWVzfQotYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD0ke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzfQogCiAjIGxpYm5ldCAKIGFjX2N2X2xibF91bmFsaWduZWRfZmFpbD0ke2FjX2N2X2xibF91bmFsaWduZWRfZmFpbD1ub30K